您好,登錄后才能下訂單哦!
這篇文章主要介紹“matlab的支持向量機SVM怎么用”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“matlab的支持向量機SVM怎么用”文章能幫助大家解決問題。
支持向量機(Support Vector Machine)名字聽起來很炫,功能也很炫,但公式理解起來卻有眩暈感。所以不用公式來說明SVM的原理,理解SVM有四個關鍵名詞:分離超平面、最大邊緣超平面、軟邊緣、核函數。
分離超平面(separating hyperplane):處理分類問題的時候需要一個決策邊界,好象楚河漢界一樣,在界這邊我們判別A,在界那邊我們判別B。這種決策邊界將兩類事物相分離,而線性的決策邊界就是分離超平面。
最大邊緣超平面(Maximal Margin Hyperplane):分離超平面可以有很多個,怎么找最好的那個呢,SVM的作法是找一個“最中間”的。換句話說,就是這個平面要盡量和兩邊保持距離,以留足余量,減小泛化誤差,保證穩健性。或者用中國人的話講叫做“執中”。以江河為國界的時候,就是以航道中心線為界,這個就是最大邊緣超平面的體現。在數學上找到這個最大邊緣超平面的方法是一個二次規劃問題。
軟邊緣(Soft Margin):但世界上沒這么美的事,很多情況下都是“你中有我,我中有你”的混雜狀態。不大可能用一個平面完美的分離兩個類別。在線性不可分情況下就要考慮軟邊緣了。軟邊緣可以破例允許個別樣本跑到其它類別的地盤上去。但要使用參數來權衡兩端,一個是要保持最大邊緣的分離,另一個要使這種破例不能太離譜。這種參數就是對錯誤分類的懲罰程度C。
核函數(Kernel Function),為了解決完美分離的問題,SVM還提出一種思路,就是將原始數據映射到高維空間中去,直覺上可以感覺高維空間中的數據變的稀疏,有利于“分清敵我”。那么映射的方法就是使用“核函數”。如果這種“核技術”選擇得當,高維空間中的數據就變得容易線性分離了。而且可以證明,總是存在一種核函數能將數據集映射成可分離的高維數據。看到這里各位不要過于興奮,映射到高維空間中并非是有百利而無一害的。維數過高的害處就是會出現過度擬合。
所以選擇合適的核函數以及軟邊緣參數C就是訓練SVM的重要因素。一般來講,核函數越復雜,模型越偏向于擬合過度。在參數C方面,它可以看作是LASSO算法中的lambda的倒數,C越大模型越偏向于擬合過度,反之則擬合不足。實際問題中怎么選呢?用人類最古老的辦法,試錯。
常用的核函數有如下種類:
Linear:使用它的話就成為線性向量機,效果基本等價于Logistic回歸。但它可以處理變量極多的情況,例如文本挖掘。
polynomial:多項式核函數,適用于圖像處理問題。
Radial basis,高斯核函數,最流行易用的選擇。參數包括了sigma,其值若設置過小,會有過度擬合出現。
sigmoid:反曲核函數,多用于神經網絡的激活函數。
最后分別解釋“支持向量”和“機”
(1) “機” —— Classification Machine,分類器。
(2) “支持向量” —— 在maximum margin上的這些點就叫支持向量,最后的classification machine的表達式里只含這些“支持向量”的信息
%% 去除花萼的長度、寬度和其中一種鳶尾花
load fisheriris
inds = ~strcmp(species,'setosa');
X = meas(inds,3:4);
y = species(inds);
%% 使用處理后的數據集訓練SVM分類器
SVMModel = fitcsvm(X,y);
% 顯示類別
disp(SVMModel.ClassNames)
%% 繪制數據的散點圖并圈出支持向量
sv = SVMModel.SupportVectors;
figure
gscatter(X(:,1),X(:,2),y)
hold on
plot(sv(:,1),sv(:,2),'ko','MarkerSize',10)
legend('versicolor','virginica','Support Vector')
hold off
使用的數據為MATLAB自帶鳶尾花樣本
關于“matlab的支持向量機SVM怎么用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。