機器學習算法系列——k近鄰分類法
阿新 • • 發佈:2019-01-30
1、基本思想
給定一個訓練資料集(這些資料集是已知類別的),對新輸入的要對其進行分類的例項,從訓練資料中找出與該例項最近的k個例項,這k個例項的多數屬於某個類(類似於這k個例項對新資料投票),就把該輸入例項分為這個類。
2、數學理論
2.1 演算法描述
輸入:訓練資料集
其中,
輸出:例項
分類步驟:
- 根據給定的距離度量,在訓練集
T 中找出與x 最鄰近的k個點,涵蓋這k個點的x 的領域記作Nk(x) - 在
Nk(x) 中根據分類決策規則(如多數表決)決定x 的類別y :
y=argmax∑xi∈Nk(x)I(yi=cj),i=1,2,...,N;j=1,2,...,K
上式中,I 為指示函式,即當yi=cj 時I 為1,否則I 為0。
2.2 距離度量
k近鄰分類模型的空間一般是n維實數向量空間
2.3 演算法舉例
例題:假設有6個二維資料點{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},資料點位於二維空間內,如下圖所示。為了能有效的找到最近鄰,k-d樹採用分而治之的思想,即將整個空間劃分為幾個小部分,首先,粗黑線將空間一分為二,然後在兩個子空間中,細黑直線又將整個空間劃分為四部分,最後虛黑直線將這四部分進一步劃分。
6個二維資料點{(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}構建kd樹的具體步驟為:
- 確定:split域=x。具體是:6個數據點在x,y維度上的資料方差分別為39,28.63,所以在x軸上方差更大,故split域值為x;
- 確定:Node-data = (7,2)。具體是:根據x維上的值將資料排序,6個數據的中值(所謂中值,即中間大小的值)為7,所以Node-data域位資料點(7,2)。這樣,該節點的分割超平面就是通過(7,2)並垂直於:split=x軸的直線x=7;
- 確定:左子空間和右子空間。具體是:分割超平面x=7將整個空間分為兩部分:x<=7的部分為左子空間,包含3個節點={(2,3),(5,4),(4,7)};另一部分為右子空間,包含2個節點={(9,6),(8,1)};
- 如上演算法所述,kd樹的構建是一個遞迴過程,我們對左子空間和右子空間內的資料重複根節點的過程就可以得到一級子節點(5,4)和(9,6),同時將空間和資料集進一步細分,如此往復直到空間中只包含一個數據點。