Por que os autovetores de PCA são ortogonais, mas correlacionados?

8

Eu já vi ótimos posts explicando o PCA e por que, sob essa abordagem, os autovetores de uma matriz de correlação (simétrica) são ortogonais. Também entendo as maneiras de mostrar que esses vetores são ortogonais entre si (por exemplo, pegar os produtos cruzados da matriz desses vetores próprios resultará em uma matriz com entradas fora da diagonal que são zero).

Minha primeira pergunta é: quando você olha para as correlações dos vetores próprios de um PCA, por que as entradas fora da diagonal da matriz de correlação são diferentes de zero (ou seja, como os vetores próprios podem ser correlacionados se forem ortogonais)?

Essa pergunta não é diretamente sobre o PCA, mas eu a coloquei nesse contexto, pois foi assim que me deparei com o problema. Estou usando R e especificamente o pacote psych para executar o PCA.

Se ajudar a ter um exemplo, este post no StackOverflow tem um que é muito conveniente e relacionado (também em R). Neste post, o autor da melhor resposta mostra que as cargas de PCA (vetores próprios) são ortogonais usando Congratência de fator ou produtos cruzados. No seu exemplo, a matriz Lé a matriz de carregamentos do PCA. A única coisa que não está nesse link é que cor(L)produzirá a saída que estou perguntando sobre mostrar correlações diferentes de zero entre os vetores próprios.

Estou especialmente confuso sobre como os vetores ortogonais podem ser correlacionados após a leitura deste post, o que parece provar que a ortogonalidade é equivalente à falta de correlação: por que os autovetores de PCA são ortogonais e qual a relação com as pontuações de PCA que não estão correlacionadas?

Minha segunda pergunta é: quando os autovetores PCA são usados ​​para calcular as pontuações PCA, as próprias pontuações não são correlacionadas (como eu esperava) ... existe uma conexão com minha primeira pergunta sobre isso, por que os autovetores são correlacionados, mas não as pontuações?

huckleberry
fonte
11
Parece que você está computando a matriz de correlação dos vetores próprios. Os autovetores são ortogonais , implicando que os produtos pontuais entre eles são zero, não as correlações. O que não deve ser correlacionado são as projeções dos dados nos vetores próprios, não nos próprios vetores.
usar o seguinte comando
11
Os vetores próprios são apenas quantidades fixas, não variáveis ​​aleatórias. Não faz sentido falar sobre correlações entre eles, porque eles não flutuam.
Moss Murderer
2
A chave é que os autovetores não têm zero médio (por exemplo, é completamente possível que todos os elementos de um autovetor sejam positivos). Portanto, o fato de serem ortogonais não implica que seus elementos não estejam correlacionados (para calcular a correlação, precisamos subtrair os meios).
Ameba
2
@Moss Pelo contrário, os autovetores emitidos pelo PCA, por serem funções dos dados, são de fato variáveis ​​aleatórias. Isso pode ser o que está causando confusão, porque agora a "ortogonalidade ... dos autovetores" tem múltiplas interpretações: ortogonalidade como vetores euclidianos, falta de correlação de seus componentes (como variáveis ​​aleatórias) e até ortogonalidade dos autovetores do verdadeiro multivariado subjacente distribuição presumida para gerar os dados.
whuber
@ whuber: Isso faz sentido. Eu estava pensando nos autovetores como um parâmetro e não como uma estatística.
Moss Murderer

Respostas:

3

