1. 程式人生 > >kNN(k鄰近演算法)

kNN(k鄰近演算法)

kNN(k鄰近演算法)

核心思想

kNN 演算法的核心思想是如果一個樣本在特徵空間中的 k 個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。

kNN 方法在類別決策時,只與極少量的相鄰樣本有關。由於 kNN 方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,kNN 方法較其他方法更為適合。

KNN 演算法不僅可以用於分類,還可以用於迴歸。通過找出一個樣本的 k 個最近鄰居,將這些鄰居的屬性的平均值賦給該樣本,就可以得到該樣本的屬性。更有用的方法是將不同距離的鄰居對該樣本產生的影響給予不同的權值 (weight),如權值與距離成反比。

兩個優勢

在 KNN 中,通過計算物件間距離來作為各個物件之間的非相似性指標,避免了物件之間的匹配問題,在這裡距離一般使用歐氏距離或曼哈頓距離。
同時,KNN 通過依據 k 個物件中佔優的類別進行決策,而不是單一的物件類別決策。這兩點就是 KNN 演算法的優勢。

總結

就是在訓練集中資料和標籤已知的情況下,輸入測試資料,將測試資料的特徵與訓練集中對應的特徵進行相互比較,找到訓練集中與之最為相似的前 K 個數據,則該測試資料對應的類別就是 K 個數據中出現次數最多的那個分類。

演算法的描述

1)計算測試資料與各個訓練資料之間的距離;
2)按照距離的遞增關係進行排序;
3)選取距離最小的 K 個點;
4)確定前 K 個點所在類別的出現頻率;
5)返回前 K 個點中出現頻率最高的類別作為測試資料的預測分類。

參考引用:

機器學習(一)——K - 近鄰(KNN)演算法