K-means和K-最近邻之间的主要区别是什么?

机器算法验证 机器学习 k-均值 k-最近邻
2022-01-19 18:12:18

我知道 k-means 是无监督的,用于聚类等,并且 k-NN 是有监督的。但我想知道两者之间的具体区别?

4个回答

这些是完全不同的方法。他们的名字中都有字母K的事实是巧合。

K-means是一种聚类算法,它试图将一组点划分为 K 个集合(簇),以使每个簇中的点趋向于彼此靠近。它是无监督的,因为这些点没有外部分类。

K最近邻是一种分类(或回归)算法,为了确定一个点的分类,结合K个最近点的分类。它是受监督的,因为您试图根据其他点的已知分类对一个点进行分类。

正如Bitwise他们的回答中指出的那样,k-means 是一种聚类算法。如果涉及 k-最近邻 (k-NN),则术语有点模糊:

  • 在分类的上下文中,它是一种分类算法,如上述答案中所述

  • 一般来说,这是一个问题,存在各种解决方案(算法)

所以在第一个上下文中,说“k-NN 分类器”实际上可以表示解决 k-NN 问题的各种底层具体算法,并且它们的结果被解释为分类目的。

这是两件不同的事情,但您可能会发现有趣的是,k-means 算法是解决 k-NN 问题的各种可能方法之一(Marius Muja 和 David G. Lowe,“Fast Approximate Nearest Neighbors with Automatic Algorithm Configuration”,在计算机视觉理论与应用国际会议 (VISAPP'09), 2009 PDF )

你可以有一个有监督的k-means。您可以根据标记的数据构建质心(如在 k-means 中)。没有什么能阻止你。如果您想改进这一点,欧几里得空间和欧几里得距离可能无法为您提供最佳结果。您将需要选择您的空间(例如可以是黎曼空间)并定义点之间的距离(甚至定义一个“点”)。最后两个是研究主题,它们还取决于您拥有的数据(信号)的类型(属性)。

K-means 可以为邻居节点创建集群信息,而 KNN 无法找到给定邻居节点的集群。