1. 程式人生 > >KNN 算法,以及與Kmeans的簡單對比

KNN 算法,以及與Kmeans的簡單對比

機器 速度 優點 相關 可能 優化 四種 優缺點 16px

KNN與Kmeans感覺沒啥聯系,但是名字挺像的,就拿來一起總結一下吧。

初學者的總結。

KNN是監督學習,Kmeans是無監督學習。

KNN用於分類,Kmeans用於聚類。

先說KNN:

對於KNN,有一批已經標註好label的訓練樣本,將這批樣本的數據轉換為向量表示,然後選擇度量向量距離的方式。例如 歐式距離,曼哈頓距離,夾腳余弦等。對於這批樣本記為W。

然後來一個待分類的樣本S,選取W中距離樣本S距離最近的K個樣本。這K個樣本中哪種類別的樣本多,則該樣本S的分類就是哪種。

KNN的優缺點:

KNN的優點:

1、對輸入數據無假定,比如不會假設輸入數據是服從正太分布的。

2、算法簡單,直觀,易於實現

3、對異常值不敏感

4、可以用於數值型數據,也可以用於離散型數據

KNN的缺點:

1、有說是計算復雜度高,不過這個是可以改進的,例如KD數,或者ball tree

2、嚴重依賴訓練樣本集,這個感覺沒啥改進方法,只能是盡量獲取更好的訓練樣本集。

3、距離度量方法,K值的選取都有比較大的影響。 KNN算法必須指定K值,K值選擇不當則分類精度不能保證

4、特征作用相同 與決策樹歸納方法和神經網絡方法相比,傳統最近鄰分類器認為每個屬性的 作用都是相同的(賦予相同權重)。樣本的距離是根據樣本的所有特征(屬性)計 算的。在這些特征中,有些特征與分類是強相關的,有些特征與分類是弱相關的, 還有一些特征(可能是大部分)與分類不相關。這樣,如果在計算相似度的時候, 按所有特征作用相同來計算樣本相似度就會誤導分類過程。

KNN的改進方向:

對於KNN分類算法的改進方法主要可以分為加快分類速度、對訓練樣本庫的 維護、相似度的距離公式優化和K值確定四種類型。 目前我了解的只有加快分類速度,通過KD樹,ball tree等。 機器學習實戰 書中說 K不超過20

KNN 算法,以及與Kmeans的簡單對比