一、下載LIBSVM工具包
首先將LIBSVM工具包下載至SVM EXAMPLE的目錄下。
圖片來(lái)源:中國(guó)慕課大學(xué)《機(jī)器學(xué)習(xí)概論》
然后將LIBSVM的路徑加載至MATLAB的路徑中,以使MATLAB可找到LIBSVM工具包中所有與MATLAB有接口的函數(shù)(個(gè)人理解:經(jīng)過(guò)此步驟后,MATLAB可以調(diào)用LIBSVM工具包中的函數(shù))。
圖片來(lái)源:中國(guó)慕課大學(xué)《機(jī)器學(xué)習(xí)概論》
二、數(shù)據(jù)預(yù)處理
處理兵(車(chē))王問(wèn)題的MATLAB程序文件名稱(chēng)為:testSVMChessLibSVM.m。該MATLAB程序采用讀文件的方式獲取數(shù)據(jù),并將六維數(shù)據(jù)(六維數(shù)據(jù)表示三個(gè)棋子的位置)存儲(chǔ)于xapp中,一維數(shù)據(jù)(一維數(shù)據(jù)表示某一情況下,兵(車(chē))王問(wèn)題返回結(jié)果)存儲(chǔ)于yapp中。
圖片來(lái)源:中國(guó)慕課大學(xué)《機(jī)器學(xué)習(xí)概論》
獲取數(shù)據(jù)后,首先需所有28056個(gè)數(shù)據(jù)順序打亂,再將5000個(gè)數(shù)據(jù)作為訓(xùn)練集,將23056個(gè)數(shù)據(jù)作為測(cè)試集,以保證訓(xùn)練集和測(cè)試集的選擇完全隨機(jī)。之后將訓(xùn)練集和測(cè)試集歸一化。
圖片來(lái)源:中國(guó)慕課大學(xué)《機(jī)器學(xué)習(xí)概論》
該MATLAB程序選擇的核函數(shù)是RBF核函數(shù)(高斯徑向基函數(shù)核),并根據(jù)LIBSVM網(wǎng)站,將超參數(shù)c的取值范圍選定為2-5~215,超參數(shù)g(gamma,gamma代表RBF核函數(shù)中1/σ2的值)取值范圍選定為2-15~23。
三、確定超參數(shù)c和g的值
在上述超參數(shù)c和g的取值范圍內(nèi)遍歷所有c和g的組合,尋找識(shí)別率最大的c和g組合的機(jī)器學(xué)習(xí)模型。
為估計(jì)識(shí)別率,需要在5000個(gè)訓(xùn)練集中選取部分?jǐn)?shù)據(jù)作為估計(jì)識(shí)別率的數(shù)據(jù)。所選取估計(jì)識(shí)別率的數(shù)據(jù)不能與訓(xùn)練機(jī)器學(xué)習(xí)模型的數(shù)據(jù)相同,否則會(huì)導(dǎo)致過(guò)擬合(OVERFITTING),從而導(dǎo)致估計(jì)識(shí)別率高于實(shí)際識(shí)別率。估計(jì)識(shí)別率的數(shù)據(jù)與訓(xùn)練機(jī)器學(xué)習(xí)模型的數(shù)據(jù)相同類(lèi)似于學(xué)生考試的題目與日常練習(xí)題目相同,若學(xué)生考試的題目與日常練習(xí)題目相同,則學(xué)生的考試成績(jī)將偏高。
為充分利用訓(xùn)練集數(shù)據(jù),機(jī)器學(xué)習(xí)模型訓(xùn)練常采用交叉驗(yàn)證的方式估計(jì)識(shí)別率。在該MATLAB程序中,訓(xùn)練集數(shù)據(jù)被等分為5份,每份1000個(gè)數(shù)據(jù),分別以A、B、C、D、E標(biāo)號(hào),然后進(jìn)行下述訓(xùn)練和估計(jì):
(1)采用A、B、C、D訓(xùn)練,采用E估計(jì)識(shí)別率;
(2)采用A、B、C、E訓(xùn)練,采用D估計(jì)識(shí)別率;
(3)采用A、B、D、E訓(xùn)練,采用C估計(jì)識(shí)別率;
(4)采用A、C、D、E訓(xùn)練,采用B估計(jì)識(shí)別率;
(5)采用B、C、D、E訓(xùn)練,采用A估計(jì)識(shí)別率; 最后將五個(gè)識(shí)別率取平均值,得出總識(shí)別率,該過(guò)程被稱(chēng)為五折交叉驗(yàn)證(5-fold cross validation),LIBSVM工具包中“-v 5”表示五折交叉驗(yàn)證。
圖片來(lái)源:中國(guó)慕課大學(xué)《機(jī)器學(xué)習(xí)概論》
交叉驗(yàn)證在訓(xùn)練數(shù)據(jù)數(shù)量不變的情況下,保證采用更多的數(shù)據(jù)訓(xùn)練和估計(jì)識(shí)別率,從而估計(jì)出更準(zhǔn)確的識(shí)別率。交叉驗(yàn)證的劣勢(shì)是增加模型訓(xùn)練的時(shí)間。
交叉驗(yàn)證的形式之一是留一法(LEAVE-ONE-OUT),即每次采用一個(gè)數(shù)據(jù)估計(jì)識(shí)別率,剩余數(shù)據(jù)均參與訓(xùn)練。留一法常被用于訓(xùn)練數(shù)據(jù)較少且需要精確估計(jì)識(shí)別率的情況。
在該MATLAB程序中,共包含兩次交叉驗(yàn)證,第一次交叉驗(yàn)證初步確定超參數(shù)c和g的組合,第二次交叉驗(yàn)證更精確地確定超參數(shù)c和g的組合。
四、訓(xùn)練機(jī)器學(xué)習(xí)模型
在確定超參數(shù)c和g的組合后,使用該超參數(shù)c和g的組合和5000個(gè)訓(xùn)練樣本得出最終的機(jī)器學(xué)習(xí)模型,圖一為所得出的機(jī)器學(xué)習(xí)模型的參數(shù),其中,“nr_class:2”表示此機(jī)器學(xué)習(xí)模型是二分類(lèi)模型,“totalSV:220”表示此機(jī)器學(xué)習(xí)模型具有220個(gè)支持向量,“rho:39.9485”表示b的值為39.9485。
圖一,圖片來(lái)源:中國(guó)慕課大學(xué)《機(jī)器學(xué)習(xí)概論》
最后,采用測(cè)試集的數(shù)據(jù)測(cè)試模型,得出識(shí)別率為99.61%。
審核編輯:劉清
-
存儲(chǔ)器
+關(guān)注
關(guān)注
38文章
7453瀏覽量
163608 -
MATLAB仿真
+關(guān)注
關(guān)注
4文章
176瀏覽量
19904 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8378瀏覽量
132415 -
LibSvm
+關(guān)注
關(guān)注
0文章
3瀏覽量
6447
原文標(biāo)題:機(jī)器學(xué)習(xí)相關(guān)介紹(17)——支持向量機(jī)(兵(車(chē))王問(wèn)題MATLAB程序)
文章出處:【微信號(hào):行業(yè)學(xué)習(xí)與研究,微信公眾號(hào):行業(yè)學(xué)習(xí)與研究】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論