跳至主要内容

机器学习中的 k-NN 是什么?

机器学习中的 k-NN 是什么?

k 近邻(k-NN)是一种机器学习算法,其工作原理是:相似的数据点往往具有相似的标签。在训练阶段,k-NN 算法需要一个已标注相应输出值的样本输入数据集。该算法利用数据绘制一张表示输入与输出关系的 N 维图。当给定未知输入时,算法会将该点绘制到图中,并根据图中最近的近邻或点组确定其所属类别。最近邻通过多种数学方法确定。k-NN 算法可用于分类任务和回归任务。

k-NN 算法有哪些优势?

k-NN 可让数据科学家构建简单、可解释且适应性强的有监督机器学习模型。

降低模型复杂度

与更复杂的模型不同,k-NN 仅使用 k 值和距离指标来概括结果。这使得模型更简单,结果可解释。k-NN 算法遵循一系列步骤来确定给定数据点属于哪个类别。

能够处理非线性数据

k-NN 算法是非参数的。换句话说,该模型在分析数据时不做任何假设。相反,它通过计算和比较新查询点与训练样本中所有数据之间的距离来对新数据进行分类。这也使得 k-NN 适合分析非线性或噪声数据。

将训练数据存储在内存中

与大多数机器学习模型不同,k-NN 算法将训练数据集存储在其内存中,并使用该数据集对输入数据进行比较。这意味着 k-NN 算法仅在接收到新数据后才对训练数据执行计算,而在训练阶段处于空闲状态。

k-NN 算法有哪些应用场景?

尽管架构看似简单,k 近邻(k-NN)算法在分类任务中仍具有很高的准确性。数据科学家已将 k-NN 有效地应用于各种实际场景中。

信用评分

人工智能系统利用 K-NN 技术,通过自动将信贷申请人与具有相似特征的借款人归为一组,来评估信贷申请人的风险。这使系统能够为新申请人可靠地分配信用评分。

数据预处理

用于模型训练的数据集可能包含缺失值,从而导致模型产生的结果不准确或有偏差。为解决这一问题,可使用 k-NN 将缺失数据替换为近似值。这种技术称为数据插补。

搜索和推荐系统

k-NN 算法使用户能够搜索相关产品或获取相关推荐。例如,电子商务网站将用户与其数据库中的其他客户进行比较。然后,它会根据具有相似偏好的客户所购买的产品来推荐产品。

财务预测

除了分类任务外,k-NN 模型还可以预测连续值。当作为回归模型应用时,k-NN 可帮助金融分析师根据历史数据点自信地做出预测。

模式识别

k-NN 擅长分析和识别特定模式,从而得出切实可行的见解。例如,它可以帮助银行识别交易记录中的异常活动并拦截可疑交易。

计算机视觉

计算机视觉应用需要能够识别图像并将其分类到相应类别的人工智能模型。k-NN 是将图像划分到相应类别的最简单模型之一。例如,您可以为 k-NN 模型提供一个包含猫和狗图像的训练数据集。然后,k-NN 将新图像与两个子组分别进行比较,并确定其所属类别。

k-NN 算法是如何工作的?

k-NN 根据多数表决原则运作,即寻找足够数量的符合条件的邻近数据点,以对输入数据进行分类。该模型根据 k 个近邻中检测频率最高的类别来分配类别标签。例如,如果使用 k-NN 将某个图像分为两个类别,则所需的多数票须超过 50%。而将图像分为四个类别之一,则所需票数须超过 25%。

使用 k-NN 执行回归任务时,该原则保持不变。该模型将新数据点与 k 个最近邻的平均值进行比较,从而做出预测。为了更好地理解 k-NN,请考虑判断一张图像是猫还是狗所需的步骤。

  • 数据科学家加载了一个训练数据集,其中包含若干张带有标签的猫狗图像。

  • 然后,他们确定 k 的最优值,来产生最准确的结果。

  • 确定后,k-NN 算法将新图像与训练数据中的每张图像进行比较,以确定其距离。

  • 完成后,模型根据 k 值选择特定数量的最近数据点。例如,如果 k 等于 5,则该算法将距输入图像最近的五张图像归为一组。

  • 最后,该算法通过统计 k 个近邻中的每个数据点,找到大多数分组图像所属的类别。然后,它返回预测的类别。

