我已经阅读了很多,并尝试了不同的方法来进行聚类分析。在第一种情况下,我在 matlab 中对我的原始数据(200 个流域和 16 个变量)进行了层次聚类分析并绘制了聚类图。
我的第二次尝试包括对原始数据进行主成分分析,然后将分数用作我的层次聚类的输入。
两种情况下产生的集群完全相同,这是我没想到的。谁能向我解释为什么它们是一样的?
我已经阅读了很多,并尝试了不同的方法来进行聚类分析。在第一种情况下,我在 matlab 中对我的原始数据(200 个流域和 16 个变量)进行了层次聚类分析并绘制了聚类图。
我的第二次尝试包括对原始数据进行主成分分析,然后将分数用作我的层次聚类的输入。
两种情况下产生的集群完全相同,这是我没想到的。谁能向我解释为什么它们是一样的?
这是因为 PCA 分数只是旋转坐标系中的原始数据。
下面左侧显示了一些示例 2D 数据(2D 中的 100 分),右侧显示了相应的 PCA 分数。数据云只是顺时针旋转了大约 45 度。
如果您不完全清楚如何从第一个子图到第二个子图,或者为什么 PCA 等于旋转,请查看我们非常丰富的线程Make sense of principal component analysis, eigenvectors & eigenvalues。在我的回答中,我使用的玩具数据集与此处显示的完全相同。其他一些答案也非常值得一读。
现在,回答你的问题。
聚类方法通常基于点之间的欧几里得距离。彼此靠近的点聚集在一起;远处的那些被分配到不同的集群。正如您在上面看到的,在 PCA 之后,所有点之间的所有距离都保持完全相同。
因此,相同的聚类结果。这是用 k-means 聚类的两种表示:
如您所见,聚类结果是相同的。
PCA 能有什么不同吗?
是的。可以通过两种方式使用它:
这是同一个玩具示例中的样子。在左边我使用标准化分数(注意集群变得多么不同),在右边我只使用 PC1。