一、K -近鄰算法(KNN:k-Nearest Neighbors)

一、K -近鄰算法(KNN:k-Nearest Neighbors)

算法基本思想:物以類聚,人以羣分

存在一個樣本數據集合,也稱作訓練樣本集,並且樣本集中每個數據都存在標籤。輸入沒有標籤的新數據後,將新數據的每個特徵與樣本集中數據對應的特徵進行比較,然後算法提取樣本集中特徵最相似數據(最相鄰)的分類標籤。一般來說,我們只選擇樣本數據集中前k個最相似的數據,這就是k-近鄰算法中k的出處,通常k是不大於20的整數。最後,選擇k個最相似數據中出現次數最多的分類,作爲新數據的分類(可理解爲:k個鄰居對未知標籤數據分類進行一個投票選擇)。

算法舉例:

根據電影中出現的接吻鏡頭和打鬥鏡頭的次數來判斷一個未知電影是愛情片還是動作片。


首先,根據打鬥鏡頭和接吻鏡頭的次數(兩個特徵),將所有電影映射到座標軸上:


然後,計算未知電影與樣本集中其他電影的距離(這裏,可以採用歐式距離):


此時,我們根據距離對所有電影進行排序(其實,這裏的距離就類似於兩部電影的相似度)。假定k=3,那麼《He’s Not Really into Dudes》、《Beautiful Woman》和《California Man》分別被選定爲未知電影的鄰居(最爲相近的3部電影)。

最後,我們統計鄰居中的分類結果(鄰居進行投票選擇),並將最多的分類結果定爲未知電影的分類結果。上述的3部電影均屬於愛情片,因此未知電影被判斷爲一部愛情片。

算法的優缺點及適用範圍:

優點:精度高、對異常值不敏感、無數據輸入假定;

缺點:計算複雜度高、空間複雜度高。(PS:上述例子僅爲最爲簡單二分類,所以是二維問題,一旦分類數目增加,相應的空間複雜度也會驟增;此外,對未知量進行分類,需要對其與所有訓練樣本的距離進行求解,對於大規模問題,計算複雜度高);

適應數據範圍:數值型和標稱型。

相關問題:

1.參數k的選擇:參數k選擇的太小或者太大,都會影響KNN結果的精度,一般k<20。


2.距離的選擇:常用的兩種距離分別爲歐氏距離和曼哈頓距離。


3.分類判斷決策:在鄰居中進行投票選擇無疑是最爲簡單,且最爲直觀的方法。但是,k個鄰居中可能包含很多中不同的分類,而且通常情況下越是接近的鄰居越更加可靠,所以我們也可以選擇帶權重的方法。


根據距離,爲每一個鄰居賦以不同的權值,距離越小的權值越大,距離越大的權值越小,然後再根據每一分類的加和做出分類判斷。

算法流程:


參考文獻:

[1].《機器學習實戰》,人民郵電出版社

[2].《The Top Ten algorithms in Data Mining》

發佈了25 篇原創文章 · 獲贊 18 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章