KNN算法

1、KNN算法基本介绍

 KNN(K-Nearest Neighbors,K - 近邻)是一种简单、直观、无参数的惰性学习算法,核心思想是 “物以类聚、人以群分”—— 通过待预测样本与训练集中 “最近邻” 样本的相似度,推断其类别(分类任务)或数值(回归任务)。它无需训练模型参数,仅在预测时计算距离,广泛应用于分类、回归、推荐系统等场景。

 

1.1、核心原理(3 步理解)

KNN 的工作流程极其简洁,核心分为 “算距离→找邻居→做预测” 三步:

1、计算距离:衡量样本相似度

KNN 通过距离度量判断样本间的 “远近”(相似度),距离越近,相似度越高。

常用距离公式有

  • 欧氏距离(最常用),计算公式为对应维度差值平方和,开平方根

image

  • 曼哈顿距离(城市街区距离),计算公式为对应维度差值的绝对值之和。如[1,2]、[3,5],值则为5
  • 切比雪夫距离,计算公式为对应维度差值的绝对值中的最大值。如[1,2]、[3,5],值则为3
  • 闵可夫斯基距离(闵氏距离),这并不是一种距离度量方式,只是对多种距离度量公式的概括性的表达

 

2、选择 K 值:确定 “参考邻居数量”

K 是算法唯一的超参数,代表 “预测时参考的最近邻样本个数”。K 必须是正整数,且通常取奇数(避免分类时投票平局,如 K=4 时 2:2 投票)。

K 的大小直接影响模型拟合效果:

  • K 过小(如 K=1):过度依赖单个样本,易受噪声 / 异常值影响,导致过拟合;
  • K 过大(如 K≈训练集样本数):过度平滑,忽略局部特征,导致欠拟合;
  • 最优 K:通过交叉验证(如 5 折交叉验证)+ 网格搜索(测试 K=3、5、7...31)选择。

 

3、投票 / 平均:生成预测结果

  • 分类任务:对 K 个最近邻样本的类别进行 “多数投票”,得票最多的类别作为预测结果。例:K=5 时,最近邻样本类别为 [猫、猫、狗、猫、兔],预测结果为 “猫”(3 票胜出)。
  • 回归任务:对 K 个最近邻样本的数值取 “平均值”(或加权平均值),作为预测结果。例:K=3 时,最近邻样本房价为 [100 万、120 万、110 万],预测房价 =(100+120+110)/3=110 万。

 

1.2、KNN 的核心特性(优缺点)

优点:简单易用,门槛低

  1. 无训练过程:属于 “惰性学习”,无需提前训练模型,直接使用训练数据预测,开发成本低;
  2. 适用于多分类 / 回归:天然支持多分类(无需额外改造),也可用于回归任务;
  3. 对异常值不敏感(K 适中时):K 个邻居的投票 / 平均会稀释单个异常值的影响;
  4. 高维数据有效:配合余弦相似度等度量,可处理文本、图像等高维场景。

缺点:性能与数据敏感

  1. 预测速度慢:每次预测需计算待预测样本与所有训练样本的距离,训练集越大(如百万级样本),速度越慢(时间复杂度 O (n));
  2. 对高维数据 “维数灾难” 敏感:特征维度过高时,距离度量的区分度会下降,模型效果变差;
  3. 对数据缩放敏感:未归一化的数据会导致距离计算偏差(如特征 A 范围 [0,1000],特征 B 范围 [0,1],A 的权重会被过度放大);
  4. 内存消耗大:需存储全部训练数据,训练集越大,内存占用越高。

 

1.3、适用场景与不适用场景

适用场景

  1. 小数据集任务:训练集样本数少(如万级以内),预测速度可接受;
  2. 简单分类任务:如垃圾邮件识别、用户性别预测、手写数字识别(MNIST 数据集);
  3. 推荐系统:基于用户 / 物品的协同过滤(如 “你可能喜欢” 的商品推荐,本质是找相似用户 / 物品);
  4. 回归预测:如房价预测、温度预测(对局部特征敏感的场景)。

不适用场景

  1. 超大规模数据集:百万级以上训练集,预测速度极慢;
  2. 高维数据(无优化):如原始图像(维度 = 像素数),未降维时距离度量失效;
  3. 实时预测场景:如高频交易、实时推荐,对预测延迟要求极高的场景;
  4. 数据不平衡场景:如正样本占 90%、负样本占 10%,KNN 易偏向多数类。

 

posted @ 2025-11-25 15:38  wenxuehai  阅读(2)  评论(0)    收藏  举报
//右下角添加目录