SVM理论学习记忆
轉載自https://blog.csdn.net/chaipp0607/article/details/73662441
SVM算法在在1995年正式發表,在針對中小型數據規模的分類任務上有著卓越的效果,同時有著完整的理論證明,在20世紀末的幾年和21世紀初的10年完勝神經網絡,吳恩達在其2003年的《Machien learning》公開課上用兩節課的時間對其進行講解,而神經網絡講解了20min左右。就是這個算法把神經網絡按在地上摩擦了大概15年的時間,直到深度學習的興起。但即便這樣,現在SVM算法依舊被廣泛的使用。?
SVM大概的可以不確切的分為三個程度理解:?
(1)線性可分情況下的線性分類器,這是最原始的SVM,它最核心的思想就是最大的分類間隔(margin maximization);?
(2)線性不可分情況下的線性分類器,引入了軟間隔(soft margin)的概念;?
(3)線性不可分情況下的非線性分類器,是SVM與核函數(kernel function)的結合。?
什么是最大分類間隔
SVM最大分類間隔的靈感來自于一個非常符合直覺的觀察,如果存在兩類數據,數據的特征是二維的,那么我們就可以把數據畫在一個二維平面上,此時我想找到一個決策面(決策邊界)去將這兩類數據分開。如下圖所示:?
?
理論上這個決策邊界有無數種選擇,就像圖中畫出的四條黑色的線,都能實現分類,但是哪一種是最好的分類方式呢?SVM算法認為在上圖中靠近決策平邊界的點(正負樣本)與決策邊界的距離最大時,是最好的分類選擇:?
?
上圖中紅色的線就是要優化的目標,它表征了數據到決策邊界的距離,這個距離就是所謂的最大分類間隔。同時在上面的幾個數據,如果靠近兩側的數據少了幾個(除了紅色框住的數據,其他數據的多少完全不影響),也不會影響決策邊界的確定,而被紅色框框出來三個數據才決定了最終的決策邊界,所以這三個數據被稱之為支持向量。
線性分類器
支持向量機算法如何實現最大分類間隔的任務呢?我們可以先從線性分類器開始理解它,支持向量在沒有引入核函數的時候就是一個線性的分類器,我們假設與決策邊界垂直的向量(決策面的法向量)為V:
黑色的線是假設的決策邊界,X1和X2是決策邊界兩側的兩個點,Xt1和Xt2是兩個點在法向量V上面的投影,那么可以很直觀看到,原點到Xt1的距離<原點到Xt2的距離,而且可以推廣延伸到只要數據點在決策邊界的兩側,那么在決策邊界左側的數據點在法向量上面的投影距離永遠比右側的距離短,這就是支持向量機實現分類預測的依據。那么怎么用公式表征出這個點到直線投影的距離呢??
如上圖中的情況所示:要求向量b在向量a上的投影距離d,向量的內積可以表示為:
?
?
于是角度的余弦為:?
?
距離d可以表示為:?
而在SVM的特征空間中,a是決策邊界的法向量,那么a為單位法向量的時候其模為1,所以就有:
最后我們把a和b換成上面設定的值就會有:?
?
有了這個東西,我們總能找到一個常數C分開兩類數據,也就是說:
到了上面的公式后,問題就非常的清晰了,法向量V其實就是決策邊界的系數(這是解析幾何里面的知識),那么大家肯定見過一種和它非常像的公式,叫做樣本空間下的超平面線性方程:
線性分類器就是這個樣子!!!?
不經過sigmoid函數的Logistic模型也是這個樣子!!?
不激活的神經網絡中的單個神經元還是這個樣子!!
如何實現最大分類間隔
從上面可以看到,此時的支持向量機(沒有加核函數)就是個線性的分類器,它的卓越性能就體現在在線性分類器基礎上的最大分類間隔。
所以本質上SVM要訓練的參數只有w和b,關鍵就在于SVM如何在優化中體現最大分類間隔的思想!
針對所有的訓練數據(traindata),SVM都希望:
這里的正負1就體現的最大分類間隔,這里是選擇用正負1是為了計算方便,因為無論間隔是多少,都可以依靠伸縮w和b約為1。上述公式就是SVM的最大間隔假設。如下圖:
在這個圖中,決策邊界兩邊的線之間的距離(最大間隔)為:
它是這樣求出來的,數據中的支持向量在影響著最大間隔,那么假設兩個支持向量x1和x2分別為正負,最大間隔就應該是x2-x1在法向量上的投影:
所以求取d的過程為:
這就是SVM的優化目標,它想要找到max(d),然后大家可能發現了,這個目標里面沒有b,之和w有關,那么是不是任意的b都可以呢?
顯然不是的,這個優化有一個約束條件,因為推導的過程就有假設條件是兩個支持向量要求在兩側,所以這個約束條件可以寫成:
所以最終的目標為:
或者為:
需要注意的是,約束條件中的i=1…….n,n為樣本的個數。
其中約束條件為n個,這是一個關于w和b的最小值問題。
根據拉格朗日乘子法:就是求函數f(x1,x2,…)在g(x1,x2,…)=0的約束條件下的極值的方法。其主要思想是將約束條件函數與原函數聯系到一起,使能配成與變量數量相等的等式方程,從而求出得到原函數極值的各個變量的解。即可以求得:
其中a就是拉格朗日乘子法進入的一個新的參數,也就是拉格朗日乘子。
那么問題就變成了:
所謂的對偶問題就是:
做這種轉換是為了后面的求解方便,因為最小值問題,求導就可以啦!!
下面對w和b分別求偏導(這里是純數學計算,直接給結果了):
在這里求出了兩個結果,帶入到L(w,b,a)中:
所以問題被轉化成為:
注意這里的約束條件有n+1個,之后只需要根據Data(x),Label(y)求解出滿足條件的拉格朗日系數a,并將a帶回求得w和b,于是就有了最后的決策邊界。(w,b,x,y,a都是向量)
注意:在上面b的公式中,i=1,2,…,n。但是j卻沒有給值,這是因為j是任意一個支持向量都可以。
在這里對w和b的公式的推導做一個簡短說明,w是通過拉格朗日求偏導后推出的;在學習SVM(二) 如何理解支持向量機的最大分類間隔中我們知道最大間隔為:?
?
那么支持向量到決策邊界的距離為:
?
,?
同時根據點到直線的距離公式有:
?
?
超平面(w,b)能夠將訓練樣本正確分類,即對于,
因此去掉絕對值可以得到關于b的公式。
而非支持向量的數據就在求解參數a,w,b的過程中,前面的參數w求得的結果會為0,這樣就滿足了之前的說法,只有支持向量在影響著決策邊界的確定。
?
?
轉載自https://blog.csdn.net/chaipp0607/article/details/73662441
https://blog.csdn.net/chaipp0607/article/details/73716226
總結
- 上一篇: TensorFlow11CNN和全卷积神
- 下一篇: mysql索引创建和使用注意事项