【機器學習】算法原理詳細推導與實現(xiàn)(四):支持向量機(上)

【機器學習】算法原理詳細推導與實現(xiàn)(四):支持向量機(上)

在之前的文章中,包括線性回歸和邏輯回歸,都是以線性分界線進行分割劃分種類的。而本次介紹一種很強的分類器【支持向量機】,它適用于線性和非線性分界線的分類方法。

函數(shù)間隔概念

為了更好的理解非線性分界線,區(qū)別兩種分界線對于分類的直觀理解,第一種直觀理解需要考慮 logistic 回歸,我們用一個 logistic 回歸函數(shù)表示當 y=1 時概率表示為 :

\begin{split} p(y=1|x;\theta)&=h(\theta) \\ &=g({\theta}^Tx) \\ &=g(z) \\ \end{split}

h(\theta) \geq 0.5 時,即{\theta}^Tx \geq 0y=1;同理當 h(\theta) < 0.5 時,即{\theta}^Tx < 0y=0?;仡?logistic 回歸的圖像如下所示:

image

由上圖可以看出:如果 {\theta}^Tx >> 0 時,那么可以相當確定的預測y=1;如果 {\theta}^Tx << 0 時,那么可以相當確定的預測y=0

當我們根據(jù)這樣的樣本擬合logistic 回歸得出分類器時,這樣的分類器是良好的。即對于所有的 i ,如果 y^{(i)}=1,那么 {\theta}^Tx^{(i)} >> 0 ;如果 y^{(i)}=0,那么 {\theta}^Tx^{(i)} << 0 。換句話說,如果我們根據(jù)訓練集找到了合適的參數(shù) \theta ,那么我們的學習算法不僅會保證分類結果正確,更會進一步的保證對分類結果的 確定性。

假設訓練集都是線性可分隔的,即一定有一條直線可以將訓練集分開,假設{\theta}^Tx^{(i)} =0 代表中間那條分隔線,使得正樣本和負樣本到這條線的距離最大,即這條線是最優(yōu)的分隔線:

image

考慮上面3個點 A 、B和C。從圖中我們可以確定A是×類別的,然而C我們是不太確定的,B還算能夠確定。logistic 回歸強調所有的點盡可能的遠離中間那條線即可,由此可能造成如上所示,點C可能屬于o類別也可能屬于×類別,所以我們這里希望找到一個分隔線,使其所有的分類結果有足夠的 確定性,這就是logistic 回歸和支持向量機的不同點。

間隔器

函數(shù)間隔

支持向量機的符號和logistic 回歸的符號有點差別。支持向量機的取值范圍是 y \in \{-1, 1\},而logistic 回歸的取值范圍是 y \in \{0, 1 \}

logistic 回歸的假設函數(shù)為:

\begin{split} h(x)&=\theta_0x_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n \\ &=\theta^Tx \end{split}

其中這里假設 x_0=1。而支持向量機假設 \theta_0=b,即假設函數(shù)為:

\begin{split} h(x)&=\theta_0+\theta_1x_1+\theta_2x_2+...+\theta_nx_n \\ &=b+\omega_1x_1+\omega_2x_2+...+\omega_nx_n \\ &=\omega^Tx+b \end{split}

即為:

h_{w,b}(x)=g(\omega^Tx+b)

將其假設函數(shù)映射到 y \in \{-1, 1 \} 上:

g(z)= \begin{cases} 1, & \text{z $\geq$ 0} \\ -1, & \text{z<0} \end{cases}

給定一個訓練樣本 (x^{(i)}, y^{(i)}),那么定義支持向量機的間隔函數(shù)為:

\hat{\gamma}^{(i)}=y^{(i)}(\omega^Tx+b)

對于這個式子的理解是:

如果 y^{(i)}=1,為了獲得較大的函數(shù)間隔,你需要令(\omega^Tx+b) 取得較大值,即(\omega^Tx+b) >> 0,得到的\hat{\gamma}^{(i)}是一個大正數(shù)
如果 y^{(i)}=-1,為了獲得較大的函數(shù)間隔,那么唯一使其獲得較大值的方式是,令(\omega^Tx+b) << 0 ,得到的\hat{\gamma}^{(i)}是一個大負數(shù)

