Eu tenho uma matriz , contendo minhas amostras N = 20 no espaço D = 100- dimensional. Agora desejo codificar minha própria análise de componentes principais (PCA) no Matlab. Eu desprezo X para X_0 primeiro.X N = 20 D = 100 X X 0
Li no código de alguém que em tais cenários em que temos mais dimensões do que observações, não decompomos mais a matriz de covariância de . Em vez disso, Eigen-decompor . Por que isso está correto?
A matriz de covariância normal é do tamanho , cada elemento do qual nos diz a covariância entre duas dimensões. Para mim, nem sequer tem as dimensões corretas! É matriz, então o que isso nos diria? Covariância entre duas observações ?!
n<p
é preciso menos RAM e menos tempo para se decompor, XX'
pois é de tamanho menor.
XX'
para o PC. Poderia me mostrar brevemente como? Dado que os PCs são apenas vetores próprios da matriz de covariância, tentei passar de eigen de XX'
para eigen da matriz de covariância X'X
, mas falhei.
X'X
eXX'
(assim como svd deX
eX'
). O que é chamado "loadings" em um caso será chamado "pc scores" no outro e vice-versa. Como ambas são apenas coordenadas ( veja, por exemplo ) e os eixos, as "dimensões principais" são as mesmas.