KNN (K Nearest Neighbor) 是比較常見的種監督算法。它的主要思想是看這個數據距離最近的 K 個節點中,這些節點哪個類佔最多,那麼這個數據就屬於哪個類,算是比較容易理解的算法。
問題描述
給定如下數據集
如何判定目標數據是屬於哪個類,0 或者 1。
Euclidean Distance
就像前面所說的要看最近的 K 個節點的各類,所以現在的問題轉變成求該點的最近 K 個點。求距離使用的就是 Euclidean Distance,也就是求兩點間距離公式。
是不是這樣求就收工了呢?嗯。。。差不多是的,不過這裏最好還要加一個權重,因爲有些特徵值比較重要,所以不能真的像求距離那樣,還要對特徵值給個優先級。
錯誤率與 K 值
圖示如下
如果 K 很小會出現過擬合問題,因爲這時候每個點只看最靠近自己的那個點,所以對於訓練數據來做預測是 100% 正確的,但是用測試數據做預測錯誤就會很多。
而如果 K 太大(甚至等於數據集本身),那麼就會欠擬合,邊界變得十分“平滑”。