機器學習十大經典算法——knn

前面講了線性迴歸和邏輯迴歸,這期咱們講knn

----------------------------------------------------------寒江孤影 江湖故人 相逢何必曾相識---------------------------------------------

1:什麼是knn

1.2官話:

任何樣本點的特性和該的鄰近點的特性類似,所以我們可以認爲使用某個點的多個鄰近的點的特性就可以表示當前點的特性

1.2通俗

knn也叫k最近鄰,就是k個最近的鄰居,每個樣本都可以用它最接近的k個鄰居來代表

 例如,上圖中,綠色圓要被決定賦予哪個類,是紅色三角形還 是藍色四方形?如果K=3,由於紅色三角形所佔比例爲2/3,綠色圓將被賦予紅色三角形那個類

如果K=5,由於藍色四方形比例爲3/5,因此綠色圓被賦予藍色四方形類。

knn主要解決分類問題當然也可以解決迴歸問題

KNN分類算法:就是鄰居點中類別最多的那個類別作爲當前點的類別

KNN迴歸算法:使用所有鄰近點的均值作爲當前點的迴歸預測值

2:KD_tree

這裏有主要有兩種計算方式,brute就是上文講的這種,這種方式適用在數據量小的情況下,在大量數據的時候就要做優化,使用kd_tree算法。

KD Tree是密度聚類(DBSCAN)算法中計算樣本和核心對象之間距離來獲取最近鄰以及KNN算法中用於計算最近鄰的快速、便捷構建方式。

舉一個例子

 二維樣本: {(2,3), (5,4), (9,6), (4,7), (8,1), (7,2)}

 當我們生成KD樹以後,就可以去預測測試集裏面的樣本目標點了。對於一個目標點,我們首先在KD樹裏面找到包含目標點的葉子節點。以目標點爲圓心,以目標點到葉子節點樣本實例的距離爲半徑,得到一個超球體,最近鄰的點一定在這個超球體內部然後返回葉子節點的父節點,檢查另一個子節點包含的超矩形體是否和超球體相交,如果相交就到這個子節點尋找是否有更加近的近鄰,有的話就更新最近鄰。如果不相交那就簡單了,我們直接返回父節點的父節點,在另一個子樹繼續搜索最近鄰。當回溯到根節點時,算法結束,此時保存的最近鄰節點就是最終的最近鄰。

 knn算法大致就這些,難點在KD Tree拓展上,之前兩期有反饋代碼提供的不太好,我會盡快修改,讓代碼更輕鬆易懂,讓新手儘快入門,讓老手有所提升,下期見

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章