為什麼說KNN是懶惰學習的分類算法?之所以稱“懶惰”並不是由於此類算法看起來很簡單,而是在訓練模型過程中這類算法並不去學習一個判別式函數(損失函數)而是要記住整個訓練集,這樣解釋可能沒有很懂,那就看看下面那張圖吧!
對於預測新的數據,在範圍內與旁邊的鄰居進行比較,並以這幾個鄰居(訓練樣本)中出現最多的分類標籤作為最終新樣本數據的預測標籤。就好像國小國中常常會搞小團體,某天新來的同學突然被要求選邊站,不想以後在班上被欺負,當然選擇人多的那一邊嘛!!
或是更簡單一點,用一句話就可以形容KNN的原理,其概念與「近朱者赤,近墨者黑」相同,就是周圍的資料決定其分類。
步驟
- 決定k值及距離度量。
- 針對新的資料,找到訓練集中和它最近的k個樣本。
- 以多數決的方式進行投票來決定類別。
如何選定k值
- 如果選擇較小的k值,k = 1,會造成離新的資料最近的類別是什麼他就是什麼類別,最容易overfitting
- 如果k = N(訓練資料),預測結果都是屬於在訓練資料中最多的類別
- 如果k是偶數,則有可能碰到無法直接決定類別,例如k=4,結果在i附近的點有2個type A的資料與 2個type B的資料
導致無法判斷結果
參考文獻