1. 程式人生 > >令人煎熬的SVM 線性可分支援向量機與硬間隔最大化

令人煎熬的SVM 線性可分支援向量機與硬間隔最大化

此時此刻,還是帶著問題寫的部落格····

哇,怎麼總結.

先貼上一個部落格地址   http://blog.pluskid.org/?p=632

先說名字,線性可分,就是存在一個超平面,能把正例跟負例完全分隔開,那麼這個資料集就是線性可分的。

支援向量:離超平面越近的越難分是正例還是負例,要想加新的點以後預測更準確,就要使得 樣本點到超平面的最小距離l最大  (距離越大越容易分類)而這個能得到最小距離l的樣本點就叫做支援向量。支援向量一定是正負例都有的,它是平行於超平面,到超平面的距離為l的兩個超平面上的樣本點。

硬間隔:過支援向量的兩個超平面之間形成了一個間隔。這兩個超平面叫間隔邊界。

與軟間隔對應,硬間隔是存在於資料集線性可分的情況下,而軟間隔是資料集近似線性可分情況。後面還沒複習到,複習到再回來補充。補充:硬間隔是把所有的樣本點正確分在超平面兩側,而軟間隔允許某些樣本點錯誤分類。


然後目標函式是什麼?

要求的分離超平面是:   

   


顯然要求的引數有兩個,怎麼求引數呢?

硬間隔最大化

有兩個間隔

1.函式間隔

2.幾何間隔

函式間隔,在二維空間中可以理解為點到直線的距離,點代入直線方程,然後取絕對值。

(hat gamma)

y取值正負1,乘以y,相當於取絕對值。

幾何間隔。因為如果已經選定了支援向量,對w和b成比例增長,比如都乘以2,超平面沒有變,但是這個最小間隔求出來就也變成了2倍。所以,進行規範化,就有了幾何間隔。


那麼硬間隔最大化當然是選擇幾何間隔了。

接下來是最大化。


用函式間隔是

函式間隔為什麼取1?其實沒有懂。



這是目標函式

剩下的就是如何求解上式。

這是個凸二次規劃問題。哇什麼鬼?就是符合某些條件的約束最優化問題,這個不重要。

怎麼解呢?

用到的是拉格朗日對偶性,簡單說,就是把這個問題轉換為一個比較容易求解的對偶問題。

首先構建拉格朗日函式,這個大學學過,就是把約束條件乘個因子,寫到目標函式後面。


這個拉格朗日乘子的元素都是非負的。為啥?


(1)求極小值,利用偏導


求出了w,帶回式子。


(2)然後是求極大值


也就是


這裡先假設求得了alpha的解

這裡KKT還沒有看懂

容易求得

標黃的式子,當alpha>0,那麼中括號中的式子就等於零,也就是說,這個樣本點為支援向量;同理,當中括號中大於零,也就是非支援向量,這種時候,alpha必須等於零。(這裡被問到說,如果alpha跟括號中都等於零,你該怎麼解釋?

因此,SVM跟邏輯迴歸的不同就在於,不用考慮那麼多點,只看少量的支援向量就夠了。

alpha向量中一定有至少一個元素大於零,為啥呢?因為如果全都為零,那麼w=0,而這顯然不是目標函式的解?哈?為啥不是?https://www.zhihu.com/question/269619107/answer/349429844

當上面情況成立,那麼就可以得到  1移到等號右邊,左右同乘以yj,因為,就求得


然後分離超平面即,


由此看出,決策函式只與輸入x與樣本的內積有關。

剩下的問題就是如何求解alpha,始終沒有提到。

總結一下這個演算法:

(1)這個就是目標函式的對偶問題,求 alpha 

(2)求w,b

這麼多問題,什麼時候來填坑???