數學健摸學習筆記之支持向量機

數學建模學習筆記之支持向量機(SVM)

​ 支持向量機可以用來分類和迴歸分析。給定一組訓練樣本,每個標記爲屬於兩類,一個SVM訓練算法建立了一個模型,分配新的實例爲一類或其他類,使其成爲非概率二元線性分類。除了進行線性分類,支持向量機可以使用所謂的核技巧,它們的輸入隱含映射成高維特徵空間中有效地進行非線性分類。

說白了就是機器學習裏用來進行數據分類的算法。在數模中也基本是用來分類,和聚類分析一樣。

原理

原理比較複雜,於是簡單寫一下,力求能解釋清就行,如果想要透徹理解請去看司守奎老師的書以及我給出的鏈接。

分類問題:對於給定的訓練集,尋找到一個映射函數,使進行映射後訓練集可以分爲兩類。

線性可分支持向量機:對於訓練集img

其中ai組成輸入空間,yi等於-1或1。如果能夠尋找到一個線性規則即 ωa+b 使得所有滿足y=1的ai和滿足y=-1的ai分別處於一個正數的兩邊,也就說這個訓練集是線性可分的。同時以此把這兩個訓練集分爲M+,M-。

凸包:一堆點的最外圍點連起來形成封閉圖形,這裏有M+的凸包和M-的凸包。

定理1:訓練集T 線性可分的充要條件是,兩類樣本集 M+和M-的凸包相離。

定理2:當訓練集樣本爲線性可分時,存在唯一的規範超平面ωa+b=0使得數據集代入分別大於等於1和小於等於-1.其中等於的便是之前的兩類數據,也叫做普通支持向量

線性支持向量機:除了普通支持向量分佈在兩個分類邊界餘的所有樣本點都分佈在分類邊界以外,此時構造的超平面是硬間隔超平面。線性支持向量機存在不滿足定理一和定理二的點,但我們仍要獲取超平面,因此要進行軟化處理,此時獲得軟間隔超平面。軟化方法就是加入一個調節因子,這個大家都想得到,然後又轉化成優化問題,這裏不細講,只要大致瞭解就行。

非線性可分支持向量機:當兩個凸包重合太大了,也就是軟化的方法不適用的時候,採用映射的方法,換到另外一個高維空間域裏進行分類。通過引進從輸入空間 X 到另一個高維的 Hilbert 空間 H 的變換,空間H叫做特徵空間

C-支持向量機(非線性不可分):映射到高維H空間之後還是不能直接可分,在H空間進行軟化再分類。

模型主要是利用圖像學原理,通過對凸包的研究把求超平面的問題轉化成求約束下的優化問題,從而利用拉格朗日算子和KTT條件來求解。

案例分析蠓蟲分類問題研究

問題重述:

生物學家試圖對兩種蠓蟲進行鑑別,依據的資料是觸角和翅膀的長度,已經測得了9支Af和6支Apf的數據如下:

Af:(1.24,1.27),(1.36,1.74),(1.38,1.64),(1.38,1.82),(1.38,1.90),(1.40,1.70),(1.48,1.82),(1.54,1.82),(1.56,2.08)

Apf:(1.14,1.82),(1.18,1.96),(1.20,1.86),(1.26,2.00),(1.28,2.00),(1.30,1.96)

現在的問題是:

(1) 根據如上資料,如何制定一種方法,正確的區分兩類蠓蟲?

(2) 對觸角和翼長分別爲(1.24,1.80)、(1.28,1.84)、(1.40,2.04)的三個標本,用所得到的方法加以識別。

符號規定

用x1表示蠓蟲的觸角,x2表示蠓蟲的翼長,y1=1標示Af,y2=-1標示Apf。

模型建立:即SVM模型,只不過套了一個例子

MATLAB代碼

clc,clear;
x0=[1.24,1.27;1.36,1.74;1.38,1.64;1.38,1.82;1.38,1.90;1.40,1.70
    1.48,1.82;1.54,1.82;1.56,2.08;1.14,1.82;1.18,1.96;1.20,1.86
    1.26,2.00;1.28,2.00;1.30,1.96];%把所有數據當做訓練樣本
 x=[1.24,1.80;1.28,1.84;1.40,2.04];%用來判斷的值
 group = [ones(9,1);-ones(6,1)];%標記分類
 s = svmtrain(x0,group);%訓練
 check=svmclassify(s,x0);%檢查
 solution=svmclassify(s,x);%判斷結果

總結

支持向量機簡單的使用比較簡單,但是最好還是需要深入瞭解一下其中的原理,包括模型的建立拉格朗日算子和KTT等,想要畫出一系列的向量機的圖也要用其他的代碼。支持向量機是一個很好的聚類工具,實際來說掌握了會比較好。同樣也將一些我學習用到的資料整理了一下,包括司守奎老師的書和視頻教程和後續代碼,由於不知道怎麼弄成免費的,想要可以私聊。最好自己百度搜,一大堆,我只是整理一點:https://download.csdn.net/download/yuanjiteng/11529562

分享一下其他寫的非常好的文:https://cloud.tencent.com/developer/article/1169178

分享一下其他寫的非常好的文:https://cloud.tencent.com/developer/article/1169178

https://blog.csdn.net/macyang/article/details/38782399
想要深入學習務必看完,之後你肯定就懂了SVM基礎用法,下一篇想弄一個svm用於識別的實例。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章