0%

K-nearest-neighbor-algorithm

機器學習架構

  • 分成training與Testing階段
  • Training:準備訓練資料與對應的類別${(x_1,y_1),(x_2,y_2),…,(x_N,y_N)}$,評估預測函數$f$並最小化在訓練資料上的誤差
  • Testing:輸入不在訓練資料內的未知資料,應用訓練好的fuction $f$來預測類別結果

K-nearest neighbor classifier

KNN的概念是由nearest neighbor algorithm衍伸出來,NN是透過一群已經存在的訓練資料與標籤當作基底,來對測試資料進行比對,輸出與訓練資料相似度高的類別當作結果

而KNN與NN不同的則是取出前K個相近的資料做參考,來決定最終輸出的類別結果

KNN演算法流程

訓練階段:存取所有訓練資料$x_i$與其對應的類別結果$y_i$

測試階段:

  1. 輸入$x$,計算與所有訓練資料點的距離
  2. 選擇前$k$個鄰近$x$的訓練資料
  3. 統計鄰近訓練資料最高的對應類別結果

距離量測方法:可使用歐式距離

KNN 細節整理

  • 如何決定參數k
  • 相似度比對

如何決定參數k

參數$k$的不同會影響輸出結果

  • k太小,對雜訊敏感,容易overfitting
  • k太大,容易underfitting

選擇參數k的方法:cross validate

cross validate

把資料分成多個子資料,測試參數在小樣本中的表現結果

測試流程:

  1. 輸入訓練資料,從訓練資料分割成多組不同的訓練/測試資料
  2. 選擇在平均效能中最好的參數$k$

相似度比對

參考