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