支持向量機原理(五)線性支持迴歸

支持向量機原理(一) 線性支持向量機html

    支持向量機原理(二) 線性支持向量機的軟間隔最大化模型算法

    支持向量機原理(三)線性不可分支持向量機與核函數微信

    支持向量機原理(四)SMO算法原理網絡

    支持向量機原理(五)線性支持迴歸機器學習

    在前四篇裏面咱們講到了SVM的線性分類和非線性分類,以及在分類時用到的算法。這些都關注與SVM的分類問題。實際上SVM也能夠用於迴歸模型,本篇就對如何將SVM用於迴歸模型作一個總結。重點關注SVM分類和SVM迴歸的相同點與不一樣點。函數

1、SVM迴歸模型的損失函數度量

    回顧下咱們前面SVM分類模型中,咱們的目標函數是讓\(\frac{1}{2}||w||_2^2\)最小,同時讓各個訓練集中的點儘可能遠離本身類別一邊的的支持向量,即\(y_i(w \bullet \phi(x_i )+ b) \geq 1\)。若是是加入一個鬆弛變量\(\xi_i \geq 0\),則目標函數是\(\frac{1}{2}||w||_2^2 +C\sum\limits_{i=1}^{m}\xi_i\),對應的約束條件變成:\(y_i(w \bullet \phi(x_i ) + b )  \geq 1 - \xi_i \)post

    可是咱們如今是迴歸模型,優化目標函數能夠繼續和SVM分類模型保持一致爲\(\frac{1}{2}||w||_2^2\),可是約束條件呢?不多是讓各個訓練集中的點儘可能遠離本身類別一邊的的支持向量,由於咱們是迴歸模型,沒有類別。對於迴歸模型,咱們的目標是讓訓練集中的每一個點\((x_i,y_i)\),儘可能擬合到一個線性模型$y_i ~= w \bullet \phi(x_i ) +b $。對於通常的迴歸模型,咱們是用均方差做爲損失函數,可是SVM不是這樣定義損失函數的。性能

    SVM須要咱們定義一個常量$\epsilon >; 0 \(,對於某一個點\)(x_i,y_i)\(,若是\)|y_i - w \bullet \phi(x_i ) -b| \leq \epsilon\(,則徹底沒有損失,若是\)|y_i - w \bullet \phi(x_i ) -b| >; \epsilon\(,則對應的損失爲\)|y_i - w \bullet \phi(x_i ) -b| - \epsilon\(,這個均方差損失函數不一樣,若是是均方差,那麼只要\)y_i - w \bullet \phi(x_i ) -b \neq 0$,那麼就會有損失。學習

    以下圖所示,在藍色條帶裏面的點都是沒有損失的,可是外面的點的是有損失的,損失大小爲紅色線的長度。大數據

    總結下,咱們的SVM迴歸模型的損失函數度量爲:

\[ err(x_i,y_i) =  \begin{cases} 0 & {|y_i - w \bullet \phi(x_i ) -b| \leq \epsilon}\\ |y_i - w \bullet \phi(x_i ) -b| - \epsilon & {|y_i - w \bullet \phi(x_i ) -b| >; \epsilon} \end{cases} \]

2、SVM迴歸模型的目標函數的原始形式

    上一節咱們已經獲得了咱們的損失函數的度量,如今能夠能夠定義咱們的目標函數以下:
\[ min\;\; \frac{1}{2}||w||_2^2  \;\; s.t \;\; |y_i - w \bullet \phi(x_i ) -b| \leq \epsilon (i =1,2,...m) \]

    和SVM分類模型類似,迴歸模型也能夠對每一個樣本\((x_i,y_i)\)加入鬆弛變量\(\xi_i \geq 0\), 可是因爲咱們這裏用的是絕對值,其實是兩個不等式,也就是說兩邊都須要鬆弛變量,咱們定義爲\(\xi_i^{\lor}, \xi_i^{\land}\), 則咱們SVM迴歸模型的損失函數度量在加入鬆弛變量以後變爲:
\[ min\;\; \frac{1}{2}||w||_2^2 + C\sum\limits_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) \]

\[ s.t. \;\;\; -\epsilon - \xi_i^{\lor} \leq y_i - w \bullet \phi(x_i ) -b \leq \epsilon + \xi_i^{\land} \]

