kNN(即 k 最近邻算法)是一种机器学习算法,它使用邻近度将一个数据点与其训练并记忆的一组数据进行比较以进行预测。 这种基于实例的学习为 kNN 提供了 “惰性学习(lazy learning)” 名称,并使算法能够执行分类或回归问题。 kNN 的假设是相似的点可以在彼此附近找到 —— 物以类聚。
作为一种分类算法,kNN 将新数据点分配给其邻居中的多数集。 作为一种回归算法,kNN 根据最接近查询点的值的平均值进行预测。
kNN 是一种监督学习算法,其中 “k” 代表分类或回归问题中考虑的最近邻的数量,“NN”代表为 k 选择的数量的最近邻。
kNN 最初由 Evelyn Fix 和 Joseph Hodges 于 1951 年在为美国军方进行的研究中开发。 他们发表了一篇解释判别分析的论文,这是一种非参数分类方法。 1967 年,Thomas Cover 和 Peter Hart 对非参数分类方法进行了扩展,并发表了他们的 “最近邻模式分类” 论文。 大约 20 年后,詹姆斯·凯勒 (James Keller) 对该算法进行了改进,他开发了一种 “模糊 KNN”,可以产生较低的错误率。
如今,kNN 算法是使用最广泛的算法,因为它适用于从遗传学到金融和客户服务的大多数领域。
kNN 算法作为一种监督学习算法,这意味着它会被输入它记忆的训练数据集。 它依赖于这个标记的输入数据来学习一个函数,该函数在给定新的未标记数据时产生适当的输出。
这使得算法能够解决分类或回归问题。 虽然 kNN 的计算发生在查询期间而不是训练阶段,但它具有重要的数据存储要求,因此严重依赖内存。
对于分类问题,KNN 算法将根据多数分配类标签,这意味着它将使用给定数据点周围最常出现的标签。 换句话说,分类问题的输出是最近邻的众数。
多数投票(majority voting)表示超过 50% 的票数为多数。 如果考虑两个类标签,则这适用。 但是,如果考虑多个类别标签,则适用相对多数投票(plurality voting)。 在这些情况下,超过 33.3% 的任何值都足以表示多数,从而提供预测。 因此,相对多数投票(plurality voting)是定义 kNN 模式的更准确术语。
如果我们要说明这种区别:
二元预测
Y: ❤️❤️❤️❤️❤️
多数投票: ❤️
相对多少投票: ❤️
多类别设置
Y: ⏰⏰⏰
多数投票:没有
相对多数投票:
回归问题使用最近邻的平均值来预测分类。 回归问题将产生实数作为查询输出。
例如,如果你要制作一个图表来根据某人的身高来预测其体重,则表示身高的值将是独立的,而体重的值将是相关的。 通过计算平均身高体重比,你可以根据某人的身高(自变量)估计其体重(因变量)。
kNN 算法的关键是确定查询点与其他数据点之间的距离。 确定距离度量可以实现决策边界。 这些边界创建不同的数据点区域。 有不同的方法用于计算距离:
要选择最佳 k 值(考虑的最近邻的数量),你必须尝试几个值,以找到能够生成最准确的预测且误差最少的 k 值。 确定最佳值是一种平衡行为:
理想情况下,你希望找到一个介于高方差和高偏差之间的 k 值。 还建议为 k 选择奇数,以避免分类分析中出现平局。
正确的 k 值也与你的数据集相关。 要选择该值,你可以尝试查找 N 的平方根,其中 N 是训练数据集中的数据点数量。 交叉验证策略还可以帮助你选择最适合你的数据集的 k 值。
kNN 算法通常被描述为 “最简单” 的监督学习算法,这导致了它的几个优点:
此外,kNN 算法不需要训练时间,因为它存储训练数据,并且仅在进行预测时使用其计算能力。
虽然 kNN 算法很简单,但它也存在一系列挑战和限制,部分原因在于它的简单性:
kNN 算法因其简单性和准确性而广受欢迎,具有多种应用,特别是用于分类分析时。
Elasticsearch 使你能够实现 kNN 搜索。 支持两种方法:近似 kNN(approximate kNN)和精确(exact)、强力 kNN(brute-force)。 你可以在相似性搜索、基于 NLP 算法的相关性排名以及产品推荐和推荐引擎的上下文中使用 kNN 搜索。
使用 Elastic 实现 kNN 搜索
使用 kNN 根据相似性进行预测。 因此,你可以使用 kNN 在自然语言处理算法的上下文中进行相关性排名、相似性搜索和推荐引擎或产品推荐。 请注意,当数据集相对较小时,kNN 非常有用。
kNN 是监督机器学习。 它被提供一组它存储的数据,并且仅在查询时处理数据。
kNN 代表 k-近邻算法,其中 k 表示分析中考虑的最近邻的数量。
只要你准备好...我们可以通过以下 4 种方式帮助你将数据引入你的业务:
更多阅读:
Elasticsearch:介绍 kNN query,这是进行 kNN 搜索的专家方法
Elasticsearch:探索 k-nearest neighbor (kNN) 搜索
增强常见问题解答搜索引擎:在 Elasticsearch 中利用 KNN 的力量