SVM與LR的異同

最近面試很多會聊到SVM, LR(畢竟兩個非常成熟的machine learning method)並比較異同。這裏複習一下~ 以後慢慢補自己的感悟。。

參考:https://blog.csdn.net/b285795298/article/details/81977271

相同點: 都是分類算法,監督學習算法,判別模型。如果不考慮kernel 函數,兩個都是線性分類算法,也就是他們的決策面都是線性的。(LR也可以用核函數,但是通常不用,計算量太大)

不同點: 

1. LR採用log損失---MLE最大似然估計。

   logistics regression中的損失函數:

    SVM採用合頁(hinge)損失。

   svm中的目標函數: 

邏輯迴歸方法基於概率理論,假設樣本爲1的概率可以用sigmoid函數來表示,然後通過極大似然估計的方法估計出參數的值(基於統計的,其損失函數是人爲設定的凸函數) 。支持向量機​基於幾何間隔最大化原理,認爲存在最大幾何間隔的分類面爲最優分類面.(有嚴格的推導)

 

2、LR對異常值敏感,SVM對異常值不敏感(抗燥能力,SVM要強)(https://www.jianshu.com/p/1a41a1567b87)。支持向量機只考慮局部的邊界線附近的點,而邏輯迴歸考慮全局(遠離的點對邊界線的確定也起作用,雖然作用會相對小一些)。LR模型找到的那個超平面,是儘量讓所有點都遠離他,而SVM尋找的那個超平面,是隻讓最靠近中間分割線的那些點儘量遠離,即只用到那些支持向量的樣本。

支持向量機改變非支持向量樣本並不會引起決策面的變化:


邏輯迴歸中改變任何樣本都會引起決策面的變化:


LR則受所有數據點的影響,如果數據不同類別strongly unbalance,一般需要先對數據做balancing。​(引自http://www.zhihu.com/question/26768865/answer/34078149

3、計算複雜度不同。對於海量數據,SVM的效率較低,LR效率比較高。 對於兩者在feature和樣本數量不同的情況下的效率問題,可以參考:https://blog.csdn.net/a244659184/article/details/81122521。該文章說明了:

當樣本較少,特徵維數較低時,SVM和LR的運行時間均比較短,SVM較短一些。準確率的話,LR明顯比SVM要高。當樣本稍微增加些時,SVM運行時間開始增長,但是準確率趕超了LR。SVM時間雖長,但在接收範圍內。當數據量增長到20000時,特徵維數增長到200時,SVM的運行時間劇烈增加,遠遠超過了LR的運行時間。但是準確率卻和LR相差無幾。(這其中主要原因是大量非支持向量參與計算,造成SVM的二次規劃問題)

4、對非線性問題的處理方式不同,LR主要靠特徵構造,必須組合交叉特徵,特徵離散化。SVM也可以這樣,還可以通過kernel(因爲只有支持向量參與覈計算,計算複雜度不高)。(由於可以利用核函數,。SVM則可以通過對偶求解高效處理。LR則在特徵空間維度很高時,表現較差。)

5、SVM的損失函數就自帶正則!!!(損失函數中的1/2||w||^2項),這就是爲什麼SVM是結構風險最小化算法的原因!!!而LR必須另外在損失函數上添加正則項!!!


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章