統計學習方法 k近鄰法

2021-08-28 07:59:23 字數 2586 閱讀 3276

k近鄰法(knn)是一種基本的分類與回歸方法

分類這種需求,滲透到我們生活的方方面面:

分類演算法可以幫助我們完成這些繁瑣的操作,並根據我們的要求不斷修正分類結果。

分類演算法其實蠻多的,這裡順著書本順序,詳細講解knn演算法,再與k-means、k-means++演算法進行簡單對比。

k近鄰法是這樣乙個過程:

給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類(多數表決argmax),就把該輸入例項分為這個類。

過程其實很好理解,描述成可量化的演算法,就是這樣的:

knn是一種懶惰演算法,平時不好好學習,考試(對測試樣本分類)時才臨陣磨槍(臨時去找k個近鄰)。

懶惰的後果:構造模型很簡單,但在對測試樣本分類的開銷大,因為要掃瞄全部訓練樣本並計算距離。

理解演算法後,我們來看看k近鄰法的優缺點:

優點:易於實現,無需估計引數,無需訓練,支援增量學習,能對超多邊形的複雜決策空間建模

缺點:計算量較大,分析速度慢(因為要掃瞄全部訓練樣本並計算距離)

開頭我們說到,分類演算法很多,knn只是其中一種,下面我們將knn演算法與k-means、k-means++進行對比,便於我們更好地理解演算法。

knn

給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類(多數表決argmax),就把該輸入例項分為這個類。

k-means

不斷地聚類劃分過程

(1)對於一組資料集,任意選取k個點作為質心,將資料集中的點歸為離其最近的質心一類,此時資料集被劃分為k個類;

(2)對這k個類,重新尋找各類的質心;

(3)根據新產生的質心,按照(1)繼續聚類,然後再根據聚類重新計算各類質心,直到質心不再改變,分類完成。

下面的圖可以很直觀地展示整個分類過程

k-means++距離度量、k值、分類決策規則,是k近鄰法地三要素,下面分別介紹。

距離度量

衡量特徵空間中兩個例項點的距離,度量方法一邊用lp距離,p取不同值時,分別有不同地名稱,常用歐氏距離作為距離度量。

不同的距離度量,得到的例項點之間的距離是不同的,下面的圖給出了二維空間中,p取不同值時,與原點的lp距離為1的點的集合圖形,可以看到,歐氏距離對應的是圓。

k值

k值得選擇,反映了對近似誤差與估計誤差之間的權衡。

k值過大

分類決策規則

k近鄰法中得分類決策規則,常用多數表決法,當然,為了弱化k值的影響,還可以採用加權表決法。

加權表決

為什麼要使用多數表決法呢,這裡給出多數表決法的直觀解釋,這個解釋我給滿分!

了解了k近鄰法後,你應該會產生這樣的疑惑:

如何對訓練資料進行快速k近鄰搜尋?

難道用線性掃瞄麼?

要計算輸入例項與訓練集每乙個例項的距離,當訓練集很大時,計算非常耗時,不可取

面對大資料量的訓練集,人們想出了乙個好辦法提高搜尋效率:

使用特殊的資料結構儲存訓練資料,以減少計算距離的次數,這就是——kd樹

下面結合示例,講解如何構造kd樹以及如何搜尋kd樹

一波操作之後,得到的kd樹直觀理解長成這樣:

本文詳細講解了knn演算法,並與k-means、k-means++演算法進行了對比,給出了knn演算法的三要素,最後介紹了便於knn演算法實現的kd樹的資料儲存結構。

下期將詳細介紹另一種常用的分類方法:樸素貝葉斯,敬請期待~~

《統計學習方法》 李航 chapter3

統計學習方法 K近鄰法

k近鄰演算法簡單 直觀給定乙個訓練資料集,對新的輸入例項,在訓練資料集中找到與該例項最鄰近的k個例項,這k個例項的多數屬於某個類,就把該輸入例項分為這個類.下面先敘述k近鄰演算法,然後再討論其細節。近鄰法的特殊情況 k 1情形,稱為最近鄰演算法.對於輸入的例項點 特徵向量 x xx,最近鄰法將訓練資...

《統計學習方法》 k近鄰法

k近鄰法是一種基本分類與回歸方法。在這裡我們只討論分類問題中的k近鄰法。三要素 k值的選擇 距離度量 分類決策規則 最後會引入一種k近鄰的實現方法 kd樹。輸入 訓練資料集t 輸出 例項x所屬的類y 根據給定的距離度量,在訓練集中找到和x最近的k個點 在這k個點中根據分類決策規則,決定x的類別 注意...

統計學習方法筆記 K近鄰法

看完了knn演算法,感覺演算法挺簡單的,選擇k的大小,距離計算公式,分類決策三個部分就行了,並且三個部分用的東西都挺常見,沒什麼難度。後面的提到了乙個改進演算法,搜尋空間kd演算法,這樣可以幫助我們很快的找到k個最近鄰,運用中位數縮小搜尋空間,省去了對大部分資料點的搜尋。思想不難 k近鄰法是一種基本...