這個定義捕捉到了我們之前對于函數(shù)間隔的直觀理解的特點,在之前logistic 回歸的直觀理解中,如果y^{(i)}=1,我們希望(\omega^Tx+b)取較大的值;如果y^{(i)}=-1,我們希望(\omega^Tx+b)取較小的值,這個定義用一個公式捕捉到了,我們希望函數(shù)間隔去較大值的兩種情況。

上面定義的某一個樣本的函數(shù)間隔為:\hat{\gamma}^{(i)}=y^{(i)}(\omega^Tx+b),那么針對全局樣本得到的一個超平面的函數(shù)間隔定義為:

\hat{\gamma}=min\hat{\gamma}^{(i)},(i=1,2,...,m)

代表在全部的訓練樣本上,以分類正例和負例置信度最低的那個函數(shù)間隔為準,即 函數(shù)間隔是最差的情況,也要能很好的分類正負 。

實際上,這種直觀理解存在一個小問題,要使函數(shù)間隔取較大的值是非常容易的,比如說:如果我們的參數(shù)是\omegab,那么我們可以將\omega變?yōu)樵瓉淼?code>2倍,將b也變?yōu)樵瓉淼?code>2倍:

\omega \to 2\omega,b \to 2b

那么根據(jù)函數(shù)間隔的定義:

\hat{\gamma}^{(i)}=y^{(i)}(\omega^Tx+b)

如果把\omegab變?yōu)樵瓉淼?code>2倍,那么我可以很容易的使函數(shù)間隔加倍。所以單純的以最大化函數(shù)間隔為目標是沒有多大意義的,因為通過對參數(shù)翻倍就可以使函數(shù)間隔獲得任意大的值,也許我們可以解決這個問題。通過添加一個正規(guī)化條件,使得\omega的長度為1,即||\omega||=1

幾何間隔

分類器的確定邊界會由平面給出,假設存在一個B點在分割面上,其他任何一點,比如A點到分割面的距離,這就是幾何間隔

image

那么上圖的A點和分割面成90°夾角,即法向量表示為\frac{\omega}{||\omega||},A點到分割面的距離為{\gamma}(沒有帽子的是幾何間隔,有帽子的是函數(shù)間隔\hat{\gamma}),假設A點的坐標為(x^{(i)},y^{(i)}),B點的坐標為(x,y),那么可以得到x=x^{(i)}-{\gamma}^{(i)}\frac{\omega}{||\omega||}(利用初中的幾何知識),因為\frac{\omega}{||\omega||}是長度為1且與超平面垂直的單位向量,用點x^{(i)}減掉{\gamma}^{(i)}\frac{\omega}{||\omega||}就是超平面上面點Bx坐標了。因為分割面上面的點都滿足\omega^Tx+b=0,而點B在分割面上,所以也滿足\omega^Tx+b=0,,即:

\omega^T(x^{(i)}-{\gamma}^{(i)}\frac{\omega}{||\omega||})+b=0

進一步化簡得到:

{\gamma}^{(i)}=\frac{\omega^Tx^{(i)}+b}{||\omega||}=(\frac{\omega}{||\omega||})^Tx^{(i)}+\frac{||\omega||}

上述是假設已經(jīng)對樣本分好了正確的類別,那么如果點A是樣本,即很多個類似于點A的樣本(x^{(i)},y^{(i)}),那么上述公式轉化為:

{\gamma}^{(i)}=y^{(i)}((\frac{\omega}{||\omega||})^Tx^{(i)}+\frac{||\omega||})

現(xiàn)在這樣子的形式和之前的函數(shù)間隔形式非常相似,除了在這里我們對向量\omega進行了標準化。所以像之前一樣,我們希望幾何間隔取較大的值,也就是意味著如果我們對訓練樣本進行了正確的分類,那么這些樣本在分類正確的一面距離分割面的距離越大越好,這里用乘上y^{(i)}來判斷樣本正負分類的方向。

這里有幾個非常容易得到的結論:

  1. 如果||\omega||=1,那么函數(shù)間隔等于幾何間隔
  2. 幾何間隔=函數(shù)間隔 / ||\omega||

