1. 程式人生 > >機器學習-KNN算法

機器學習-KNN算法

訓練集 nbsp 線性分類 但是 測試 優點 http 進行 inf

原理

KNN算法,又叫K近鄰算法。就是在訓練集中數據和標簽已知的情況下,輸入測試數據,將測試數據的特征與訓練集中對應的特征進行相互比較,找到訓練集中與之最為相似的前K個數據,則該測試數據對應的類別就是K個數據中出現次數最多的那個分類,其算法的描述為:

  • 1)計算測試數據與各個訓練數據之間的距離;
  • 2)按照距離的遞增關系進行排序;
  • 3)選取距離最小的K個點;
  • 4)確定前K個點所在類別的出現頻率;
  • 5)返回前K個點中出現頻率最高的類別作為測試數據的預測分類。

技術分享圖片

三要素:

  1. k值的選擇
  2. 距離的度量(常見的距離度量有歐式距離,曼哈頓距離等)
  3. 分類決策規則 (多數表決規則)

k值的選擇

  1. k值越小表明模型越復雜,更加容易過擬合
  2. 但是k值越大,模型越簡單,如果k=N的時候就表明無論什麽點都是訓練集中類別最多的那個類

所以一般k會取一個較小的值,然後用過交叉驗證來確定
這裏所謂的交叉驗證就是將樣本劃分一部分出來為預測樣本,比如95%訓練,5%預測,然後k分別取1,2,3,4,5之類的,進行預測,計算最後的分類誤差,選擇誤差最小的k

KNN的回歸

在找到最近的k個實例之後,可以計算這k個實例的平均值作為預測值。或者還可以給這k個實例添加一個權重再求平均值,這個權重與度量距離成反比(越近權重越大)。

優缺點:

KNN算法的優點:

  1. 思想簡單,理論成熟,既可以用來做分類也可以用來做回歸;
  2. 可用於非線性分類;
  3. 訓練時間復雜度為O(n);
  4. 準確度高,對數據沒有假設,對outlier不敏感;

缺點:

    1. 計算量大;
    2. 樣本不平衡問題(即有些類別的樣本數量很多,而其它樣本的數量很少);
    3. 需要大量的內存;

技術分享圖片

機器學習-KNN算法