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近鄰搜尋。
相關文章
- K近鄰演算法演算法
- K - 近鄰演算法演算法
- k-近鄰演算法演算法
- K-近鄰演算法介紹與程式碼實現演算法
- K-鄰近均值演算法演算法
- 一看就懂的K近鄰演算法(KNN),K-D樹,並實現手寫數字識別!演算法KNN
- k-鄰近演算法實現約會網站的配對效果演算法網站
- 並行化最佳化KD樹演算法:使用C#實現高效的最近鄰搜尋並行演算法C#
- 分類演算法-k 鄰近演算法演算法
- K近鄰模型模型
- 機器學習——K近鄰演算法機器學習演算法
- 機器學習實戰筆記-k近鄰演算法機器學習筆記演算法
- 機器學習-K近鄰演算法-KNN機器學習演算法KNN
- 機器學習演算法之K近鄰演算法機器學習演算法
- 機器學習-11-k近鄰演算法機器學習演算法
- 機器學習實戰----k值近鄰演算法(Python語言)機器學習演算法Python
- 機器學習演算法——kNN(k-近鄰演算法)機器學習演算法KNN
- 送你一份使用k近鄰演算法實現迴歸的實用指南(附程式碼、連結)演算法
- 機器學習演算法(三):K近鄰(k-nearest neighbors)初探機器學習演算法REST
- 機器學習——KNN(K近鄰)機器學習KNN
- K近鄰演算法:機器學習萌新必學演算法演算法機器學習
- 用定租問題學透機器學習的K近鄰演算法機器學習演算法
- 機器學習經典分類演算法 —— k-近鄰演算法(附python實現程式碼及資料集)機器學習演算法Python
- Python反反爬系列(一)----K近鄰演算法與CSS動態字型加密Python演算法CSS加密
- 機器學習實戰2.1. 超詳細的k-近鄰演算法KNN(附Python程式碼)機器學習演算法KNNPython
- 機器學習——KNN近鄰演算法機器學習KNN演算法
- 機器學習_K近鄰Python程式碼詳解機器學習Python
- 什麼是機器學習的分類演算法?【K-近鄰演算法(KNN)、交叉驗證、樸素貝葉斯演算法、決策樹、隨機森林】機器學習演算法KNN隨機森林
- 資料結構與演算法-kd二叉樹(kNN)資料結構演算法二叉樹KNN
- 影像重取樣演算法之最鄰近插值演算法演算法
- 什麼是機器學習分類演算法?【K-近鄰演算法(KNN)、交叉驗證、樸素貝葉斯演算法、決策樹、隨機森林】機器學習演算法KNN隨機森林
- 資料結構與演算法-kd二叉樹(基礎)資料結構演算法二叉樹
- 【機器學習】機器學習建立演算法第2篇:K-近鄰演算法【附程式碼文件】機器學習演算法
- Kd Tree演算法詳解演算法
- 基於鄰域粗糙集演算法python實現演算法Python
- 機器學習 第4篇:sklearn 最鄰近演算法概述機器學習演算法
- Reinventing the wheel:決策樹演算法的實現演算法
- 決策樹演算法的推理與實現演算法