同樣,如果同時擴大 \omegab,那么||\omega||也會相應的擴大,結果無影響。所以針對全局樣本得到的一個超平面的函數(shù)間隔定義為:

\gamma=min \gamma ^{(i)},(i=1,2,...,m)

最優(yōu)間隔分類器

最優(yōu)間隔分類器是指選擇合適的\gamma、\omega、b,使得間隔最大,也就是說滿足函數(shù):

max_{\gamma,\omega,b}->\gamma

y^{(i)}(\omega^Tx+b) \geq \gamma,(||\omega||=1)

慮幾何間隔和函數(shù)間隔的關系,即\gamma=\frac{\hat{\gamma}}{||\omega||},那么上面可以轉化為:

max_{\gamma,\omega,b}->\frac{\hat{\gamma}}{||\omega||}

y^{(i)}(\omega^Tx+b) \geq \hat{\gamma}

這樣子就取消了||\omega||=1的約束了,但是目標函數(shù)目前不是凸函數(shù),無法求得最優(yōu)值,沒發(fā)直接帶入優(yōu)化算法里面去計算,所以這里還是需要改寫一下。前面說到同時擴大\omegab對結果沒有影響,但我們最后要求的仍然是\omegab的確定值,不是他們的一組倍數(shù)值,因此,我們需要對\hat{\gamma}做一些限制,以保證我們解是唯一的。這里為了簡便取\hat{\gamma}=1,這樣的意義是將全局的函數(shù)間隔定義為 1 ,也即是將離超平面最近的點的距離定義為\frac{1}{||\omega||}。這里解釋一下為什么這么定義,因為求解\frac{1}{||\omega||}的最大值相當于求\frac{1}{2}||\omega||^2的最小值,因此改寫的結果為:

min_{\gamma,\omega,b}->\frac{1}{2}||\omega||^2

y^{(i)}(\omega^Tx+b) \geq 1

這下定義變成只有線性約束了,而且是個典型的二次規(guī)劃問題(目標函數(shù)是自變量的二次函數(shù)),利用算法可以輕松求解。

拉格朗日對偶

含有等式約束形式的求解最值

這里需要用到微積分知識中的拉格朗日乘子法,它可以用來求解像這樣的優(yōu)化問題,例如在滿足一定數(shù)量的約束條件的前提下,求解最小化、最大化問題,在這里先簡要的介紹一下它的一種一般化的形式。拉格朗日乘子法是這樣的:假設有一個函數(shù)f(\omega),你想使他最大化或者最小化,與此同時需要滿足一些約束條件:

min_{\omega}->f(\omega)

對于每個 i,必須保證約束函數(shù)的值為0:

h_i(\omega)=0,i=1,2,...,l

給定這些約束,我可以寫成向量的形式,將整個向量表示成h(\omega)

\begin{bmatrix} h_1(\omega) \\ h_2(\omega) \\ ... \\ h_l(\omega) \\ \end{bmatrix} = \overrightarrow{0}

上面表示所有的元素都是 0 向量。如果像求解這個最優(yōu)化問題,利用拉格朗日乘子法,首先應該創(chuàng)建一個拉格朗日算子:

\Gamma(\omega,\beta)=f(\omega)+\sum_{i=1}^l\beta_ih_i(\omega)

它應該等于原始的目標函數(shù)加上這些限制函數(shù)的線性組合,這些參數(shù)\beta_i被稱為拉格朗日算子,然后解決這個問題的方法是,對每一個原始值求偏導之后將其設為0:

\frac{\partial_{\Gamma}}{\partial_{\omega_i}}=0;\frac{\partial_{\Gamma}}{\partial_{\beta_i}}=0

分別對\omega\beta求偏導,使其偏導數(shù)等于0,理論上可以解出一個w^*最優(yōu)解,是這個最優(yōu)解的必要條件是:存在\beta^*使得這些偏導數(shù)的值為0。所以根據(jù)這個結論,求解的過程是:

  1. 用拉格朗日乘子法創(chuàng)建一個拉格朗日算子
  2. 之后相對于原始參數(shù)\omega和拉格朗日算子\beta求偏導數(shù),并令偏導數(shù)等于0
  3. 之后對方程組進行求解,最后檢查下得到的解是否確實為一個最小值

