术语表

K-Nearest Neighbors(KNN)

了解 K-Nearest Neighbors (KNN) 如何通过直观的非参数方法简化机器学习的分类和回归任务。

使用Ultralytics HUB 对YOLO 模型进行简单培训

了解更多

K-Nearest Neighbors(KNN)是机器学习(ML)中的一种基本算法,用于分类和回归任务。它以其简单直观的方法脱颖而出,是理解基于实例学习的绝佳起点。KNN 被归类为非参数方法,因为它不对底层数据分布做出假设。它也被称为"懒学习"算法,因为它不会在训练数据阶段建立通用模型;相反,它会存储整个数据集,只在需要预测时才进行计算。

KNN 如何工作

KNN 的核心理念基于相似性,通常使用欧氏距离距离指标来定义。当预测一个新的、未见过的数据点时,算法会从存储的训练数据集中找出与之最接近的 "K "个数据点(邻近点)。K "值是用户自定义的整数,代表所考虑的邻居数量。

对于分类,新点被分配到其 K 个邻居中最常见的类别(多数票)。对于回归,预测值通常是 K 个相邻点的平均值。距离度量的选择(如曼哈顿、闵科夫斯基)和 "K "的值是至关重要的超参数,对模型的性能有很大影响。高效的实现通常依赖于KD 树Ball 树等数据结构,以加快邻居搜索速度,尤其是在数据集较大的情况下。

选择 K 值

选择最佳 "K "值至关重要。较小的'K'值(如 K=1)会使模型对数据中的噪声和异常值高度敏感,从而可能导致过拟合,即模型在训练数据上表现良好,但在未见数据上表现不佳。相反,如果 "K "值过大,则会使决策边界过于平滑,从而降低模型对局部模式的敏感度,并可能导致预测过程中的拟合不足和高计算成本。交叉验证等技术(请参阅《Scikit-learn 交叉验证指南》)通常被用来找到一个合适的 "K "值,以平衡偏差与方差之间的权衡。Scikit-learn 库提供了实施 KNN 和执行超参数搜索的工具,您可以在《Ultralytics 超参数调整指南》中找到一般提示。

KNN 的应用

KNN 非常简单,适用于各种应用,尤其是注重可解释性的应用:

KNN 的优缺点

KNN 有几个优点,但也有局限性:

优势

缺点

KNN 与相关概念

将 KNN 与其他算法区分开来非常重要:

  • K-Means 聚类:K-Means 是一种无监督学习算法,用于根据相似性将数据分成 K 个簇。KNN 是一种有监督的学习算法,用于基于标记的邻居进行分类或回归。
  • 支持向量机 (SVM):SVM 是一种有监督的算法,它能找到一个最佳超平面来区分类别。KNN 基于局部邻居相似性进行分类,而 SVM 则寻求全局最优边界。更多信息,请访问Scikit-learn SVM 页面
  • 决策树:决策树通过学习一组分层规则来对数据进行分类,从而形成树状结构。KNN 使用基于距离的相似性,而决策树则使用基于特征的分割。详情请查看Scikit-learn 决策树页面

虽然 KNN 对于某些任务和理解基本 ML 概念很有价值,但像实时物体检测这样的复杂问题通常需要更先进的模型,例如 Ultralytics YOLO等更先进的模型,它们能提供卓越的速度和性能,尤其是在大规模计算机视觉数据集上。您可以使用Ultralytics HUB 等平台训练和部署此类模型。

阅读全部