在PCA提供更好的解释方差比之前不对数据进行归一化


19

我对数据集进行了归一化处理,然后运行了3个分量PCA,以获得较小的解释方差比([0.50,0.1,0.05])。

当我不进行标准化但变白的数据集然后运行3分量PCA时,我得到了较高的解释方差比([0.86,0.06,0.01])。

由于我想将尽可能多的数据保留为3个组成部分,因此我不应该对数据进行规范化吗?据我了解,我们应该始终在PCA之前将其标准化。

通过归一化:将均值设置为0并具有单位方差。

pca 

3
虽然目前还不清楚你所说的“正常化”的数据(我知道的至少有四个标准方式PCA做到这一点,可能有更多的)的意思,它听起来就像是在材料stats.stackexchange.com/questions/53威力照亮。
ub

嗨,惠伯伯:我的意思是将每个观察值标准化为单位范数

1
谢谢。通常的说法是“标准化”。当您这样做时,您将基于相关性执行PCA:这就是为什么我认为我提供的链接可能已经回答了您的问题。但是,我没有看到任何答案可以真正解释为什么或如何获得不同的结果(可能是因为它很复杂,标准化的效果可能很难预测)。
ub

1
PCA之前的美白是典型的吗?这样做的目的是什么?
shadowtalker

2
例如,如果您使用图像,则图像的范数与亮度相对应。未归一化数据的高解释方差意味着可以通过亮度变化来解释很多数据。如果亮度对您而言并不重要,因为亮度通常在图像处理中并不重要,那么您将需要首先使所有图像成为标准单位。即使想到了解释你的PCA分量的变化会更低,它能更好地反映你所感兴趣的问题。
阿伦

Answers:


37

取决于您的分析目标。一些常见的做法,在whuber的链接中提到了一些:

  1. 当执行PCA的变量未在同一范围内测量时,通常会进行标准化。注意,标准化意味着对所有变量都给予同等的重视。
  2. 如果不是以相同的比例来度量它们,而您选择使用非标准变量,则通常情况是每个PC都由一个变量控制,而您只是通过变量的方差来获得某种排序。(每个(早期)组件的加载之一接近+1或-1。)
  3. 正如您所经历的,这两种方法通常会导致不同的结果。

直观的例子:

假设您有两个变量:一棵树的高度和同一棵树的围长。我们将体积转换为一个因子:如果树的体积大于20立方英尺,则树的体积将为高,否则为零。我们将使用预装在R中的树木数据集。

>data(trees)
>tree.girth<-trees[,1]
>tree.height<-trees[,2]
>tree.vol<-as.factor(ifelse(trees[,3]>20,"high","low"))

现在假设高度实际上是用英里而不是英尺来度量的。

>tree.height<-tree.height/5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
>summary(tree.pca)
Importance of components:
                      Comp.1       Comp.2
Standard deviation     3.0871086 1.014551e-03
Proportion of Variance 0.9999999 1.080050e-07
Cumulative Proportion  0.9999999 1.000000e+00

第一部分解释了数据中几乎100%的可变性。负载:

> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height        -1    
tree.girth   1           

图形评估:

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

第一种方法的基准

我们看到高树木的树木往往有很高的周长,但是这三个高度并没有提供有关树木体积的任何信息。这可能是错误的,并且是两种不同的单位度量的结果。

我们可以使用相同的单位,也可以标准化变量。我希望两者都会使变异性更加平衡。当然,在这种情况下,如果不是我们要测量两个不同的事物,则可以认为变量应该具有相同的单位,但不能标准化,这可能是一个有效的论据。(当我们要测量树的重量和树的周长时,测量树的尺度不再是很明确的。在这种情况下,我们有明确的论据可以对标准化变量进行研究。)

>tree.height<-tree.height*5280
>tree<-cbind(tree.height,tree.girth)
>
>#do the PCA
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1    Comp.2
Standard deviation     6.5088696 2.5407042
Proportion of Variance 0.8677775 0.1322225
Cumulative Proportion  0.8677775 1.0000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height -0.956  0.293
tree.girth  -0.293 -0.956

>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

第二种方法的基准

现在,我们看到高大且周长大的树木的体积大(左下角),而小体积大树的低周长和低高度(右上角)相比。从直觉上讲这很有意义。

但是,如果仔细观察,我们会发现高/低音量之间的对比度在周长方向上最强,而在高度方向上最强。让我们看看我们标准化时会发生什么:

>tree<-scale(tree,center=F,scale=T)
>tree.pca<-princomp(tree)
> summary(tree.pca)
Importance of components:
                          Comp.1     Comp.2
Standard deviation     0.2275561 0.06779544
Proportion of Variance 0.9184749 0.08152510
Cumulative Proportion  0.9184749 1.00000000
> loadings(tree.pca)

Loadings:
            Comp.1 Comp.2
tree.height  0.203 -0.979
tree.girth   0.979  0.203
>biplot(tree.pca,xlabs=tree.vol,col=c("grey","red"))

第三种方法的基准

实际上,周长可以解释高音量和低音量树木的大部分差异!(双线图中箭头的长度指示原始变量的方差。)因此,即使以相同的比例进行度量,标准化也可能有用。例如,当我们比较不同树种的长度时,建议不要进行标准化,因为这是完全相同的度量。


2
(+1)非常好的答案,实际上超过了有关协方差与相关性的PCA链接流行主题中给出的所有答案。
变形虫说恢复莫妮卡2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.