KNN算法

原文地址:KNN算法作者: 寶藍水晶
knn算法

K最近鄰(k-NearestNeighbor,KNN)分類算法,是一個理論上比較成熟的方法,也是最簡單的機器學習算法之一。該方法的思路是:如果一個樣本在特徵空間中的k個最相似(即特徵空間中最鄰近)的樣本中的大多數屬於某一個類別,則該樣本也屬於這個類別。KNN算法中,所選擇的鄰居都是已經正確分類的對象。該方法在定類決策上只依據最鄰近的一個或者幾個樣本的類別來決定待分樣本所屬的類別。KNN方法雖然從原理上也依賴於極限定理,但在類別決策時,只與極少量的相鄰樣本有關。由於KNN方法主要靠周圍有限的鄰近的樣本,而不是靠判別類域的方法來確定所屬類別的,因此對於類域的交叉或重疊較多的待分樣本集來說,KNN方法較其他方法更爲適合。

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

  

該算法的基本思路是:在給定新文本後,考慮在訓練文本集中與該新文本距離最近(最相似)的 K篇文本,根據這 K 篇文本所屬的類別判定新文本所屬的類別,具體的算法步驟如下:

STEPONE:根據特徵項集合重新描述訓練文本向量

STEPTWO:在新文本到達後,根據特徵詞分詞新文本,確定新文本的向量表示

STEP THREE:在訓練文本集中選出與新文本最相似的 K個文本,計算公式爲:

公式1-KNN

其中,K值的確定目前沒有很好的方法,一般採用先定一個初始值,然後根據實驗測試的結果調整 K值,一般初始值定爲幾百到幾千之間。

STEP FOUR:在新文本的 K個鄰居中,依次計算每類的權重,計算公式如下:

公式2-KNN

其中, x爲新文本的特徵向量,Sim(x,di)爲相似度計算公式,與上一步驟的計算公式相同,而y(di,Cj)爲類別屬性函數,即如果di 屬於類Cj ,那麼函數值爲1,否則爲 0。 

STEPFIVE:比較類的權重,將文本分到權重最大的那個類別中。

除此以外,支持向量機神經網絡算法在文本分類系統中應用得也較爲廣泛,支持向量機的基本思想是使用簡單的線形分類器劃分樣本空間。對於在當前特徵空間中線形不可分的模式,則使用一個核函數把樣本映射到一個高維空間中,使得樣本能夠線形可分。

而神經網絡算法採用感知算法進行分類。在這種模型中,分類知識被隱式地存儲在連接的權值上,使用迭代算法來確定權值向量。當網絡輸出判別正確時,權值向量保持不變,否則進行增加或降低的調整,因此也稱爲獎懲法。


該算法在分類時有個主要的不足是,當樣本不平衡時,如一個類的樣本容量很大,而其他類樣本容量很小時,有可能導致當輸入一個新樣本時,該樣本的K個鄰居中大容量類的樣本佔多數。因此可以採用權值的方法(和該樣本距離小的鄰居權值大)來改進。該方法的另一個不足之處是計算量較大,因爲對每一個待分類的文本都要計算它到全體已知樣本的距離,才能求得它的K個最近鄰點。目前常用的解決方法是事先對已知樣本點進行剪輯,事先去除對分類作用不大的樣本。該算法比較適用於樣本容量比較大的類域的自動分類,而那些樣本容量較小的類域採用這種算法比較容易產生誤分。

 

KNN - 圖示

圖示-KNN圖示-KNN

右圖中,綠色圓要被決定賦予哪個類,是紅色三角形還是藍色四方形?如果K=3,由於紅色三角形所佔比例爲2/3,綠色圓將被賦予紅色三角形那個類,如果K=5,由於藍色四方形比例爲3/5,因此綠色圓被賦予藍色四方形類。 

 

發佈了25 篇原創文章 · 獲贊 6 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章