至于為什么引入拉格朗日乘子法可以求出極值,原因是f(\omega)d_{\omega}變化方向受其他不等式的約束,d_{\omega}的變化方向與f(\omega)的梯度垂直時才能獲得極值,而且在極值處,f(\omega)的梯度與其他等式梯度的線性組合平行,因此他們之間存在線性關系。(kkt條件)

含不等式約束形式的求解最值

然后我們探討有不等式約束的極值問題求法 ,假設不僅僅存在約束條件h_i(\omega)=0,還存在約束條件g_i(\omega)\leq 0,問題如下所示 :

min_{\omega}->f(\omega)

對于每個 i,必須保證約束函數(shù)h(\omega)的值為0:

h_i(\omega)=0,i=1,2,...,l

對于每個 i,必須保證約束函數(shù)g(\omega)的值小于等于0:

g_i(\omega)\leq 0,i=1,2,...,k

給定這些約束,我可以寫成向量的形式,可以用向量表示成:

\begin{bmatrix} h_1(\omega) \\ h_2(\omega) \\ ... \\ h_l(\omega) \\ \end{bmatrix} = \overrightarrow{0}

\begin{bmatrix} g_1(\omega) \\ g_2(\omega) \\ ... \\ g_k(\omega) \\ \end{bmatrix} \leq \overrightarrow{0}

在這種情況下,既有等式約束條件也有不等式約束條件,那么利用拉格朗日乘子法,首先應該創(chuàng)建兩個拉格朗日算子:

\Gamma(\omega,\alpha,\beta)=f(\omega)+\sum_{i=1}^k\alpha_ig_i(\omega)+\sum_{i=1}^l\beta_ih_i(\omega)

這里的\alpha_i\beta_i都是拉格朗日算子。如果按這個公式和之前的方法求解,即求解最小值min f(\omega)會出現(xiàn)問題。因為我們求解的是最小值,而這里的g_i(\omega) \leq 0,我們可以將\alpha_i調整成很大的正值,來使最后的函數(shù)結果是負無窮。因此我們需要排除這種情況, 即需要定義下面的函數(shù):

\theta_P(\omega)=max_{(\alpha,\beta:\alpha_i \geq 0)} \Gamma(\omega,\alpha,\beta)

以上公式,假設g_i(\omega) \geq 0或者h_i(\omega) \neq 0,那么可以調整參數(shù)\alpha_i\beta_i使得\theta_P(\omega)的最大值為正無窮。

但是當g_i(\omega)h_i(\omega)滿足約束條件g_i(\omega)\leq 0h_i(\omega)=0時,\theta_p(\omega)的最大值為f(\omega)。所以上面式子可知,當g_i(\omega) \geq 0,h_i(\omega) \neq 0\theta_P(\omega)=\infty,當g_i(\omega)\leq 0,h_i(\omega)=0\theta_P(\omega)=f(\omega)

\theta_P(\omega)= \begin{cases} f(\omega), & g_i(\omega)\leq 0,h_i(\omega)=0 \\ \infty, & g_i(\omega) \geq 0,h_i(\omega) \neq 0 \end{cases}

這樣原來要求的min f(\omega)可以轉換成求min \theta_P(\omega),因為\theta_P(\omega)的最小值為f(\omega),f(\omega)越小則\theta_P(\omega)越小,即求min f(\omega)等于求min \theta_P(\omega)

min_{\omega} \theta_P(\omega)=min_{\omega} max_{(\alpha,\beta:\alpha_i \geq 0)} \Gamma(\omega,\alpha,\beta)

拉格朗日對偶步驟

下面使用p^*來表示min_{\omega} \theta_P(\omega),如果直接求解,首先面對的是兩個參數(shù)\alpha,\beta,這個過程不容易求解。因此這里引入拉格朗日對偶,即函數(shù)\theta_P的對偶函數(shù)\theta_D,它是一個以\alpha\beta為變量的函數(shù):

\theta_D(\alpha,\beta)=min_{\omega} \Gamma(\omega,\alpha,\beta)

