當前位置:股票大全官網 - 股票投資 - Knn算法原理

Knn算法原理

如果壹個特征空間中k個最相似(即最接近)的樣本大部分屬於某個類別,那麽這個樣本也屬於這個類別。這種方法只根據分類決策中最近的壹個或幾個樣本的類別來確定待分類樣本的類別。看下圖:

KNN的算法流程如下:從上圖我們可以看到,圖中的數據集是好數據,也就是所有的數據集都有標簽,壹個是藍色的正方形,壹個是紅色的三角形,綠色的圓圈是我們要分類的數據。如果K=3,那麽離綠點最近的有兩個紅三角形和1個藍方塊,這三個點投票,那麽待分類的綠點屬於紅三角形。如果K=5,那麽離綠點最近的有兩個紅三角形和三個藍方塊,這五個點投票,那麽待分類的綠點屬於藍方塊。我們可以看到,KNN基本上是基於數據統計方法!其實很多機器學習算法也是基於數據統計的。KNN是壹種基於記憶的學習,也叫基於實例的學習,屬於懶惰學習。即它沒有明顯的預訓練過程,而是在程序開始運行時,將數據集加載到內存後,無需訓練就可以開始分類。具體來說,每次來到壹個未知的樣本點,我都會在附近找K個最近的點來投票。

KNN算法的實現依賴於未知樣本與訓練樣本之間的“距離”。我們可以用歐幾裏得距離算法來計算“距離”:

在找到k個最近的元組之後,將這些元組的對應值的平均值用作最終結果。

我們可以從K=1開始逐步增加,用測試數據分析正確率,從而選擇最優的K,在這個結果中,要平衡考慮正確率和計算量。比如當K=3時,正確率為90%,當K=10時,正確率為91%,所以需要考慮1%的計算量增加是否經濟。

(1)如果可能的話,先對樣本數據進行排序,這樣才能知道哪些數據只需要比較。但是對於高維數據,這幾乎是不可行的。

(2)將樣本數據分成多個子集,待分類的數據只需要與壹個或多個子集進行比較。例如,如果屬性是經緯度,距離是經緯度兩點之間的距離,則可以根據經緯度的整數部分將樣本劃分為不同的子集,待分類的元組只需要與作為自身整數部分的相同子集進行比較。當子集中的樣本數據小於k時,將與相鄰集進行比較。

(1)理論成熟,思想簡單,既可用於分類,也可用於回歸。

(2)可用於非線性分類。

(3)訓練時間復雜度低於支持向量機等算法。

(4)與樸素貝葉斯等算法相比,它對數據沒有假設,準確率高,對異常值不敏感。

(5)由於KNN方法主要依賴於周圍有限的相鄰樣本,而不是區分類域的方法,因此KNN方法比其他方法更適用於類域重疊或重疊較多的樣本集進行分類。

(6)該算法更適合大樣本量的類域自動分類,而小樣本量的類域更容易出現誤分類。

(1)需要大量的計算,特別是當有很多特征時。

(2)當樣本不平衡時,稀有類別的預測精度較低。

(3)建立模型如3)KD樹和球體樹需要大量內存。

(4)是壹種懶惰分散的學習方法,基本不學習,導致預測速度比logistic回歸等算法慢。

(5)與決策樹模型相比,KNN模型不具有可解釋性。

註:圖片來自:/wstz _ 5461/文章/詳情/78018099。