1.KNN簡介:
KNN:(K nearest neighbor)也叫K近鄰算法,主要用於處理機器學習中的分類問題。
2.算法思想:統計得到距離目標點最近的K個點中個數最多的某個標簽,作為目標點的類標簽。
即假設給定k=8,計算每個樣本點對測試點的距離,並從小到大排序,選出前8個樣本點,統計得出前8個樣本中有5個屬於第一類,2個屬於第二類,1個屬於第三類,則目標點可歸為第一類。【這就是多數表決的概念】
3.KNN三要素:距離度量(根據特征選擇),K值選擇,決策規則(比如上述的多數表決規則)
3.1關於距離選擇:
1)閔可夫斯基距離:可分為三種。空間(歐式距離);路徑(曼哈頓距離);國際象棋國王?(切比雪夫距離);
2)加權:標准化歐式距離
3)排除量綱和依存:馬氏距離;
4)向量差距:夾角余弦;
5)編碼差別:漢明距離;
6)集合近似度:傑卡德類似系數與距離;
7)相關:相關系數與距離
3.2關於k值選擇:
k值與近似誤差成正相關,與估計誤差成負相關,(一般選擇5~10左右?)
近似誤差和估計誤差的形象理解:
k取3,k較小,相當於只度量目標點周圍最近的3個樣本點,目標點對這三個節點的信任度高,近似誤差低。但是k取3對噪聲點敏感。
k取8,k較大,相當於度量了目標點周圍最近的8個樣本點,因為參考了多個節點的信息,所以這種情況下對噪聲點和錯誤數據點等等不敏感,估計誤差小。
3.3關於決策規則:
一般有全體一致(一票否決制)和多數表決兩種方式。
4.KNN和K-means對比(有監督/無監督)
參考資料:
1.KNN_matlab代碼:https://blog.csdn.net/queyuze/article/details/70195087?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase, 作者:新青年hans
2.概念理解:https://blog.csdn.net/weixin_40657079/article/details/82958976
3.K近鄰python簡單示例:https://www.cnblogs.com/eczhou/p/7860462.html
4.距離選擇:https://blog.csdn.net/weixin_40657079/article/details/82958976,作者:weixin_40657079