Deve-se remover variáveis ​​altamente correlacionadas antes de executar o PCA?


111

Estou lendo um artigo em que o autor descarta várias variáveis ​​devido à alta correlação com outras variáveis ​​antes de fazer o PCA. O número total de variáveis ​​é de cerca de 20.

Isso oferece algum benefício? Parece uma sobrecarga para mim, pois o PCA deve lidar com isso automaticamente.


26
Apenas uma dica. Pense em como os resultados do PCA mudarão se adicionar mais e mais cópias (ou cópias próximas) de uma das variáveis.
ttnphns

@ type2, você pode citar o artigo que estava lendo?
precisa saber é o seguinte

Respostas:


123

Isso explica a dica perspicaz fornecida em um comentário por @ttnphns.

As variáveis ​​adjacentes quase correlacionadas aumentam a contribuição de seu fator subjacente comum para o PCA. Podemos ver isso geometricamente. Considere estes dados no plano XY, mostrados como uma nuvem de pontos:

Gráfico de dispersão

Há pouca correlação, covariância aproximadamente igual e os dados são centralizados: o PCA (não importa como conduzido) reportaria dois componentes aproximadamente iguais.

Vamos agora lançar uma terceira variável igual a mais uma pequena quantidade de erro aleatório. A matriz de correlação de mostra isso com os pequenos coeficientes fora da diagonal, exceto entre a segunda e a terceira linhas e colunas ( e ):Y ( X , Y , Z ) Y ZZY(X,Y,Z)YZ

(1-0,0344018-0,046076-0,034401810.941829-0,0460760.9418291)

Geometricamente, deslocamos todos os pontos originais quase na vertical, levantando a imagem anterior diretamente do plano da página. Essa nuvem de pontos pseudo 3D tenta ilustrar o levantamento com uma vista em perspectiva lateral (com base em um conjunto de dados diferente, embora gerado da mesma maneira que antes):

Gráfico 3D

Os pontos originalmente estão no plano azul e são elevados aos pontos vermelhos. O eixo original aponta para a direita. A inclinação resultante também estende os pontos ao longo das direções YZ, dobrando assim sua contribuição para a variação. Consequentemente, um PCA desses novos dados ainda identificaria dois componentes principais principais, mas agora um deles terá o dobro da variação do outro.Y

Essa expectativa geométrica é confirmada com algumas simulações no R. Por isso, repeti o procedimento de "levantamento" criando cópias quase colineares da segunda variável pela segunda, terceira, quarta e quinta vez, nomeando-as de a . Aqui está uma matriz de gráfico de dispersão mostrando como essas quatro últimas variáveis ​​estão bem correlacionadas:X 5X2X5

Matriz de dispersão

O PCA é feito usando correlações (embora realmente não importe para esses dados), usando as duas primeiras variáveis, depois três, ... e finalmente cinco. Mostro os resultados usando gráficos das contribuições dos principais componentes para a variação total.

Resultados PCA

Inicialmente, com duas variáveis ​​quase não correlacionadas, as contribuições são quase iguais (canto superior esquerdo). Depois de adicionar uma variável correlacionada à segunda - exatamente como na ilustração geométrica -, ainda existem apenas dois componentes principais, um agora com o dobro do tamanho da outra. (Um terceiro componente reflete a falta de correlação perfeita; mede a "espessura" da nuvem semelhante a uma panqueca no gráfico de dispersão 3D.) Após adicionar outra variável correlacionada ( ), o primeiro componente agora representa cerca de três quartos do total ; após a adição de um quinto, o primeiro componente representa quase quatro quintos do total. Nos quatro casos, os componentes após o segundo provavelmente seriam considerados inconseqüentes pela maioria dos procedimentos de diagnóstico da PCA; no último caso,X4um componente principal que vale a pena considerar.

Podemos ver agora que pode haver mérito em descartar variáveis ​​que se pensa estarem medindo o mesmo aspecto subjacente (mas "latente") de uma coleção de variáveis , porque a inclusão de variáveis quase redundantes pode fazer com que o PCA superestime sua contribuição. Não há nada matematicamente certo (ou errado) nesse procedimento; é uma chamada de julgamento com base nos objetivos analíticos e no conhecimento dos dados. Mas deve ficar bem claro que deixar de lado variáveis ​​conhecidas por serem fortemente correlacionadas com outras pode ter um efeito substancial nos resultados da APC.


Aqui está o Rcódigo.

n.cases <- 240               # Number of points.
n.vars <- 4                  # Number of mutually correlated variables.
set.seed(26)                 # Make these results reproducible.
eps <- rnorm(n.vars, 0, 1/4) # Make "1/4" smaller to *increase* the correlations.
x <- matrix(rnorm(n.cases * (n.vars+2)), nrow=n.cases)
beta <- rbind(c(1,rep(0, n.vars)), c(0,rep(1, n.vars)), cbind(rep(0,n.vars), diag(eps)))
y <- x%*%beta                # The variables.
cor(y)                       # Verify their correlations are as intended.
plot(data.frame(y))          # Show the scatterplot matrix.

