KNN(K-最近鄰)

算法介紹
KNN分類算法應該是最容易理解的機器學習算法了。它是惰性學習法的一種,它並不從訓練數據集中得到一個分類模型,而是簡單的存儲這些訓練數據,當一個待分類數據X到來時,它計算X和訓練數據集中所有數據的距離,然後選擇離X最近的k個數據,這k個數據稱爲X的k最近鄰,並把這k個數據中出現次數最多的類別賦給X。
KNN分類算法有兩個比較關鍵的地方需要注意:
(1)兩個數據之間距離的計算公式。相似性計算是大多數分類算法的核心,但是對KNN來說,幾乎是它的全部,直接影響到分類的準確性。具體可參考《數據挖掘概念與技術》第三版2.4節。
(2)k值選擇。對於一個數據對象,選擇不同的k值時,可能會被分到不同的類別,如下圖:
這裏寫圖片描述
圖中實心行塊表示正例,空心圓圈表示負例。如果k=1,待分類對象被分爲負例;如果k=2,無法對待分類對象進行分類;如果k=3,待分類對象被分爲正例。可以通過在訓練集上選擇不同的k值對測試集進行分類,最終選擇錯誤率最小時的k值。

算法優勢
KNN算法非常適合並行計算。在Hadoop上,我們可以輕鬆設計出時間複雜度爲O(1)的mapreduce實現。

參考資料:
《Web數據挖掘》第2版,Bing Liu 著, 俞勇 譯
《數據挖掘概念與技術》第3版,Jiawei Han,Micheline Kamber,Jian Pei 著,範明,孟小峯 譯

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