那針對這樣的問題我們應該怎麼解決呢?
在上文當中我們說了,在實際的場景當中,資料不可能是百分百線性可分的,即使真的能硬生生地找到這樣的乙個分隔平面區分開樣本,那麼也很有可能陷入過擬合當中,也是不值得追求的。
因此,我們需要對分類器的標準稍稍放鬆,允許部分樣本出錯。但是這就帶來了乙個問題,在硬間隔的場景當中,間隔就等於距離分隔平面最近的支援向量到分隔平面的距離。那麼,在允許出錯的情況下,這個間隔又該怎麼算呢?
為了解決這個問題,我們需要對原本的公式進行變形,引入乙個新的變數叫做鬆弛變數。鬆弛變數我們用希臘字母\(\xi\)來表示,這個鬆弛變數允許我們適當放鬆$y_i(\omega^t x_i + b) \ge 1 \(這個限制條件,我們將它變成\)y_i(\omega^t x_i + b) \ge 1-\xi_i $。
也就是說對於每一條樣本我們都會有乙個對應的鬆弛變數\(\xi_i\),它一共有幾種情況。
\(\xi=0\),表示樣本能夠正確分類
\(0 < \xi < 1\),表示樣本在分割平面和支援向量之間
\(\xi = 1\),表示樣本在分割平面上
\(\xi \ge 1\),表示樣本異常
我們可以結合下面這張圖來理解一下,會容易一些:
鬆弛變數雖然可以讓我們表示那些被錯誤分類的樣本,但是我們當然不希望它隨意鬆弛,這樣模型的效果就不能保證了。所以我們把它加入損失函式當中,希望在鬆弛得盡量少的前提下保證模型盡可能劃分正確。這樣我們可以重寫模型的學習條件:
\[\begin
&\min\quad \frac||\omega||^2 + c\sum_^m\xi_i\\
& \beginr@{}l@l}
s.t.&y_i(\omega^tx_i+b)\geq1-\xi_i, &i=1,2,3\ldots,n\\
&\xi_i \geq 0,&i=1,2,3\ldots,n\\
\end
\end\]
這裡的c是乙個常數,可以理解成懲罰引數。我們希望\(||\omega||^2\)盡量小,也希望\(\sum \xi_i\)盡量小,這個引數c就是用來協調兩者的。c越大代表我們對模型的分類要求越嚴格,越不希望出現錯誤分類的情況,c越小代表我們對鬆弛變數的要求越低。
從形式上來看模型的學習目標函式和之前的硬間隔差別並不大,只是多了乙個變數而已。這也是我們希望的,在改動盡量小的前提下讓模型支援分隔錯誤的情況。
對於上面的式子我們同樣使用拉格朗日公式進行化簡,將它轉化成沒有約束的問題。
首先,我們確定幾個值。第乙個是我們要優化的目標:\(f(x)=\min_\frac||\omega||^2 + c\sum_^m \xi_i\)
第二個是不等式約束,拉格朗日乘子法當中限定不等式必須都是小於等於0的形式,所以我們要將原式中的式子做乙個簡單的轉化:
\[\begin
g(x) = 1 - \xi_i - y_i(\omega^tx_i + b) \leq 0 \\
h(x) = -\xi_i \le 0
\end
\]最後是引入拉格朗日乘子: \(\alpha = (\alpha_1, \alpha_2, \cdots, \alpha_m), \beta = (\beta_1, \beta_2, \cdots, \beta_m)\)
我們寫出廣義拉格朗日函式:\(l(\omega, b, \xi, \alpha, \beta) = \frac||\omega||^2 + c\sum_^m \xi_i, + \sum_^m \alpha_i(1 - \xi_i - y_i(\omega^tx_i + b)) -\sum_^m \beta_i\xi_i\)
我們要求的是這個函式的最值,也就是\(\min_\max_l(\omega, b, \xi, \alpha, \beta)\)。
在處理硬間隔的時候,我們講過對偶問題,對於軟間隔也是一樣。我們求l函式的對偶函式的極值。
原函式的對偶問題是\(\max_\min_l(\omega, b, \xi, \alpha, \beta)\),這個對偶問題要成立需要滿足kkt條件。
我們先把這個kkt條件放一放,先來看一下對偶問題當中的內部的極小值。這個極小值沒有任何約束條件,所以我們可以放心大膽地通過求導來來計算極值。這個同樣是高中數學的內容,我們分別計算\(\frac\),\(\frac\)和\(\frac\)。
求導之後,我們可以得到:
\[\begin
\frac = 0 &\rightarrow \omega = \sum_^m \alpha_i y_i x_i \\
\frac = 0 &\rightarrow \sum_^m \alpha_i y_i = 0 \\
\frac = 0 &\rightarrow \beta_i = c - \alpha_i
\end
\]我們把這三個式子帶入對偶函式可以得到:
\[\begin
l(\omega, b, \xi, \alpha,\beta) &= \frac \sum_^m \sum_^m \alpha_i \alpha_j y_iy_jx_i^tx_j + c\sum_^m \xi_i + \sum_^m \alpha_i (1 - \xi_i) - \sum_^m (c - \alpha_i) \xi_i \\
&= \sum_^m\alpha_i - \frac\sum_^m \sum_^m \alpha_i \alpha_j y_iy_jx_i^tx_j
\end
\]由於\(\beta_i \ge 0\),所以我們可以得到\(0 \le \alpha_i \le c\),所以最後我們可以把式子化簡成:
\[\begin
&\max_ \sum_^m\alpha_i - \frac \sum_^m \sum_^m \alpha_i \alpha_j y_iy_jx_i^tx_j\\
& \beginr@{}l@l}
s.t.& \sum_^m \alpha_i y_i = 0 \\
& 0 \le \alpha_i \le c,&i=1,2,3\ldots,m\\
\end
\end\]
將原始化簡了之後,我們再回過頭來看kkt條件。kkt條件單獨理解看起來有點亂,其實我們可以分成三個部分,分別是原始問題可行:
\[\begin
1 - \xi_i - y_i(\omega^tx_i + b) \le 0 \\
-\xi_i \le 0
\end
\]對偶問題可行:
\[\begin
\alpha_i \ge 0 \\
\beta_i = c - \alpha_i
\end
\]以及鬆弛可行:
\[\begin
\alpha_i (1 - \xi - y_i(\omega^tx_i + b)) = 0 \\
\beta_i \xi_i = 0
\end
\]我們觀察一下倒數第二個條件:\(\alpha_i (1 - \xi - y_i(\omega^tx_i + b)) = 0\)。
這是兩個式子相乘並且等於0,無非兩種情況,要麼\(\alpha_i = 0\),要麼後面那串等於0。我們分情況討論。
如果\(\alpha_i = 0\),那麼\(y_i(\omega^tx_i + b) - 1 \ge 0\),樣本分類正確,不會對模型產生影響。
如果\(\alpha_i > 0\),那麼\(y_i(\omega^tx_i + b) = 1 - \xi_i\),則樣本是支援向量。由於\(c = \alpha_i + \beta_i\) ,並且\(\beta_i \xi_i= 0\)。我們又可以分情況:
\(\alpha_i < c\),那麼\(\beta_i > 0\),所以\(\xi_i = 0\),那麼樣本在邊界上
如果\(\alpha_i = c\),那麼\(\beta_i = 0\),如果此時\(\xi \le 1\),那麼樣本被正確分類,否則樣本被錯誤分類
經過了化簡之後,式子當中只剩下了變數\(\alpha\)
深入理解SVM,軟間隔與對偶問題
left min frac omega 2 s.t.quad y i omega tx b ge 1,i 1,2,3 ldots,m end right.機器學習 深入svm原理及模型推導 一 我個人感覺和實際的機器學習以及工程結合不是非常緊密,目前主要在svm模型的原理推導上用到,所以我們可以只需...
《機器學習技法》 對偶SVM
為什麼要求解對偶問題?一是對偶問題往往更容易求解,二是可以自然的引入核函式。原問題是 寫出它的拉格朗日函式 然後我們的原問題就等價為 為什麼可以這樣等價 即 對於不滿足約束條件的 b,w min裡面趨於無窮大,因此min就把這些b,w捨去了 對於滿足約束條件的解,min裡面就剛好是原來的目標函式,剛...
機器學習演算法 SVM 詳解
支援向量機 support vector machines 是一種二分類模型,它的目的是尋找乙個超平面來對樣本進行分割,分割的原則是間隔最大化,最終轉化為乙個凸二次規劃問題來求解。由簡至繁的模型包括 1 間隔最大化和支援向量 如果乙個線性函式能夠將樣本分開,稱這些資料樣本是線性可分的。那麼什麼是線性...