支持向量機的簡單介紹


首先說,這是我寫的最爛的,因為我自己有一些也沒有弄明白,強烈建議別看,強烈不建議看哦。。(我不暫時不想花太多時間去 搞它,因為我用不着它,如果用到它的時候到好好看看吧,我了解一下原理,一些細節 吧我有一些想不明白)

下面這是我的簡單介紹與理解,或者理解的不夠深。

這玩意的作用就是用於解決問題的吧,一切算法都要向解決的問題去靠,如果單純停留在數學分析上,很迷迷糊糊的哦。。所以,我們站在一定高度上去看這個支持向量機哈

 

它干什么的?

支持向量機它本質上還是解決二分類問題的啦,如果你想要解決多分類問題,好啊 ,最簡單的辦法就是:你多分幾次就可以了啊,對吧。為什么叫支持向量機呢,外國人起的名字哎,不過后面會出現支持向量哦,也算是和名字相互對應吧。

支持向量機要干的事就是找到一個 分界面, 放到兩個類別之間,就把它們分開了,如二維上,是一條直線,三維上就一個平面,四維上就是一個三維的東西了。如果在低維不可分時,就先通過核函數把低維數據映射到高維,高維上變成線性可分的以后,然后呢,在高維上再用支持向量機進行分就可以了。。。   反正吧,支持向量機就是解決線性可分的問題的啦。(解決線性不可分的問題,那是核函數的功勞,反正我認為是這樣的)

 

下面我們要解決一個優化問題:

現在呢,我們要解決一個問題,如果所圖1所示 哈,我們現在現在把這兩類分開,看上去很簡單似的, 我們就要畫一條線就可以了哈,但是呢,仔細想想,這條線應該如何畫呢?用人腦子一想就能想明白按圖2畫,怎么如何要用程序把它弄出來呢???這就是優化理論的問題了吧,現在呢,就要把實際問題轉化為數學描述了。

image

怎么辦??下面具體到數學上描述描述。

對於上面的兩種類別,我們分為兩類,一類用 1 表示,一類用 -1 表示。采用logistic的回歸方式,我們用公式表示為:

image,其中 函數g(x) 是這樣的:當 x >=0時, g(x) =1;當 x <0時, g(x) =-1,即相當於一個感知器;

按如上定義,我們要畫的那條線就是表示為 wTx + b = 0 的那條線了;當wTx + b>>0時,或wTx + b<< 0說明正的樣本點離的分界線的距離就越遠哈。現在,即然如此,我們可以定義一個間隔,來衡量這個距離,即函數間隔:

image

它表示了什么意思呢?首先上式為正時,說明正確分類了,為負時,說明錯誤分類了;其次,其絕對值越大,說明它對自己的分類結果越自信(因為離着分界線越遠嘛)

 

但是這樣有一個問題哎,當我們按比例放大w 與 b 時,我們會發現, wTx + b 會同樣變大 ,但是呢,對於分界面沒有什么變化啊(因為分界面就是 wTx + b = 0 啊,比如在二維上分界面就是平面 y = wTx + b 與 xOy平面的交界面哦)。這樣的話,我們就應該約束一下w 與 b,讓它們在計算間隔時,還 w和b 成比例的變化無關。我們可以這樣做:wTx + b /|w|,可以這么做,wTx + b /|b|, 也可以這么做:wTx + b /(w^2 + b^2)都可以哦,只要除以一個與w或b有關的數就好啦,這樣可以約去那個比例吧。下面我們選擇其中一個,定義幾何間隔為:

image

(我的困惑是:w 與 b 有什么關系沒,還是B 不需要要去優化??隨着w 下來, b 就可以 定下來????例如對於二維的數據上,w  決定了 分界線的斜率,而 b  只決定了 分界線上下平移的距離,如果選擇的話,一定選擇 處在界隔中間的那條線時的b .)

這樣可以了,它不會亂變化了。同樣的,上式為正時,說明正確分類了,為負時,說明錯誤分類了;其次,其絕對值越大,說明它對自己的分類結果越自信(因為離着分界線越遠嘛)

現在想想怎么畫那條線哈:是不是要求畫出來的那條線的幾何間隔大大的呢, 這個優化問題可以描述為寫面的公式:

image

現在用大家比較小統一的方式,可以寫成這樣子:

image

雖然常數換成了1,解出來的 w 與 b 也一樣,但是呢,對於不同的常數,解的答案w 與 b 是成比例的哦,並且幾何間隔是不變的。

本來吧, 最開始的畫線的問題,我們可以用上面的最優化問題描述就可以了哈,並且解出結果也不難的。(這是一個二次的凸優化問題,並且約束條件為線性)。

但是呢,有些人吧,非要用對偶的知識來解決這個問題,所以呢,就出來了支持向量機了。(我就想不明白那些人為什么就要去這么解決問題呢?他們是瞎試的嗎?還是有其它原因?總之用了支持向量機以后,就可以用核函數了,用了核函數,就可以把低維問題弄到高維了。或許,他們發現了,當我們選擇如何畫那條線的時候,只與邊界邊緣上的那幾個點有關吧。)

 

 

下面說簡單說一下拉格朗日的對偶知識:

學高等數學或着最優化時,都學過的哈,拉格朗日算子:

現在考慮一個原始的優化問題:

image

我們可以根據上面的公式,定義一個拉格朗日天算子,它們不等價哦。如下所示:

image

又定義如下:

image

現在,我們想想哈,當 w 滿足上面的約束問題時,上式就等於f(w),不滿足時,等於無窮大。即:

image

在w 滿足約束條件時,為了求出  min f(w),即求:

image

是吧。。想明白了再往下面看哈:

現在我們又定義一個對偶的東西:

image

image

