KNN演算法理解

2021-07-03 15:32:12 字數 2040 閱讀 3384

一、演算法概述

1、knn演算法又稱為k近鄰分類(k-nearest neighbor classification)演算法。

最簡單平凡的分類器也許是那種死記硬背式的分類器,記住所有的訓練資料,對於新的資料則直接和訓練資料匹配,如果存在相同屬性的訓練資料,則直接用它的分類來作為新資料的分類。這種方式有乙個明顯的缺點,那就是很可能無法找到完全匹配的訓練記錄。

knn演算法則是從訓練集中找到和新資料最接近的k條記錄,然後根據他們的主要分類來決定新資料的類別。該演算法涉及3個主要因素:訓練集、距離或相似的衡量、k的大小。

2、代表**

discriminant adaptive nearest neighbor classification

trevor hastie and rolbert tibshirani

ieee transactions on paitern analysis and machine intelligence, vol. 18, no. 6, june 1996

3、行業應用

客戶流失**、欺詐偵測等(更適合於稀有事件的分類問題)

二、演算法要點

1、指導思想

knn演算法的指導思想是「近朱者赤,近墨者黑」,由你的鄰居來推斷出你的類別。

計算步驟如下:

1)算距離:給定測試物件,計算它與訓練集中的每個物件的距離

2)找鄰居:圈定距離最近的k個訓練物件,作為測試物件的近鄰

3)做分類:根據這k個近鄰歸屬的主要類別,來對測試物件分類

2、距離或相似度的衡量

什麼是合適的距離衡量?距離越近應該意味著這兩個點屬於乙個分類的可能性越大。

覺的距離衡量包括歐式距離、夾角余弦等。

對於文字分類來說,使用余弦(cosine)來計算相似度就比歐式(euclidean)距離更合適。

3、類別的判定

投票決定:少數服從多數,近鄰中哪個類別的點最多就分為該類。

加權投票法:根據距離的遠近,對近鄰的投票進行加權,距離越近則權重越大(權重為距離平方的倒數)

三、優缺點

1、優點

簡單,易於理解,易於實現,無需估計引數,無需訓練

適合對稀有事件進行分類(例如當流失率很低時,比如低於0.5%,構造流失**模型)

特別適合於多分類問題(multi-modal,物件具有多個類別標籤),例如根據基因特徵來判斷其功能分類,knn比svm的表現要好

2、缺點

懶惰演算法,對測試樣本分類時的計算量大,記憶體開銷大,評分慢

可解釋性較差,無法給出決策樹那樣的規則。

四、常見問題

1、k值設定為多大?

k太小,分類結果易受雜訊點影響;k太大,近鄰中又可能包含太多的其它類別的點。(對距離加權,可以降低k值設定的影響)

k值通常是採用交叉檢驗來確定(以k=1為基準)

經驗規則:k一般低於訓練樣本數的平方根

2、類別如何判定最合適?

投票法沒有考慮近鄰的距離的遠近,距離更近的近鄰也許更應該決定最終的分類,所以加權投票法更恰當一些。

3、如何選擇合適的距離衡量?

高維度對距離衡量的影響:眾所周知當變數數越多,歐式距離的區分能力就越差。

變數值域對距離的影響:值域越大的變數常常會在距離計算中佔據主導作用,因此應先對變數進行標準化。

4、訓練樣本是否要一視同仁?

在訓練集中,有些樣本可能是更值得依賴的。

可以給不同的樣本施加不同的權重,加強依賴樣本的權重,降低不可信賴樣本的影響。

5、效能問題?

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

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

已經有一些方法提高計算的效率,例如壓縮訓練樣本量等。

6、能否大幅減少訓練樣本量,同時又保持分類精度?

濃縮技術(condensing)

編輯技術(editing)

參考:維基百科:

knn可以用於推薦:

這裡我們不用knn來實現分類,我們使用knn最原始的演算法思路,即為每個內容尋找k個與其最相似的內容,並推薦給使用者。

KNN演算法理解

一 演算法概述 1 knn演算法又稱為k近鄰分類 k nearest neighbor classification 演算法。最簡單平凡的分類器也許是那種死記硬背式的分類器,記住所有的訓練資料,對於新的資料則直接和訓練資料匹配,如果存在相同屬性的訓練資料,則直接用它的分類來作為新資料的分類。這種方式...

KNN演算法理解

一 演算法概述 1 knn演算法又稱為k近鄰分類 k nearest neighbor classification 演算法。最簡單平凡的分類器也許是那種死記硬背式的分類器,記住所有的訓練資料,對於新的資料則直接和訓練資料匹配,如果存在相同屬性的訓練資料,則直接用它的分類來作為新資料的分類。這種方式...

A 演算法理解

廣度優先 bfs 和深度優先 dfs 搜尋 深度優先搜尋,用俗話說就是不見棺材不回頭。演算法會朝乙個方向進發,直到遇到邊界或者障礙物,才回溯。一般在實現的時候,我們採用遞迴的方式來進行,也可以採用模擬壓棧的方式來實現。如下圖,s代表起點,e代表終點。我們如果按照右 下 左 上這樣的擴充套件順序的話,...