機器學習中 K近鄰法(knn)與k-means的區別


簡介

K近鄰法(knn)是一種基本的分類與回歸方法。k-means是一種簡單而有效的聚類方法。雖然兩者用途不同、解決的問題不同,但是在算法上有很多相似性,於是將二者放在一起,這樣能夠更好地對比二者的異同。

算法描述

knn

算法思路:
如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。

k近鄰模型的三個基本要素:

  1. k值的選擇:k值的選擇會對結果產生重大影響。較小的k值可以減少近似誤差,但是會增加估計誤差;較大的k值可以減小估計誤差,但是會增加近似誤差。一般而言,通常采用交叉驗證法來選取最優的k值。
  2. 距離度量:距離反映了特征空間中兩個實例的相似程度。可以采用歐氏距離、曼哈頓距離等。
  3. 分類決策規則:往往采用多數表決。

k-means

算法步驟:
1. 從n個數據中隨機選擇 k 個對象作為初始聚類中心;
2. 根據每個聚類對象的均值(中心對象),計算每個數據點與這些中心對象的距離;並根據最小距離准則,重新對數據進行划分;
3. 重新計算每個有變化的聚類簇的均值,選擇與均值距離最小的數據作為中心對象;
4. 循環步驟2和3,直到每個聚類簇不再發生變化為止。

k-means方法的基本要素:

    1. k值的選擇:也就是類別的確定,與K近鄰中k值的確定方法類似。
    2. 距離度量:可以采用歐氏距離、曼哈頓距離等。

應用實例

問題描述

已知若干人的性別、身高和體重,給定身高和體重判斷性別。考慮使用k近鄰算法實現性別的分類,使用k-means實現性別的聚類。

數據

數據集合:https://github.com/shuaijiang/FemaleMaleDatabase

該數據集包含了訓練數據集和測試數據集,考慮在該數據集上利用k近鄰算法和k-means方法分別實現性別的分類和聚類。

將訓練數據展示到圖中,可以更加直觀地觀察到數據樣本之間的聯系和差異,以及不同性別之間的差異。


數據展示數據展示

KNN的分類結果

KNN算法中的基本設置

利用KNN算法,在測試集上的結果如下混淆矩陣表所示。從表中可以看出,測試集中的男性全部分類正確,測試集中的女性有一個被錯誤分類,其他都分類正確。

混淆矩陣 Test:male Test:female
Result:male 20 1
Result:female 0 14

(表注:Test:male、Test:female分別表示測試集中的男性和女性,Result:male和Result:female分別表示結果中的男性和女性。表格中第一個元素:即Test:male列、Result:male行,表示測試集中為男性、並且結果中也為男性的數目。表格中其他元素所代表的含義以此類推)
由上表可以計算分類的正確率:(20+14)/(20+14+1) = 97.14%

K-means的聚類結果

K-means算法的基本設置

混淆矩陣 Test:male Test:female
Result:male 20 1
Result:female 0 14

(表注:該表與上表內容一致)

由於選擇初始中心點是隨機的,所以每次的聚類結果都不相同,最好的情況下能夠完全聚類正確,最差的情況下兩個聚類簇沒有分開,根據多數投票決定類別時,被標記為同一個類別。

KNN VS K-means

二者的相同點:
- k的選擇類似
- 思路類似:根據最近的樣本來判斷某個樣本的屬性

二者的不同點:

  • 應用場景不同:前者是分類或者回歸問題,后者是聚類問題;
  • 算法復雜度: 前者O(n^2),后者O(kmn);(k是聚類類別數,m是聚類次數)
  • 穩定性:前者穩定,后者不穩定。

總結

本文概括地描述了K近鄰算法和K-means算法,具體比較了二者的算法步驟。在此基礎上,通過將兩種方法應用到實際問題中,更深入地比較二者的異同,以及各自的優劣。本文作者還分別實現了K近鄰算法和K-means算法,並且應用到了具體問題上,最后得到了結果。
以上內容難免有所紕漏和錯誤,歡迎指正。

 

 


免責聲明!

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



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