机器学习_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大模型的世界。

相关推荐
呆呆敲代码的小Y2 分钟前
企业 AI 读文档,难在哪里?从一张跨页表格说起
人工智能·产品
zwc32104320557 分钟前
Day 2:图像内存、数据类型与stride
c++·人工智能·opencv·算法·计算机视觉
ADAI_Bowen15 分钟前
个人设计师用户心得:ADAI如何成为我的“第二大脑”
人工智能
一次调频AGCAVC16 分钟前
一次调频系统控制柜的组成及一次调频装置主机功能详述
人工智能·嵌入式硬件
虎鲸不是鱼30 分钟前
【虎鲸养殖手册 B007】命令执行的安全细节:白名单不是防弹衣
人工智能·安全·agent·智能体·自进化agent
ZhengEnCi38 分钟前
为什么别人的 Skill 不适合你:从「拿来就能用」到「改成自己的流程」的适配方法
人工智能·agent
一切皆是因缘际会41 分钟前
当模型足够大
人工智能·深度学习·机器学习
摇滚侠1 小时前
《大模型是怎样跑起来的(轻科技)》硬件篇 阅读笔记
人工智能·笔记·科技
誰能久伴不乏1 小时前
OpenCV 入门(二):像素访问、ROI 与深浅拷贝
人工智能·opencv·计算机视觉