k近鄰演算法 總結

2021-10-03 08:19:31 字數 2146 閱讀 8429

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個訓練例項中所屬類別計數最多的那個類,就是新例項的類。其流程如下所示 計算訓練樣本和測試樣本中每個樣本點的距離 常見的距離度量有歐式...