教育行業(yè)A股IPO第一股(股票代碼 003032)

全國咨詢/投訴熱線:400-618-4000

kd樹是什么?kd樹的原理【機器學習課程】

更新時間:2022年04月26日14時27分 來源:傳智教育 瀏覽次數(shù):

根據(jù)KNN每次需要預測一個點時,我們都需要計算訓練數(shù)據(jù)集里每個點到這個點的距離,然后選出距離最近的k個點進行投票。當數(shù)據(jù)集很大時,這個計算成本非常高。

kd樹:為了避免每次都重新計算一遍距離,算法會把距離信息保存在一棵樹里,這樣在計算之前從樹里查詢距離信息,盡量避免重新計算。其基本原理是,如果A和B距離很遠,B和C距離很近,那么A和C的距離也很遠。有了這個信息,就可以在合適的時候跳過距離遠的點。

這樣優(yōu)化后的算法復雜度可降低到O(DNlog(N))。感興趣的讀者可參閱論文:Bentley,J.L.,Communications of the ACM(1975)。

1989年,另外一種稱為Ball Tree的算法,在kd Tree的基礎上對性能進一步進行了優(yōu)化。感興趣的讀者可以搜索Five balltree construction algorithms來了解詳細的算法信息。

kd樹原理:

kd樹

黃色的點作為根節(jié)點,上面的點歸左子樹,下面的點歸右子樹,接下來再不斷地劃分,分割的那條線叫做分割超平面(splitting hyperplane),在一維中是一個點,二維中是線,三維的是面。

kd樹root節(jié)點

黃色節(jié)點就是Root節(jié)點,下一層是紅色,再下一層是綠色,再下一層是藍色。

1.樹的建立;

2.最近鄰域搜索(Nearest-Neighbor Lookup)

kd樹(K-dimension tree)是一種對k維空間中的實例點進行存儲以便對其進行快速檢索的樹形數(shù)據(jù)結(jié)構(gòu)。kd樹是一種二叉樹,表示對k維空間的一個劃分,構(gòu)造kd樹相當于不斷地用垂直于坐標軸的超平面將K維空間切分,構(gòu)成一系列的K維超矩形區(qū)域。kd樹的每個結(jié)點對應于一個k維超矩形區(qū)域。利用kd樹可以省去對大部分數(shù)據(jù)點的搜索,從而減少搜索的計算量。

類比“二分查找”:給出一組數(shù)據(jù):[9 1 4 7 2 5 0 3 8],要查找8。如果挨個查找(線性掃描),那么將會把數(shù)據(jù)集都遍歷一遍。而如果排一下序那數(shù)據(jù)集就變成了:[0 1 2 3 4 5 6 7 8 9],按前一種方式我們進行了很多沒有必要的查找,現(xiàn)在如果我們以5為分界點,那么數(shù)據(jù)集就被劃分為了左右兩個“簇” [0 1 2 3 4]和[6 7 8 9]。

因此,根本就沒有必要進入第一個簇,可以直接進入第二個簇進行查找。把二分查找中的數(shù)據(jù)點換成k維數(shù)據(jù)點,這樣的劃分就變成了用超平面對k維空間的劃分??臻g劃分就是對數(shù)據(jù)點進行分類,“挨得近”的數(shù)據(jù)點就在一個空間里面。


猜你喜歡:

決策樹的劃分依據(jù)一:信息增益

文本數(shù)據(jù)分析有什么作用?常用的文本數(shù)據(jù)分析方法

OPenCV中如何實現(xiàn)ORB算法?【OpenCV教程】

meanshift算法原理:meanshift跟蹤算法實戰(zhàn)

傳智教育Ai人工智能開發(fā)培訓課程

0 分享到:
和我們在線交談!