KNN的基本思想
K近邻算法(K-Nearest Neighbors)的核心思想非常简单:物以类聚。
要判断一个新样本的类别,就看它周围最近的K个邻居大多数属于哪个类别,新样本就归为哪个类别。
举个例子
假设要判断一部电影是"动作片"还是"爱情片"。已知数据中,打斗场景多的是动作片,接吻场景多的是爱情片。对于一部新电影,找到与它最相似的5部电影(K=5),如果其中4部是动作片,1部是爱情片,那就把它归类为动作片。
KNN的工作流程
- 计算距离:计算新样本与所有训练样本的距离
- 找邻居:选取距离最近的K个训练样本
- 投票表决:K个邻居中哪个类别最多,新样本就属于哪个类别
K值的选择
- K太小(如K=1):容易受噪声影响,过拟合
- K太大(如K=N):失去分类意义,欠拟合
- 常用做法:通过交叉验证选择最佳K值,通常选奇数避免平票
距离度量方法
最常用的是欧氏距离:
两个点 (x₁, y₁) 和 (x₂, y₂) 之间的距离 = √((x₁-x₂)² + (y₁-y₂)²)
KNN的特点
| 优点 | 缺点 |
|---|---|
| 简单直观,易于理解 | 计算量大(需计算与所有样本的距离) |
| 无需训练过程 | 对数据规模敏感 |
| 适合多分类问题 | 需要特征归一化 |
重要澄清:KNN是监督学习
虽然KNN没有显式的训练过程(不需要学习参数),但它依赖有标签的训练数据进行预测,因此属于监督学习。
KNN不适合做什么?
KNN基于距离做分类或回归,不适合发现商品之间的关联关系。例如"买了鸡蛋的人是否会买西红柿"这类问题,应该用关联规则挖掘算法(如Apriori),而不是KNN。
考试要点
- KNN属于监督学习
- 核心是距离计算和投票表决
- K值选择影响模型效果
- KNN不适合关联规则挖掘