最近在研讀《機器學習實戰》這本書,發現支援向量機這一章理論部分比較少,不太好理解。針對svm,雖然有很多python的庫可以呼叫,但是在理論方面還是需要好好研究一下的。
為了最大化支援向量到分隔面的距離(找到最小間隔的資料點,即支援向量,然後對該間隔最大化),可以寫作:ar
gmax
w,b
subject to:la
bel⋅
f(x)
=lab
el⋅(
wtx+
b)≥1
,i=1
,2,.
..,n
其中,lab
el為類別標籤,±1,是點
x 的分類值; f(
x)=w
tx+b
為分隔超平面,是乙個線性分類器; 1|
|w||
是為了防止la
bel⋅
(wtx
+b) 隨著w和b等比例增大。
支援向量使得上述約束條件的等號成立,因此該問題可以轉換為:ar
gmax
w,b
subject to:la
bel⋅
(wtx
+b)≥
1,i=
1,2,
...,
n 再做一次等價轉換,得到:ar
gmin
w,b
subject to:la
bel⋅
(wtx
+b)≥
1,i=
1,2,
...,
n 上述問題是乙個帶約束的優化問題,可以採用拉格朗日乘子法,問題變為:ar
gmax
αw(α
)=l(
w,b,
α)=1
2||w
||2−
∑ni=
1αi(
labe
li(x
iwt+
b)−1
)subject to:αi
>=0,
i=1,
2,..
.,n
令l(w,b,
α)對w
和b求偏導為零,可得:∑n
i=1α
ilab
eli=
0 w
=∑ni
=1αi
labe
lixi
消除w後,問題變為:ar
gmax
αw(α
)=l(
w,b,
α)=∑
ni=1
αi−1
2∑ni
,j=1
αiαj
labe
lila
belj
xtix
jsubject to:αi
≥0,i
=1,2
,...
,n
∑ni=
1αil
abel
i=0
參考:機器學習演算法與python實踐之(二)支援向量機(svm)初級
如果資料不那麼「乾淨」,即不是100%可分的,如上圖所示。
對於上面說的這種偏離正常位置很遠的資料點,我們稱之為 outlier,它有可能是採集訓練樣本的時候的雜訊,也有可能是某個標資料的大叔打瞌睡標錯了,把正樣本標成負樣本了。那一般來說,如果我們直接忽略它,原來的分隔超平面還是挺好的,但是由於這個 outlier 的出現,導致分隔超平面不得不被擠歪了,同時 margin 也相應變小了。當然,更嚴重的情況是,如果出現右圖的這種outlier,我們將無法構造出能將資料線性分開的超平面來。
為了處理這種情況,我們允許資料點在一定程度上偏離超平面。也就是允許一些點跑到h1和h2之間,也就是他們到分類面的間隔會小於1。如下圖:
為了解決這個問題,引入鬆弛變數(slack variable)
ξ 。
約束條件變為:wt
x+b≥
1−ξ,
i=1,
2,..
.,n
問題變為:ar
gmax
αw(α
)=l(
w,b,
α)=∑
ni=1
αi−1
2 ∑n
i,j=
1αiα
jlab
elil
abel
jxti
xj
subject to:0≤
αi≤c
,i=1
,2,.
..,n
∑ni=1α
ilab
eli=
0 其中,c是離群點的權重,c越大表明離群點對目標函式影響越大,也就是越不希望看到離群點。這時候,間隔也會很小。常數c用於控制「最大化間隔」和「保證大部分點的函式間隔小於1.0」這兩個目標的權重。
smo表示序列最小優化(sequential minimal optimization)。
smo工作原理:每次迴圈選取兩個
α ,調整這兩個值。
機器學習實戰 初識支援向量機 SVM
svm 支援向量機。支援向量機,其含義是通過支援向量運算的分類器。其中 機 的意思是機器,可以理解為分類器。它是一種二類分類模型,其基本模型定義為特徵空間上的間隔最大的線性分類器,其學習策略便是間隔最大化,最終可轉化為乙個凸二次規劃問題的求解。給定訓練樣本集d y 我 分類學習的基本思想是基於訓練集...
機器學習 支援向量機 SVM
svm 方法的基本思想是 定義最優線性超平面,並把尋找最優線性超平面的演算法歸結為求解乙個凸規劃問題。進而基於 mercer 核展開定理,通過非線性對映 把樣本空間對映到乙個高維乃至於無窮維的特徵空間 hilbert 空間 使在特徵空間中可以應用線性學習機的方法解決樣本空間中的高度非線性分類和回歸等...
機器學習 支援向量機SVM
svm是一種監督學習演算法,主要用於分類 回歸 異常值檢測。目前應用於文字分類 手寫文字識別 影象分類 生物序列分析。支援向量機是一種通過某種非線性對映,把低維的非線性可分轉化為高維的線性可分,在高維空間進行線性分析的演算法。支援向量機 svm,support vector machine 是根據統...