Ng第十二课:支持向量机(Support Vector Machines)(一)
1 目錄
支持向量機基本上是最好的有監(jiān)督學習算法了,從logistic回歸出發(fā),引出了SVM,揭示模型間的聯(lián)系,過渡自然。
?
2 重新審視logistic回歸
Logistic回歸目的是從特征學習出一個0/1分類模型,而這個模型是將特征的線性組合作為自變量,由于自變量的取值范圍是負無窮到正無窮。因此,使用logistic函數(shù)(或稱作sigmoid函數(shù))將自變量映射到(0,1)上,映射后的值被認為是屬于y=1的概率。
假設函數(shù)其中x是n維特征向量,函數(shù)g就是logistic函數(shù)。的圖像是
可以看到,將無窮映射到了(0,1)。
假設函數(shù)就是特征屬于y=1的概率。
?
當要判別一個新來的特征屬于哪個類時,只需求,若大于0.5就是y=1的類,反之屬于y=0類。
再審視一下,發(fā)現(xiàn)只和有關,>0,那么,g(z)只不過是用來映射,真實的類別決定權還在。還有當時,=1,反之=0。如果只從出發(fā),希望模型達到的目標無非就是讓訓練數(shù)據(jù)中y=1的特征,y=0的特征。Logistic回歸就是要學習得到,使得正例的特征遠大于0,負例的特征遠小于0,強調在全部訓練實例上達到這個目標。
圖形化表示如下:
中間那條線是,logistic回顧強調所有點盡可能地遠離中間那條線。學習出的結果也就中間那條線。考慮上面3個點A、B和C。從圖中可以確定A是×類別的,然而C我們是不太確定的,B還算能夠確定。這樣可以得出結論,我們更應該關心靠近中間分割線的點,讓他們盡可能地遠離中間線,而不是在所有點上達到最優(yōu)。這大概就是支持向量機的思路和logistic回歸的不同點。
?
3 形式化表示
? ? 這次使用的結果標簽是y=-1,y=1替換在logistic回歸中使用的y=0和y=1。同時將替換成w和b(0)。以前的,其中認為,替換為b,后面替換為(即)。這樣,我們讓,進一步?= hw,b(x)。
再明確下假設函數(shù)?
上一節(jié)提到過只需考慮的正負問題,而不用關心g(z),因此這里將g(z)做一個簡化,將其簡單映射到y(tǒng)=-1和y=1上。映射關系如下:
?
4 函數(shù)間隔和幾何間隔
給定一個訓練樣本,x是特征,y是結果標簽。i表示第i個樣本。定義函數(shù)間隔如下:
?? (每個點相距距離)
? ? 當時,又(直線圖的例子全在第一象限),的值實際上就是(該情況下永為正值)。反之亦然(-1)。為了使函數(shù)間隔最大(更大的信心確定該例是正例還是反例),當時,應該是個大正數(shù),反之是個大負數(shù)。因此函數(shù)間隔代表了我們認為特征是正例還是反例的確信度。
? ?繼續(xù)考慮w和b,如果同時加大w和b,比如在前面乘個系數(shù)比如2,那么所有點的函數(shù)間隔都會增大二倍,這個對求解問題來說不應該有影響,因為我們要求解的是(那根直線),同時擴大w和b對結果是無影響的。這樣,但也要限制w和b,可能需要加入歸一化條件,畢竟求解的目標是確定唯一一個w和b,而不是多組線性相關的向量。這個歸一化一會再考慮。
剛剛我們定義的函數(shù)間隔是針對某一個樣本的,現(xiàn)在我們定義全局樣本上的函數(shù)間隔
? ,說白了就是在訓練樣本上分類正例和負例確信度最小那個函數(shù)間隔。
?
接下來定義幾何間隔,先看圖
? ? 假設我們有了B點所在的分割面。任何其他一點,比如A到該面的距離以表示,假設B就是A在分割面上的投影。我們知道向量BA的方向是(分割面的梯度),單位向量是。A點是,所以B點是x=(利用初中的幾何知識),帶入得,
進一步得到
實際上就是點到平面距離。
再換種更加優(yōu)雅的寫法:
?就是點到平面的距離
當時,不就是函數(shù)間隔嗎?是的,前面提到的函數(shù)間隔歸一化結果就是幾何間隔。他們?yōu)槭裁磿粯幽?#xff1f;因為函數(shù)間隔是我們定義的,在定義的時候就有幾何間隔的色彩。同樣,同時擴大w和b,w擴大幾倍,就擴大幾倍,結果無影響。同樣定義全局的幾何間隔
?
?
5 最優(yōu)間隔分類器(optimal margin classifier)
? ? 前面提到的目標是尋找一個超平面,使得離超平面比較近的點能有更大的間距。也就是我們不考慮所有的點都必須遠離超平面,我們關心求得的超平面能夠讓所有點中離它最近的點具有最大間距。形式化表示為:
? ? 用=1表示w,使得表示的是幾何間隔
? ? 到此,已經將模型定義出來了。如果求得了w和b,那么來一個特征x,就能夠分類了,稱為最優(yōu)間隔分類器。
? ? 接下的問題就是如何求解w和b的問題了。由于不是凸函數(shù),我們想先處理轉化一下,考慮幾何間隔和函數(shù)間隔的關系,,我們改寫一下上面的式子:
這個時候目標函數(shù)仍然不是凸函數(shù),沒法直接代入優(yōu)化軟件里計算。我們還要改寫。前面說到同時擴大w和b對結果沒有影響,但我們最后要求的仍然是w和b的確定值,因此就需要對做一些限制,以保證解是唯一的。這里為了簡便取,這樣的意義是將全局的函數(shù)間隔定義為1,也即是將離超平面最近的點的距離定義為。由于求的最大值相當于求的最小值,因此改寫后結果為:
?
這下好了,只有線性約束了,而且是個典型的二次規(guī)劃問題(目標函數(shù)是自變量的二次函數(shù))。代入優(yōu)化軟件可解。
(雖然沒有圖解那么直觀,但每一步推導有理有據(jù),依靠思路的流暢性來推導出目標函數(shù)和約束。)
接下來介紹的是手工求解的方法了,一種更優(yōu)的求解方法。
?
6 拉格朗日對偶(Lagrange duality)
???? 先拋開上面的二次規(guī)劃問題,先來看看存在等式約束的極值問題求法,比如下面的最優(yōu)化問題:
????????
??? 目標函數(shù)是f(w),下面是等式約束。通常解法是引入拉格朗日算子,這里使用來表示算子,得到拉格朗日公式為
????????
??? L是等式約束的個數(shù)。
??? 然后分別對w和求偏導,使得偏導數(shù)等于0,然后解出w和。
? ? 至于為什么引入拉格朗日算子可以求出極值,原因是f(w)的dw變化方向受其他不等式的約束,dw的變化方向與f(w)的梯度垂直時才能獲得極值,而且在極值處,f(w)的梯度與其他等式梯度的線性組合平行,因此他們之間存在線性關系。
然后探討有不等式約束的極值問題求法,問題如下:
????????
? ? 定義一般化的拉格朗日公式
?
??? 這里的和都是拉格朗日算子。如果按這個公式求解,會出現(xiàn)問題,因為要求解的是最小值,而這里的已經不是0了,可以將調整成很大的正值,來使最后的函數(shù)結果是負無窮。因此需要排除這種情況,定義下面的函數(shù):
?????
??? 這里的P代表primal。假設或者,那么總是可以調整和來使得有最大值為正無窮。而只有g和h滿足約束時,為f(w)。這個函數(shù)的精妙之處在于,而且求極大值。
??? 因此可以寫作
????
??? 這樣原來要求的min f(w)可以轉換成求了。 ???
????
? ? 使用來表示。如果直接求解,首先面對的是兩個參數(shù),而也是不等式約束,然后再在w上求最小值。這個過程不容易做,那么怎么辦呢?
? ? 先考慮另外一個問題
??? D的意思是對偶,將問題轉化為先求拉格朗日關于w的最小值,將和看作是固定值。之后在求最大值的話:
?
??? 這個問題是原問題的對偶問題,相對于原問題只是更換了min和max的順序,而一般更換順序的結果是Max Min(X) <= MinMax(X)。然而在這里兩者相等。用來表示對偶問題如下:
??????
??? 下面解釋在什么條件下兩者會等價。假設f和g都是凸函數(shù),h是仿射的(affine,)。并且存在w使得對于所有的i,。在這種假設下,一定存在使得是原問題的解,是對偶問題的解。還有另外,滿足庫恩-塔克條件(Karush-Kuhn-Tucker, KKT condition),該條件如下:
????
??? 所以如果滿足了庫恩-塔克條件,那么他們就是原問題和對偶問題的解。讓我們再次審視公式(5),這個條件稱作是KKT dual complementarity條件。這個條件隱含了如果,那么。也就是說,時,w處于可行域的邊界上,這時才是起作用的約束。而其他位于可行域內部(的)點都是不起作用的約束,其。這個KKT雙重補足條件會用來解釋支持向量和SMO的收斂測試。
??? 這部分內容思路比較凌亂,還需要先研究下《非線性規(guī)劃》中的約束極值問題,再回頭看看。KKT的總體思想是將極值會在可行域邊界上取得,也就是不等式為0或等式約束里取得,而最優(yōu)下降方向一般是這些等式的線性組合,其中每個元素要么是不等式為0的約束,要么是等式約束。對于在可行域邊界內的點,對最優(yōu)解不起作用,因此前面的系數(shù)為0。
7 最優(yōu)間隔分類器(optimal margin classifier)
??? 重新回到SVM的優(yōu)化問題:
????
??? 我們將約束條件改寫為:
????
??? 從KKT條件得知只有函數(shù)間隔是1(離超平面最近的點)的線性約束式前面的系數(shù),也就是說這些約束式,對于其他的不在線上的點(),極值不會在他們所在的范圍內取得,因此前面的系數(shù).注意每一個約束式實際就是一個訓練樣本。
??? 看下面的圖:
????
??? 實線是最大間隔超平面,假設×號的是正例,圓圈的是負例。在虛線上的點就是函數(shù)間隔是1的點,那么他們前面的系數(shù),其他點都是。這三個點稱作支持向量。構造拉格朗日函數(shù)如下: ???
????
??? 注意到這里只有沒有是因為原問題中沒有等式約束,只有不等式約束。
??? 下面按照對偶問題的求解步驟來一步步進行,
????
??? 首先求解的最小值,對于固定的,的最小值只與w和b有關。對w和b分別求偏導數(shù)。
????
????
??? 并得到
????
??? 將上式帶回到拉格朗日函數(shù)中得到,此時得到的是該函數(shù)的最小值(目標函數(shù)是凸函數(shù))
??? 代入后,化簡過程如下:
?????
最后得到
???? 由于最后一項是0,因此簡化為
????
??? 這里我們將向量內積表示為
??? 此時的拉格朗日函數(shù)只包含了變量。然而我們求出了才能得到w和b。
??? 接著是極大化的過程,
??? 前面提到過對偶問題和原問題滿足的幾個條件,首先由于目標函數(shù)和線性約束都是凸函數(shù),而且這里不存在等式約束h。存在w使得對于所有的i,。因此,一定存在使得是原問題的解,是對偶問題的解。在這里,求就是求了。
??? 如果求出了,根據(jù)即可求出w(也是,原問題的解)。然后
????
??? 即可求出b。即離超平面最近的正的函數(shù)間隔要等于離超平面最近的負的函數(shù)間隔。
??? 關于上面的對偶問題如何求解,將留給下一篇中的SMO算法來闡明。
??? 這里考慮另外一個問題,由于前面求解中得到
????
??? 我們通篇考慮問題的出發(fā)點是,根據(jù)求解得到的,我們代入前式得到
????
??? 也就是說,以前新來的要分類的樣本首先根據(jù)w和b做一次線性運算,然后看求的結果是大于0還是小于0,來判斷正例還是負例?,F(xiàn)在有了,我們不需要求出w,只需將新來的樣本和訓練數(shù)據(jù)中的所有樣本做內積和即可。那有人會說,與前面所有的樣本都做運算是不是太耗時了?其實不然,我們從KKT條件中得到,只有支持向量的,其他情況。因此,我們只需求新來的樣本和支持向量的內積,然后運算即可。這種寫法為下面要提到的核函數(shù)(kernel)做了很好的鋪墊。
轉載于:https://www.cnblogs.com/Real-Ying/p/6841277.html
總結
以上是生活随笔為你收集整理的Ng第十二课:支持向量机(Support Vector Machines)(一)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 自学it18大数据笔记-第三阶段Scal
- 下一篇: 双向队列(STL做法)