由求解\theta_P(\omega)的最小值min_{\omega} \theta_P(\omega)的推理步驟可知,\theta_D(\alpha,\beta)求解最大值的函數(shù)為

max_{(\alpha,\beta:\alpha_i \geq 0)} \theta_D(\alpha,\beta)=max_{(\alpha,\beta:\alpha_i \geq 0)} min_{\omega} \Gamma(\omega,\alpha,\beta)

這個問題是原問題的對偶問題,相對于原問題只是更換了maxmin的順序,而一般更換maxmin順序總有如下式子成立:

max (min(x)) \leq min (max(x))

所以有:

d^* \leq p^*

d^*=max_{(\alpha,\beta:\alpha_i \geq 0)} (min_{\omega} \Gamma(\omega,\alpha,\beta)) \leq min_{\omega} (max_{(\alpha,\beta:\alpha_i \geq 0)} \Gamma(\omega,\alpha,\beta))=p^*

下面會解釋在什么條件下兩者會相等d^*=p^*。

假設f(\omega)g_i(\omega)都是凸函數(shù),h_i(\omega)=\alpha_i^T\omega+b_i,并且存在\omega使得所有的i都有g_i(\omega)<0。在這種假設下,一定存在\omega^*,\alpha^*,\beta^*使得\omega^*是原問題p^*的解,\alpha^*,\beta^*是對偶問題d^*的解,以及d^*=p^*=\Gamma(\omega^*,\alpha^*,\beta^*),這時\omega^*,\alpha^*,\beta^*滿足kkt條件:

\frac{\partial_{\Gamma(\omega^*,\alpha^*,\beta^*)}}{\partial_{\omega_i}}=0,i=1,2,...,n

\frac{\partial_{\Gamma(\omega^*,\alpha^*,\beta^*)}}{\partial_{\beta_i}}=0,i=1,2,...,l

\alpha_i^*g_i(\omega^*)=0,i=1,2,...,k

g_i(\omega^*) \leq 0,i=1,2,...,k

\alpha^* \geq 0,i=1,2,...,k

如果\omega^*,\alpha^*,\beta^*滿足了kkt條件,那么他們就是原問題和對偶問題的解。而\alpha_i^*g_i(\omega^*)=0,i=1,2,...,k被稱作是kkt條件,這個條件隱含了如果\alpha^*>0,那么g_i(\omega^*)=0。也就是說,g_i(\omega^*)=0時,\omega處于邊界上,而當\alpha^*=0時,其g_i(\omega^*) \leq 0,即\omega不在邊界上在可行域內(nèi)。

最優(yōu)函數(shù)間隔器

重新回到 svm 的優(yōu)化問題,在上面我們需要優(yōu)化的問題是:

min_{\gamma,\omega,b}->\frac{1}{2}||\omega||^2

y^{(i)}(\omega^Tx^{(i)}+b) \geq 1 ,i=1,2,...,m

這里將約束條件改成:

g_i(\omega,b)=-y^{(i)}(\omega^Tx^{(i)}+b)+1 \leq 0 ,i=1,2,...,m

kkt條件可知,如果\alpha_i > 0就 一定意味著g_i(\omega,b)=0(因為 \alpha_i^*g_i(\omega^*)=0,i=1,2,...,k ),也就是存在訓練樣本(x_i,y_i)使得函數(shù)間隔為1,即g_i(\omega,b)=-y^{(i)}(\omega^Tx^{(i)}+b)+1=0。它到底表示了什么可以用圖展示一下:

image

你有一些訓練樣本和一個分隔超平面,根據(jù)上面的假設\alpha_i > 0(換個說法是\alpha_i \neq 0)就一定會有函數(shù)間隔為1的樣本,即上圖中虛線部分,這些里超平面最近的樣本。在這個用圖展示的例子中,所有離超平面較遠樣本的函數(shù)間隔都大于1。

從上面圖形可以看出:通常情況下,可以發(fā)現(xiàn)只有很少數(shù)量的訓練樣本函數(shù)間隔等于1,在上面的圖中只有3個樣本的函數(shù)間隔等于1,只有少量的樣本到超平面的距離是最小距離,這些樣本我們稱之為支持向量,支持向量機的支持向量就是這個意思

