KNN中的kd樹筆記

首先,講一下kd樹的概念,實現k近鄰法時,主要考慮的問題是如何對訓練數據進行快速k近鄰搜索。這在特徵空間的維數大及訓練數據容量大時尤其必要。k近鄰法最簡單的實現是線性掃描(窮舉搜索),即要計算輸入實例與每一個訓練實例的距離。計算並存儲好以後,再查找K近鄰。當訓練集很大時,計算非常耗時。爲了提高kNN搜索的效率,可以考慮使用特殊的結構存儲訓練數據,以減小計算距離的次數。

看來統計學習中的kd樹的講解,感覺講的有點囉嗦,我個人對kd樹的理解是這樣的。

首先,你對你的數據集中的第一個屬性進行一次劃分,可以根據他的中位數進行一個劃分,然後第一個屬性劃分完之後你可以再根據第二個屬性進行劃分,同樣的你可以根據他的中位數進行劃分,然後繼續對剩下的屬性進行一個劃分,劃分完之後就形成了一個如下圖的kd樹。假設數據集是

T={(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)}T={(2,3),(5,4),(9,6),(4,7),(8,1),(7,2)},構造一個平衡kd樹:

但是,就算形成了一個平衡樹,也可能這顆樹的搜索效率不是一個最好的。

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