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

机器算法验证 主成分分析
2022-02-08 14:01:24

我标准化我的数据集,然后运行 ​​3 个分量 PCA 以获得小的解释方差比([0.50, 0.1, 0.05])。

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

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

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

1个回答

取决于您的分析目标。一些常见的做法,其中一些在 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"))

第二种方法的双图

我们现在看到高大周长的树木体积大(左下角),而低体积树木的周长低且高度低(右上角)。这在直觉上是有道理的。