支持向量的數(shù)量一般都會很少,即大多數(shù)情況下拉格朗日算子\alpha_i =0,如果\alpha_i = 0,那么其對應的樣本就可能不是支持向量(g_i(\omega) \leq 0)。

回到上面的優(yōu)化問題,由于只有g_i(\omega),所以上面的拉格朗日函數(shù):

\Gamma(\omega,\alpha,\beta)=f(\omega)+\sum_{i=1}^k\alpha_ig_i(\omega)+\sum_{i=1}^l\beta_ih_i(\omega)

變成:

\Gamma(\omega,\alpha)=f(\omega)+\sum_{i=1}^m\alpha_ig_i(\omega)

\implies

\Gamma(\omega,b,\alpha)=\frac{1}{2}||\omega||^2-\sum_{i=1}^m\alpha_i[y^{(i)}(\omega^Tx^{(i)}+b)-1]

注意到這里只有 \alpha_i 沒有 \beta_i 是因為原問題中沒有等式約束,只有不等式約束。

下面按照對偶問題的求解步驟,即需要定義下面的函數(shù)::

d^*=max_{(\alpha,\beta:\alpha_i \geq 0)} min_{\omega} \Gamma(\omega,\alpha,\beta)

首先求解最小值min_{\omega} \Gamma(\omega,\alpha,\beta),對于固定的\alpha_i,\Gamma(\omega,\alpha,\beta)的最小值只與\omegab有關。所以分別對\omegab求偏導:

\nabla_{\omega}\Gamma(\omega,b,\alpha)=\omega-\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}=0

\implies

\omega=\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}

上面得到\Gamma(\omega,\alpha,\beta)最小值時\omega的取值。

b求偏導得到:

\frac{\partial_{\Gamma(\omega,b,\alpha)}}{\partial_{b_i}}=\sum^m_{i=1}\alpha_iy^{(i)}=0

將上面求偏導得到的兩個式子,即代入到如下拉格朗日的函數(shù)中:

\begin{split} \Gamma(\omega,b,\alpha)&=\frac{1}{2}||\omega||^2-\sum_{i=1}^m\alpha_i[y^{(i)}(\omega^Tx^{(i)}+b)-1] \\ &=\frac{1}{2}\omega^T\omega-\sum_{i=1}^m\alpha_iy^{(i)}\omega^Tx^{(i)}-\sum_{i=1}^m\alpha_iy^{(i)}b+\sum_{i=1}^m\alpha_i \\ &=\frac{1}{2}\omega^T\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}-\sum_{i=1}^m\alpha_iy^{(i)}\omega^Tx^{(i)}-\sum_{i=1}^m\alpha_iy^{(i)}b+\sum_{i=1}^m\alpha_i \\ &=\frac{1}{2}\omega^T\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}-\omega^T\sum_{i=1}^m\alpha_iy^{(i)}x^{(i)}-\sum_{i=1}^m\alpha_iy^{(i)}b+\sum_{i=1}^m\alpha_i \\ &=-\frac{1}{2}\omega^T\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}-\sum_{i=1}^m\alpha_iy^{(i)}b+\sum_{i=1}^m\alpha_i \\ &=-\frac{1}{2}(\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)})^T\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}-b\sum_{i=1}^m\alpha_iy^{(i)}+\sum_{i=1}^m\alpha_i \\ &=-\frac{1}{2}\sum^m_{i=1}\alpha_iy^{(i)}(x^{(i)})^T\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}-b\sum_{i=1}^m\alpha_iy^{(i)}+\sum_{i=1}^m\alpha_i \\ &=-\frac{1}{2}\sum^m_{i=1,j=1}\alpha_iy^{(i)}(x^{(i)})^T\alpha_jy^{(j)}x^{(j)}-b\sum_{i=1}^m\alpha_iy^{(i)}+\sum_{i=1}^m\alpha_i \\ &=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum^m_{i=1,j=1}\alpha_i\alpha_jy^{(i)}y^{(j)}(x^{(i)})^Tx^{(j)}-b\sum_{i=1}^m\alpha_iy^{(i)} \end{split}

最后得到:

