MATLAB 機器學習筆記--SVM
我們知道SVM的基本原理就是找一個超平面(廣義平面)將樣本分為幾個部分,即分類。
MATLAB中自帶SVM包,使用起來也十分方便,假如X是特徵矩陣,Y是分類標籤(可以是數值(1、2)也可以是string,總之有區別就行。)
二分類代碼
SVMModel = fitcsvm(X,y) %訓練分類器CVSVMModel = crossval(SVMModel); %分類器的交叉驗證classLoss = kfoldLoss(CVSVMModel)% 樣本內錯誤率[~,score] = predict(SVMModel,X_test)%; %樣本外的數據進行分類預測[label,scorePred] = kfoldPredict(CVSVMModel); %樣本外的數據進行分類預測結果,
線性分類和非線性分類
我們在訓練分類器的時候需要選擇是線性分類還是非線性分類,比如如下兩種:顯然第一種適合線性分類,第二種適合曲線分類,也就是存在「異或」問題,需要映射到高維空間來尋找超平面。這種類似的選擇稱為「核函數」的選擇,fitcsvm命令的KernelFunction可以選擇三個核函數:linear, gaussian (or rbf), polynomial,當然也可以自己編寫核函數。核函數的選擇是SVM分類器的最重要的參數。
舉例:
SVMModel = fitcsvm(X,indx,ClassNames,[false true],Standardize,true,... KernelFunction,rbf,BoxConstraint,1);
分多類情形
%MATLAB自帶數據,每一個樣本都是兩個特徵,Y代表其分類,此數據中分類標籤為3種。
load fisheririsX = meas(:,3:4);Y = species;
%%將數據二維展示;%圖中不同的顏色即為不同的標籤。
figuregscatter(X(:,1),X(:,2),Y);h = gca;lims = [h.XLim h.YLim]; % Extract the x and y axis limitstitle({f Scatter Diagram of Iris Measurements});xlabel(Petal Length (cm));ylabel(Petal Width (cm));legend(Location,Northwest);
%不同分類訓練分類器
SVMModels = cell(3,1);classes = unique(Y);rng(1); % For reproducibilityfor j = 1:numel(classes); indx = strcmp(Y,classes(j)); % Create binary classes for each classifier SVMModels{j} = fitcsvm(X,indx,ClassNames,[false true],Standardize,true,... KernelFunction,rbf,BoxConstraint,1);end
%用meshgrid畫出網格,並將網格點作為測試樣本。計算每個測試樣本的得分。
其中scores是一個多行三列的向量,每一列代表此種分類的可能性大小。maxScore代表最可能的分類。
d = 0.02;[x1Grid,x2Grid] = meshgrid(min(X(:,1)):d:max(X(:,1)),... min(X(:,2)):d:max(X(:,2)));xGrid = [x1Grid(:),x2Grid(:)];N = size(xGrid,1);Scores = zeros(N,numel(classes));for j = 1:numel(classes); [~,score] = predict(SVMModels{j},xGrid); Scores(:,j) = score(:,2); % Second column contains positive-class scoresend[~,maxScore] = max(Scores,[],2);
%二維顯示訓練樣本和測試樣本。其中將不同的預測分類結果用不同的顏色展示
figureh(1:3) = gscatter(xGrid(:,1),xGrid(:,2),maxScore,... [0.1 0.5 0.5; 0.5 0.1 0.5; 0.5 0.5 0.1]);%預測分類結果用不同的顏色展示hold onh(4:6) = gscatter(X(:,1),X(:,2),Y);%畫出原始的訓練樣本title({f Iris Classification Regions});xlabel(Petal Length (cm));ylabel(Petal Width (cm));legend(h,{setosa region,versicolor region,virginica region,... observed setosa,observed versicolor,observed virginica},... Location,Northwest);axis tighthold off
推薦閱讀:
※知識布局-tensorflow-梯度下降
※決策樹之條件熵與信息增益
※機器學習面試題,更有大廠內推機會
※使用神經網路生成一段宋史列傳
※[貝葉斯一]之貝葉斯定理