機器學習: KNN

KNN (K Nearest Neighbor) 是比較常見的種監督算法。它的主要思想是看這個數據距離最近的 K 個節點中,這些節點哪個類佔最多,那麼這個數據就屬於哪個類,算是比較容易理解的算法。

問題描述

給定如下數據集

如何判定目標數據是屬於哪個類,0 或者 1。

Euclidean Distance

就像前面所說的要看最近的 K 個節點的各類,所以現在的問題轉變成求該點的最近 K 個點。求距離使用的就是 Euclidean Distance,也就是求兩點間距離公式。

d(x, x^\prime) = \sqrt{\sum_{i=0}^k{{(x_i-x_i^ \prime)}^2}}

是不是這樣求就收工了呢?嗯。。。差不多是的,不過這裏最好還要加一個權重,因爲有些特徵值比較重要,所以不能真的像求距離那樣,還要對特徵值給個優先級。

d(x, x^\prime) = \sqrt{\sum_{i=0}^k{w^i{(x_i-x_i^ \prime)}^2}}

錯誤率與 K 值

圖示如下

如果 K 很小會出現過擬合問題,因爲這時候每個點只看最靠近自己的那個點,所以對於訓練數據來做預測是 100% 正確的,但是用測試數據做預測錯誤就會很多。

而如果 K 太大(甚至等於數據集本身),那麼就會欠擬合,邊界變得十分“平滑”。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章