为什么使用原始数据的聚类分析结果与使用 PCA 分数的结果相同?

机器算法验证 聚类 主成分分析 层次聚类
2022-04-10 05:50:01

我已经阅读了很多,并尝试了不同的方法来进行聚类分析。在第一种情况下,我在 matlab 中对我的原始数据(200 个流域和 16 个变量)进行了层次聚类分析并绘制了聚类图。

我的第二次尝试包括对原始数据进行主成分分析,然后将分数用作我的层次聚类的输入。

两种情况下产生的集群完全相同,这是我没想到的。谁能向我解释为什么它们是一样的?

1个回答

这是因为 PCA 分数只是旋转坐标系中的原始数据。

下面左侧显示了一些示例 2D 数据(2D 中的 100 分),右侧显示了相应的 PCA 分数。数据云只是顺时针旋转了大约 45 度。

玩具数据集:原始数据和 PC 分数

如果您不完全清楚如何从第一个子图到第二个子图,或者为什么 PCA 等于旋转,请查看我们非常丰富的线程Make sense of principal component analysis, eigenvectors & eigenvalues在我的回答中,我使用的玩具数据集与此处显示的完全相同。其他一些答案也非常值得一读。

现在,回答你的问题。

聚类方法通常基于点之间的欧几里得距离。彼此靠近的点聚集在一起;远处的那些被分配到不同的集群。正如您在上面看到的,在 PCA 之后,所有点之间的所有距离都保持完全相同。

因此,相同的聚类结果。这是用 k-means 聚类的两种表示k=3

原始数据和 PCA 旋转数据上的 K 均值

如您所见,聚类结果是相同的。


PCA 能有什么不同吗?

是的。可以通过两种方式使用它:

  1. 将所有分数标准化为单位方差;或者
  2. 仅使用主成分的子集,通常是解释最大方差的主成分。

这是同一个玩具示例中的样子。在左边我使用标准化分数(注意集群变得多么不同),在右边我只使用 PC1。

标准化 PC 分数上的 K-means 和 PC1 上的 K-means