了解 K-Nearest Neighbors (KNN) 如何通过直观的非参数方法简化机器学习的分类和回归任务。
K-Nearest Neighbors(KNN)是机器学习(ML)中的一种基本算法,用于分类和回归任务。它以其简单直观的方法脱颖而出,是理解基于实例学习的绝佳起点。KNN 被归类为非参数方法,因为它不对底层数据分布做出假设。它也被称为"懒学习"算法,因为它不会在训练数据阶段建立通用模型;相反,它会存储整个数据集,只在需要预测时才进行计算。
KNN 的核心理念基于相似性,通常使用欧氏距离等距离指标来定义。当预测一个新的、未见过的数据点时,算法会从存储的训练数据集中找出与之最接近的 "K "个数据点(邻近点)。K "值是用户自定义的整数,代表所考虑的邻居数量。
对于分类,新点被分配到其 K 个邻居中最常见的类别(多数票)。对于回归,预测值通常是 K 个相邻点的平均值。距离度量的选择(如曼哈顿、闵科夫斯基)和 "K "的值是至关重要的超参数,对模型的性能有很大影响。高效的实现通常依赖于KD 树或Ball 树等数据结构,以加快邻居搜索速度,尤其是在数据集较大的情况下。
选择最佳 "K "值至关重要。较小的'K'值(如 K=1)会使模型对数据中的噪声和异常值高度敏感,从而可能导致过拟合,即模型在训练数据上表现良好,但在未见数据上表现不佳。相反,如果 "K "值过大,则会使决策边界过于平滑,从而降低模型对局部模式的敏感度,并可能导致预测过程中的拟合不足和高计算成本。交叉验证等技术(请参阅《Scikit-learn 交叉验证指南》)通常被用来找到一个合适的 "K "值,以平衡偏差与方差之间的权衡。Scikit-learn 库提供了实施 KNN 和执行超参数搜索的工具,您可以在《Ultralytics 超参数调整指南》中找到一般提示。
KNN 非常简单,适用于各种应用,尤其是注重可解释性的应用:
KNN 有几个优点,但也有局限性:
优势
缺点
将 KNN 与其他算法区分开来非常重要:
虽然 KNN 对于某些任务和理解基本 ML 概念很有价值,但像实时物体检测这样的复杂问题通常需要更先进的模型,例如 Ultralytics YOLO等更先进的模型,它们能提供卓越的速度和性能,尤其是在大规模计算机视觉数据集上。您可以使用Ultralytics HUB 等平台训练和部署此类模型。