輸入:訓練集資料
t
=t=\
t=其中,xi∈
x⊆rn
x_i \in x \subseteq r^n
xi∈x⊆
rn是例項的特徵向量,yi∈
y=
y_i \in y = \
yi∈y=
是例項的類別,i=1
,2,.
..,n
i=1,2,...,n
i=1,2,
...,
n輸出:例項 x
xx 所屬的類 yyy。
(1)根據給定的距離度量,在訓練集 t
tt 中找出與 x
xx 最鄰近的 k
kk 個點,涵蓋這 k
kk 個點的 x
xx 的鄰域記作 nk(
x)
n_k(x)
nk(x)
;(2)在 nk(
x)
n_k(x)
nk(x)
中根據分類決策規則決定(如多數表決) x
xx 的類別 yyy:
y =a
rgma
xcj∑
xi∈n
k(x)
i(yi
=cj)
,i=1
,2,.
..,n
;j=1
,2,.
..,k
y= \underset \sum_ i(y_i=c_j),\ i=1,2,...,n; j=1,2,...,k
y=cja
rgmax
xi
∈nk
(x)∑
i(y
i=c
j),
i=1,
2,..
.,n;
j=1,
2,..
.,k其中 i
ii 是指示函式,當 yi=
cj
y_i=c_j
yi=cj
時 i
ii 為1,否則 i
ii 是0。
模型三要素:度量距離、k值、分類決策規則。
k值選擇
k值的選擇對結果產生重大影響k值
近似誤差
估計誤差
模型複雜度
說明k值較小
減小增大
模型複雜化
對近鄰點敏感,容易過擬合
k值較大
增大減小
模型簡單化
鄰域中不相似的點干擾分類結果
注:近似誤差,可以理解訓練集的訓練誤差。估計誤差,可以理解為對測試集的測試誤差。
在應用中一般 k
kk 選擇較小的值,使用交叉驗證法選取最優值。
分類決策規則
多數表決規則(等價於經驗最小化)
平衡 kd 樹構造演算法:
輸入:k 維空間資料集 t
=t=\
t=輸出:kd 樹
(1)開始構造根節點,根節點包含所有樣例點的超矩形;選擇 x(1
)x^
x(1)
為座標軸,以 t 中所有例項 x(1
)x^
x(1)
的中位數為切分點,將根節點對應的超矩形切分為兩個子區域。切分由過 x(1
)x^
x(1)
中位數的點且垂直於 x(1
)x^
x(1)
軸的超平面實現。
以根節點生成深度為1的左、右結點:左子樹對應 x(1
)x^
x(1)
的座標小於切分點的子區域,右子樹對應 x(1
)x^
x(1)
大於切分點的子區域。
將落在超平面上的點放在根節點中。
(2)重複:深度的為 j 的結點,選擇 xlx_
xl 為切分的座標軸,其中 l=j
modk
+1
l=j\ mod\ k\ + 1
l=jmod
k+1 。選擇 x(l
)x^
x(l)
的中位數作為切分點。
(3)直到兩個頂點之間沒有例項存在時停止,從而形成 kd 樹。
kd 樹鄰近搜尋
輸入:kd 樹;目標點 x
輸出:x 的最近鄰點
(1)在 kd 樹中搜尋包含 x 的葉子結點;
(2)以此葉結點為當前最近葉結點;
(3)遞迴回退,進行如下操作:
(a)若該結點儲存的例項比當前最近結點更靠近目標點,則以該例項為「當前最近點」;
(b)當前最近點一定存在於該結點乙個子結點對應的區域內。檢查該結點的父結點的另乙個子結點對應的區域是否有更近的點。具體來說就是檢出另乙個結點對應的區域是否與以目標點為中心、目標點到「當前最近點」間的距離為半徑的超球體相交。
若相交則移動到另乙個結點,接著遞迴搜尋最近鄰搜尋。
(4)當回退到根節點,搜素結束。
統計學習方法筆記 K近鄰法
看完了knn演算法,感覺演算法挺簡單的,選擇k的大小,距離計算公式,分類決策三個部分就行了,並且三個部分用的東西都挺常見,沒什麼難度。後面的提到了乙個改進演算法,搜尋空間kd演算法,這樣可以幫助我們很快的找到k個最近鄰,運用中位數縮小搜尋空間,省去了對大部分資料點的搜尋。思想不難 k近鄰法是一種基本...
統計學習方法 k近鄰法
k近鄰法 knn 是一種基本的分類與回歸方法 分類這種需求,滲透到我們生活的方方面面 分類演算法可以幫助我們完成這些繁瑣的操作,並根據我們的要求不斷修正分類結果。分類演算法其實蠻多的,這裡順著書本順序,詳細講解knn演算法,再與k means k means 演算法進行簡單對比。k近鄰法是這樣乙個過...
統計學習方法 K近鄰法
k近鄰演算法簡單 直觀給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為這個類.下面先敘述k近鄰演算法,然後再討論其細節。近鄰法的特殊情況 k 1情形,稱為最近鄰演算法.對於輸入的例項點 特徵向量 x xx,最近鄰法將訓練資...