使用 k-NN 预测或分类数据时,数据科学家必须选择适当的距离指标和 k 值。下文将介绍他们的具体做法。

估计 k 值

k 值可决定 k-NN 用于对输入数据进行分类的数据点数量。没有任何一个 k 值能够在不同的使用案例中均达到最优效果。设置的 k 值低会导致偏差低且方差高,从而造成欠拟合。欠拟合的模型在训练和实际应用中均无法有效泛化。另一方面,k 值较高会导致模型过拟合。过拟合的特点是高偏差和低方差。在这种情况下,该模型在训练期间可以准确泛化,但面对未知的真实数据时则会失效。因此,数据科学家在确定最优 k 值之前,必须尝试多个 k 值。通常,k 值较高使模型在处理噪声数据时表现得更好。

识别最近邻

k-NN 模型使用以下距离指标来决定数据点是否符合最近邻的条件。

欧几里得距离

欧几里得距离用于衡量二维空间中两个数据点之间的直线距离。大多数 k-NN 算法使用欧几里得距离来确定最近邻。

曼哈顿距离

曼哈顿距离用于计算从一个数据点到另一个数据点的距离。它并非测量坐标之间的绝对差值,而是计算在垂直轴和水平轴上行进的总距离。想象一下乘坐出租车,沿着相连的道路从一个街区行驶到另一个街区。这也是曼哈顿距离指标又称出租车距离的原因。

闵可夫斯基距离

闵可夫斯基距离是一种通用的距离计算公式,欧几里得距离和曼哈顿距离均由此推导而来。其他距离度量变体也可以由闵可夫斯基公式推导得出。

汉明距离

汉明距离用于比较两个位数相似的参数。它返回两个参数之间不匹配的位数。

k-NN 与 a-NN 有什么区别?

近似最近邻(a-NN)是一种机器学习技术,无需评估已标注的数据集即可对数据进行搜索和分类。与 k-NN 类似,a-NN 通过比较输入数据与训练数据之间的距离来确定前者所属的类别。但是,a-NN 不会对每个数据点重复执行计算。a-NN 将训练数据划分为若干数据块,以缩短搜索时间。对于需要将输入数据与数百万个数据集进行比较、且对结果精度要求不高的应用程序而言,a-NN 更具实用价值。

k-NN 算法面临哪些挑战?

随着数据点的数量达到数亿甚至数十亿,扩展 k-NN 搜索系统可能是一项重大挑战。组织必须增加计算资源来存储和运行 k-NN 模型,以保持泛化性能。

k-NN 算法对 k 值的选择也很敏感。选择不够理想的 k 值可能会导致过拟合或欠拟合。

对于高维数据(即具有大量特征的数据集,例如患者病历),k-NN 的表现也不够准确。尽管特征选择和主成分分析等技术可帮助 k-NN 分析高维数据,但对于较大的数据集,这些技术可能并不有效。

AWS 如何提供帮助?

Amazon SageMaker 是一项完全托管的服务,可借助完全托管的基础设施、工具和工作流程,为任何使用案例准备数据并构建、训练和部署机器学习(ML)模型。它提供了几种内置的有监督学习算法,可用于分类或回归问题。

Amazon SageMaker k- 近邻算法是一种有监督算法。该算法使用测试数据集,并针对分类任务输出精度指标,或针对回归任务输出均方误差指标。这些精度指标将各自任务的模型预测结果与实证测试数据提供的真实标签进行比较。要找到在测试数据集上报告最高精度或最低误差的最佳模型,请为 k-NN 运行超参数调优任务。

Amazon OpenSearch Service 是一项托管服务,可让您轻松执行交互式日志分析、实时应用程序监控、网站搜索等操作。Amazon OpenSearch Service 的 k-NN 功能支持在向量空间中搜索数据点,并通过欧几里得距离或余弦相似度找到这些点的“最近邻”。使用案例包括推荐(例如,音乐应用程序中的“您可能喜欢的其他歌曲”功能)、图像识别和欺诈检测。

立即创建免费账户,开始使用 AWS 上的 k-NN。

Browse all cloud computing concepts

Browse all cloud computing concepts content here:

正在加载
正在加载
正在加载
正在加载
正在加载

Did you find what you were looking for today?

Let us know so we can improve the quality of the content on our pages