\[ \xi_i^{\lor} \geq 0, \;\; \xi_i^{\land} \geq 0 \;(i = 1,2,..., m) \]

    依然和SVM分類模型類似,咱們能夠用拉格朗日函數將目標優化函數變成無約束的形式,也就是拉格朗日函數的原始形式以下:

\[ L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land}) = \frac{1}{2}||w||_2^2 + C\sum\limits_{i=1}^{m}(\xi_i^{\lor}+ \xi_i^{\land}) + \sum\limits_{i=1}^{m}\alpha^{\lor}(-\epsilon - \xi_i^{\lor} -y_i + w \bullet \phi(x_i) + b) + \sum\limits_{i=1}^{m}\alpha^{\land}(y_i - w \bullet \phi(x_i ) - b -\epsilon - \xi_i^{\land}) - \sum\limits_{i=1}^{m}\mu^{\lor}\xi_i^{\lor} - \sum\limits_{i=1}^{m}\mu^{\land}\xi_i^{\land} \]

    其中 \(\mu^{\lor} \geq 0, \mu^{\land} \geq 0, \alpha_i^{\lor} \geq 0, \alpha_i^{\land} \geq 0\),均爲拉格朗日系數。

3、SVM迴歸模型的目標函數的對偶形式

    上一節咱們講到了SVM迴歸模型的目標函數的原始形式,咱們的目標是
\[ \underbrace{min}_{w,b,\xi_i^{\lor}, \xi_i^{\land}}\; \;\;\;\;\;\;\;\;\underbrace{max}_{\mu^{\lor} \geq 0, \mu^{\land} \geq 0, \alpha_i^{\lor} \geq 0, \alpha_i^{\land} \geq 0}\;L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land})  \]

    和SVM分類模型同樣,這個優化目標也知足KKT條件,也就是說,咱們能夠經過拉格朗日對偶將咱們的優化問題轉化爲等價的對偶問題來求解以下:
\[ \underbrace{max}_{\mu^{\lor} \geq 0, \mu^{\land} \geq 0, \alpha_i^{\lor} \geq 0, \alpha_i^{\land} \geq 0}\; \;\;\;\;\;\;\;\;\underbrace{min}_{w,b,\xi_i^{\lor}, \xi_i^{\land}}\;L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land})  \]

    咱們能夠先求優化函數對於\(w,b,\xi_i^{\lor}, \xi_i^{\land}\)的極小值, 接着再求拉格朗日乘子\(\alpha^{\lor}, \alpha^{\land}, \mu^{\lor}, \mu^{\land}\)的極大值。

    首先咱們來求優化函數對於\(w,b,\xi_i^{\lor}, \xi_i^{\land}\)的極小值,這個能夠經過求偏導數求得:
\[ \frac{\partial L}{\partial w} = 0 \;\Rightarrow w = \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})\phi(x_i) \]

\[ \frac{\partial L}{\partial b} = 0 \;\Rightarrow  \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0 \]

\[ \frac{\partial L}{\partial \xi_i^{\lor}} = 0 \;\Rightarrow C-\alpha^{\lor}-\mu^{\lor} = 0 \]
\[ \frac{\partial L}{\partial \xi_i^{\land}} = 0 \;\Rightarrow C-\alpha^{\land}-\mu^{\land} = 0 \]
 

    好了,咱們能夠把上面4個式子帶入$L(w,b,\alpha^{\lor}, \alpha^{\land}, \xi_i^{\lor}, \xi_i^{\land}, \mu^{\lor}, \mu^{\land}) \(去消去\)w,b,\xi_i^{\lor}, \xi_i^{\land}$了。

    看似很複雜,其實消除過程和系列第一篇第二篇文章相似,因爲式子實在是冗長,這裏我就不寫出推導過程了,最終獲得的對偶形式爲:
\[ \underbrace{ max }_{\alpha^{\lor}, \alpha^{\land}}\; -\sum\limits_{i=1}^{m}(\epsilon-y_i)\alpha_i^{\land}+ (\epsilon+y_i)\alpha_i^{\lor}) - \frac{1}{2}\sum\limits_{i=1,j=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})(\alpha_j^{\land} - \alpha_j^{\lor})K_{ij} \]

\[ s.t. \; \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0  \]

\[ 0 <; \alpha_i^{\lor} <; C \; (i =1,2,...m) \]

