1. 程式人生 > >K最近鄰演算法(K-NN)

K最近鄰演算法(K-NN)

K-NN是什麼?

K最近鄰演算法是一種簡單但目前最常用的分類演算法,也可用於迴歸。
KNN沒有引數(不對資料潛在分佈規律做任何假設),基於例項(不建立明確的模型,而是通過具體的訓練例項進行預測),用於監督學習中。

K-NN演算法怎麼工作?

當用KNN進行分類時,得到的結果是某一類(預測類別——一個離散值)。
這個方法有三個要素:一組有標籤的物件,物件間的距離,K值(最近鄰的個數)。
##進行預測
為了給沒有標籤的物件進行分類,需要計算這個物件和已有標籤的距離,識別出距離它最近的K個最近鄰,最近鄰所佔數量最多的類別即為該物件的類別。對於真實資料的輸入變數,最常用的距離演算法是歐幾里得距離。

原理圖示:


圖1:我們想要將灰點分類到淺綠、綠色、紅色
圖1
圖2:首先計算灰點到K個最近鄰的距離。
圖2
圖3:假設K=4,找出4個最近鄰。
圖3
圖4:檢視最近鄰的類別,4個最近鄰中2淺綠1綠1紅,灰點的類別與最多的一樣,所以灰點屬於淺綠。
圖4

##關於K的值
找到合適的K值並不容易。K值太小時噪音會對結果產生很大影響,K值太大時計算花費很大。K值通常由個例具體情況決定,最好嘗試執行每個可能的K值再作決定。

##關於距離
歐幾里得距離的演算法:

其他常用的距離演算法還有:
Hamming Distance
Manhattan Distance
Minkowski Distance