机器学习_01_KNN

K近邻算法(K-Nearest Neighbors,KNN)

一、简介

  • KNN是一种**【监督学习算法】**

  • 能解决**【分类任务】**(标签离散)

  • 能解决**【回归任务】**(标签连续)

核心思想

一个样本的类别,由它最近的K个邻居投票决定


二、算法思想

KNN不学任何公式,它只是记住所有训练数据,然后对新来的样本,看它周围最近的K个邻居是什么类别,就跟着投个票。

具体三步

步骤 操作 说明
1 计算距离 新样本和训练集里每一个样本算距离(默认欧式距离)
2 找K个最近邻 按距离从小到大排序,取前K个
3 投票或平均 分类:K个邻居里,哪个类别多,新样本就是哪个类别 回归:K个邻居的标签值取平均,作为预测值

三、距离的度量

距离名称 公式 含义 使用场景
欧式距离 Σ(xᵢ - yᵢ)² 两点间直线距离 最常用(默认)
曼哈顿距离 Σ|xᵢ - yᵢ| 只能走横竖线的街区距离 偶尔用
切比雪夫距离 max(|xᵢ - yᵢ|) 国王移动的最少步数 很少用
闵氏距离 (Σ|xᵢ - yᵢ|^p)^(1/p) 上面三种的统一公式 理论用
其他 余弦距离等 --- 文本场景偶尔用

四、特征的预处理

⚠️ KNN必须做标准化/归一化

原因:KNN靠距离判断。如果特征单位不统一,数值大的特征会主导距离计算,导致预测结果完全被它绑架。


五、K值的选择

K值情况 训练集表现 测试集表现 问题 形象理解
太小(如K=1) 满分 过拟合(学到噪声) 只听一个邻居的话,容易被骗
太大(如K=N) 欠拟合(太模糊) 听全村人的话,反而没主见
合适(如K=3~15) 良好 最好 泛化最佳 听几个靠谱邻居的建议

六、找最佳K

交叉验证

不把命运交给一次验证集,而是把训练数据分成K份,轮流当验证集。

网格搜索

你给几个候选K值(如[3,5,7,9,11]),网格搜索挨个试,交叉验证评估,最后告诉你哪个K值最好。


七、面试总结

KNN是一种基于距离的惰性学习算法,通过找最近的K个邻居来投票(分类)或平均(回归)。

工作原理三步
  1. 算距离(默认欧式距离)

  2. 找K个最近邻

  3. 分类投票,回归平均

核心三要素
要素 说明 关键点
K值 邻居数量 太小过拟合,太大欠拟合 → 用交叉验证+网格搜索选
距离度量 距离计算方式 默认欧式距离
特征预处理 数据标准化 必须标准化/归一化(否则距离被大数值特征绑架)
优缺点
优点 缺点
简单直观,无需训练 预测时慢(要算所有样本的距离)
可解释性强(看邻居) 内存消耗大(要记住所有训练数据)
可用于分类+回归 特征维度高时性能急剧下降(维度灾难)
对异常值不敏感(K足够大时) 必须做特征预处理

KNN适合小数据集、低维度、可解释性要求高的场景。数据量大或维度高时,优先考虑树模型或其他非线性算法。


我是小迦索,一个刚毕业的AI专业学长。 关注我,从0开始,一起走进AI大模型的世界。

相关推荐
江畔柳前堤7 小时前
字节跳动·大模型应用知识手册
前端·人工智能·深度学习·opencv·目标检测·重构·transformer
程序员z77 小时前
RAG 系统评测实战:从指标设计到落地闭环
人工智能
CCC:CarCrazeCurator7 小时前
从算子到智能系统:理解 MLP、CNN、Transformer、JEPA、VLA 与世界模型
人工智能·深度学习
程序员z77 小时前
Agent 评测体系怎么搭:从指标设计到工程闭环
人工智能
NeoGressAI外贸数字化7 小时前
外贸独立站多语言缓存命中率低?5 个成因与排查脚本
人工智能
星核0penstarry7 小时前
从“一次生成“到“持续进化“:自进化社媒 Agent 的工作流拆解
人工智能·开源·agent
昇腾知识体系7 小时前
鲲鹏+昇腾 NUMA 亲和性调优:Kunpeng 920 双路服务器给 NPU 工作负载绑核
人工智能·华为·知识图谱
桃西西呀7 小时前
你拍的一堆硬币,手机怎么一眼数出有几枚?聊聊边缘、轮廓和模板匹配
人工智能·llm·图像识别
米小虾7 小时前
多智能体还在"说话":C2C 把 KV-Cache 直接传给另一个模型,2.5× 加速背后的五个死结
人工智能·agent
人工智能AI技术7 小时前
Spring factory-method踩坑实录,Bean类型异常一次讲透
人工智能