SVM一些問題及思考
給定訓練集合
劃分超平面
點到直線距離
找到離分隔平面最近的點,稱為支援向量,距離記為
然後通過等比例改變
從而就有下面的式子,當點為支援向量的時候等號成立;
記為
我們的優化目標就成了這樣。
然後怎麼求解。
書上寫的對偶問題。
為什麼要用對偶問題?
在約束最優化問題中,常常利用拉格朗日對偶性將原始問題轉換為對偶問題,通過解對偶問題而得到原始問題的解。(方便求解)
轉而求解其對偶問題,是因為它的對偶問題有很好的形式(向量內積形式),可以為SVM很方便的引人核函式。(引入核函式)
接下來寫成拉格朗日的形式
轉換成對偶形式,然後求導,帶入
接下來用SMO求解。
細節可以參考下面的部落格,寫得很細很好。SMO可以參考周志華老師的西瓜書。
http://www.cnblogs.com/dreamvibe/p/4349886.html
綜上所述,對偶問題有兩個優點,
一個是方便計算,可以在周老師的書中看到,SMO方法將計算複雜度降低到只與樣本數量相關。
第二是可以引入核函式(高斯核,多項式核,線性核,拉普拉斯核,sigmoid核)。將線性分類器升級到非線性。注意,核函式不是SVM特有的,SVM只是對它的應用。
接下來一個問題 。
軟間隔。往往有很多資料並不能被超平面完全分開,往往存在一定的噪音點。
那麼我們就需要在原來的線性可分的目標函式加上額外的損失。
所以就用了hingle loss 作為損失。
為什麼要選hingle loss
連結:https://www.zhihu.com/question/47746939/answer/154058298
1. 實現了軟間隔分類(這個Loss函式都可以做到)
2. 保持了支援向量機解的稀疏性。換用其他的Loss函式的話,SVM就不再是SVM了。正是因為HingeLoss的零區域對應的正是非支援向量的普通樣本,從而所有的普通樣本都不參與最終超平面的決定,這才是支援向量機最大的優勢所在,對訓練樣本數目的依賴大大減少,而且提高了訓練效率。
什麼時候選擇LR,什麼時候選擇SVM
在Andrew NG的課裡講到過:
1. 如果Feature的數量很大,跟樣本數量差不多,這時候選用LR或者是Linear Kernel的SVM
2. 如果Feature的數量比較小,樣本數量一般,不算大也不算小,選用SVM+Gaussian Kernel
3. 如果Feature的數量比較小,而樣本數量很多,需要手工新增一些feature變成第一種情況