k近鄰法(k-nearest neighbor, knn)是一種基本的分類與回歸方法。knn做回歸和分類的主要區別在於最後做**時候的決策方式不同。knn做分類**時,一般是選擇多數表決法,即訓練集裡和**的樣本特徵最近的k個樣本,**為裡面有最多類別數的類別。而knn做回歸時,一般是選擇平均法,即最近的k個樣本的樣本輸出的平均值作為回歸**值。
簡言之,k近鄰法演算法簡單、直觀:給定乙個訓練集,在訓練資料集中找到與該例項最鄰近的k個例項;這k個例項的多數屬於某個類,就把該輸入例項分為這個類,此為分類;求出這k個例項的平均值,就把該平均值記做該例項的**值,此為回歸。
對於固定的訓練集,只要k值的選取,距離度量的方式和決策規則這三點確定了,演算法的**方式也就確定了。
knn中的k值選取對k近鄰演算法的結果會產生重大影響,在實際應用中,k值一般取乙個比較小的數值,然後通過交叉驗證選擇乙個合適的k值。
選擇較小的k值,就相當於用較小的領域中的訓練例項進行**,訓練誤差會減小,只有與輸入例項較近或相似的訓練例項才會對**結果起作用,與此同時帶來的問題是泛化誤差會增大,換句話說,k值的減小就意味著整體模型變得複雜,容易發生過擬合;
選擇較大的k值,就相當於用較大領域中的訓練例項進行**,其優點是可以減少泛化誤差,但缺點是訓練誤差會增大。這時候,與輸入例項較遠(不相似的)訓練例項也會對**器作用,使**發生錯誤,且k值的增大就意味著整體的模型變得簡單。
乙個極端是k等於樣本數m,則完全沒有分類,此時無論輸入例項是什麼,都只是簡單的**它屬於在訓練例項中最多的類,模型過於簡單。
對於距離的度量,我們有很多的距離度量方式,大多數情況下,歐式距離便可滿足我們的需求;即對於兩個n維向量x和y,兩者的歐式距離定義為:
d (x
,y)=
(x1−
y1)2
+(x2
−y2)
2+..
.+(x
n−yn
)2=∑
i=1n
(xi−
i1)2
d(x,y)=\sqrt=\sqrt^n(x_i−i_1)^2}
d(x,y)
=(x1
−y1
)2+
(x2
−y2
)2+.
..+(
xn−
yn)
2=i
=1∑n
(xi
−i1
)2
對於分類問題:一般都是使用前面提到的多數表決法
對於回歸問題:一般都是使用前面提到的求平均值
此處說的演算法亦可指kneighborsclassifier中algorithm的引數選擇,分別是:暴力搜尋(brute)、kd樹(kd_tree)、球樹(ball_tree)。
暴力搜尋:需要計算**樣本和所有訓練集中的樣本的距離,然後計算出最小的k個距離即可,接著多數表決,很容易做出**。這個方法的確簡單直接,在樣本量少,樣本特徵少的時候有效。但是在實際運用中很多時候用不上,為什麼呢?因為我們經常碰到樣本的特徵數有上千以上,樣本量有幾十萬以上,如果我們這要去**少量的測試集樣本,演算法的時間效率很成問題。因此,這個方法我們一般稱之為蠻力實現。比較適合於少量樣本的簡單模型的時候用。在機器學習實戰_k近鄰演算法 —— 電影分類採用的就是暴力搜尋方式。
kd樹:kd樹演算法沒有一開始就嘗試對測試樣本分類,而是先對訓練集建模,建立的模型就是kd樹,建好了模型再對測試集做**。所謂的kd樹就是k個特徵維度的樹,注意這裡的k和knn中的k的意思不同。knn中的k代表最近的k個樣本,kd樹中的k代表樣本特徵的維數。
球樹:球樹,顧名思義,就是每個分割塊都是超球體,而不是kd樹裡面的超矩形體。
閔氏距離(minkowski distance )定義了標準向量空間中兩點之間的距離。
定義如下:
當p=1時,稱為曼哈頓距離;當p=2時,稱為歐式距離。下圖是p取不同值時,閔氏距離的變化
K近鄰演算法總結分析
knn是通過測量不同特徵值之間的距離進行分類。如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別,其中k通常是不大於20的整數。knn演算法中,所選擇的鄰居都是已經正確分類的物件。該方法在定類決策上只依據最鄰近的乙個或者幾個樣本的類別來決...
K近鄰 KNN 演算法總結
knn演算法是選擇與輸入樣本在特徵空間內最近鄰的k個訓練樣本並根據一定的決策規則給出輸出結果。決策規則 分類任務 輸出結果為k個訓練樣本中佔大多數的類。回歸任務 輸出結果為k個訓練樣本值的平均值。如下圖的分類任務,輸出結果為w1類。k值的選擇 距離度量和分類決策規則是k近鄰演算法的三個基本要素。分類...
機器學習演算法總結 K近鄰
參考文章 k近鄰 knn 是一種基本分類與回歸方法。其思路如下 給乙個訓練資料集和乙個新的例項,在訓練資料集中找出與這個新例項最近的 k 個訓練例項,然後統計最近的 k個訓練例項中所屬類別計數最多的那個類,就是新例項的類。其流程如下所示 計算訓練樣本和測試樣本中每個樣本點的距離 常見的距離度量有歐式...