KNN ( K近鄰演算法 )
現在我們有一個訓練資料集,對新來的例項,找到訓練資料集中離這個新例項最近的K個例項,統計這K個例項的類別,然後利用多數表決或者其他策略預測新例項的類別
這就是K近鄰演算法的基本思想。
K近鄰的這種分類方式其實相當於利用訓練資料集把特徵向量空間進行劃分,並且把這個劃分好的空間作為分類模型。
K近鄰演算法有三個基本要素,需要重點考慮,即
1.K值的選擇
2.距離度量的選擇
3.分類決策規則
具體的:
1. K值的選擇
K值的選擇對K近鄰演算法的結果影響比較大。
K=N (訓練例項總個數)。這個時候輸入新例項後,都會簡單的預測它屬於訓練例項中最多的類,模型過於簡單,忽略訓練例項中大量的有用資訊。不可取。
K選擇較小的值:
這個時候與輸入例項比較近(相似的)的訓練例項才會對預測結果起作用。缺點就是預測結果對近鄰的例項點非常敏感,假如鄰近的點恰好是噪音的話,預測就會出錯。K值得減小意味著整體模型變複雜,容易發生過擬合。(鄰近的點比較少,需要考慮多個類。)
K選擇較大的值:
這個時候與輸入例項較遠的(不相似)訓練例項也會對預測起作用,使預測產生錯誤。K值得增大意味著整體模型變得簡單.(鄰近的點比較多,需要考慮的類較少)。
在實際應用中K值一般選取一個較小的值。通常採用交叉驗證法來選取最優的K值。
2.距離度量的選擇
各種距離的應用場景簡單概括為:
閔可夫斯基距離:P值不同
空間:歐氏距離(P=2)
路徑:曼哈頓距離(P=1)
國際象棋:切比雪夫距離(P->無窮)
加權:標準化歐氏距離
排除量綱和依存:馬氏距離
向量差距:夾角餘弦
編碼差別:漢明距離
集合近似度:傑卡德類似係數與距離
相關:相關係數與相關距離
3.分類決策規則
K近鄰的分類決策規則往往是多數表決。也就是找到和輸入例項最近的K個訓練例項,這K個訓練例項中的多數類別作為輸入例項的類。
多數表決規則等價於經驗風險最小化:
證:
如果分類的損失函式為0-1損失函式,誤分類的概率為P(Yf(x))=1-P(y=f(x)),對於給定的例項x,其最近鄰的k訓練例項點構成集合Nk(x),如果涵蓋Nk(x)的區域的類別為Cj,那麼誤分類率為:
要使誤分類率最小
就要使
最大,即多數表決規則等價於經驗風險最小化。
經驗風險最小化:我們利用已知的經驗資料(訓練資料)來計算目標風險函式(損失函式的期望值),調整引數使得經驗風險逐漸逼近理想的期望風險的最小值,這一過程就是經驗風險最小化。