1. 程式人生 > >機器學習,詳解SVM軟間隔與對偶問題

機器學習,詳解SVM軟間隔與對偶問題

今天是**機器學習專題**的第34篇文章,我們繼續來聊聊SVM模型。 我們在上一篇文章當中推導了SVM模型在硬間隔的原理以及公式,最後我們消去了所有的變數,只剩下了$\alpha$。在硬間隔模型當中,樣本是線性可分的,也就是說-1和1的類別可以找到一個平面將它完美分開。但是在實際當中,這樣的情況幾乎是不存在的。道理也很簡單,**完美是不存在的,總有些樣本會出錯**。 那針對這樣的問題我們應該怎麼解決呢? ## 軟間隔 在上文當中我們說了,在實際的場景當中,資料不可能是百分百線性可分的,即使真的能硬生生地找到這樣的一個分隔平面區分開樣本,那麼也很有可能**陷入過擬合**當中,也是不值得追求的。 因此,我們需要對分類器的標準稍稍放鬆,**允許部分樣本出錯**。但是這就帶來了一個問題,在硬間隔的場景當中,間隔就等於距離分隔平面最近的支援向量到分隔平面的距離。那麼,在允許出錯的情況下,這個間隔又該怎麼算呢? 為了解決這個問題,我們需要對原本的公式進行變形,引入一個新的變數叫做**鬆弛變數**。鬆弛變數我們用希臘字母$\xi$來表示,這個鬆弛變數允許我們適當放鬆$y_i(\omega^T x_i + b) \ge 1 $這個限制條件,我們將它變成$y_i(\omega^T x_i + b) \ge 1-\xi_i $。 也就是說對於每一條樣本我們都會有一個對應的鬆弛變數$\xi_i$,它一共有幾種情況。 1. $\xi=0$,表示樣本能夠正確分類 2. $0 < \xi < 1$,表示樣本在分割平面和支援向量之間 3. $\xi = 1$,表示樣本在分割平面上 4. $\xi \ge 1$,表示樣本異常 我們可以結合下面這張圖來理解一下,會容易一些: ![](https://tva1.sinaimg.cn/large/007S8ZIlgy1ghuo60wybbj30kw0co771.jpg) 鬆弛變數雖然可以讓我們表示那些被錯誤分類的樣本,但是我們當然不希望它隨意鬆弛,這樣模型的效果就不能保證了。所以我們把它加入損失函式當中,希望在鬆弛得儘量少的前提下保證模型儘可能劃分正確。這樣我們可以重寫模型的學習條件: $$\begin{align*} &\min\quad \frac{1}{2}||\omega||^2 + C\sum_{i=1}^m\xi_i\\ & \begin{array}{r@{\quad}r@{}l@{\quad}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{array} \end{align*}$$ 這裡的C是一個常數,可以理解成**懲罰引數**。我們希望$||\omega||^2$儘量小,也希望$\sum \xi_i$儘量小,這個引數C就是用來協調兩者的。C越大代表我們對模型的分類要求越嚴格,越不希望出現錯誤分類的情況,C越小代表我們對鬆弛變數的要求越低。 從形式上來看模型的學習目標函式和之前的硬間隔差別並不大,只是多了一個變數而已。這也是我們希望的,在改動儘量小的前提下讓模型支援分隔錯誤的情況。 ## 模型推導 對於上面的式子我們同樣使用拉格朗日公式進行化簡,將它**轉化成沒有約束的問題**。 首先,我們確定幾個值。第一個是我們要優化的目標:$f(x)=\min_{\omega, b, \xi}\frac{1}{2}||\omega||^2 + C\sum_{i=1}^m \xi_i$ 第二個是不等式約束,拉格朗日乘子法當中限定不等式必須都是小於等於0的形式,所以我們要將原式中的式子做一個簡單的轉化: $$ \begin{aligned} g(x) = 1 - \xi_i - y_i(\omega^Tx_i + b) \leq 0 \\ h(x) = -\xi_i \le 0 \end{aligned} $$ 最後是引入拉格朗日乘子: $\alpha = (\alpha_1, \alpha_2, \cdots, \alpha_m), \beta = (\beta_1, \beta_2, \cdots, \beta_m)$ 我們寫出廣義拉格朗日函式:$L(\omega, b, \xi, \alpha, \beta) = \frac{1}{2}||\omega||^2 + C\sum_{i=1}^m \xi_i, + \sum_{i=1}^m \alpha_i(1 - \xi_i - y_i(\omega^Tx_i + b)) -\sum_{i=1}^m \beta_i\xi_i$ 我們要求的是這個函式的最值,也就是$\min_{\omega, b, \xi}\max_{\alpha \ge 0, \beta\ge 0}L(\omega, b, \xi, \alpha, \beta)$。 在處理硬間隔的時候,我們講過**對偶問題**,對於軟間隔也是一樣。我們求L函式的對偶函式的極值。 ## 對偶問題 原函式的對偶問題是$\max_{\alpha \ge0, \beta \ge 0}\min_{\omega, b, \xi}L(\omega, b, \xi, \alpha, \beta)$,這個對偶問題要成立需要滿足KKT條件。 我們先把這個KKT條件放一放,先來看一下對偶問題當中的內部的極小值。這個**極小值沒有任何約束條件**,所以我們可以放心大膽地通過求導來來計算極值。這個同樣是高中數學的內容,我們分別計算$\frac{\partial L}{\partial \omega}$,$\frac{\partial L}{\partial b}$和$\frac{\partial L}{\partial \xi}$。 求導之後,我們可以得到: $$ \begin{aligned} \frac{\partial L}{\partial \omega} = 0 &\rightarrow \omega = \sum_{i=1}^m \alpha_i y_i x_i \\ \frac{\partial L}{\partial b} = 0 &\rightarrow \sum_{i=1}^m \alpha_i y_i = 0 \\ \frac{\partial L}{\partial \xi} = 0 &\rightarrow \beta_i = C - \alpha_i \end{aligned} $$ 我們把這三個式子帶入對偶函式可以得到: $$ \begin{aligned} L(\omega, b, \xi, \alpha,\beta) &= \frac{1}{2} \sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y_iy_jx_i^Tx_j + C\sum_{i=1}^m \xi_i + \sum_{i=1}^m \alpha_i (1 - \xi_i) - \sum_{i=1}^m (C - \alpha_i) \xi_i \\ &= \sum_{i=1}^m\alpha_i - \frac{1}{2}\sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y_iy_jx_i^Tx_j \end{aligned} $$ 由於$\beta_i \ge 0$,所以我們可以得到$0 \le \alpha_i \le C$,所以最後我們可以把式子化簡成: $$\begin{align*} &\max_{\alpha} \sum_{i=1}^m\alpha_i - \frac{1}{2} \sum_{i=1}^m \sum_{j=1}^m \alpha_i \alpha_j y_iy_jx_i^Tx_j\\ & \begin{array}{r@{\quad}r@{}l@{\quad}l} s.t.& \sum_{i=1}^m \alpha_i y_i = 0 \\ & 0 \le \alpha_i \le C,&i=1,2,3\ldots,m\\ \end{array} \end{align*}$$ 將原始化簡了之後,我們再回過頭來看KKT條件。KKT條件單獨理解看起來有點亂,其實我們可以分成三個部分,分別是原始問題可行: $$ \begin{aligned} 1 - \xi_i - y_i(\omega^Tx_i + b) \le 0 \\ -\xi_i \le 0 \end{aligned} $$ 對偶問題可行: $$ \begin{aligned} \alpha_i \ge 0 \\ \beta_i = C - \alpha_i \end{aligned} $$ 以及鬆弛可行: $$ \begin{aligned} \alpha_i (1 - \xi - y_i(\omega^Tx_i + b)) = 0 \\ \beta_i \xi_i = 0 \end{aligned} $$ 我們觀察一下倒數第二個條件:$\alpha_i (1 - \xi - y_i(\omega^Tx_i + b)) = 0$。 這是兩個式子相乘並且等於0,無非兩種情況,要麼$\alpha_i = 0$,要麼後面那串等於0。我們分情況討論。 1. 如果$\alpha_i = 0$,那麼$y_i(\omega^Tx_i + b) - 1 \ge 0$,樣本分類正確,不會對模型產生影響。 2. 如果$\alpha_i > 0$,那麼$y_i(\omega^Tx_i + b) = 1 - \xi_i$,則樣本是支援向量。由於$C = \alpha_i + \beta_i$ ,並且$\beta_i \xi_i= 0$。我們又可以分情況: 1. $\alpha_i < C$,那麼$\beta_i > 0$,所以$\xi_i = 0$,那麼樣本在邊界上 2. 如果$\alpha_i = C$,那麼$\beta_i = 0$,如果此時$\xi \le 1$,那麼樣本被正確分類,否則樣本被錯誤分類 經過了化簡之後,**式子當中只剩下了變數$\alpha$**,我們要做的就是找到滿足約束條件並且使得式子取極值時的$\alpha$,這個$\alpha$要怎麼求呢?我們這裡先放一放,將在下一篇文章當中詳解講解。 今天的文章到這裡就結束了,如果喜歡本文的話,請來一波**素質三連**,給我一點支援吧(**關注、轉發、點贊**)。 [原文連結,求個關注](https://mp.weixin.qq.com/s?__biz=MzUyMTM5OTM2NA==&mid=2247487112&idx=2&sn=f9dc05e897f34e510dbc516a05fbbc72&chksm=f9daf3a3cead7ab544188213aa16704f57732fb9ea8ecba1eebfb10b4b706e49a0531db5810c&token=57633626&lang=zh_CN#rd) ![](https://img2020.cnblogs.com/blog/1906483/202009/1906483-20200909105716303-14850358