K-means 可能导致的聚类

机器算法验证 聚类 k-均值
2022-04-01 13:20:38

我得到了以下问题作为考试的测试问题,我根本无法理解答案。

投影到前两个主成分上的数据散点图如下所示。我们希望检查数据集中是否存在某种组结构。为此,我们使用欧几里得距离度量运行了 k = 2 的 k-means 算法。根据随机初始条件,k-means 算法的结果在运行之间可能会有所不同。我们多次运行该算法并得到一些不同的聚类结果。

通过对数据运行 k-means 算法,只能获得所示的四个聚类中的三个。k-means不能得到哪一个?(数据没有什么特别的)

4 种可能的数据聚类

正确答案是 D。你们谁能解释一下为什么?

4个回答

为了让 Peter Flom 的回答更加深入人心,k-means 聚类在数据中寻找 k 个组。该方法假设每个簇在某个 处都有一个质心(x,y)k-means 算法最小化每个点到质心的距离(这可能是欧几里得距离或曼哈顿距离,具体取决于您的数据)。

为了识别集群,首先猜测哪些数据点属于哪个集群,然后计算每个集群的质心。然后计算距离度量,然后在集群之间交换一些点以查看拟合是否有所改善。细节上有很多变化,但从根本上说,k-means 是一种依赖于初始条件的蛮力解决方案,因为聚类解决方案存在局部最小值。

因此,在您的情况下,情况 A 的初始条件看起来很分散,x因此集群解决了,因为从质心到数据的距离很小,这是一个稳定的解决方案。相反,您无法获得 D,因为单个红点比许多其他点更接近蓝点的质心,因此红点应该已成为蓝集的一部分。

因此,获得 D 的唯一方法是在集群完成之前中断集群过程(或者生成集群的代码被破坏)。

因为 D 中的圆圈点与 PC1 维度、PC2 维度或组合它们的欧几里得距离中的其他点不远。

在 A 中,单点与 PC1 上的其他点相距甚远

在 B 和 C 中有两个很容易分离的大组。事实上,B 和 C 是相同的聚类(除非我遗漏了一个点),它们只是在标签方面有所不同

由于 D 只包含一个点,所以它的中心正好在这个点上。

对于其余数据,在此投影中中心必须接近 0,0。

在前两个主成分中,至少有一个蓝色点比蓝色中心更接近红色中心。结果似乎不是由 Voronoi 细胞产生的。

这不是您问题的直接答案,但我不明白您的老师建议的设置如何,即首先应用 PCA 然后寻找集群,这是有道理的:

如果数据集具有聚类结构,则通过 PCA 获得的降维并不能保证尊重这种结构。在您的图中,PC1 和 PC2 只会为您提供捕获数据变化最大的变量(或变量的线性组合)。

换句话说:如果你从一开始就假设数据集包含集群,那么最重要的特征显然是区分集群的特征,这通常与整个数据集的巨大变化方向不一致。

在这种情况下,更有意义的是首先进行聚类(没有任何降维),然后执行 LDA 或 XCA或类似的保留类/聚类区分信息的方法。