《統計學學習方法》閱讀筆記2 k近鄰演算法

2021-10-03 12:06:13 字數 2629 閱讀 3497

輸入:訓練集資料

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=cj​a

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,最近鄰法將訓練資...