\[ 0 <; \alpha_i^{\land} <; C \; (i =1,2,...m) \]

     對目標函數取負號,求最小值能夠獲得和SVM分類模型相似的求極小值的目標函數以下:
\[ \underbrace{ min}_{\alpha^{\lor}, \alpha^{\land}}\; \frac{1}{2}\sum\limits_{i=1,j=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})(\alpha_j^{\land} - \alpha_j^{\lor})K_{ij} + \sum\limits_{i=1}^{m}(\epsilon-y_i)\alpha_i^{\land}+ (\epsilon+y_i)\alpha_i^{\lor}   \]

\[ s.t. \; \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor}) = 0  \]

\[ 0 <; \alpha_i^{\lor} <; C \; (i =1,2,...m) \]

\[ 0 <; \alpha_i^{\land} <; C \; (i =1,2,...m) \]

    對於這個目標函數,咱們依然能夠用第四篇講到的SMO算法來求出對應的\(\alpha^{\lor}, \alpha^{\land}\),進而求出咱們的迴歸模型係數\(w, b\)

4、4. SVM迴歸模型係數的稀疏性

    在SVM分類模型中,咱們的KKT條件的對偶互補條件爲: \(\alpha_{i}^{*}(y_i(w \bullet \phi(x_i) + b) - 1+\xi_i^{*}) = 0\),而在迴歸模型中,咱們的對偶互補條件相似以下:
\[ \alpha_i^{\lor}(\epsilon + \xi_i^{\lor} + y_i - w \bullet \phi(x_i ) - b ) = 0 \]

\[ \alpha_i^{\land}(\epsilon + \xi_i^{\land} - y_i + w \bullet \phi(x_i ) + b ) = 0  \]

    根據鬆弛變量定義條件,若是\(|y_i - w \bullet \phi(x_i ) -b| <; \epsilon\),咱們有\(\xi_i^{\lor} = 0, \xi_i^{\land}= 0\),此時\(\epsilon + \xi_i^{\lor} + y_i - w \bullet \phi(x_i ) - b \neq 0, \epsilon + \xi_i^{\land} - y_i + w \bullet \phi(x_i ) + b \neq 0\)這樣要知足對偶互補條件,只有\(\alpha_i^{\lor} = 0, \alpha_i^{\land} = 0\)

    咱們定義樣本系數係數
\[ \beta_i =\alpha_i^{\land}-\alpha_i^{\lor} \]

    根據上面\(w\)的計算式\(w = \sum\limits_{i=1}^{m}(\alpha_i^{\land} - \alpha_i^{\lor})\phi(x_i) \),咱們發現此時\(\beta_i = 0\),也就是說\(w\)不受這些在偏差範圍內的點的影響。對於在邊界上或者在邊界外的點,\(\alpha_i^{\lor} \neq 0, \alpha_i^{\land} \neq 0\),此時\(\beta_i \neq 0\)

5、SVM 算法小結

    這個系列終於寫完了,這裏按慣例SVM 算法作一個總結。SVM算法是一個很優秀的算法,在集成學習和神經網絡之類的算法沒有表現出優越性能前,SVM基本佔據了分類模型的統治地位。目前則是在大數據時代的大樣本背景下,SVM因爲其在大樣本時超級大的計算量,熱度有所降低,可是仍然是一個經常使用的機器學習算法。

    SVM算法的主要優勢有:

    1) 解決高維特徵的分類問題和迴歸問題頗有效,在特徵維度大於樣本數時依然有很好的效果。

    2) 僅僅使用一部分支持向量來作超平面的決策,無需依賴所有數據。

    3) 有大量的核函數可使用,從而能夠很靈活的來解決各類非線性的分類迴歸問題。

    4)樣本量不是海量數據的時候,分類準確率高,泛化能力強。

    SVM算法的主要缺點有:

    1) 若是特徵維度遠遠大於樣本數,則SVM表現通常。

    2) SVM在樣本量很是大,核函數映射維度很是高時,計算量過大,不太適合使用。

    3)非線性問題的核函數的選擇沒有通用標準,難以選擇一個合適的核函數。

    4)SVM對缺失數據敏感。

    以後會對scikit-learn中SVM的分類算法庫和迴歸算法庫作一個總結,重點講述調參要點,敬請期待。

(歡迎轉載,轉載請註明出處。歡迎溝通交流: 微信:nickchen121) 

\xi_i^{*}

相關文章
相關標籤/搜索