1. 程式人生 > >MachineLearning— (KNN)k Nearest Neighbor之最近鄰法原理舉例理解(一)

MachineLearning— (KNN)k Nearest Neighbor之最近鄰法原理舉例理解(一)

K近鄰法(k-nearest neighbor)是機器學習當中較為簡單理解的一種基本分類與迴歸方法,KNN輸入的是例項的特徵向量,也就是特徵空間上的點;輸出的是其對應的類別標籤,KNN的訓練資料集的類別標籤都是已知的,分類時對輸入的新的例項點計算k個最近鄰訓練例項,通過多數表決也就是看這k個點多數屬於的類別,將其作為新例項點的最後分類歸屬;因此KNN不具有顯式的學習過程,kNN包括三個基本要素:k值的選擇,距離度量和分類決策規則;本篇博文主要介紹k近鄰的基本理論概念,演算法原理思想以及例題,還有k近鄰的實現方法——kd樹;


表示輸入的資料集,Xi表示輸入的特徵向量,y表示類別標籤;根據給定的距離度量,找出在訓練集中與x最近鄰的K個點,記為Nk(x); 然後根據決策規則決定x的類別y;


意思為某個類別當中例項點最多的那個類別,對應的引數,即最終歸屬類別y;


K近鄰法的模型對應特徵空間的一個劃分。

距離度量:

xi,xj為樣本點,也就是n維向量空間中的兩個點,,所以他們的距離Lp定義為:


當p=2時就是歐氏距離,

其中當p=1表示曼哈頓距離


關於距離度量的例題:(當p取不同值時最近鄰點是不同的)


    K值的選取會對結果產生非常重大的影響,k值較小時,相當於用較小的領域訓練例項來進行預測,只有離輸入示例距離較近的訓練例項才能起到預測作用,缺點是對緊鄰點非常敏感,特別是如果是噪聲的話,也就是說k值如果小的話意味著模型比較複雜容易發生過擬合;

    而當k值取較大時,意味著用較大領域的訓練例項進行預測,優點是減少預測的估計誤差,這時離輸入例項較遠的點,也就不相似的點也會起到預測的作用從而影響結果,使預測發生錯誤,意味著模型整體變的簡單;

    多數表決規則等價於經驗風險最小化!

K近鄰法的實現:kd樹 通過一個例題的形式來理解一下如何構造kd樹的資料結構(二叉結構)


(2,4,5,7,8,9)中x=7是根節點,分為左邊3個點,右邊2個點;左邊矩形中y軸4為中位數,而右邊矩形中1,6我們選6作為中位數;直至最後矩形中沒有特徵點為止;


下面通過例題演示kd樹的劃分:(尋找最近鄰點)