統計學習方法讀書筆記之knn演算法k 近鄰法是機器學習中最基本的分類和回歸方法,也稱為knn演算法。通常k近鄰法用於分類問題。
k近鄰法假定給定乙個訓練資料集,其中例項類別已定。分類時,對新的例項,根據其k個最近鄰的訓練例項類別,一般通過多數表決的方式來進行**。
例如,有兩堆水果,一堆是橙子,一堆是柚子,新拿到乙個水果,判斷是橙子還是柚子。一般來說,柚子更大更紅。那麼判斷和該水果最相近的 3 個水果是什麼,比如 3 個最近的鄰居是柚子,那麼我們可以判斷新拿到的水果是柚子,這就是 knn 演算法。
k近鄰演算法簡單,直觀有效。
輸入:給定乙個訓練資料集t=
(x1,
y1),
(x2,
y2),
...,
(xn,
yn) t=(
x1,y
1),(
x2,y
2),.
..,(
xn,y
n), 其中xi
x
i為例項的特徵向量,yi
y
i為例項的類別。
輸出:例項x所屬的類y。
根據給定的距離度量, 在訓練集t中尋找與x最近鄰的k個點,涵蓋這k個點的x的鄰域記作nk
(x) nk(
x)在nk(x)nk
(x)中根據分類決策規則(如多數表決)決定x的類別y:
y = ar
gmax
∑xi∈
nk(x
)i(y
i=cj
),i=
1,2,
...,
n;j=
1,2,
...,
k arg
max∑
xi∈n
k(x)
i(yi
=cj)
,i=1
,2,.
..,n
;j=1
,2,.
..,k
(其中i為指示函式,當yi
=cj yi=
cj時i為1,否則i為0)
特別的,當k=1時,稱為最近鄰演算法。注意,k近鄰法沒有顯示的學習過程。
k近鄰模型對應於特徵空間的劃分。模型由3個基本要素構成:
* k值選擇
* 距離度量
* 分類決策規則
當訓練集,距離度量,k值以及分類決策規則確定後,對於新輸入的任何乙個例項,它所屬的類別唯一的確定。
距離度量
特徵空間中的兩個例項點是兩個例項點相似程度的反映.k近鄰模型的特徵空間一般是n維的實數向量空間。
當p=2時,則是歐式距離。即:
當p=1時,則為曼哈頓距離
當p=∞時,則是各個座標距離的最大值。
k值選擇
k值的選擇會對k近鄰的結果產生重大影響。
如果選擇較小的k值,則學習的近似誤差減小,估計誤差增大,**結果會對近鄰的例項點非常敏感。如果近鄰點的例項點是雜訊點,則**會出錯。因此,較小的k值意味著整體模型會變得複雜,容易過擬合。
如果選擇較大的k值,則學習的近似誤差增大,估計誤差減小。**結果也會受到與輸入例項較遠的例項點的影響,造成**錯誤。因此,較大的k值意味著整體模型變得簡單,容易欠擬合。
在應用中,一般k值選用乙個比較小的數值,通常採用交叉驗證法來選取最優值。
分類決策規則
k近鄰法中的分類決策規則往往是多數表決,即由輸入例項的 k 個鄰近的訓練例項的多數類決定輸入例項的類別。
多數表決規則解釋如下: 如果分類損失函式為 0-1 損失函式,分類函式為:
那麼誤分類的概率是:
對給定的例項 x 屬於特徵向量集,最近鄰的 k 個訓練例項點構成集合nk
(x) nk(
x). 如何涵蓋nk
(x) nk(
x)的區域的類別是cj
c
j,那麼誤分類是:
要使誤分類率最小即經驗風險最小, 就要使 ∑i(yi=cj)最大,所以多數表決規則等價於經驗風險最小化
kd樹是一種對k維空間中例項點進行儲存以便對其進行快速檢索的樹形資料結構。kd樹是二叉樹,表示對k維空間的乙個劃分。構造kd樹相當於不斷地用垂直於座標軸的超平面將k維空間切分,構成一系列的k維超矩形區域。kd樹的每個結點對應於乙個k維超矩形區域。
kd 樹的最近鄰搜尋演算法:
輸入:已構造 kd 樹;目標點 x
輸出: x 的最近鄰
1.在 kd 樹種找到含目標點 x 的葉結點: 從根節點處罰,遞迴地向下訪問 kd 樹。若目標點 x 當前維的座標小於切分店的座標,移動到左子結點,否則移動到右子節點,直到子節點為葉節點為止。
2.以此葉結點為」當前最近點」
3.遞迴地向上回退,在每個節點如下操作:
- 如果該結點儲存的例項點比當前最近點距離目標點更近,則以該例項點為」當前最近點」
- 檢查該子節點的父節點對應的另一子節點對應的區域是否有更近的點。
4.當回退到根節點時,搜尋結束。最後的」當前最近點」即為 x 的最近鄰點
一般,例項點是隨機分布的,kd 樹搜尋的平均計算複雜度是 o(logn). kd 樹更適應於訓練例項數遠大於空間維數時的 k 近鄰搜尋。
統計學習方法筆記 KNN
k近鄰法 k nearest neighbor,k nn 這裡只討論基於knn的分類問題,1968年由cover和hart提出,屬於判別模型 k近鄰法不具有顯式的學習過程,演算法比較簡單,每次分類都是根據訓練集中k個最近鄰,通過多數表決的方式進行 所以模型需要保留所有訓練集資料,而象感知機這樣的模型...
統計學習方法筆記 KNN
k近鄰法 k nearest neighbor,k nn 這裡只討論基於knn的分類問題,1968年由cover和hart提出,屬於判別模型 k近鄰法不具有顯式的學習過程,演算法比較簡單,每次分類都是根據訓練集中k個最近鄰,通過多數表決的方式進行 所以模型需要保留所有訓練集資料,而象感知機這樣的模型...
統計學習方法 knn演算法 python實現
k近鄰演算法沒有顯示的學習過程,由三個基本要素 距離度量,k值的選擇和分類決策規則決定。距離選擇可以是歐式距離,lp距離或minkowski距離 k值的選擇過大會使模型變得簡單 過小會導致過擬合,通常取乙個比較小的數值採用交叉驗證法來取最優。分類決策規則往往是多數表決 等價於經驗風險最小化 kd樹最...