KNN 是最好懂的機器學習演算法之一:要判斷一個新資料屬於哪一類,就看它周圍最近的 K 個鄰居多數是哪一類。它不需要先訓練模型、概念直白,但也藏著「為什麼一定要標準化」「為什麼高維會失效」這些必考細節。
一句成語就懂:近朱者赤,近墨者黑。
這個 demo 的灰色點可以用滑鼠拖動。拖它到不同地方、拉 K 值,看預測怎麼變。
試試:把 K 設為 1(只看最近 1 個,邊界很破碎、易受雜訊)vs K 設到 15(看很多鄰居、邊界平滑)。
K 控制「參考範圍」,太小太大都不好——這就是偏差–變異的權衡。
| 比較 | K 太小(如 K=1) | K 太大 |
|---|---|---|
| 決策邊界 | 破碎、彎彎曲曲 | 過度平滑 |
| 受雜訊影響 | 很大(一個雜訊點就改變判斷) | 較小 |
| 毛病 | 過擬合(高變異) | 欠擬合(高偏差,忽略局部結構) |
先想再點開。
它不先建模,只把訓練資料記著;等要預測時才臨時算距離找鄰居。所以訓練幾乎不花時間、預測卻很慢。
K 太小(K=1)邊界破碎、受雜訊影響大 → 過擬合;K 太大邊界過度平滑、忽略局部 → 欠擬合。用交叉驗證挑 K,二分類用奇數避免平票。
因為 KNN 靠距離找鄰居,尺度大的特徵(如年收入)會主導距離、蓋過尺度小的(如年齡)。標準化讓每個特徵公平貢獻。
高維空間裡,點與點的距離趨於相同,「最近的鄰居」失去意義 → KNN 高維失效。常需先降維或改用其他方法。
KNN(K 近鄰)是最直覺的分類與迴歸法,iPAS 初級科目一、中級科目三考點。重點:預測時找最近的 K 個鄰居,以多數投票(分類)或平均(迴歸)決定;是惰性學習,不先建模、預測才算。易混點:K 太小易受雜訊過擬合、太大過度平滑欠擬合,用交叉驗證挑;務必先標準化(距離受尺度影響)。情境:小資料、非線性邊界,但預測慢、高維失效。
想練情境題與詳解 → AI 學習與考證地圖
對新樣本找訓練集中最近的 K 個鄰居,分類用多數投票、回歸用鄰居平均。它不建立模型、預測時才計算,屬「惰性學習(lazy learning)」。
K 太小(如 1)易受雜訊影響、邊界破碎(高變異/過擬合);K 太大邊界過於平滑、可能忽略局部結構(高偏差/欠擬合)。常用交叉驗證選 K,二分類偏好奇數以避免平票。
因為它靠距離(如歐氏距離)找鄰居,尺度大的特徵會主導距離計算,標準化能讓每個特徵貢獻一致。
預測時要和大量訓練樣本算距離,慢且耗記憶體;高維時受「維度詛咒」使距離失去鑑別力;對不相關特徵與雜訊敏感。
資料量不大、特徵有意義且已標準化、決策邊界不規則時,是很好的基準法;大規模或高維資料則較不適合。