支撐向量機的英文名叫: Support Vector Machine,是機器學習領域中的很重要的一種算法。它的思想背後有極強的統計理論的支撐,也是統計學上經常使用的一種方法。此算法在機器學習中既能解決分類問題,又能解決迴歸問題。且對真實的數據具備很好的泛化能力。
原理:考慮以下樣本數據集,如何分辨此數據集?
算法
以前的邏輯迴歸算法,肯定決策邊界的思路是定義了一個機率函數,根據這個機率函數進行建模,造成了損失函數,最小化損失函數來肯定決策邊界。
支撐向量機和邏輯迴歸不一樣,它的實現是找到一條最優的決策邊界,距離兩個類別的最近的樣本距離最遠,以下圖:
機器學習
最近的點也稱爲支撐向量,這些支撐向量定義了一個區域,而咱們找到的決策邊界就是被這個區域所定義的,是位於區域中心的一條線。支撐向量機的目標就是最大化margin,即最大化d。函數
回憶解析幾何知識,求點到直線的距離:
點\((x,y)\)到直線\(Ax+By+C=0\)的距離公式爲:
\[ \frac{\left | Ax+By+C \right | }{\sqrt{A^2+B^2}} \]
擴展到n維空間直線 \(\theta ^T\cdot X_b = 0\) -> \(w^T \cdot X +b = 0\):
\[\frac{\left | w^T \cdot X +b \right | }{\left \| w \right \|}\]
其中\(\left \| w \right \| = \sqrt{w_1^2+w_2^2+...+w_n^2}\)學習
假設決策邊界爲\(w^T \cdot X +b = 0\),對於上圖中的兩類樣本,假設一類爲1,在直線的上方,另外一類爲-1,在直線的下方,分別有:
spa
式子兩邊同除於d
3d
對於上式,\({\left \| w \right \|}d\)是一個常數,再化簡得:
blog
上式可合爲:
數學
對於任意支撐向量x,d的距離應該經可能大,即要解決的是:
\[max \frac{\left | w^T \cdot X +b \right | }{\left \| w \right \|}\]
而又由於支撐向量構成的直線以下:
class
即\({\left | w^T \cdot X +b \right | } = 1\),因此,目標函數爲:\(min {\left \| w \right \|}\)
爲了方便求導,最終的目標爲:
\[min \frac{1}{2}{\left \| w \right \|}^2 \\s.t.\quad y^{(i)}(w^Tx^{(i)}+b)>1\]
注:\(s.t.\) 爲約束條件。原理
對於數據樣本以下的數據集,嚴格的按紅藍樣本點來肯定決策邊界是不太準確的,由於最右邊的這個藍色點或許是一個錯誤的點或者是一個特殊的點,而採用另外一個有容錯的直線可能泛化能力會好一點。
爲了更好的容錯,將限定條件改成:
\[s.t.\quad y^{(i)}(w^Tx^{(i)}+b)>1-\xi _i (\xi \geq 0)\]
但\(\xi\)也不能無限制的大,因此在目標函數中加入正則項: