K 最近邻 (KNN):它是什么以及它如何在机器学习中使用

已发表: 2024-12-18

K 最近邻 (KNN) 是机器学习 (ML) 的基础技术。本指南将帮助您了解 KNN、它的工作原理及其应用、优点和挑战。

目录

什么是k近邻算法?

KNN 是如何工作的?

k近邻算法与其他算法的区别

KNN如何应用于机器学习?

KNN 的应用

KNN的优点

KNN 的缺点

什么是k近邻算法?

k 最近邻 (KNN) 算法是一种用于分类和回归的监督学习技术。 KNN 通过评估数据集中附近的数据点来确定给定数据点的标签(分类)或预测值(回归)。

使用 Grammarly 更智能地工作
任何有工作要做的人的人工智能写作伙伴

KNN 是如何工作的?

KNN 的前提是,数据集中空间上彼此接近的数据点往往具有相似的值或属于相似的类别。 KNN 使用这个简单但强大的想法,通过在标记的训练数据集中查找预设数量(超参数 k)的相邻数据点来对新数据点进行分类。这个值 k 是 KNN 超参数之一,它是 ML 从业者用来控制算法学习方式的预设配置变量。

然后,该算法确定哪些相邻值最接近新数据点,并为其分配与其邻居相同的标签或类别。 k 值的选择会影响模型的性能。较小的值会增加噪声敏感度,而较大的值会增加鲁棒性,但可能会导致 KNN 错过局部模式。

数据点之间的接近度或距离是使用最初开发的用于测量数学空间中点的相似性的度量来计算的。常见的度量包括欧几里德距离、曼哈顿距离和闵可夫斯基距离。 KNN 性能受到所选指标的影响,不同的指标对于不同类型和大小的数据表现更好。

例如,数据中的维度数量(描述每个数据点的单独属性)可能会影响指标性能。无论选择何种距离度量,目标都是根据新数据点与其他数据点的距离对新数据点进行分类或预测。

  • 欧几里得距离是空间中两点之间沿直线的距离,是最常用的度量标准。它最适用于维数较少且没有显着异常值的数据。
  • 曼哈顿距离是被测量的数据点的坐标之间的绝对差之和。当数据是高维的或数据点形成网格状结构时,该指标非常有用。
  • 闵可夫斯基距离是一种可调度量,根据可调参数的值,其作用类似于欧几里得距离或曼哈顿距离。调整此参数可控制距离的计算方式,这对于使 KNN 适应不同类型的数据很有用。

其他不太常见的度量包括切比雪夫距离、汉明距离和马哈拉诺比斯距离。这些指标更加专业,适合特定的数据类型和分布。例如,马氏距离衡量点与点分布的距离,同时考虑变量之间的关系。因此,马氏距离非常适合处理特征使用不同尺度的数据。

KNN 通常被称为“惰性”学习算法,因为与许多其他算法不同,它不需要训练。相反,KNN 存储数据并仅在新数据点需要回归或分类时使用它来做出决策。然而,这意味着预测通常具有很高的计算要求,因为每个预测都会评估整个数据集。 ∫

k近邻算法与其他算法的区别

KNN 是面向分类和回归的监督 ML 技术大家族的一部分,其中包括决策树/随机森林、逻辑回归和支持向量机 (SVM)。然而,KNN 与这些技术的不同之处在于其简单性和处理数据的直接方法等。

决策树和随机森林

与 KNN 一样,决策树和随机森林也用于分类和回归。然而,与 KNN 基于距离的方法不同,这些算法使用在训练期间从数据中学习到的显式规则。决策树和随机森林往往具有更快的预测速度,因为它们具有预先训练的规则。这意味着它们比 KNN 更适合实时预测任务和处理大型数据集。

逻辑回归

逻辑回归假设数据呈线性分布,并使用直线或超平面(高维空间中分隔数据点的边界)对数据进行分类,以将数据分为类别。另一方面,KNN 不假设特定的数据分布。因此,KNN 可以更轻松地适应复杂或非线性数据,而逻辑回归最适合用于线性数据。

支持向量机

支持向量机 (SVM) 不像 KNN 那样关注点之间的距离,而是专注于在数据点组之间创建清晰的分界线,通常的目标是使它们之间的差距尽可能宽。 SVM 非常适合处理具有许多特征的复杂数据集,或者需要在数据点组之间进行明确分离时。相比之下,KNN 更易于使用和理解,但在大型数据集上的表现不佳。