# Perform PCA on the first 2, 3, 4, ..., n.vars+1 variables.
p <- lapply(2:dim(beta)[2], function(k) prcomp(y[, 1:k], scale=TRUE))

# Print summaries and display plots.
tmp <- lapply(p, summary)
par(mfrow=c(2,2))
tmp <- lapply(p, plot)

5
+1, figuras bonitas. O que você usou para os dois primeiros? O primeiro parece ser desenhado à mão.
gung

14
TEX

2
Isso é muito esclarecedor, whuber. Eu aprendi algo novo.
Spacey

7
O @whuber é como o estatístico mais moderno - usando gráficos XKCD como um profissional.
Cam.Davidson.Pilon

2
@ logan Em outra palavra, não. Permitam-me direcionar sua atenção para uma frase no final deste post: "Não há nada matematicamente certo (ou errado) em tal procedimento; é um julgamento baseado nos objetivos analíticos e no conhecimento dos dados".
whuber

43

Ilustrarei ainda mais o mesmo processo e idéia que o @whuber, mas com os gráficos de carregamento - porque os carregamentos são a essência dos resultados do PCA.

X1X2X3X2X4X5

As plotagens de carregamento dos 2 primeiros componentes principais desaparecem. Picos vermelhos nos gráficos indicam correlações entre as variáveis, de modo que o conjunto de vários picos é onde um conjunto de variáveis ​​fortemente correlacionadas é encontrado. Os componentes são as linhas cinzas; a "força" relativa de um componente (sua magnitude relativa do valor próprio) é dada pelo peso da linha.

insira a descrição da imagem aqui

Dois efeitos da adição de "cópias" podem ser observados:

  1. O componente 1 se torna cada vez mais forte e o componente 2 cada vez mais fraco.
  2. X1X2X3X2

Não vou retomar a moral porque a @whuber já fez isso.


r=0 0r=0,62r=0,77

X1X2r=0 0 X1X2as próprias linhas podem ser escolhidas como os componentes.] As coordenadas dos pontos de dados (200 sujeitos) em um componente são pontuações de componentes e sua soma de quadrados divididos por 200-1 é o valor próprio do componente .

rX1X2(mas adicionar uma terceira variável pode desviá-la de qualquer maneira). O ângulo (cosseno) entre um vetor variável e uma linha de componente é a correlação entre eles, e como os vetores são de comprimento unitário e os componentes são ortogonais, isso não passa de coordenadas, o carregamento . A soma das cargas quadradas no componente é seu valor próprio (o componente apenas se orienta nesse espaço de assunto para maximizá-lo)

insira a descrição da imagem aqui


Adição2. Além disso, eu estava falando sobre "espaço variável" e "espaço sujeito" como se fossem incompatíveis juntos, como água e óleo. Eu tive que reconsiderá-lo e posso dizer que - pelo menos quando falamos sobre PCA - ambos os espaços são isomórficos no final, e por essa virtude podemos exibir corretamente todos os detalhes do PCA - pontos de dados, eixos variáveis, eixos componentes, variáveis ​​como pontos, - em um único biplot sem distorção.

Abaixo estão o gráfico de dispersão (espaço variável) e o gráfico de carregamento (espaço do componente, que é o espaço sujeito por sua origem genética). Tudo o que poderia ser mostrado por um, também poderia ser mostrado por outro. As imagens são idênticas , giradas apenas 45 graus (e refletidas, neste caso em particular) uma em relação à outra. Esse foi um PCA das variáveis ​​v1 e v2 (padronizado, portanto, foi r que foi analisado). Linhas pretas nas figuras são as variáveis ​​como eixos; linhas verdes / amarelas são os componentes como eixos; pontos azuis são a nuvem de dados (sujeitos); pontos vermelhos são as variáveis ​​exibidas como pontos (vetores).

insira a descrição da imagem aqui


1
+1 ilustração interessante. BTW, sua segunda observação é um artefato dos dados: a orientação mudou porque, no primeiro caso, a correlação foi perfeita, dando um espaço e-espaço bidimensional. (Isso é extremamente raro em dados reais; geralmente significa que foi cometido um erro no banco de dados e uma variável é uma reexpressão linear de outra.) O software estava livre para escolher arbitrariamente qualquer base ortogonal para esse espaço. Apenas a menor quantidade de correlação teria removido essa degeneração. Penso, portanto, que você interpreta demais esse fenômeno de reorientação.
whuber

