機器學習實戰筆記(K近鄰)
K近鄰算法(KNN)
k近鄰算法
??k近鄰(k-nearest neighbor,KNN)是一種基本的分類與回歸算法。於1968年由Cover和Hart提出。k近鄰的輸入是實例的特征向量,對應於特征空間的點;輸出為實例的類別,可以取多類。k近鄰算法假設給定一個訓練數據集,其中的實例類別已定,分類時,對新的實例,根據其k個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。因此,k近鄰法不具有顯式的學習過程。簡單的說,給定一個訓練數據集,對新的輸入實例,在訓練集中找到與該實例最近鄰的k個實例,這k個實例的多數屬於哪個類,就把該輸入實例分為這個類。這就是k近鄰算法中k的出處,通常k是不大於20的整數。
??
k近鄰算法的三個基本要素:k值的選擇、距離度量、分類決策規則
k近鄰算法步驟:
對未知類別屬性的數據集的每個點依次執行以下操作:
(1) 計算已知類別數據集中的點與當前點之間的距離;
(2) 按照距離遞增次序排序;
(3)選取與當前點距離最小的k個點;
(4)確定前k個點所在類別的出現頻率;
(5)返回前k個點所出現頻率最高的類別作為當前點的預測分類
k近鄰算法總結
優點:
1. 簡單、有效、精度高;
2. 對離群值不敏感;
3. 無數據輸入假定;
4 .可用於數值型數據和離散型數據;
缺點:
1. 計算復雜度高、空間復雜度高;
2. 樣本不平衡問題(即有的類別的樣本數量很多,而其它類別的樣本數量很少),影響分類效果;
3. 一般數值很大的時候不用這個,計算量太大。但是單個樣本又不能太少 ,否則容易發生誤分;
4. 最大的缺點是無法給出數據的內在含義,無法給出任何數據的基礎結構信息,無法知曉平均實例樣本和典型實例樣本具有什麽特征。
註意事項
1. K值的設定
??較小的k值,學習的近似誤差減小,但是估計誤差會增大,意味著整體模型變得復雜,容易過擬合。
??較大的k值,學習的近似誤差增大,但是估計誤差會減小,意味著整體模型變得簡單。
??在應用中k值一般取一個比較小的數值。采用交叉驗證選取最優的k值。
2.優化改進
??在確定最終的類別時,不是簡單的使用多數表決投票,而是進行加權投票,距離越近權重越高。
??k近鄰法中,當訓練集、距離度量、k值和分類決策規則確定後,其結果唯一確定。
??k近鄰法的實現需要考慮如何快速搜索k個最近鄰點。kd樹是一種便於對k維空間中的數據進行快速檢索的數據結構。
機器學習實戰筆記(K近鄰)