我的任务是确定图中给出的这些数据集中的哪些适合 k-means。我的脚本说 k-means 通常在凹结构上表现良好,但是案例 1 的明显集群的大小差异很大,这表明 k-means 的性能可能很差,对吧?
所以我在这里选择案例 2,因为 3 个集群的大小几乎相同,并且形状 - 但不是凹形 - 非常密集,并且案例 3 有很多噪音,这是 k-means 无法处理的。我的想法正确吗?

请注意,我实际上并不知道数据集的任何值,因此如果 k-means 合适,应该通过查看图片来清楚
我的任务是确定图中给出的这些数据集中的哪些适合 k-means。我的脚本说 k-means 通常在凹结构上表现良好,但是案例 1 的明显集群的大小差异很大,这表明 k-means 的性能可能很差,对吧?
所以我在这里选择案例 2,因为 3 个集群的大小几乎相同,并且形状 - 但不是凹形 - 非常密集,并且案例 3 有很多噪音,这是 k-means 无法处理的。我的想法正确吗?

请注意,我实际上并不知道数据集的任何值,因此如果 k-means 合适,应该通过查看图片来清楚
我会回答说,唯一真正合适的数据集是 2。K-means 会推动类似大小的球形集群。我这么说是因为这些分裂更像是 voronoi 细胞。从这里开始,在第一个示例中,您最终会得到重叠的集群。显然有三个集群,一个大的,两个小的。k-means 可以理解这两个小的,但在尝试定义它们时会占用大的一部分。这是一个经典的例子,叫做“鼠标”。您可以在 Wikipedia k-means 条目中查看 k-means 如何处理这些数据:

在这张图片中应该注意的另一件事是 K-means 无法理解噪声,它总是将所有点分配给一个集群或其他。事实上,它对异常值非常敏感,因为算法本身是基于平均值的。这样就省略了示例 3。示例 2 具有奇怪形状的簇,但它们在特征空间中的大小大致相同,因为您可以用大约相同大小的圆圈将它们包裹起来。K-means 聚类在这里会做得很好。当然,这都是相当主观的,无监督学习总是如此。根据任务和获得的结果,您可以决定是否非常关心噪音以及是否可以保留发现的集群,即使它们不是“完美的”等等。不同的聚类算法基于不同的思想,因此它们会试图获得不同的特定事物来解决问题。这意味着他们将以他们知道如何处理数据的唯一方式处理数据,您必须决定此答案是否适合您。看着这个问题显示了一个可爱的图表,您可以在其中看到不同的算法对相同的数据集做了什么。
作为对 JEquihua 的出色回答的补充,我想补充 2 点。
案例 3 是一个很好的例子,在这种情况下,有一个聚类算法会很有用,它不仅给出了集群分配,而且还提供了一些方法来评估一个点属于一个集群的确定程度(例如,在模糊聚类),这随后将允许我们发现嘈杂/模糊的点。
考夫曼、伦纳德和彼得 J.卢梭。“在数据中寻找组:聚类分析简介。” (2005),第 4 章更详细地解释了这个问题。摘抄:
在一个分区中,数据集的每个对象都被分配到一个且只有一个集群。因此,分区方法(例如标准的 k-means 算法)有时被认为会产生硬聚类,因为它们为每个对象做出了明确的决定。另一方面,模糊聚类方法允许数据中经常出现一些模糊性。
发现嘈杂/模糊点的另一种方法是使用一些指标,例如轮廓,它提供了一个度量来评估每个点在其集群中的位置。
关于案例 2,稍微改一下 JEquihua 所说的,k-means 会起作用,不仅因为每三个组的点很接近,还因为组的大小相同。所以这在某种程度上是一个幸运的情况。