Ch.02

K-최근접 이웃 (KNN): 유유상종, 끼리끼리 모이기

物以类聚 — KNN 找出「最近的 K 个邻居」,用他们的标签(多数表决)来预测新数据。没有复杂的学习公式,只要算距离即可,是直观的第一个分类算法。

按章节的机器学习图示

选择章节后,下方图示会切换为该章节内容。可一览机器学习脉络。

① 训练数据 — 特征空间中的点(标签 1 或 2)

虚线圆:按距离。K=3 邻居(紫)标签: 1, 2, 2 → 多数表决为 2

K近邻 (KNN):物以类聚

KNN 是什么 — 对于新来的数据点,在已有标签的数据中选出距离最近的 K 个,用这 K 个的多数表决决定新数据的标签。例:若 5 个最近邮件中有 4 个是「垃圾邮件」,则新邮件也判为垃圾邮件。
用距离定义「近」 — 「近」是指在特征空间里两点间的距离小。最常用的是欧氏距离d(x,y)=i(xiyi)2d(\mathbf{x}, \mathbf{y}) = \sqrt{\sum_{i}(x_i - y_i)^2}。若只有两个特征,就是平面上的直线距离。
K 是超参数 — K=1 时只看最近 1 个;K 越大越平滑,但边界可能变钝。常用奇数避免平票。
没有显式训练(惰性学习) — KNN 不学一个紧凑模型,预测时再算到所有已存点的距离。训练成本低,预测成本可能较高。
可解释 — 可以用「因为 5 个相似邮件里 4 个是垃圾邮件」这样的近邻来说明预测,便于可解释 AI。
常作基线 — 在试复杂模型前,先用 KNN 看数据能被分得多好。
分类 — 用 K 个近邻的类别(标签)多数表决。用于图像分类、垃圾邮件检测、风险分层等。
回归 — 预测 K 个近邻目标值的平均(如用周边 5 套房价格平均估计自家房价)。
距离与尺度 — 特征尺度不同时,距离会被某一维主导。建议先归一化标准化再算距离。
KNN 的做法是:对新来的数据,从已存数据中选出距离最近的 K 个分类时用这 K 个的标签多数表决回归时用这 K 个取值的平均作为预测。没有单独的「训练」步骤,只算距离即可,因此很直观;但若特征尺度不一,某一维会主导距离,所以先做归一化(Scaling)再算距离很重要。
步骤说明
输入新数据的特征向量 x\mathbf{x}
已存数据(特征, 标签) 对 (xi,yi)(\mathbf{x}_i, y_i)
1计算 x\mathbf{x} 与各 xi\mathbf{x}_i 的距离 d(x,xi)d(\mathbf{x}, \mathbf{x}_i)
2按距离取最小的 K 个
3(分类)用 K 个标签的多数表决得到预测 y^\hat{y}
3(回归)用 K 个 yiy_i平均作为预测 y^\hat{y}