存根 什么是 KNN(K 最近邻)? - 联合人工智能
关注我们.

AI 101

什么是 KNN(K 最近邻)?

mm
更新 on

什么是 K 最近邻 (KNN)?

K-最近邻是一种机器学习技术和算法, 可用于回归和分类任务. K最近邻居选定数量的数据点的标签 围绕目标数据点,以便对该数据点所属的类别进行预测。 K 最近邻 (KNN) 是一种概念上简单但非常强大的算法,因此,它是最流行的机器学习算法之一。 让我们深入研究 KNN 算法,看看它到底是如何工作的。 充分了解 KNN 的运作方式将使您了解 KNN 的最佳和最差用例。

K 最近邻 (KNN) 概述

照片:Antti Ajanki AnAj,来自 Wikimedia Commons,CC BY SA 3.0 (https://commons.wikimedia.org/wiki/File:KnnClassification.svg)

让我们在 2D 平面上可视化数据集。 在图表上想象一堆数据点,沿着图表以小簇的形式分布。 KNN 检查数据点的分布,并根据模型的参数将数据点分成组。 然后为这些组分配一个标签。 KNN 模型的主要假设是,彼此接近的数据点/实例高度相似,而如果数据点远离另一组,则它与这些数据点不相似。

KNN 模型使用图上两点之间的距离来计算相似度。 点之间的距离越大,它们的相似度就越低。 计算点之间距离的方法有多种,但最常见的距离度量就是欧几里得距离(直线上两点之间的距离)。

KNN 是一种监督学习算法,这意味着数据集中的示例必须分配有标签/它们的类别必须已知。 关于 KNN 还有两件重要的事情需要了解。 首先,KNN是一种非参数算法。 这意味着使用模型时不会对数据集做出任何假设。 相反,该模型完全是根据提供的数据构建的。 其次,使用 KNN 时不会将数据集拆分为训练集和测试集。 KNN 不会对训练集和测试集进行概括,因此当要求模型进行预测时,也会使用所有训练数据。

KNN 算法如何运行

KNN 算法在执行时会经历三个主要阶段:

  1. 将 K 设置为选定的邻居数量。
  2. 计算提供的/测试示例与数据集示例之间的距离。
  3. 对计算出的距离进行排序。
  4. 获取前 K 个条目的标签。
  5. 返回关于测试示例的预测。

第一步,K 由用户选择,它告诉算法在对目标示例所属的组进行判断时应考虑多少个邻居(有多少个周围的数据点)。 在第二步中,请注意模型检查目标示例与数据集中每个示例之间的距离。 然后将距离添加到列表中并排序。 然后,检查排序列表并返回前 K 个元素的标签。 换句话说,如果 K 设置为 5,模型将检查与目标数据点最接近的前 5 个数据点的标签。 当渲染关于目标数据点的预测时,任务是否是一个很重要 回归 or 分类 任务。 对于回归任务,使用前 K 个标签的均值,而在分类的情况下使用前 K 个标签的众数。

用于执行 KNN 的精确数学运算因所选距离度量而异。 如果您想了解有关如何计算指标的更多信息,您可以阅读一些最常见的距离指标,例如 欧几里德, 曼哈顿闵可夫斯基.

为什么 K 的值很重要

使用 KNN 时的主要限制是可能会选择不正确的 K 值(要考虑的邻居数量错误)。 如果发生这种情况,返回的预测可能会大幅偏离。 使用 KNN 算法时,选择正确的 K 值非常重要。 您希望选择一个 K 值,以最大限度地提高模型对未见过的数据进行预测的能力,同时减少其出错的数量。

照片:Agor153,来自 Wikimedia Commons,CC BY SA 3.0 (https://en.wikipedia.org/wiki/File:Map1NN.png)

K 值较低意味着 KNN 提供的预测不太稳定和可靠。 为了直观地了解为什么会这样,请考虑目标数据点周围有 7 个邻居的情况。 假设 KNN 模型的 K 值为 2(我们要求它查看两个最近的邻居来进行预测)。 如果绝大多数邻居(七分之五)属于蓝色类,但两个最近的邻居恰好是红色,则模型将预测查询示例是红色。 尽管模型进行了猜测,但在这种情况下,蓝色将是更好的猜测。

如果是这样的话,为什么不选择我们能选择的最高的 K 值呢? 这是因为告诉模型考虑太多邻居也会降低准确性。 随着 KNN 模型考虑的半径增加,它最终将开始考虑比目标数据点更接近其他组的数据点,并且错误分类将开始发生。 例如,即使最初选择的点位于上面的红色区域之一,如果 K 设置得太高,模型也会进入其他区域来考虑点。 使用 KNN 模型时,会尝试不同的 K 值,以确定哪个值可以为模型提供最佳性能。

KNN 的优点和缺点

让我们来看看 KNN 模型的一些优缺点。

优点:

与其他一些监督学习算法不同,KNN 可用于回归和分类任务。

KNN 非常准确且易于使用。 它很容易解释、理解和实施。

KNN 不对数据做出任何假设,这意味着它可以用于解决各种各样的问题。

缺点:

KNN 存储大部分或全部数据,这意味着该模型需要大量内存且计算成本较高。 大型数据集也会导致预测需要很长时间。

事实证明,KNN 对数据集的规模非常敏感,与其他模型相比,它很容易被不相关的特征所困扰。

K-最近邻(KNN)总结

K-最近邻是最简单的机器学习算法之一。 尽管 KNN 在概念上很简单,但它也是一种强大的算法,可以在大多数问题上提供相当高的准确性。 当您使用 KNN 时,请务必尝试不同的 K 值,以便找到提供最高准确度的数字。

博主和程序员,擅长 机器学习 深度学习 主题。 丹尼尔希望帮助其他人利用人工智能的力量造福社会。