k近鄰演算法的實現:kd樹
k近鄰演算法最簡單的實現方法是線性掃描。但當訓練集很大時,搜尋效率低,為了提高效率,可構建kd樹。
一、構建kd樹
以中位數作為切分點得到的kd樹時平衡樹。kd樹本身是一個二叉樹,對特徵空間進行劃分。
演算法:輸入:資料集T
輸出:kd樹
1.構造根節點,選擇第一個特徵為座標軸,然後只考慮第一個特徵,對所有例項的第一個特徵的值進行排序,找出中位數,並由此作為切分點,將資料集劃分為兩大部分。(將落在切分超平面的點即中位數對應點放在結點上)。
2.重複:依次對各個座標軸進行切分,再從第一個座標軸迴圈切分。
3.結束:直至兩個子區域沒有例項存在時停止。
二維的切分可以如下圖:
二、搜尋kd樹
構建好kd樹看起來是個冗餘的過程,但是構建完成之後,對特例點進行找尋鄰近點時就會大大提高效率。類似於linux命令的locate和find命令。
利用kd樹進行最近鄰搜尋:
輸入:已構造的kd樹,目標點x
輸出:x的最近鄰
步驟:1.在kd樹中找出包含目標點x的葉節點。
2.以此葉結點作為當前最近點。
3.遞迴向上回退,對每個結點進行操作:
如果該結點儲存的例項點比當前最近點距離近,更新最近點為此結點。
檢查該子節點的父節點的另一子節點對應區域是否有更近點。如果有,更新。
接著,遞迴向上進行搜尋。
4.當回退到根結點時,搜尋結束。
kd樹搜尋的平均計算複雜度時O(logN)。
kd樹更適用於訓練示例數遠大於空間維數時的k近鄰搜尋。
相關文章
- 統計學習筆記(3)——k近鄰法與kd樹筆記
- K - 近鄰演算法演算法
- K近鄰演算法演算法
- k近鄰演算法python實現 -- 《機器學習實戰》演算法Python機器學習
- 用Python實現K-近鄰演算法Python演算法
- 機器學習——K近鄰演算法機器學習演算法
- k-近鄰演算法演算法
- K-近鄰演算法介紹與程式碼實現演算法
- K-鄰近均值演算法演算法
- 機器學習-K近鄰演算法-KNN機器學習演算法KNN
- 機器學習實戰筆記-k近鄰演算法機器學習筆記演算法
- K近鄰模型模型
- 機器學習-11-k近鄰演算法機器學習演算法
- Python:K-近鄰演算法Python演算法
- 2.1 k鄰近演算法之二演算法
- 2.1 k鄰近演算法之一演算法
- 一看就懂的K近鄰演算法(KNN),K-D樹,並實現手寫數字識別!演算法KNN
- kd樹的簡單實現
- k-鄰近演算法實現約會網站的配對效果演算法網站
- 分類演算法-k 鄰近演算法演算法
- 機器學習演算法之K近鄰演算法機器學習演算法
- 並行化最佳化KD樹演算法:使用C#實現高效的最近鄰搜尋並行演算法C#
- 機器學習演算法——kNN(k-近鄰演算法)機器學習演算法KNN
- 機器學習——KNN(K近鄰)機器學習KNN
- 機器學習實戰----k值近鄰演算法(Python語言)機器學習演算法Python
- 機器學習筆記1(K-近鄰演算法)機器學習筆記演算法
- K近鄰演算法:機器學習萌新必學演算法演算法機器學習
- 機器學習演算法(三):K近鄰(k-nearest neighbors)初探機器學習演算法REST
- 送你一份使用k近鄰演算法實現迴歸的實用指南(附程式碼、連結)演算法
- 用定租問題學透機器學習的K近鄰演算法機器學習演算法
- 第一篇:K-近鄰分類演算法原理分析與程式碼實現演算法
- K近鄰法(KNN)原理小結KNN
- 機器學習——KNN近鄰演算法機器學習KNN演算法
- 《機器學習實戰》k最近鄰演算法(K-Nearest Neighbor,Python實現)機器學習演算法RESTPython
- 機器學習經典分類演算法 —— k-近鄰演算法(附python實現程式碼及資料集)機器學習演算法Python
- 機器學習——最鄰近規則分類(K Nearest Neighbor)KNN演算法機器學習RESTKNN演算法
- 機器學習_K近鄰Python程式碼詳解機器學習Python
- 機器學習實戰2.1. 超詳細的k-近鄰演算法KNN(附Python程式碼)機器學習演算法KNNPython