KNN與SVM對比&SVM與邏輯回歸的對比


首先說一下兩種學習方式: lazy learning  和  eager learning

先說 eager learning, 這種學習方式是指在進行某種判斷(例如,確定一個點的分類或者回歸中確定某個點對應的函數值)之前,先利用訓練數據進行訓練得到一個目標函數,待需要時就只利用訓練好的函數進行決策,這是一種一勞永逸的方法, SVM 就屬於這種學習方式;

而 lazy learning 是指只有到了需要決策時才會利用已有數據進行決策,而在這之前不會經歷eager learning 所擁有的訓練過程, KNN 屬於這種方式。

 

Eager learning 考慮到了所有訓練樣本,說明它是一個全局的近似,優點是雖然它需要耗費訓練時間,可是它的決策時間基本為 0。

Lazy learning 在決策時雖然需要計算所有樣本與查詢點的距離,但是在真正做決策時卻只用了局部的幾個訓練數據,所以它是一個局部的近似,然而雖然不需要訓練,它的復雜度還是需要 O(n),n 是訓練樣本的個數。

Lazy learning 的缺點: 1.  需要的存儲空間比較大  2. 決策過程比較慢。

 

針對全局和局部的問題,我想了一個實際的例子。假設,現在我們要針對中國各地區的貧富問題進行划分,已經知道西部大部分地方比較貧窮,少部分地方富裕;而東部大部分地方富裕,少部分地方貧窮。首先,我們使用 SVM進行求解,按照 SVM 的思想,最后的結果一定是沿着中國地圖無情的划一條線,而用KNN 時,東部城市中北京,上海等算是富裕的,而菏澤啊這樣的就不太富裕;西部呢,像成都啊(不知道算不算西部,就假設算吧)算是富裕的,西寧啊這樣的算是不太富裕的。

使用應用KNN算法時,我們無法對預測的誤差有一個統計意義上的估計,結果的波動可能很大,這通常不是我們希望看到的。但是KNN的實現簡單,使用靈活,也有自己的用武之地。

 

參考:http://www.52ml.net/10152.html

 

因此:

SVM需要訓練過程,預測效率高。

KNN計算復雜度高,但是需要調的參比較小。

 

 

至於 邏輯回歸和SVM,一個統計的方法,一個幾何的方法,邏輯回歸對於每一個樣本都有考慮,而SVM只考慮了支持向量。
同樣的線性分類情況下,如果異常點較多的話,無法剔除,由於LR中每個樣本都是有貢獻的,因此分類效果會受到影響,可能存在過擬合。
LR模型找到的那個超平面,是盡量讓所有點都遠離他,而SVM尋找的那個超平面,是只讓最靠近中間分割線的那些點盡量遠離,即只用到那些支持向量的樣本。

 

理由:因為訓練樣本數量特別大,使用復雜核函數的SVM會導致運算很慢,因此應該考慮通過引入更多特征,然后使用線性核函數的SVM或者lr來構建預測性更好的模型。

SVM有多種核可以選擇,可以處理各種非線性問題(條件是選對核函數)。大多數情況准確率都比LR要高,但是模型較大,訓練效率低。



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM