1. 程式人生 > >K-近鄰(KNN)算法

K-近鄰(KNN)算法

第三章 不同 bin 挖掘 特性 訓練 屬於 博客 建立

  K-近鄰算法(K-NN)   鄰近算法,或者說K最近鄰(kNN,k-NearestNeighbor)分類算法是數據挖掘分類技術中最簡單的方法之一。所謂K最近鄰,就是k個最近的鄰居的意思,說的是每個樣本都可以用它最接近的k個鄰居來代表。   kNN算法的核心思想是如果一個樣本在特征空間中的k個最相鄰的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別,並具有這個類別上樣本的特性。該方法在確定分類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。 kNN方法在類別決策時,只與極少量的相鄰樣本有關。由於kNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,kNN方法較其他方法更為適合。   KNN是通過測量不同特征值之間的距離進行分類。它的的思路是:如果一個樣本在特征空間中的k個最相似(即特征空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。K通常是不大於20的整數。KNN算法中,所選擇的鄰居都是已經正確分類的對象。該方法在定類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。

  下面通過一個簡單的例子說明一下:如下圖,綠色圓要被決定賦予哪個類,是紅色三角形還是藍色四方形?如果K=3,由於紅色三角形所占比例為2/3,綠色圓將被賦予紅色三角形那個類,如果K=5,由於藍色四方形比例為3/5,因此綠色圓被賦予藍色四方形類。

技術分享圖片

由此也說明了KNN算法的結果很大程度取決於K的選擇

  在KNN中,通過計算對象間距離來作為各個對象之間的非相似性指標,避免了對象之間的匹配問題,在這裏距離一般使用歐氏距離或曼哈頓距離:

技術分享圖片

同時,KNN通過依據k個對象中占優的類別進行決策,而不是單一的對象類別決策。這兩點就是KNN算法的優勢。

接下來對KNN算法的思想總結一下:就是在訓練集中數據和標簽已知的情況下,輸入測試數據,將測試數據的特征與訓練集中對應的特征進行相互比較,找到訓練集中與之最為相似的前K個數據,則該測試數據對應的類別就是K個數據中出現次數最多的那個分類,其算法的描述為:

1)計算測試數據與各個訓練數據之間的距離;

2)按照距離的遞增關系進行排序;

3)選取距離最小的K個點;

4)確定前K個點所在類別的出現頻率;

5)返回前K個點中出現頻率最高的類別作為測試數據的預測分類

缺點:

1)沒有建立模型,測試樣本和預測樣本都要與所有的訓練樣本比較,當訓練集合測試集數據規模很大時,計算量會很大;

2)K近鄰並不能給出一個可以理解的模型,不生成模型。

註意:計算樣本與樣本之間的相似度(或者距離)。由於樣本的類別是由K近鄰中最經常出現的類別決定的,註意K 的取值問題。註意 k=1 的情況下並不能足以決定測試樣本的類別,因為數據有噪聲和異常值(outliers)。需要多一些的近鄰集合來準確的決定類別。

參考博客:

  https://www.cnblogs.com/ybjourney/p/4702562.html

  《Web數據挖掘》(第二版) Bing Liu 著 俞勇等譯 -------------------------------(第三章 監督學習 3.9節 k-近鄰學習)

K-近鄰(KNN)算法