K 最近邻算法(KNN):原理、应用与实现
K 最近邻算法(K-Nearest Neighbours,KNN)是一种简单直观的监督学习算法,核心思想是 “物以类聚”—— 通过样本周围最近的 K 个邻居的信息来预测其类别或数值。它无需训练过程,属于 “惰性学习”(Lazy Learning),适用于分类和回归任务。
KNN 的核心原理
基本思想
对于未知样本,KNN 通过以下步骤进行预测:
- 计算距离:计算未知样本与训练集中所有已知样本的距离(如欧氏距离、曼哈顿距离)。
- 找邻居:选取距离最近的K 个样本(K 为超参数,通常为奇数,如 3、5、7)。
- 投票 / 平均:
- 分类任务:K 个邻居中出现次数最多的类别即为未知样本的预测类别(多数投票)。
- 回归任务:K 个邻居的数值的平均值即为未知样本的预测值。
关键概念
- K 值选择:
- K 过小:易受噪声影响,模型过拟合(决策边界复杂)。
- K 过大:邻居中可能包含其他类别的样本,模型欠拟合(决策边界模糊)。
- 通常通过交叉验证选择最优 K 值(如 3、5)。
- 距离度量:
- 欧氏距离(最常用):适用于连续特征,公式为 (d(x,y) = \sqrt{\sum_{i=1}^{n}(x_i - y_i)^2})。
- 曼哈顿距离:适用于高维数据,公式为 (d(x,y) = \sum_{i=1}^{n}|x_i - y_i|)。
KNN 的分类与回归应用
分类任务(离散结果)
示例:预测鸢尾花类别(Setosa、Versicolor、Virginica)。