Seja um vetor aleatório com valor esperado e variação . Estamos procurando por vetores ordenados , que maximizem a variação de . Essencialmente, estamos resolvendoComo estamos interessados ​​apenas na direção desses vetores, assumimos adicionalmente o comprimento unitário dos vetores . Os vetores na verdade não são aleatórios (porque estamos trabalhando teoricamente agora, na realidade estamos substituindo o desconhecido e desconhecidoXX=(x1,x2,,xd)TμΣuiuiTX

maxuiVar(uiTX)
s.t.uiTui=1.
uiTui=1uiΣμcom matriz empírica de covariância de amostra e média, respectivamente, @whuber explicava isso de uma perspectiva diferente), entãoO problema de otimização pode ser resolvido trivialmente usando a função Lagrange A partir daí, obtemos a condição necessária para extremos limitados que pode ser reduzida para isto é, por definição, o problema dos valores próprios e dos vetores próprios. Como é uma matriz semidefinida simétrica e positiva, o teorema espectral se aplica e somos capazes de encontrar bases ortonormais que satisfaçam
Var(uiTX)=uiTΣui.
L(ui,λi):=uiTΣuiλi(uiTui1).
L(ui,λi)ui=2Σui2λiui=0,
Σui=λiui,
ΣΣ=QΛQ1=QΛQT , em que é feito de vetores próprios ortogonais e é uma matriz diagonal com valores próprios reais.QΛ

Agora podemos mostrar queTrivialmente paraPortanto, não os autovetores, mas as projeções não são correlacionadas.

cov(uiTX,ujTX)=uiTΣuj=λjuiTuj=0,ji.
i=j:cov(uiTX,ujTX)=λi.
ExabytE
fonte
1

Observe que Lé a matriz de carregamento, também conhecida como vetores próprios. Esta não é a matriz de dados do PCA. Os vetores próprios são obrigados a fornecer ortogonalidade, mas não . Por exemplo, considere a matriz:cov=0

> X <- iris
> X$Species <- as.numeric(X$Species)
> head(X)
  Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1          5.1         3.5          1.4         0.2       1
2          4.9         3.0          1.4         0.2       1
3          4.7         3.2          1.3         0.2       1
4          4.6         3.1          1.5         0.2       1
5          5.0         3.6          1.4         0.2       1
6          5.4         3.9          1.7         0.4       1

No PCA, não apenas você obtém os autovetores da matriz de covariância / correlação (depende do método), mas eles também estão sendo ortonormais (ou seja, para cada autovetor ), então nós pegue:uj=1uj

> prcomp(X)$rotation
                     PC1         PC2        PC3         PC4        PC5
Sepal.Length  0.33402494 -0.68852577  0.4414776 -0.43312829  0.1784853
Sepal.Width  -0.08034626 -0.68474905 -0.6114140  0.30348725 -0.2423462
Petal.Length  0.80059273  0.09713877  0.1466787  0.49080356 -0.2953177
Petal.Width   0.33657862  0.06894557 -0.4202025  0.06667133  0.8372253
Species       0.35740442  0.20703034 -0.4828930 -0.68917499 -0.3482135

e

> cor(prcomp(X)$rotation)
            PC1         PC2         PC3          PC4          PC5
PC1  1.00000000  0.62712979  0.57079328  0.147574029 -0.072934736
PC2  0.62712979  1.00000000 -0.22763304 -0.058852698  0.029086459
PC3  0.57079328 -0.22763304  1.00000000 -0.053565825  0.026473556
PC4  0.14757403 -0.05885270 -0.05356582  1.000000000  0.006844526
PC5 -0.07293474  0.02908646  0.02647356  0.006844526  1.000000000

mas observe que os dados do PCA são

> head(prcomp(X)$x)
           PC1        PC2          PC3          PC4          PC5
[1,] -2.865415 -0.2962946 -0.041870662 -0.078464301 -0.032047052
[2,] -2.892047  0.1837851  0.175540800 -0.143582265  0.053428970
[3,] -3.054980  0.1748266 -0.049705391 -0.045339514 -0.001205543
[4,] -2.920230  0.3315818 -0.003376012  0.065785303 -0.053882996
[5,] -2.906852 -0.2959169 -0.147159821 -0.004802747 -0.074130194
[6,] -2.489852 -0.7338212 -0.194029844  0.073567444  0.003409809

e sua correlação é

> round(cor(prcomp(X)$x),14)
    PC1 PC2 PC3 PC4 PC5
PC1   1   0   0   0   0
PC2   0   1   0   0   0
PC3   0   0   1   0   0
PC4   0   0   0   1   0
PC5   0   0   0   0   1
Spätzle
fonte