現在呢,我們能得出這樣的結論(d 代表dual, p 代表了primal):

image

這么想,有一個函數為L(w, α, β),那么它的最大值(對於變量α, β來說)中的最小值(對於變量w來說)是不是總會大於最小值(對於變量w來說) 中的最大值(對於變量α, β來說)呢?另外,我舉了一個二維離散的例子,如果還是不明白可以看看哦:

image

如果我們要用對偶問題,來解決原來的優化問題min f(w),我們就要讓上面的公式的等號成立,這樣才可以嘛。對吧。在什么時候才能成立呢?

KKT條件給出了成立的必要條件,只要滿足KKT條件,那么等號就成立了:

image

好了,現在,我們的對偶知識就講完 了,現在用它來繼續解決我們上面的優化問題。

 

說一下支持向量:

image

如果所示,上面只有三個點與求解的優化問題有關,它們就叫做支持向量。

 

用對偶知識來解決最開始的優化問題:

我們的原問題為:

image

把約束條件寫成 gi(w)的形式,變為了:

image

寫出它拉格朗日算子形式為(αi >= 0的):

image 

上面說對偶的原因就是我們用對偶的方式去解決這個問題:(下面解決的對偶的問題)

對於上式,我們首先讓 α 固定不變,然后求出對於變量w 和b 最小的L(w, b, α),即 θD,做法就是對w與 b求導數,讓導數為0.

對於W求導,得到:

image

對於b 求導得到:(這里, 我有點想不明白,為什么讓它為0呢,是為了滿足KKT條件嗎?)

image

 

把上面兩個式子代入到上面倒數(從這里今不倒數)第三個式子中,得到:

image

最終對偶的優化問題,變為了:

image

在得到它的過程中,我們通過上面過程知道,它滿足KKT的條件(對於第KKT條件中的公式 5怎么滿足的呢?是我們人為規定的嗎???如果人為規定,這就是支持向量不謀而合了吧了),所以,我們來解決上面的對偶優化問題,就等價於解決原來的優化問題啦。對於如何求αi ,后面我們會介紹SMO算法來求它。當我們得到了 αi ,我們就可以求出了w 與b .

image

image

(對於上面的 b 的問題,我一直有迷惑,尼媽,對於上面的令b 的導數為0我就有點不明白,現在這個b 的求法,用腦子想想很明確但是在數學優化上,我不是很明白啊,哪里決了這樣呢?)

現在我們來分類了,分類的話,就這么算就可以了,下面是公式:(其中的很多 αi  都 不0,只有支持向量不是0,因為要滿足KKT條件吧)

image

 

 

 

簡單說一下核函數的思想哈:

大家都么這么 說:低維線性不可分時,我們把數據映射到高維空間,就會變為線性可分的,我就想,這尼媽誰說的啊??怎么證明啊????????親。。。

反正吧,核函數就是干了低維到高維的事了,具體如果說的話,我們看觀察點東西哈,當我們解決上面的對偶問題時,我們的優化問題為可以描述為(上面有):

image

解決它以后呢,我們用於分類新數據時,我們的操作為:

image

注意到上面兩個公式中都有變量的內積。即:imageimage

現在呢,我們用一種映射(別管用了什么映射)把原數據 x 映射為了 f(x),並且吧,f(X)具有比x更高的維度,現在的問題就變為了從更高的維度的進行分類了吧。                 它的優化問題的描述與用於分類時操作與上面的在數據原始維度上 除了變量間的內積不同,即由<xi, xj> 變為了<f(xi), f(xj)> ,其余完全相同。而核函數變做了一個這么工作:由 xi,與xj, 得到<f(xi), f(xj)> ,可以表示為:K(x, z) = <f(xi), f(xj)> 。對於什么映射吧,,我們不用了解(一開始我也糾結,后來想明白了),有時候我們也根本求不出來,我們只用映射完以后的內積就可以了。

常見的核函數有好幾種,並且你自己也可以勾建一個核函數,還有,Mercer定理可以用於檢測你自己構建的核函數是否成立。

對於核函數舉個例子:如,x =(x1, x2, x3), z = (z1, z2, z3)吧,現在有一個潛在的映射,我們用一個這樣的形式的核函數K(x,z) = (xTz +c)2求它們的內積:

它等於什么呢?

例如:K(x,x)=image

還有,高斯核,從有限維度映射到無限維上了。

 

Regularization andthe ono-separable case

在支持向量機的下面情情況怎么辦?

image

在第個圖上,我們應該選擇虛線還是實線呢?應該是虛線吧。現在,我們就把問題描述為這個樣子:

image

而它的對偶問題,我們可以寫成(不寫過程了):

image

 

 

下面說說利用SMO算法來求 SVM的問題:

我們先講一下坐標下降法(或坐標上升法,求最大值)。當我們要最大化W時:

image

我們可以這么做,讓除了αi 之外的所有參數都不變,求使得W最大值的 αi :

image

上面的操作,如果是二維的話,我們可以用下圖表示一下:

image

在想用上面的坐標下降法求SVM問題時,有一個不一樣的地方:

image

如上所示,問題中的  αi 最約束了(公式19),對吧。我們不能只讓其中一個 αi不變啊。所以我們的辦法為同時變化兩個值就可以了。方法為:

image

例如 ,當我們更新α1 與 α2時,

image

image

因為 α1 與 α2本身的限制,我們把它們畫圖上,可以表示為:

image

好啦, α1 與 α2的選擇就是那個方框里面的實線上選啦。

由上面的式子,我們得到:

image

然后呢,代入得到:

image

現在,我們就可以優化 α2啦。(注意,α2的范圍哦,在 L —— H之間)。

這樣,解決對偶的優化問題了,這就是SMO算法。。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM