我想知道是否有一种情况,您会在主要组件(PC)中看到您通过单独查看PCA所基于的变量而看不到的内容。例如,考虑到群体差异的情况:您在其中一台PC中看到两组分离,而不是单一变量(单变量)。
我将在二维设置中使用一个例子来更好地说明我的问题:让我们假设我们有两个组,A和B,并且对于每个观察,我们有两个多元正态分布的协变量。
# First Setting:
group_A <- mvrnorm(n=1000, mu=c(0,0), Sigma=matrix(c(10,3,3,2),2,2))
group_B <- mvrnorm(n=1000, mu=c(10,3), Sigma=matrix(c(10,3,3,2),2,2))
dat <- rbind(cbind.data.frame(group_A, group="A"),cbind.data.frame(group_B, group="B"))
plot(dat[,1:2], xlab="x", ylab="y", col=dat[,"group"])
在第一个设置中,您会在变量y中看到变量y中的组分隔,并且您还会看到两个主要组件中的分隔。 因此,使用PCA我们得到的结果与单变量情况相同:A组和B组在变量x和y中具有不同的值。
在我自己生成的第二个例子中,您没有在变量x,变量y或PC1或PC2中看到分离。因此,尽管我们的常识表明我们可以基于x和y来区分这两个组,我们在单变量情况下没有观察到这一点,并且PCA也没有帮助我们:
# Second setting
group_A <- mvrnorm(n=1000, mu=c(0,0), Sigma=matrix(c(10,3,3,2),2,2))
group_B <- mvrnorm(n=1000, mu=c(0,0), Sigma=matrix(c(10,-3,-3,2),2,2))
dat <- rbind(cbind.data.frame(group_A, group="A"),cbind.data.frame(group_B, group="B"))
plot(dat[,1:2], xlab="x", ylab="y", col=dat[,"group"])
问题:PCA是否有助于我们提取我们在单变量情况下无法看到的相关性或分离?你可以构建一个,或者在二维情况下这是不可能的。
先谢谢大家帮助我解开这个问题。
答案 0 :(得分:0)
我认为你的问题主要是误解了PCA的作用。它找不到像kmeans或DBSCAN这样的数据集群。它将n维数据投影到正交基础上。然后它选择前k个维度(根据解释的方差),其中k <1。 Ñ
因此,在您的示例中,PCA不知道A组是由某个分发生成的,而B组是由另一个分发生成的。它只是在2维中看到数据并找到两个主要组件(您可以从中选择或不选择1)。您也可以用相同的颜色绘制所有2000个数据点。
但是,如果您想在此实例中使用PCA,则表示第3维区别于A组和B组。例如,您可以标记组A +1和组B -1(或相对于其他维度的比例有意义的东西)。然后在3维上执行PCA,减少到2或1,具体取决于特征值告诉您所解释的变化。