KNN算法--基本分類和回歸方法。
1. 是什麼
給定一個訓練資料集(test_set)
對新的輸入執行個體
在訓練集(train_set)中找到與該執行個體距離最近的k個資料集
這k個資料集的大多數屬于哪個類型的,那麼這個執行個體就是那個分類。 如圖一所示
舉一個不恰當的例子:如果你的身邊都是百萬富翁,那你的資産大機率也不少。
2. k值的選取以及影響
2.1 k值過小,導緻過拟合
如圖所示,當k值選擇最小為1時,五邊形直接屬于黑色,但你從感官上看五邊形應該屬于方塊啊。這就是過拟合。
2.2 k值過大,模型簡單,預測失誤
極端的例子:選取整個訓練集的長度為k值。你會發現五邊形永遠屬于個數最多的類别。
2.3 特征歸一化
首先我們先來看這樣一個例子: 5個訓練樣本:
| 序号 | 身高 | 體重 | 分類 | | :---: | :---: | :---: | :---: | | 1 | 179 | 42 | 男 | | 2 | 178 | 43 | 男 | | 3 | 165 | 36 | 女 | | 4 | 177 | 42 | 男 | | 5 | 160 | 35 | 女 |
給出測試樣本: 6(167,43)
標明k=3 計算距離:
6-1=$$\sqrt{145}$$
6-2=$$\sqrt{121}$$
6-3=$$\sqrt{53}$$
6-4=$$\sqrt{101}$$
6-5=$$\sqrt{103}$$
由此發現 最近的為3,4,5。因為兩女一男,我們推斷樣本屬于女。 但是你會發現一個女性的腳為43碼遠遠小于男性的腳為43碼,
這裡就是因為身高的數值比腳的數值大或者說是量綱大。是以導緻身高的重要性遠遠大于腳碼。 這也就是歸一化的原因。
資料歸一化的處理方式有很多,比如:0-1标準化,Z-score标準化,Sigmoid壓縮法。 這裡介紹一個比較簡單的0-1标準化,公式:
MIN為改特征下的最小值,如身高的MIN為160;
MAX為該特征下的最大值,如身高的MAX為179
$$x_normalization=\frac{x-MIN}{MAX-MIN}$$
上面的測試資料經過0-1标準歸一化變為
| 序号 | 身高 | 體重 | 分類 | | :---: | :---: | :---: | :---: | | 1 | 1 | 0.875 | 男 | | 2 | 0.95 | 1 | 男 | | 3 | 0.26 | 0.125 | 女 | | 4 | 0.89 | 0.875 | 男 | | 5 | 0 | 0 | 女 |
舉例 身高:
1=$$\frac{179-160}{179-160}$$=1 2=$$\frac{179-160}{179-160}$$=0.95
體重
1=1=$$\frac{42-35}{43-35}$$=0.875
距離的度量
主要包括以下幾種度量方式
案例-預測癌症
預測癌症