k近鄰演算法簡單、直觀給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為這個類.下面先敘述k近鄰演算法,然後再討論其細節。
近鄰法的特殊情況:k=1情形,稱為最近鄰演算法.對於輸入的例項點(特徵向量)x
xx,最近鄰法將訓練資料集中與x
xx最鄰近點的類作為x
xx的類。
k近鄰法使用的模型實際上對應於對特徵空間的劃分.模型由三個基本要素——距離度量、k值的選擇和分類決策規則決定。
k近鄰法中, 當訓練集、距離度量(如歐氏距離)、k值及分類決策規則(如多數表決)確定後,對於任何乙個新的輸入例項,它所屬的類唯一的確定.這相當於根據上述要素將特徵空間劃分為一些子空間,確定子空間裡的每個點所屬的類,這一事實從最近鄰演算法中可以看得很清楚。
特徵空間中,對每個訓練例項點x
ix_i
xi,距離該點比其他點更近的所有點組成個區域,叫作單元 (ce11)。 每個訓練例項點擁有乙個單元,所有訓練例項點的單元構成對特徵空間的乙個劃分.最近鄰法將例項x
ix_i
xi的類y
iy_i
yi作為其單元中所有點的類標記 (class label). 這樣,每個單元的例項點的類別是確定的。圖3.1 是二維特徵空間劃分的乙個例子。
特徵空間中兩個例項點的距離是兩個例項點相似程度的反映。k近鄰模型的特徵空間一般是n維實數向量空間r
nr^n
rn。 使用的距離是歐氏距離,但也可以是其他距離,如更一般的 lp 距離 (l
pl_p
lp distance) 或minkowski 距離 (minkowski distance)
圖3.2 給出了三維空間中p
pp取不同值時,與原點的l
pl_p
lp 距離為1 (l
pl_p
lp =1)點的圖形。
k近鄰法中的分類決策規則往往是多數表決,即由輸入例項的k個鄰近的訓練例項中的多數類決定輸入例項的類。
實現k近鄰法時,主要考慮的問題是如何對訓練數掘進行快速k近鄰搜尋。這點在特徵空間的維數大及訓練資料容量大時尤其必要。
k近鄰法最簡單的實現方法是線性掃瞄 (linear scan)。 這時要計算輸入例項與每乙個訓練例項的距離。當訓練集很大時,計算非常耗時,這種方法是不可行的.
為了提高k近鄰搜尋的效率,可以考慮使用特殊的結構儲存訓練資料,以減少計算距離的次數。具體方法很多,下面介紹其中的kd樹(kd tree)方法。
kd 樹是一種對k維空間中的例項點進行儲存以便對其進行快速檢索的樹形資料結構。kd 樹是二叉樹,表示對k維空間的乙個劃分(partition). 構造kd樹當於不斷地用垂直於座標軸的超平面將k維空間切分,構成一系列的k維超矩形區域。kd樹的每個結點對應於乙個k維超矩形區域。
構造 kd 樹的方法如下:構造根結點,使根結點對應於k維空間中包含所有例項點的超矩形區域,通過下面的遞迴方法,不斷地對k空間進行切分,生成子結點。在超矩形區域(結點)上選擇乙個座標軸和在此座標軸上的乙個切分點,確乙個超平面,這個超平面通過選定的切分點並垂直於選定的座標軸,將當前超矩形區域切分為左右兩個子區域〈子結點),這時,例項被分到兩個於區域。這個過程直到子區域內沒有例項時終止〈終止時的結點為葉結點)。在此過程中,將例項儲存在相應的結點上。
通常,依次選擇座標軸對空間切分,選擇訓練例項點在選定座標軸上的中位數(median)為切分點,這樣得到的 kd 樹是平衡的。注意.平衡的 kd 樹搜尋時的效率未必是最優的。
下面給出構造 kd 樹的演算法:
1. k近鄰法是基本且簡單的分類與回歸方法k 近鄰法的基本做法是:對給定的訓練例項點和輸入例項點 首先確定輸入例項點的k個最近鄰訓練例項點,然後利用這k個訓練例項點的類的多數來**輸入例項點的類。
2. k近鄰模型對應於基於訓練資料集對特徵空間的乙個劃分。k近鄰法中,當訓練集、距離度量、 k值及分類決策規則確定後,其結果唯一確定。
3.k近鄰法三要素:距離度量、值的選擇和分類決策規則。常用的距離度量是歐氏距離及更一般的l
pl_p
lp距離.k值小時,近鄰模型更複雜;值大時,k鄰模型更簡單 值的選擇反映了對近似誤差與估計誤差之間的權衡,通常由交叉驗證選擇最優的k。常用的分類決策規則是多數表決,對應於經驗風險最小化。
4. 近鄰法的實現需要考慮如何快速搜尋k個最近鄰點 。kd 樹是一種便於對k維空間中的資料進行快速檢索的資料結構。kd 樹是二叉樹,表示k維空間的乙個劃分,其每個結點對應於k維空間劃分中的乙個超矩形區域。利用 kd樹可以省去對大部分散據點的搜尋,從而減少搜尋的計算量。
統計學習方法 k近鄰法
k近鄰法 knn 是一種基本的分類與回歸方法 分類這種需求,滲透到我們生活的方方面面 分類演算法可以幫助我們完成這些繁瑣的操作,並根據我們的要求不斷修正分類結果。分類演算法其實蠻多的,這裡順著書本順序,詳細講解knn演算法,再與k means k means 演算法進行簡單對比。k近鄰法是這樣乙個過...
《統計學習方法》 k近鄰法
k近鄰法是一種基本分類與回歸方法。在這裡我們只討論分類問題中的k近鄰法。三要素 k值的選擇 距離度量 分類決策規則 最後會引入一種k近鄰的實現方法 kd樹。輸入 訓練資料集t 輸出 例項x所屬的類y 根據給定的距離度量,在訓練集中找到和x最近的k個點 在這k個點中根據分類決策規則,決定x的類別 注意...
統計學習方法筆記 K近鄰法
看完了knn演算法,感覺演算法挺簡單的,選擇k的大小,距離計算公式,分類決策三個部分就行了,並且三個部分用的東西都挺常見,沒什麼難度。後面的提到了乙個改進演算法,搜尋空間kd演算法,這樣可以幫助我們很快的找到k個最近鄰,運用中位數縮小搜尋空間,省去了對大部分資料點的搜尋。思想不難 k近鄰法是一種基本...