@ Whuber, talvez eu não te entenda. Que correlação "perfeita"? r bw X1 e X2 era 0,003; e poderia ter sido qualquer, por exemplo, 0,503. Esse seria o cos do ângulo entre os dois vetores vermelhos no gráfico. Qualquer que seja o r , o 1º PC é sempre a bissetriz enquanto apenas duas variáveis ​​estão em análise. Eu acho que sua nota The software was free to choose any orthogonal basis for that space, arbitrarilyse aplica à nuvem redonda no espaço variável (ou seja, gráfico de dispersão de dados, como a 1ª imagem na sua resposta), mas o gráfico de carregamento é um espaço de assunto em que variáveis, não casos, são pontos (vetores).
ttnphns

1
R5

Eu usei correlações (observe a matriz e o fato de que os vetores vermelhos são essencialmente do mesmo comprimento). Sim, o espaço do sujeito é um gráfico de dispersão tupsy-torvey com n eixos (sujeitos) ep pontos (variáveis). Obviamente, todas as dimensões np são redundantes e qualquer conjunto de variáveis ​​p pode ser plotado no espaço de assunto p-dimensional, mas isso não o transforma em um espaço variável! Vou apenas adicionar uma foto à minha resposta.
ttnphns

5
+1, obrigado pela contribuição adicional, @ttnphns. Isso está mudando do que eu originalmente pensava ser uma pergunta bastante simples em um segmento fabulosamente informativo.
gung

4

Sem detalhes do seu artigo, eu suporia que esse descarte de variáveis ​​altamente correlacionadas foi feito apenas para economizar energia ou carga de trabalho computacional. Não vejo uma razão para o PCA "quebrar" para variáveis ​​altamente correlacionadas. Projetar dados de volta nas bases encontradas pelo PCA tem o efeito de embranquecer os dados (ou des correlacioná-los). Esse é o ponto principal por trás do PCA.


4
Você leu a dica de @ttnphns? O PCA presta atenção não apenas aos vetores próprios (que você discute), mas também aos valores próprios (que você ignora). Isso é crítico, porque os valores próprios são usados ​​para determinar quais componentes devem ser retidos e quais devem ser descartados.
whuber

2
@ whuber Sim ... sim, acho que entendi agora. Portanto, essencialmente, mais variáveis ​​correlacionadas enfatizarão demais os vetores próprios, (direções), e se houver muitas variáveis ​​correlacionadas, haveria muitas direções 'falsas' mais enfatizadas, que abafariam um vetor / direção 'original' que caso contrário, foram facilmente vistos. Estou entendendo você certo?
Spacey

2
É bem perto, Mohammad. A realidade é que um conjunto de variáveis ​​correlacionadas pode "carregar" em vários componentes principais (vetores próprios), portanto, incluir muitas variáveis ​​desse conjunto pesará diferencialmente vários vetores próprios - e, assim, alterar as direções de todos os vetores próprios.
whuber

1

Pelo meu entendimento, as variáveis ​​correlacionadas estão bem, porque o PCA gera vetores ortogonais.


5
Você está certo, mas você se importaria de explicar por que a ortogonalidade tem alguma importância em descartar ou não variáveis ​​com antecedência?
whuber

-1

Bem, isso depende do seu algoritmo. Variáveis ​​altamente correlacionadas podem significar uma matriz mal condicionada. Se você usar um algoritmo sensível a isso, poderá fazer sentido. Mas ouso dizer que a maioria dos algoritmos modernos usados ​​para gerar valores próprios e vetores próprios são robustos a isso. Tente remover as variáveis ​​altamente correlacionadas. Os valores próprios e o vetor próprio mudam muito? Se o fizerem, o mau condicionamento pode ser a resposta. Como variáveis ​​altamente correlacionadas não adicionam informações, a decomposição do PCA não deve mudar


4
Infelizmente, o PCA faz mudar: é quase garantido.
whuber

1
@ Whuber Wow, enorme quantidade de respostas e muito informativo. Desculpe pelo meu comentário, estava totalmente errado. Minha culpa. Resposta muito informativa BTW
Juancentro 22/02

4
Aprendo o máximo das respostas totalmente erradas, Juancentro - especialmente as minhas, que felizmente raramente saem em público :-). Tive pensamentos semelhantes aos seus até que o @ttnphns deixou um comentário.
whuber

-1

Depende de qual princípio o método de seleção de componentes que você usa, não é?

Eu costumo usar qualquer componente principal com um valor próprio> 1. Portanto, isso não me afetaria.

E a partir dos exemplos acima, mesmo o método scree plot geralmente escolheria o método correto. SE VOCÊ MANTER TUDO ANTES DO COTOVELO. No entanto, se você simplesmente selecionasse o componente principal com o valor próprio 'dominante', seria desviado. Mas esse não é o caminho certo para usar um scree plot!


5
Bem-vindo ao site, Chris. Infelizmente, nenhum desses procedimentos ad-hoc é particularmente defensável. Observe que, no primeiro caso, você não pode alterar a forma dos seus dados e deixar de selecionar todos eles para selecionar nenhum deles (apenas multiplicando tudo por uma constante).
cardeal
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.