[NLP 線上自學] D19 KNN 演算法

Yu-Wei Chen
Jan 5, 2021

重點:了解KNN原理與優缺點

K 值的選擇

KNN 中 K值的選擇沒有標準的做法,但仍然可以依照資料集來選擇合適的K值。首先我們先來看看兩個不適合的K值選擇:

K 值過小:會造成兩個問題。
1. 訓練資料集產生的模型過擬合(或指模型泛化能力不足)。
2. 資料可能會受到極端值(Outliers的影響)。

K 值過大: 與上述相反的問題外,還有多一個。
1. 模型缺乏鑑別度
2. 失去了不同群體間的重要資訊
3. 訓練時間過久

適當的K值

・K應為奇數,以避免無法判斷的情形發生。
・常見的設計方法是K = sqrt(N),N 為訓練集的數量。
・即便K = sqrt(N)是一個方便的做法,但是常常無法選出最適當的值,目前常見的做法是使用 “cross-validation”

K-fold

K-fold 是 cross-validation 中常見的做法,並且可以用做「Hyperparameters tuning」。

作法:

將訓練資料及拆分成K份 (此處的K,並不是KNN的K),其中1/K份作為驗證集,剩下 (K-1)/K當作訓練集,因此我們將可獲得K份驗證集的結果,再用這K組驗證結果平均,取得最終成果。

*注意:每個訓練都是獨立完成,彼此間並不分享資訊。

如何選擇:

一般我們會先預選幾個 K值,包含10、50、100,運用K-fold方式得到的不同結果,來選擇最合適的K值。

好處:

・現實中有時難以收到巨量的資料,藉由K-fold方法,我們可以在有限的訓練集中多次測試模型的泛化效果。
・因為使用多次的驗證集來獲取平均,故結果更具代表性。

註解:

即便KNN屬於監督式學習,但是KNN模型在訓練時是透過記住訓練資料集的位置,來預測新資料點的可能結果,因此實際上沒有真正的訓練過程。

--

--