• <del id="a8uas"></del>
    • 千鋒教育-做有情懷、有良心、有品質的職業(yè)教育機構

      400-811-9990
      手機站
      千鋒教育

      千鋒學習站 | 隨時隨地免費學

      千鋒教育

      掃一掃進入千鋒手機站

      領取全套視頻
      千鋒教育

      關注千鋒學習站小程序
      隨時隨地免費學習課程

      上海
      • 北京
      • 鄭州
      • 武漢
      • 成都
      • 西安
      • 沈陽
      • 廣州
      • 南京
      • 深圳
      • 大連
      • 青島
      • 杭州
      • 重慶
      當前位置:合肥千鋒IT培訓  >  技術干貨  >  kNN里面的兩種優(yōu)化的數(shù)據(jù)結構:kd-tree和ball-tree,在算法實現(xiàn)原理上有什么區(qū)別?

      kNN里面的兩種優(yōu)化的數(shù)據(jù)結構:kd-tree和ball-tree,在算法實現(xiàn)原理上有什么區(qū)別?

      來源:千鋒教育
      發(fā)布人:xqq
      時間: 2023-10-15 17:34:35

      一、kd-tree和ball-tree在算法實現(xiàn)原理上的區(qū)別

      KD樹是對依次對K維坐標軸,以中值切分構造的樹,每一個節(jié)點是一個超矩形,在維數(shù)小于20時效率較高;ball tree 是為了克服KD樹高維失效而發(fā)明的,其構造過程是以質心C和半徑r分割樣本空間,每一個節(jié)點是一個超球體。

      kd 樹是一個二叉樹,每一個內部的節(jié)點都代表了一個超矩形空間,并且它的子樹包含在這個超矩形空間內部的所有樣本點。

      但是 kd 樹對于一些樣本分布情況而言效率并不高,比如當大量樣本落在一個超矩形的角落的情況,此時使用球樹的效率會更高。

      球樹的結構與 kd 樹類似,同樣是一個二叉樹,根節(jié)點選擇方式如下:

      找到一個中心點,使所有樣本點到這個中心點的距離最短。

      對于每一個節(jié)點的子節(jié)點的選擇,方式如下:

      選擇當前超球體區(qū)域離中心最遠的點作為左子節(jié)點選擇距離左子節(jié)點距離最遠的點作為右子節(jié)點對于其他的樣本點,計算到左子節(jié)點和右子節(jié)點對應樣本點的歐式距離,并分配到距離較近的那一個對所有子節(jié)點做相同的操作

      讓我們舉一個具體的例子:

      對以下樣本點構建球樹:[1,2], [5,3], [7,9], [1,6], [9,2], [8,4], [4,4], [5,7]

      首先建立根節(jié)點,找到包含所有樣本點的超球體,記錄球心位置,作為根節(jié)點(超球體可以是最小外接超球體,也可以不是,只需要將符合要求的樣本點包含進去即可,當然越小的超球體,在搜索過程中效率越高,最小外接超球體的擬合存在很多方法,可以拉到最后查看本文最后一章,現(xiàn)在假設已經找到最小外接超球體)

      找到所有點中距離最遠的兩個點,并判斷其他樣本點與這兩個點的距離,距離哪個點最近,則將該樣本點劃分到該點所在的圓內,并得到包含所有相同類別的點的圓的圓心坐標和半徑,生成兩個子節(jié)點。

      何時停止空間分割呢,可以設定一個閾值 r,當子節(jié)點中包含的樣本點數(shù)量 <= r 時,即可停止對這個子節(jié)點的分割。如果 r=4,此時我們的球樹已經構建完畢。

      當 r=3,或 r=2,我們還需要對兩個子節(jié)點做同樣的空間分割操作:

      球樹的每個節(jié)點中,需要包含的信息如下:

      該節(jié)點包含的樣本點的信息該節(jié)點超球體的圓心坐標該節(jié)點超球體的半徑

      延伸閱讀:

      二、隨機增量法

      對于一個已經將 i-1 個點包含在內的最小外接圓來說,我們增加一個點 i,如何找到所有點的最小外接圓呢?過程如下:

      如果點 i 在當前最小外接圓內,則不重新畫圓。如果點 i 不在當前的最小外接圓內,則在點 [0, i-1] 中找一個在當前最小外接圓之外的點 j,以 i,j 兩點為直徑畫圓。在點 [0, j-1] 中找一個在當前圓外的點 k,并以 i, j, k 三點畫圓,則為最新的最小外接圓,如果找不到 k,則當前 i, j 為直徑的圓就是最小外接圓。

      以上就是關于kd-tree和ball-tree在算法實現(xiàn)原理上的區(qū)別的內容希望對大家有幫助。

      聲明:本站稿件版權均屬千鋒教育所有,未經許可不得擅自轉載。

      猜你喜歡LIKE

      制作大型軟件一般選用什么類型的數(shù)據(jù)庫以保護數(shù)據(jù)安全?

      2023-10-15

      access數(shù)據(jù)庫中,查詢設計怎么規(guī)定小數(shù)位數(shù)?

      2023-10-15

      云文件存儲有哪些用途?

      2023-10-15

      最新文章NEW

      怎么樣用django將后臺數(shù)據(jù)庫表里面的內容以Excel表格的形式顯示到網(wǎng)頁中?

      2023-10-15

      數(shù)據(jù)庫Union連接兩張表之前,怎么判斷要連接的另一張表是否存在?

      2023-10-15

      數(shù)據(jù)集市有哪些類型??

      2023-10-15

      相關推薦HOT

      更多>>

      快速通道 更多>>

      最新開班信息 更多>>

      網(wǎng)友熱搜 更多>>