統計學習筆記之K近鄰法
K近鄰作為基本的分類和迴歸方法。在分類中,對新的例項,根據k個最近鄰得訓練例項的類別,通過多數表決進行預測。
一、演算法
輸入:,為例項的特徵向量,為例項的類別。
輸出:例項的的所屬的類y。
(1)根據給定距離度量,在訓練集中找出與最近鄰的k個點,涵蓋這k個點的x的領域記作。
(2)在 根據分類決策規則(類似多數投票)決定x屬於哪一類。
二、相關概念
值得一提的是關於距離度量的幾個概念。
距離通式:
歐式距離,p=2,即
曼哈頓距離,p=1,即
各個座標距離的最大值,,即
下圖直觀展示了三種不同度量方式在表示到原點距離是1的點畫出的影象:
三、kd樹
KNN在對資料進行k近鄰搜尋的時候,有時因為資料量較大,搜尋開銷是個值得思考的問題。於是,kd樹的思想應運而生。實際上,kd樹是二叉樹,是考慮將k維空間例項點進行儲存和便於快速檢索的樹形資料結構。
演算法
輸入:k維空間資料集
輸出:kd樹
(1)構造根節點,包含T的k維空間的超矩形區域。
(2)選擇的座標軸,以T中的所有例項的座標的中位數作為切分點,通過切分點並於座標軸垂直作超平面,將超矩形區域分成兩個子區域。以此生成深度為1的左右兩個結點,左結點表示小於切分點的子區域,右結點表示大於切分點的子區域。
(3)重複(2)操作,直至兩個子區域沒有例項存在為止。
可以借用《統計學習》有道例題理解:
kd樹最近鄰搜尋演算法
輸入:已構造好kd樹,目標點為.
輸出:的最近鄰點.
(1)遞迴搜尋包含目標結點的葉結點。
(2)設葉結點為最近點。
(3)遞歸回退,對於每個結點如果比當前最近點距離更小,則以該點為最近點。對於每個結點的兄弟結點也要進行遍歷,判斷是否更新最近點。
(4)當回退到根結點,搜尋結束。最後的最近點即為所求。