1. 程式人生 > >【深度學習基礎-04】最鄰近規則分類(K Nearest Neighbor)KNN演算法

【深度學習基礎-04】最鄰近規則分類(K Nearest Neighbor)KNN演算法

1 基本概念

  • Cover和Hart在1968年提出了最初的臨近演算法

  • 分類演算法classfication

  • 輸入基於例項的學習instance-based learning ,懶惰學習lazy learning

2 例子: 

     對最後一個未知電影型別進行歸類

                       

    對上圖例項進行轉化為特徵向量

                        

          類比現實生活中的場景(分豆子)

         

3 演算法描述

3.1 步驟

  1. 為了判斷未知例項的類別,以所有已知類別的例項作為參照
  2. 選擇引數K
  3. 計算未知例項與已知例項的舉例
  4. 選擇最近K個已知例項
  5. 根據少數服從多少原則,讓未知例項歸類為K個最鄰近樣本中最多類別

3.2 細節

關於K距離的衡量方法:

Euclidean Distance定義(可以擴充套件為N維)

                                     

其他距離衡量:餘弦值cos、正弦值sin、曼哈頓距離

3.3 舉例

以下圖為例,第一個小圈是K=4,第二個圈是K=9,你會發現結果其實不一樣

                               

4 演算法優缺點

4.1 演算法優點

簡單

易於理解

容易實現

通過對K的選擇可具備丟噪聲資料的健壯性

 4.2 演算法的缺點

                                 

需要大量的空間來儲存所有例項

演算法複雜度高,需要比較與所有已知例項與要分類的例項

當樣本分佈不平衡時,比如某一類樣本過大佔主導時,新的未知例項將容易被歸類為這個主導樣本,比如Y明顯是紅色,單採用KNN後會被分為藍色。

5 改進版本 

考慮距離遠近,加上權重,比如近的情況下權重更大,距離的倒數


下面是程式碼實際解讀(待更新詳細解釋)