A não normalização dos dados antes do PCA fornece uma melhor taxa de variação explicada

19

Normalizei meu conjunto de dados e, em seguida, executei o PCA de 3 componentes para obter pequenas razões de variação explicadas ([0,50, 0,1, 0,05]).

Quando não normalizei, mas embranqueci meu conjunto de dados e executei o PCA de 3 componentes, obtive altas taxas de variação explicadas ([0,86, 0,06,0,01]).

Como quero reter o máximo de dados em três componentes, NÃO devo normalizar os dados? Pelo meu entendimento, sempre devemos normalizar antes do PCA.

Normalizando: definindo média para 0 e tendo variação de unidade.


fonte
3
Embora não esteja claro o que você quer dizer com "normalizando" os dados (conheço pelo menos quatro maneiras padrão de fazer isso no PCA e provavelmente há mais), parece que o material em stats.stackexchange.com/questions/53 pode estar iluminando.
whuber
Oi whubber: Quero dizer normalizar cada observação a norma unidade
1
Obrigado. O termo usual para isso é "padronização". Quando você faz isso, está executando o PCA com base em correlações: é por isso que acho que o link que forneci já pode responder à sua pergunta. No entanto, não vejo nenhuma das respostas lá realmente explicando por que ou como você obterá resultados diferentes (talvez porque seja complexo e o efeito da padronização possa ser difícil de prever).
whuber
1
O clareamento antes do PCA é típico? Qual é o objetivo de fazer isso?
shadowtalker
2
Se você estava trabalhando com imagens, por exemplo, a norma das imagens corresponde ao brilho. A alta variação explicada dos dados não normalizados significa que muitos dados podem ser explicados por alterações no brilho. Se o brilho não for importante para você, como muitas vezes não é no processamento de imagens, convém tornar todas as unidades de imagens em primeiro lugar. Ainda pensei que a variância explicada de seus componentes pca será menor, reflete melhor o que você está em interessado.
Aaron

Respostas:

37

Depende do objetivo da sua análise. Algumas práticas comuns, algumas das quais são mencionadas no link do whuber:

  1. A padronização geralmente é feita quando as variáveis ​​nas quais o PCA é executado não são medidas na mesma escala. Observe que padronizar implica atribuir igual importância a todas as variáveis.
  2. Se eles não forem medidos na mesma escala e você optar por trabalhar com variáveis ​​não padronizadas, geralmente é o caso de cada PC ser dominado por uma única variável e você obterá uma ordenação das variáveis ​​por sua variação. (Uma das cargas de cada componente (inicial) estará próxima de +1 ou -1.)
  3. Os dois métodos geralmente levam a resultados diferentes, como você experimentou.

Exemplo intuitivo:

Suponha que você tenha duas variáveis: a altura de uma árvore e a circunferência da mesma árvore. Converteremos o volume em um fator: uma árvore terá alto volume se seu volume for maior que 20 pés cúbicos e, caso contrário, com baixo volume. Usaremos o conjunto de dados de árvores que vem pré-carregado em R.

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

Agora, suponha que a altura fosse realmente medida em quilômetros, em vez de pés.

>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

O primeiro componente explica quase 100% da variabilidade nos dados. As cargas:

> loadings(tree.pca)

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

Avaliação gráfica:

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

Biplot do primeiro método

Vemos que as árvores com alto volume tendem a ter um perímetro elevado, mas a altura das três não fornece nenhuma informação sobre o volume da árvore. Provavelmente, isso está errado e a consequência das duas medidas unitárias diferentes.

Poderíamos usar as mesmas unidades ou padronizar as variáveis. Espero que ambos levem a uma imagem mais equilibrada da variabilidade. É claro que, neste caso, pode-se argumentar que as variáveis ​​devem ter a mesma unidade, mas não devem ser padronizadas, o que pode ser um argumento válido, se não estivéssemos medindo duas coisas diferentes. (Quando mediríamos o peso e a circunferência da árvore, a escala na qual ambas devem ser medidas não é mais muito clara. Nesse caso, temos um argumento claro para trabalhar com as variáveis ​​padronizadas.)

>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"))

Biplot do segundo método

Vemos agora que as árvores altas e com grande perímetro têm alto volume (canto inferior esquerdo), em comparação com perímetro baixo e baixa altura para árvores de baixo volume (canto superior direito). Isso intuitivamente faz sentido.

Se observarmos atentamente, porém, vemos que o contraste entre volume alto / baixo é mais forte na direção da circunferência e não na direção da altura. Vamos ver o que acontece quando padronizamos:

>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"))

Biplot do terceiro método

De fato, a circunferência agora explica a maior parte da diferença em árvores de alto e baixo volume! (O comprimento da seta no biplot é indicativo da variação na variável original.) Portanto, mesmo que as coisas sejam medidas na mesma escala, a padronização pode ser útil. Não padronizar pode ser recomendado quando comparamos, por exemplo, o comprimento de diferentes espécies de árvores, porque essa é exatamente a mesma medida.

Matt.135
fonte
2
(+1) Resposta muito boa, realmente superando todos os dados no encadeamento popular vinculado sobre PCA em covariância vs. correlação.
Ameba diz Reinstate Monica