PCA 图的楔形形状表明什么?

机器算法验证 数据可视化 主成分分析
2022-03-05 22:16:57

在他们关于文本分类自动编码器的论文中, Hinton 和 Salakhutdinov 展示了二维 LSA(与 PCA 密切相关)产生的图:2-dim LSA.

将 PCA 应用于完全不同的稍微高维的数据,我得到了一个看起来相似的图:(2 维 PCA除了在这种情况下,我真的很想知道是否有任何内部结构)。

如果我们将随机数据输入 PCA,我们会得到一个圆盘状的 blob,所以这个楔形形状不是随机的。它本身意味着什么吗?

1个回答

假设变量是正数或非负数,则边缘的边缘只是数据将分别变为 0 或负数的点。由于这种现实生活中的数据往往是右偏的,我们在分布的低端看到更大的点密度,因此在楔形的“点”处的密度更大。

更一般地说,PCA 只是数据的旋转,对这些数据的约束通常会以与问题中所示相同的方式在主成分中可见。

这是一个使用多个对数正态分布变量的示例:

library("vegan")
set.seed(1)
df <- data.frame(matrix(rlnorm(5*10000), ncol = 5))
plot(rda(df), display = "sites")

在此处输入图像描述

根据前两台 PC 所暗示的旋转,您可能会看到楔形,或者您可能会看到稍微不同的版本,使用 (ordirgl()代替plot())在 3d 中显示

在此处输入图像描述

在这里,在 3d 中,我们看到从中心质量突出的多个尖峰。

对于高斯随机变量(),其中每个变量具有相同的均值和方差,我们看到一个点球体Xi(N)(μ=0,σ=1)

set.seed(1)
df2 <- data.frame(matrix(rnorm(5*10000), ncol = 5))
plot(rda(df2), display = "sites")

在此处输入图像描述

在此处输入图像描述

对于统一的正随机变量,我们看到一个立方体

set.seed(1)
df3 <- data.frame(matrix(runif(3*10000), ncol = 3))
plot(rda(df3), display = "sites")

在此处输入图像描述

在此处输入图像描述

请注意,在这里,为了说明,我仅使用 3 个随机变量来显示制服,因此这些点描述了 3d 中的立方体。对于更高维度/更多变量,我们无法在 3d 中完美地表示 5d 超立方体,因此不同的“立方体”形状会有些失真。类似的问题会影响显示的其他示例,但仍然很容易看到这些示例中的约束。

对于您的数据,在 PCA 之前对变量进行对数转换会拉入尾部并拉伸聚集的数据,就像您可能在线性回归中使用这种转换一样。

PCA图中可能会出现其他形状;一种这样的形状是保存在 PCA 中的度量表示的人工制品,被称为马蹄形对于具有长梯度或显性梯度的数据(沿单个维度排列的样本,其中变量从 0 增加到最大值,然后沿数据的部分再次减小到 0,众所周知会产生此类伪影。考虑

ll <- data.frame(Species1 = c(1,2,4,7,8,7,4,2,1,rep(0,10)),
                 Species2 = c(rep(0, 5),1,2,4,7,8,7,4,2,1, rep(0, 5)),
                 Species3 = c(rep(0, 10),1,2,4,7,8,7,4,2,1))
rownames(ll) <- paste0("site", seq_len(NROW(ll)))
matplot(ll, type = "o", col = 1:3, pch = 21:23, bg = 1:3,
        ylab = "Abundance", xlab = "Sites")

在此处输入图像描述

这产生了一个极端的马蹄形,轴末端的点弯曲回到中间。

在此处输入图像描述