概述
它是机器学习中最简单、最直观的算法之一,几乎不需要训练。
深入探讨
KNN 分类器存储带标签的训练示例,并且对于查询,在组合标签之前在选定的距离度量下找到 K 个邻居。 KNN 回归器通常会聚合相邻的数字目标。它是基于实例的,而不是紧凑的参数模型,但拟合仍可能包括特征缩放、索引构建或其他预处理。由于距离使用每个特征,因此对训练数据进行拟合缩放,因此大范围特征不会占主导地位。暴力搜索将查询与许多或所有存储的示例进行比较; KD 树、球树和近似邻居索引可以加速合适的数据和指标。在高维度中,距离可能会变得信息量较少,并且树索引可能提供很少的加速。较小的 K 可能对噪声敏感,而较大的 K 可以平滑局部决策。验证预期工作负载的表示、指标、K 和搜索方法。
现实世界的实施
推荐系统:推荐与用户已经喜欢的类似的电影或产品。
手写数字识别:通过将数字与最相似的标记图像进行比较来对数字进行分类。
医疗诊断支持:根据测试结果最相似的患者预测病情。
语义搜索:检索最近的文本嵌入来回答向量数据库中的查询。
K 最近邻的未来
KNN 的核心思想是找到最相似的示例,为现代向量搜索和检索增强生成提供动力,其中系统获取最近的嵌入向量以构建大型语言模型。 FAISS 和 HNSW 等近似最近邻库使十亿级相似性搜索变得实用。虽然最近邻原则很少是大型管道中的最终分类器,但它作为语义搜索和推荐的支柱比以往任何时候都更加相关。
付诸实践
为什么这很重要
- 更清晰的判决. 它可以帮助您将清晰的技术声明与营销语言分开。
- 成本与预算. 在花费金钱或时间之前,您可以提出更好的实施问题。
- 团队与工作流程. 具有共同理解的团队可以做出更好的产品、政策和学习决策。
留意
- 不同的团队可能会以不同的方式使用同一术语,因此请尽早定义范围。
- 基准测试可能看起来很强大,但实际性能却参差不齐。
- 忽视数据质量和评估计划通常会产生脆弱的结果。
后续步骤
- 从您需要的结果的简单语言定义开始。
- 在测试之前选择一种成功指标和一种失败条件。
- 使用代表性数据运行小型试点,而不是完善的演示集。
- 记录 K 最近邻在哪些方面有帮助以及在哪些方面更简单的方法更好。
不断探索
常见问题
什么是 K 最近邻?
K 最近邻 (KNN) 通过查看 K 个最接近的示例并进行多数投票来对新数据点进行分类。它是机器学习中最简单、最直观的算法之一,几乎不需要训练。
KNN 如何对新数据点进行分类?
KNN 找到 K 个最近的存储示例,并分配其中最常见的类(对于回归,它对它们的值进行平均)。
为什么 KNN 通常被称为“惰性学习器”?
KNN 是基于实例的,而不是学习紧凑的参数权重集;实现仍然可以在合适的时间预处理或构建搜索索引。
为什么特征缩放对于 KNN 很重要?
由于 KNN 依赖于距离,未缩放的大范围特征可能会压倒其他特征,因此通常对特征进行归一化。
如果您选择一个非常小的 K,例如 K=1,会发生什么?
一个很小的 K 让单个有噪声或标签错误的邻居决定结果,导致锯齿状的过度拟合边界。
在暴力 KNN 实现中,为什么在大型数据集上预测会很慢?
强力扫描与存储点进行比较,而树或近似邻居索引可以根据数据和指标加速某些工作负载。