資料探勘K近鄰(KNN)演算法

2021-09-12 06:18:11 字數 1344 閱讀 6355

k近鄰演算法是一種基本分類與回歸演算法,是一種監督式學習。

基本思想是在距離空間裡,如果乙個樣本的最接近的k個鄰居裡,絕大多數屬於某個類別,則該樣本也屬於這個類別。俗話叫,「隨大流」。

簡單來說,knn可以看成:有那麼一堆你已經知道分類的資料,然後當乙個新的資料進入的時候,就開始跟訓練裡的每個點求距離,然後挑出離這個資料最近的k個點,看看這k個點屬於什麼型別,然後用少數服從多數的原則,給新資料歸類。

k近鄰法使用的模型實際上對應於對特徵空間的劃分。模型由三個基本要素距離度量、k值的選擇和分類決策規則決定。

k近鄰法中,當訓練集、距離度量、k值及分類決策規則(如多數表決)確定後,對於任何乙個新的輸入例項,它所屬的類唯一確定。

k值的選擇會對k近鄰法的結果產生重大的影響。如果選擇小的k值,就相當於用較小的領域中的訓練例項進行**,「學習」近似誤差會減小, k值的減小就意味著整體模型變得複雜,容易發生過擬合,即增大了估計誤差;如果選擇的k值較大就相當於用較大領域中的訓練例項進行**,其優點是可以減少學習的估計誤差,但缺點是學習的近似誤差會增大。這時候,與輸入例項較遠(不相似的)訓練例項也會對**器作用,使**發生錯誤,且k值的增大就意味著整體的模型變得簡單。

在應用中,k值一般去乙個比較小的數。通常採用交叉驗證法來選取乙個最優的k值。

近似誤差與估計誤差:

近似誤差:可以理解為對現有訓練集的訓練誤差。 

估計誤差:可以理解為對測試集的測試誤差。

近似誤差關注訓練集,如果近似誤差小了會出現過擬合的現象,對現有的訓練集能有很好的**,但是對未知的測試樣本將會出現較大偏差的**。模型本身不是最接近最佳模型。

優點:理論成熟,思想簡單,既可以用來做分類又可以做回歸;

可以用於非線性分類;

訓練時間複雜度o(n)比支援向量機之類的演算法低;

和樸素貝葉斯之類的演算法比,對資料沒有假設,準確度高,對異常點不敏感。

缺點:計算量大,尤其是特徵數非常多的時候;

樣本不平衡的時候,對稀有類別的**準確率低;

kd樹,球樹之類的模型建立需要大量的記憶體;

相比決策樹模型,knn模型的可解釋性不強。

實現k近鄰法時,主要考慮如何對訓練資料進行快速的k近鄰搜尋。k近鄰法最簡單的實現是線性掃瞄,需要計算輸入例項和每乙個訓練例項之間的距離,當訓練集很大時,計算非常耗時,這種方法是不行的。為了提高k近鄰搜尋的效率,可以考慮用特殊的結構儲存訓練資料。

kd樹是為了降低knn的時間複雜度,提公升其效能的一種資料結構,是一種二叉樹。 使用 kd樹,可以對k維空間中的樣本點進行儲存以便對其進行快速搜尋。構造kd樹,相當於不斷地用垂直於座標軸的超平面將k維空間進行切分,構成一系列的k維超矩形區域。kd樹的每乙個節點對應於乙個k維超矩形區域。

資料探勘 K 近鄰演算法

k 近鄰演算法 k nearest neighbor 是最基本的分類演算法,其基本思想是採用測量不同特徵值之間的距離方法進行分類。存在乙個樣本資料集合 訓練集 並且樣本集中每個資料都存在標籤 即每一資料與所屬分類的關係已知 輸入沒有標籤的新資料後,將新資料的每個特徵與樣本集中資料對應的特徵進行比較 ...

K 近鄰演算法 KNN

knn k nearest neighbor 假設訓練集有記錄 r1 r2,rn共n條,訓練集的特徵向量及其對應的類別都是已知的,每個記錄的特徵向量為 t1 t2,tk共k個特徵,待測試的記錄為ru 1 計算ru 的特徵向量與訓練集的每條記錄 即r1 r2,rn 的特徵向量的歐式距離,選取距離最小的...

k近鄰演算法 kNN

核心思想 前k個最相似資料中出現次數最多的類別,作為新資料的類別。核心函式 計算距離函式,投票函式 coding utf 8 import random import sys from collections import counter from operator import itemgette...