3.1 k近鄰法介紹
k近鄰法是一種基本的分類與迴歸方法。對於分類問題,給定訓練數據集和實例標籤。分類時,對新的實例,根據k個最近鄰的訓練實例的類別,通過多數表決等方式進行預測。因此,k近鄰法不具有顯示的學習過程。k近鄰法實際上利用訓練數據集對特徵空間進行劃分,並作爲分類的“模型”。k值的選擇、距離的度量和分類決策規則是k近鄰法的三個基本要素。
k值的選擇
k值的選擇對k近鄰算法具有較大影響。
如果選擇的k值較小,相當於用較小的領域中的訓練實例進行預測,“學習”的“近似”誤差會減小,只有與輸入實例較近的訓練實例纔會對預測結果起作用,“學習”的“估計”誤差會增大,預測結果對近鄰的實例點非常敏感。如果鄰近的實例的恰巧是噪聲,預測就會出錯。所以,k值較小,相當於模型整體複雜度較高,容易發生過擬合。
如果選擇的k值較大,相當於用較大的領域中的訓練實例進行預測,“學習”的“近似”誤差會增大,大量的訓練實例對預測結果起控制作用,結果較遠的點也會對預測起作用,“學習”的“估計”誤差會減小,預測結果是衆多結果的綜合效果。。所以,k值較大,相當於模型整體複雜度較低,容易發生欠擬合。
距離的度量
k近鄰模型的特徵空間一般是n維實數向量空間,,,使用的距離是歐式距離,也可以使用其他距離,如更一般的距離。
設特徵空間是n維實數向量空間,,,和的距離定義爲():
當時,稱爲歐式距離:
當時,稱爲曼哈頓距離:
當時,
二維空間的不同取值與原點的距離爲1的點的集合如下:
分類決策規則
多數表決規則(majority voting rule):如果分類損失函數爲0-1損失函數,分類函數爲:
則誤分類概率:
對給定的實例,其最最近鄰的k個訓練實例點構成集合,如果涵蓋的區域的類別是,則誤分類率爲:
要使誤分類概率最小即經驗風險最小,就要使最大,所以多數表決規則等價於經驗風險最小化。
3.2 k近鄰算法--kd樹
平衡kd樹
輸入:k維空間數據集,其中;
輸出:kd樹
(算法描述略)
實例:
構造kd樹:
最近鄰分類:給定點(3, 5)實現最近鄰搜索
1)首先從根節點(7,2)出發,將當前最近鄰設爲(7,2),對該k-d tree作深度優先遍歷。以(3,5)爲圓心,其到(7,2)的距離爲半徑畫 圓(多維空間爲超球面),可以看出(8,1)右側的區域與該圓不相交,所以(8,1)的右子樹全部忽略。
2)接着走到(7,2)左子樹根節點(5,4),與原最近鄰對比距離後,更新當前最近鄰爲(5,4)。以(3,5)爲圓心,其到(5,4)的距離爲半徑 畫圓,發現(7,2)右側的區域與該圓不相交,忽略該側所有節點,這樣(7,2)的整個右子樹被標記爲已忽略。
3)遍歷完(5,4)的左右葉子節點,發現與當前最優距離相等,不更新最近鄰。所以(3,5)的最近鄰爲(5,4)。