K近邻#
术语解释#
K近邻(K-Nearest Neighbor, KNN) 是一种经典的有监督学习算法,广泛应用于分类和回归任务。 KNN 的核心思想是“少数服从多数”。当需要对一个新样本进行分类时,算法首先在训练集中找到离该样本最近的 $K$ 个样本点,然后根据这 $K$ 个邻居的类别进行投票,得票最多的类别即为新样本的预测类别。

更多与 KNN 算法相关的原理介绍可参见「 5.2 K近邻算法原理:距离度量、决策规则与分类过程」 内容。
出现动机#
KNN 源于“物以类聚”的朴素直觉,即在特征空间中,距离越近的样本点越相似,因此它们更有可能属于同一个类别。同时,KNN 提供一种非参数化的方法,直接利用现有数据的分布特征来进行判别,而不需要像线性回归那样预先假设复杂的数学模型。
优点缺点#
-
优点:
-
思想简单直观:算法逻辑非常容易理解,实现起来也相对简单。
-
无需训练阶段:KNN 是一种“惰性学习(Lazy Learning)”算法,它没有显式的模型训练过程,不需要求解权重参数,只需在预测时进行计算。
-
灵活性高:可以根据数据特点灵活选择不同的距离度量方式(如 $L_p$ 距离)。
-
模型复用简单:由于没有复杂的模型参数,通过简单的索引结构(如 kd 树)就可以快速进行最近邻或 K 近邻搜索。
-
-
缺点:
-
计算开销大:虽然没有训练时间,但在预测时需要遍历样本点进行距离计算,当数据规模达到一定量级后,计算效率会显著下降。
-
存储需求高:模型需要将整个训练数据集持久化保存到内存或磁盘中,以便随时进行距离比对。
-
$K$ 值选取敏感:$K$ 值过小容易导致过拟合(训练误差小但泛化误差大),$K$ 值过大则容易导致欠拟合。
-
对特征量纲敏感:如果不同特征的取值范围差异过大,距离计算会被数值大的维度主导,因此建模前通常需要进行标准化处理。
-
在特定任务上表现平庸:例如在垃圾邮件分类等文本任务中,KNN 的表现往往不如专门的朴素贝叶斯算法。
-
维度灾难:在高维空间中,样本点之间的距离趋于相等,导致“近邻”的辨识度降低,影响分类效果。
-