k-最近邻
知识点概述
k-最近邻(k-Nearest Neighbors, k-NN)是一种简单且直观的机器学习算法,它既可用于分类也可用于回归。其核心思想是“物以类聚”,一个新实例的预测结果由其在特征空间中最接近的k个邻居的已知结果来决定。
教材原文
k-最近邻方法可用于回归和分类,并将数据点的最近邻用于预测。对于分类,k-最近邻方法分配实例最近邻的最常见类。为了进行回归,它采用了邻居结果的平均值。棘手的部分是找到合适的 k 并决定如何测量实例之间的距离,从而最终确定邻域。 … k-最近邻模型不同于本书中介绍的其他可解释模型,因为它是基于实例的学习算法。
详细解释
- 核心原理: k-NN是一种“懒惰学习”(Lazy Learning)算法,它在训练阶段仅仅是存储了所有的训练数据。真正的计算发生在预测阶段。
- 计算距离: 当需要对一个新实例进行预测时,算法会计算该实例与训练集中所有实例之间的距离。最常用的距离度量是欧几里得距离。
- 找到k个最近邻: 算法会找出距离新实例最近的k个训练实例。
- 做出预测:
- 分类任务: 在这k个邻居中,采用“多数投票”的原则,将出现次数最多的类别作为新实例的预测类别。
- 回归任务: 将这k个邻居的目标值的平均值作为新实例的预测值。
- 关键参数:
- k: 邻居的数量。这是一个超参数,需要用户指定。
- 较小的k: 模型对噪声更敏感,决策边界更复杂,容易过拟合。
- 较大的k: 模型更平滑,对噪声的鲁棒性更强,但可能忽略局部细节。
- 距离度量 (Distance Metric): 如何计算实例间的“远近”。除了欧几里得距离,还有曼哈顿距离、闵可夫斯基距离等。
- k: 邻居的数量。这是一个超参数,需要用户指定。
- 可解释性:
- k-NN是一种基于实例的解释方法。它没有需要学习的参数(如权重),因此不存在传统意义上的模型参数解释。
- 它的可解释性体现在:我们可以通过直接查看为某个预测做出贡献的k个最近邻居来解释这个预测。如果这些邻居本身是可理解的(例如,它们是图片或有意义的文本),那么解释就非常直观。
学习要点
- 理解k-NN是“懒惰学习”算法,其主要计算发生在预测阶段。
- 掌握k-NN进行分类(投票)和回归(平均)的基本原理。
- 知道k值和距离度量是影响k-NN性能的关键因素。
- 认识到k-NN的可解释性是通过展示“邻居”实例来实现的,这是一种基于样本的解释。
实践应用
- 推荐系统: 找到与当前用户品味最相似的k个用户,并将他们喜欢的、但当前用户没看过的物品推荐给他。
- 图像识别: 在手写数字识别中,将一个新的手写数字图像与训练库中的图像进行比较,找到最相似的k个,通过它们的标签来判断新数字是几。
- 基因表达分析: 根据基因表达谱的相似性对样本进行分类。
关联知识点
- 前置知识: 2-核心概念-监督学习
- 后续知识: 39-理论方法-基于样本的解释, 42-理论方法-原型与批评