K-means 是否包含 K-最近邻算法?

机器算法验证 k-均值 k-最近邻
2022-04-12 07:40:36

我正在观看有关 K-means 聚类的教程,据我所知,K-means 是:

  1. 随机生成 k 个簇的质心
  2. 创建一个划分为 k 个区域的分类模型(我们在这里使用 kNN 吗?)。
  3. 为每个区域生成新的质心
  4. 重复 2-3。

在我正在观看的有关 K-means 的视频中,似乎讲师可能使用了 kNN 来创建分割区域,尽管我在网上看不到任何关于 kNN 是否用于 K-means 的信息。

2个回答

不,绝对不是;kmeans 和 kNN 是两个完全不同的东西,kmeans 根本不使用 kNN。在您定义的 kmeans 算法的第 2 步中(顺便说一句,除了这个轻微的混淆,您的总结基本上是准确的),kmeans 函数循环遍历每个n数据点并测试每个每个m质心。最接近的质心“获胜”,并且每个点与其获胜质心分组,如在前一次迭代中计算的那样,以便为下一次迭代计算所有质心的新值。

kNN 算法回答了一个稍微不同的问题。假设我给你一个所谓的“训练数据集”,它由一个多列的表组成。第一列是所谓的“类值”,基本上是一个标签,您可能会认为它标识了您希望计算机能够自动识别的不同类型的现实世界对象。表中的所有其他列都指定了与每个对象相关的各种“特征”的值;例如,它的长度、质量、纵横比、亮度、颜色或您可以选择测量的任何其他量。现在,假设我给你第二个数据集,一个所谓的“测试”数据集,其中数据列中的所有值都以与训练数据集中相同的方式进行测量,但是标签都不见了!我希望您通过将测试数据集的特征与训练集中已知示例的特征进行比较,并寻找它们之间的相似性模式来推断测试数据集中缺少的标签。

我刚刚描述的第二种类型的问题被称为“分类”,有时也称为“监督机器学习”,并且有许多不同的策略来处理它。kNN 算法是这些策略中最简单的一种。基本上,kNN 算法会考虑测试数据集中的每个未知对象,并找到k训练集中的“最近”(通过用户指定的任何距离度量)示例。然后,选择最常见的标签k训练集中的示例,即分配给测试集中未知对象的标签。

归根结底,kNN 是完全不同的东西,与将先前未区分的数据集细分为经验定义的集群无关。

你是对的。kNN 和 k-means 通常使用欧几里得距离作为它们各自的距离度量,这就是它们看起来相似的原因。但是请记住,k-means 不是分类模型,因为它是一种监督学习算法(因为分组变量是已知的)。当分组变量未知时,使用 K-means 和其他聚类方法。