\Gamma(\omega,b,\alpha)=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum^m_{i=1,j=1}\alpha_i\alpha_jy^{(i)}y^{(j)}(x^{(i)})^Tx^{(j)}-b\sum_{i=1}^m\alpha_iy^{(i)}

(x^{(i)})^Tx^{(j)} 即為向量內(nèi)積,簡化表達為<x^{(i)},x^{(j)}>

由于前面知道,對b求偏導時\sum_{i=1}^m\alpha_iy^{(i)}=0時可以使b取得最小值,所以最后一項b\sum_{i=1}^m\alpha_iy^{(i)}的值為0,最小值min_{\omega} \Gamma(\omega,\alpha,\beta)的式子轉化為:

\Gamma(\omega,b,\alpha)=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum^m_{i=1,j=1}\alpha_i\alpha_jy^{(i)}y^{(j)}<x^{(i)},x^{(j)}>

該式子只剩下\alpha是未知變量,現(xiàn)在利用拉格朗日對偶函數(shù)求解未知函數(shù)\alpha

而對于原有拉格朗日對偶函數(shù):

d^*=max_{(\alpha,\beta:\alpha_i \geq 0)} min_{\omega} \Gamma(\omega,\alpha,\beta)

所以原有對偶問題可以定義為:

max_{\alpha}\Gamma(\omega,b,\alpha)=\sum_{i=1}^m\alpha_i-\frac{1}{2}\sum^m_{i=1,j=1}\alpha_i\alpha_jy^{(i)}y^{(j)}<x^{(i)},x^{(j)}>

\alpha_i \geq 0,i=1,2,...,m

\sum_{i=1}^m\alpha_iy^{(i)}=0

綜上所述,只要求出\alpha,就可以根據(jù)公式:

\omega=\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}

求得\omega,一旦求出了\alpha\omega,就可以很容易的求出b,如下圖所示,已知\omega可以確定超平面的方向,如下所示:

image

但是上圖只有一個超平面,實際上在沒確定參數(shù)b之前,圖中可能存在很多個超平面:

image

只要知道是哪個超平面,就能求解b的值,所以一旦確定\alpha\omega,就能很容易的求解出b的值。

\alpha\omega帶入原始優(yōu)化問題中求解b:

b=\frac{max_{i:y^{(i)}=-1}\omega^Tx^{(i)}+min_{i:y^{(i)}=1}\omega^Tx^{(i)}}{2}

對于這個公式的直觀理解是,找到分類效果最差的正樣本和分類效果最差最差的負樣本,即離超平面最近的正樣本和負樣本,即分類效果最差,即如下的兩條虛線:

image

虛線除以2就能得到正確的分類超平面。

而前面所有的出發(fā)點都是\omega^Tx+b,根據(jù)求解得到\alpha_i,如果將:

\omega=\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)}

帶入\omega^Tx+b可以得到:

\begin{split} \omega^Tx+b&=(\sum^m_{i=1}\alpha_iy^{(i)}x^{(i)})^Tx+b \\ &=\sum^m_{i=1}\alpha_iy^{(i)}<x^{(i)} ,x>+b \end{split}

也就是說,以前新來的樣本要分類,要首先根據(jù)\omegab做一次線性運算來判斷是正樣本還是負樣本?,F(xiàn)在有了\alpha_i,就不需要先計算\omega,而是只需將信賴的樣本和訓練數(shù)據(jù)里面的所有樣本做一次內(nèi)積和即可。

且由kkt條件可知,只有\alpha_i>0的時候,也就是支持向量的時候才需要計算,\alpha_i=0的時候都是0,所以就是新樣本只需要和所有的支持向量計算內(nèi)積即可。

總結步驟

  1. 先確定間隔器,這里svm一般默認是幾何間隔
  2. 由間隔器確定間隔函數(shù)
  3. 從間隔函數(shù)查看是否包含不等式約束形式
  4. 根據(jù)拉格朗日對偶步驟計算得到參數(shù)w、b

根據(jù)以上對偶問題的求解,需要在下一篇里面利用核函數(shù)解釋。

數(shù)據(jù)和代碼下載請關注公眾號【 機器學習和大數(shù)據(jù)挖掘 】,后臺回復【 機器學習 】即可獲取

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容