統計學習方法第三章

2021-07-27 10:57:10 字數 1436 閱讀 3913

kd樹的最近鄰搜尋:  

輸入: 已構造的kd樹;目標點xx;

輸出:xx的最近鄰。

(1) 在kd樹中找出包含目標點xx的葉結點:從根結點出發,遞迴的向下訪問kd樹。若目標點當前維的座標值小於切分點的座標值,則移動到左子結點,否則移動到右子結點。直到子結點為葉結點為止;

(2) 以此葉結點為「當前最近點」;

(3) 遞迴的向上回退,在每個結點進行以下操作:

(a) 如果該結點儲存的例項點比當前最近點距目標點更近,則以該例項點為「當前最近點」;

(b) 當前最近點一定存在於該結點乙個子結點對應的區域。檢查該子結點的父結點的另乙個子結點對應的區域是否有更近的點。具體的,檢查另乙個子結點對應的區域是否與以目標點為球心、以目標點與「當前最近點」間的距離為半徑的超球體相交。如果相交,可能在另乙個子結點對應的區域內存在距離目標更近的點,移動到另乙個子結點。接著,遞迴的進行最近鄰搜尋。如果不相交,向上回退。

(4) 當回退到根結點時,搜尋結束。最後的「當前最近點」即為xx的最近鄰點。

拿書上的例子舉例說明:

給定乙個二維空間資料集:t=t=,首先要構造kd樹,根結點對應包含資料集t的矩形,選擇x(1)x(1)軸,6個資料點的x(1)x(1)座標中位數是6,這裡選最接近的(7,2)點,以平面x(1)=7x(1)=7將空間分為左、右兩個子矩形(子結點);接著左矩形以x(2)=4x(2)=4分為兩個子矩形(左矩形中點的x(2)x(2)座標中位數正好為4),右矩形以x(2)=6x(2)=6分為兩個子矩形,如此遞迴,最後得到如下圖所示的特徵空間劃分和kd樹。

假如要查詢目標點(3,4.5)的最近鄰點。同樣先進行二叉查詢,先從(7,2)查詢到(5,4)節點,在查詢由y = 4為分割超平面的區間,由於查詢點為y值為4.5,因此進入右子空間查詢到(4,7),到達葉節點形成搜尋路徑:(7,2)→(5,4)→(4,7),取(4,7)為當前最近鄰點。以目標查詢點為圓心,目標查詢點到當前最近點的距離2.69為半徑確定乙個紅色的圓,如下圖所示。然後回溯到(5,4),計算其與查詢點之間的距離為2.06,則該結點比當前最近點距目標點更近,以(5,4)為當前最近點。用同樣的方法再次確定乙個綠色的圓,可見該圓和y = 4超平面相交,所以需要進入(5,4)結點的另乙個子空間進行查詢。(2,3)結點與目標點距離為1.8,比當前最近點要更近,所以最近鄰點更新為(2,3),最近距離更新為1.8,同樣可以確定乙個藍色的圓。接著根據規則回退到根結點(7,2),藍色圓與x=7的超平面不相交,說明x=7的右側空間不會產生更近的近鄰(好比回溯法中的剪枝。。。我真是太會舉一反三了,哈哈),因此不用進入(7,2)的右子空間進行查詢。至此,搜尋路徑回溯完,返回最近鄰點(2,3),最近距離1.8。

部分參考:

統計學習 第三章

參照圖3.1,在二位空間中給出例項點,畫出k為1和2時的k近鄰法構成的空間劃分,並對其進行比較,體會k值選擇與模型複雜度及 準確率的關係 假設三個點 2,3 5,4 4,2 對應類別分別0,1,1,用綠色和黃色表示0和1。假設k 1 在紅色的線上,每一點到 2,3 和 5,4 的距離相等,藍色的線上...

統計學習方法(第三章)k近鄰演算法

k近鄰演算法 knn是通過測量不同特徵值之間的距離進行分類。它的的思路是 如果乙個樣本在特徵空間中的k個最相似 即特徵空間中最鄰近 的樣本中的大多數屬於某乙個類別,則該樣本也屬於這個類別。k通常是不大於20的整數。knn演算法中,所選擇的鄰居都是已經正確分類的物件。該方法在定類決策上只依據最鄰近的乙...

統計學習方法 第三章 k近鄰法

k近鄰法是一種基本的分類與回歸方法,這裡只討論分類問題中的k近鄰法。演算法描述 首先給定乙個訓練集,對於待分類的輸入資料,在訓練集中找到與該輸入資料最鄰近的k個樣本,這k個樣本中哪個類別最多,就把待分類資料分給這個類。k近鄰法沒有顯式的學習過程。k近鄰法的三個基本要素 當這三個要素確定後,任何乙個新...