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$ 測試階段: 輸入$x$,計算與所有訓練資料點的距離 選擇前$k$個鄰近$x$的訓練資料 統計鄰近訓練資料最高的對應類別結果 距離量測方法:可使用歐式距離 KNN 細節整理 如何決定參數k 相似度比對 如何決定參數k 參數$k$的不同會影響輸出結果 k太小,對雜訊敏感,容易overfitting k太大,容易underfitting 選擇參數k的方法:cross validate cross validate 把資料分成多個子資料,測試參數在小樣本中的表現結果 測試流程: 輸入訓練資料,從訓練資料分割成多組不同的訓練/測試資料 選擇在平均效能中最好的參數$k$ 相似度比對 相似度比對: 歐式距離(Euclidean distance),最常用 曼哈頓距離(Manhattan distance) 切比雪夫距離(Chebyshev distance) 馬氏距離(Mahalanobis Distance) 相似度比對前都須對資料進行正規化,才能保證每個 維度的特徵具有相同的影響力,除了馬氏距離已將不同尺度的問題做處理 參考 沒有想像中簡單的簡單分類器 Knn Why do you need to scale data in KNN