【机器学习】KNN简记
1. KNN概念。
-
KNN = K-Nearest Neighbors,又叫 K 近邻算法。
-
是最简单的 无监督 / 有监督通用通用惰性学习(Lazy Learning) 机器学习算法。((20260623084419-afxpojv '【机器学习】五类范式'))
-
核心思想:物以类聚,近朱者赤;
一个样本的类别 / 数值,由离它最近的 K 个邻居投票 / 平均决定。
关键特性:惰性学习
- 训练阶段:不训练、不建模,仅把全部训练数据保存下来;
- 预测阶段:实时计算待预测样本和所有训练样本距离,找最近 K 个样本做决策;
- 缺点:预测速度随训练集增大急剧变慢;优点:无训练成本、逻辑极简。
2. 核心原理
2.1 前置准备
数据集划分:训练集(已知标签) 和 测试集(带预测标签)
特征标准化 / 归一化(KNN必做,及其重要)
选定超参数K(近邻数量)
定义距离度量方式。【?】
2.2 预测步骤(通用)
取 1 条待预测样本 X_test
计算 X_test 与训练集中每一个样本的距离。
按距离从小到大排序,取出距离最小的前 K 个样本。
根据 K 个邻居输出结果:
- KNN 分类:多数投票,哪个类样本数量最多,预测为该类
- KNN 回归:取 K 个邻居标签的平均值作为预测值。
3. 三大核心要素
3.1 K 值选择(最重要的超参数)
(1)K 值过小
- 极端 K=1:只看最近 1 个样本;
- 问题:极易受噪声、异常点干扰,模型过拟合;边界波动大。
(2)K 值过大
- K 等于全部训练样本:所有预测结果都是全局占比最高的类别;
- 问题:平滑过度,欠拟合,丢失局部特征规律。
(3)最优 K 选择方法:
- 网格搜索 GridSearchCV / 交叉验证 Cross Validation:遍历 K=1,3,5...29,取验证集精度最高的 K;【推荐:⭐⭐⭐⭐⭐】
- 经验:优先选奇数 K,避免投票平票(二分类场景);多分类无强制要求。
3.2 距离度量(不同数据用不同距离)
(1)欧式距离(最常用,连续数值特征)
(2)曼哈顿距离
(3)切比雪夫距离
(4)汉明距离(离散 / 类别特征,文本,二值特征)
3.3 特征预处理 -- 归一化 / 标准化
(1)归一化:Min-Max
(2)标准化:Z-Score
4. 两种任务场景:((20260623100155-vvgisfc '【KNN】两种任务的场景'))
4.1 KNN分类
【适合场景】:
小样本、低维结构化数据分类
小型用户分群、设备故障二分类、简单客户分层、医疗少量样本疾病判别。图像小样本检索 / 粗分类
图片相似度匹配、人脸简易比对、手写数字小数据集分类(MNIST 小规模测试)。
推荐系统相似匹配
商品相似推荐、用户兴趣近邻匹配、基于用户特征的内容召回基线。
基线对比模型
快速搭建分类基准,用来对比逻辑回归、树模型效果。
低维特征多分类
地理点位分类、坐标点区域划分、少量指标的物种分类。
【不适合场景】
百万级高维稀疏数据、实时线上推理(预测遍历全部样本速度慢)。
4.2 KNN回归
【适合场景】:
局部趋势预测、非线性小幅波动拟合
短期房价预估、区域客流量预测、门店销量局部拟合。低维小样本连续值预测
环境温湿度预测、设备少量采样数据损耗值预估、简单时序单点预测。
插值填充、缺失值补全
表格数据连续特征缺失填充、地理采样点数值插值。
基线回归模型
作为线性回归、随机森林回归的简易对比基线。
空间数据回归
坐标关联数值预测(降雨量、地价随地理位置变化)。
【不适合场景】:
高维海量样本、需要外推预测(超出训练数据范围预测不准)、实时高并发推理。
5. KNN的优缺点
优点
- 原理简单、易实现,无复杂数学假设;
- 无训练过程,新增训练数据不用重新训练,直接追加;
- 对非线性数据效果好,不要求数据线性可分;
- 天然支持多分类任务,无需改造。
缺点
- 预测极慢:每一次预测都要遍历全部训练集,百万级样本基本不可用;
- 高维灾难:维度越高,样本间距离趋近相等,距离失效(维度诅咒);
- 对不平衡数据集、噪声、异常点敏感;
- 内存消耗大:需要存储全部训练样本;
- 特征量纲敏感,必须做归一化,否则失效。
6. 优化方案(解决速度 / 精度问题)
- 近邻搜索加速算法
KD-Tree、Ball-Tree:不用遍历全部样本,构建树结构快速检索附近样本,大幅提速;sklearn 中 KNN 默认自动选用。- 降维:PCA、特征筛选,缓解高维灾难;
- 加权 KNN:降低远距离样本干扰;
- 数据清洗:提前剔除异常值、噪声;
- 样本采样:大数据集随机下采样,牺牲少量精度换速度。

浙公网安备 33010602011771号