首先說,這是我寫的最爛的,因為我自己有一些也沒有弄明白,強烈建議別看,強烈不建議看哦。。(我不暫時不想花太多時間去 搞它,因為我用不着它,如果用到它的時候到好好看看吧,我了解一下原理,一些細節 吧我有一些想不明白)
下面這是我的簡單介紹與理解,或者理解的不夠深。
這玩意的作用就是用於解決問題的吧,一切算法都要向解決的問題去靠,如果單純停留在數學分析上,很迷迷糊糊的哦。。所以,我們站在一定高度上去看這個支持向量機哈
它干什么的?
支持向量機它本質上還是解決二分類問題的啦,如果你想要解決多分類問題,好啊 ,最簡單的辦法就是:你多分幾次就可以了啊,對吧。為什么叫支持向量機呢,外國人起的名字哎,不過后面會出現支持向量哦,也算是和名字相互對應吧。
支持向量機要干的事就是找到一個 分界面, 放到兩個類別之間,就把它們分開了,如二維上,是一條直線,三維上就一個平面,四維上就是一個三維的東西了。如果在低維不可分時,就先通過核函數把低維數據映射到高維,高維上變成線性可分的以后,然后呢,在高維上再用支持向量機進行分就可以了。。。 反正吧,支持向量機就是解決線性可分的問題的啦。(解決線性不可分的問題,那是核函數的功勞,反正我認為是這樣的)
下面我們要解決一個優化問題:
現在呢,我們要解決一個問題,如果所圖1所示 哈,我們現在現在把這兩類分開,看上去很簡單似的, 我們就要畫一條線就可以了哈,但是呢,仔細想想,這條線應該如何畫呢?用人腦子一想就能想明白按圖2畫,怎么如何要用程序把它弄出來呢???這就是優化理論的問題了吧,現在呢,就要把實際問題轉化為數學描述了。
怎么辦??下面具體到數學上描述描述。
對於上面的兩種類別,我們分為兩類,一類用 1 表示,一類用 -1 表示。采用logistic的回歸方式,我們用公式表示為:
,其中 函數g(x) 是這樣的:當 x >=0時, g(x) =1;當 x <0時, g(x) =-1,即相當於一個感知器;
按如上定義,我們要畫的那條線就是表示為 wTx + b = 0 的那條線了;當wTx + b>>0時,或wTx + b<< 0說明正的樣本點離的分界線的距離就越遠哈。現在,即然如此,我們可以定義一個間隔,來衡量這個距離,即函數間隔:
它表示了什么意思呢?首先上式為正時,說明正確分類了,為負時,說明錯誤分類了;其次,其絕對值越大,說明它對自己的分類結果越自信(因為離着分界線越遠嘛)
但是這樣有一個問題哎,當我們按比例放大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有關的數就好啦,這樣可以約去那個比例吧。下面我們選擇其中一個,定義幾何間隔為:
(我的困惑是:w 與 b 有什么關系沒,還是B 不需要要去優化??隨着w 下來, b 就可以 定下來????例如對於二維的數據上,w 決定了 分界線的斜率,而 b 只決定了 分界線上下平移的距離,如果選擇的話,一定選擇 處在界隔中間的那條線時的b .)
這樣可以了,它不會亂變化了。同樣的,上式為正時,說明正確分類了,為負時,說明錯誤分類了;其次,其絕對值越大,說明它對自己的分類結果越自信(因為離着分界線越遠嘛)
現在想想怎么畫那條線哈:是不是要求畫出來的那條線的幾何間隔大大的呢, 這個優化問題可以描述為寫面的公式:
現在用大家比較小統一的方式,可以寫成這樣子:
雖然常數換成了1,解出來的 w 與 b 也一樣,但是呢,對於不同的常數,解的答案w 與 b 是成比例的哦,並且幾何間隔是不變的。
本來吧, 最開始的畫線的問題,我們可以用上面的最優化問題描述就可以了哈,並且解出結果也不難的。(這是一個二次的凸優化問題,並且約束條件為線性)。
但是呢,有些人吧,非要用對偶的知識來解決這個問題,所以呢,就出來了支持向量機了。(我就想不明白那些人為什么就要去這么解決問題呢?他們是瞎試的嗎?還是有其它原因?總之用了支持向量機以后,就可以用核函數了,用了核函數,就可以把低維問題弄到高維了。或許,他們發現了,當我們選擇如何畫那條線的時候,只與邊界邊緣上的那幾個點有關吧。)
下面說簡單說一下拉格朗日的對偶知識:
學高等數學或着最優化時,都學過的哈,拉格朗日算子:
現在考慮一個原始的優化問題:
我們可以根據上面的公式,定義一個拉格朗日天算子,它們不等價哦。如下所示:
又定義如下:
現在,我們想想哈,當 w 滿足上面的約束問題時,上式就等於f(w),不滿足時,等於無窮大。即:
在w 滿足約束條件時,為了求出 min f(w),即求:
是吧。。想明白了再往下面看哈:
現在我們又定義一個對偶的東西:
現在呢,我們能得出這樣的結論(d 代表dual, p 代表了primal):
這么想,有一個函數為L(w, α, β),那么它的最大值(對於變量α, β來說)中的最小值(對於變量w來說)是不是總會大於最小值(對於變量w來說) 中的最大值(對於變量α, β來說)呢?另外,我舉了一個二維離散的例子,如果還是不明白可以看看哦:
如果我們要用對偶問題,來解決原來的優化問題min f(w),我們就要讓上面的公式的等號成立,這樣才可以嘛。對吧。在什么時候才能成立呢?
KKT條件給出了成立的必要條件,只要滿足KKT條件,那么等號就成立了:
好了,現在,我們的對偶知識就講完 了,現在用它來繼續解決我們上面的優化問題。
說一下支持向量:
如果所示,上面只有三個點與求解的優化問題有關,它們就叫做支持向量。
用對偶知識來解決最開始的優化問題:
我們的原問題為:
把約束條件寫成 gi(w)的形式,變為了:
寫出它拉格朗日算子形式為(αi >= 0的):
上面說對偶的原因就是我們用對偶的方式去解決這個問題:(下面解決的對偶的問題)
對於上式,我們首先讓 α 固定不變,然后求出對於變量w 和b 最小的L(w, b, α),即 θD,做法就是對w與 b求導數,讓導數為0.
對於W求導,得到:
對於b 求導得到:(這里, 我有點想不明白,為什么讓它為0呢,是為了滿足KKT條件嗎?)
把上面兩個式子代入到上面倒數(從這里今不倒數)第三個式子中,得到:
最終對偶的優化問題,變為了:
在得到它的過程中,我們通過上面過程知道,它滿足KKT的條件(對於第KKT條件中的公式 5怎么滿足的呢?是我們人為規定的嗎???如果人為規定,這就是支持向量不謀而合了吧了),所以,我們來解決上面的對偶優化問題,就等價於解決原來的優化問題啦。對於如何求αi ,后面我們會介紹SMO算法來求它。當我們得到了 αi ,我們就可以求出了w 與b .
(對於上面的 b 的問題,我一直有迷惑,尼媽,對於上面的令b 的導數為0我就有點不明白,現在這個b 的求法,用腦子想想很明確但是在數學優化上,我不是很明白啊,哪里決了這樣呢?)
現在我們來分類了,分類的話,就這么算就可以了,下面是公式:(其中的很多 αi 都 不0,只有支持向量不是0,因為要滿足KKT條件吧)
簡單說一下核函數的思想哈:
大家都么這么 說:低維線性不可分時,我們把數據映射到高維空間,就會變為線性可分的,我就想,這尼媽誰說的啊??怎么證明啊????????親。。。
反正吧,核函數就是干了低維到高維的事了,具體如果說的話,我們看觀察點東西哈,當我們解決上面的對偶問題時,我們的優化問題為可以描述為(上面有):
解決它以后呢,我們用於分類新數據時,我們的操作為:
現在呢,我們用一種映射(別管用了什么映射)把原數據 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求它們的內積:
它等於什么呢?
還有,高斯核,從有限維度映射到無限維上了。
Regularization andthe ono-separable case
在支持向量機的下面情情況怎么辦?
在第個圖上,我們應該選擇虛線還是實線呢?應該是虛線吧。現在,我們就把問題描述為這個樣子:
而它的對偶問題,我們可以寫成(不寫過程了):
下面說說利用SMO算法來求 SVM的問題:
我們先講一下坐標下降法(或坐標上升法,求最大值)。當我們要最大化W時:
我們可以這么做,讓除了αi 之外的所有參數都不變,求使得W最大值的 αi :
上面的操作,如果是二維的話,我們可以用下圖表示一下:
在想用上面的坐標下降法求SVM問題時,有一個不一樣的地方:
如上所示,問題中的 αi 最約束了(公式19),對吧。我們不能只讓其中一個 αi不變啊。所以我們的辦法為同時變化兩個值就可以了。方法為:
例如 ,當我們更新α1 與 α2時,
因為 α1 與 α2本身的限制,我們把它們畫圖上,可以表示為:
好啦, α1 與 α2的選擇就是那個方框里面的實線上選啦。
由上面的式子,我們得到:
然后呢,代入得到:
現在,我們就可以優化 α2啦。(注意,α2的范圍哦,在 L —— H之間)。
這樣,解決對偶的優化問題了,這就是SMO算法。。