KNN如何应用于机器学习?

许多机器学习算法只能处理一种类型的任务。 KNN 因其能够处理不止一种而是两种常见用例的能力而脱颖而出:分类和回归。

分类

KNN 通过使用距离度量来确定 k 最近邻并根据邻居的标签为新数据点分配标签来对数据点进行分类。常见的 KNN 分类用例包括垃圾邮件分类、根据购买历史记录将客户分组以及手写数字识别。

回归

KNN 通过根据其 k 个最近邻的平均值(或加权平均值)估计数据点的值来执行回归。例如,KNN 可以根据附近的相似房产预测房价,根据相似股票的历史数据预测股票价格,或者根据相似地点的历史天气数据预测温度。

KNN 算法在 ML 中的应用

由于其相对简单并且能够执行分类和回归,KNN 具有广泛的应用。其中包括图像识别、推荐系统和文本分类。

图像识别

由于其分类能力,图像识别是 KNN 最常见的应用之一。 KNN 通过将未知图像中的特征(如颜色和形状)与标记图像数据集中的特征进行比较来执行图像识别。这使得 KNN 在计算机视觉等领域非常有用。

推荐系统

KNN 可以通过将用户的偏好数据与类似用户的数据进行比较来向用户推荐产品或内容。例如,如果用户听过几首经典爵士歌曲,KNN 可以找到具有相似偏好的用户并推荐这些用户喜欢的歌曲。因此,KNN 可以根据相似数据推荐产品或内容,帮助个性化用户体验。

文本分类

文本分类旨在根据未分类文本与预分类文本的相似性对未分类文本进行分类。 KNN 评估单词模式的紧密度的能力使其成为该用例的有效工具。文本分类对于情感分析(其中文本被分类为正面、负面或中性)或确定新闻文章的类别等任务特别有用。

KNN 算法在 ML 中的优势

KNN 有几个显着的优点,包括简单性、多功能性和缺乏训练阶段。

简单

与许多其他 ML 算法相比,KNN 易于理解和使用。 KNN 背后的逻辑很直观,它根据附近数据点的值对新数据点进行分类或预测(回归),这使其成为 ML 从业者(尤其是初学者)的热门选择。此外,除了选择 k 值之外,使用 KNN 还需要进行最小的超参数调整。

多功能性

KNN 可用于分类和回归任务,这意味着它可以应用于从图像识别到数值预测的大量问题和数据类型。与仅限于一种类型任务的专用算法不同,KNN 可以应用于任何适当结构化的标记数据集。

显式训练阶段

许多机器学习模型在变得有用之前需要经过时间和资源密集型的训练阶段。另一方面,KNN 只是存储训练数据并在预测时直接使用它。因此,KNN 可以使用新数据进行更新,并可立即用于预测。这使得 KNN 对于小型数据集特别有吸引力。

KNN 算法在 ML 中的缺点

尽管 KNN 有其优势,但它也面临着一些挑战。这些包括高计算和内存成本、对噪声和不相关特征的敏感性以及“维数灾难”。

预测的计算成本

由于 KNN 每次进行预测时都会计算新数据点与其整个训练数据集中的每个数据点之间的距离,因此预测的计算成本随着数据集的增长而迅速增加。当数据集很大或者 KNN 在硬件不足的情况下运行时,这可能会导致预测缓慢。

维数诅咒

KNN 遭受所谓的“维度诅咒”,这限制了其处理高维数据的能力。随着数据集中特征数量的增加,大多数数据点变得稀疏并且彼此之间几乎等距。因此,距离度量变得不太有用,这使得 KNN 很难在高维数据集中找到真正附近的邻居。

内存密集型

KNN 的一个独特功能是它将整个训练数据集存储在内存中以供预测时使用。当处理有限的内存或大型数据集时,这可能会出现问题且不切实际。其他机器学习算法通过模型训练和参数优化将训练数据压缩并提炼为学习特征,从而避免了这一挑战。另一方面,KNN 必须保留每个数据点,这意味着内存随着训练数据集大小线性增长。

对噪声和不相关特征的敏感性

KNN 的强大之处在于其简单、直观的距离计算。然而,这也意味着不重要的特征或噪声可能会导致误导性的距离计算,从而对预测精度产生负面影响。因此,特征选择或降维技术(例如主成分分析 (PCA))通常与 KNN 一起使用,以确保重要特征对预测影响最大。