kNN的英文全稱是:k nearest neighbor,直譯過來的意思就是k個最相近的鄰居。所以,kNN的算法思想,簡單而言,就是利用與待分類對象最相近的k個已知對象的特徵,來決定待分類對象的特徵。這種分類方法的思想簡單,在實際分類效果中,表現也較爲優異,是數據挖掘的分類領域中的一種入門算法。
下面以一個圖例來具體說明kNN的具體思想:
圖片中有三種顏色表示的諸多實點,分別代表了三種不同的類別。中間的黑色叉號代表了待分類的對象。在對X進行分類的時候,首先需要計算X與所有已知對象之間的距離,然後選擇這些距離中最小的k個對象,最後將這k個對象中所屬類別最多的那個類,作爲X的最終分類。
從圖中可以看到,與X最相鄰的5個對象中,有4個對象屬於紅色分類,有1個對象屬於綠色分類,所以,我們將X的最終分類認定爲紅色類。
通過上述的實例的分析,對kNN算法的思想就有了更進一步的理解。接下來,我們把kNN算法的具體步驟進行一下總結:
1. 獲取數據集,對數據進行預處理,以滿足算法的格式需要
2. 分別計算待分類對象與所有數據集中的其他對象之間的距離
3. 設定k值得大小,並篩選距離最小的k個對象
4. 對k個對象進行統計,獲得在k個對象中,各類別所擁有對象的個數
5. 將對象個數最多的類別,作爲待分類對象的最終分類結果
基於上述算法的具體步驟,我們需要考慮以下若干問題:
- 算法的數據格式問題
- 對象之間的距離計算
- k值的選擇
- 算法的計算量