A análise de componentes principais (PCA) é geralmente explicada por meio de uma decomposição por si própria da matriz de covariância. No entanto, também pode ser realizado via decomposição de valor singular (SVD) da matriz de dados . Como funciona? Qual é a conexão entre essas duas abordagens? Qual é a relação entre SVD e PCA?
Ou, em outras palavras, como usar o SVD da matriz de dados para realizar a redução da dimensionalidade?
Respostas:
Seja a matriz de dados tamanho de n × p , onde n é o número de amostras ep é o número de variáveis. Vamos supor que ele esteja centralizado , ou seja, os meios das colunas foram subtraídos e agora são iguais a zero.X n × p n p
Em seguida, o matriz covariância C é dada por C = X ⊤ X / ( n - 1 ) . É uma matriz simétrica e, portanto, pode ser diagonalizada: C = V L V ⊤ , onde V é uma matriz de vetores próprios (cada coluna é um vetor próprio) e L é uma matriz diagonal com valores próprios λ i em ordem decrescente na diagonal . Os autovetores são chamados eixos principais oup×p C C=X⊤X/(n−1)
Se agora realizarmos a decomposição do valor singular de , obteremos uma decomposição X = U S V ⊤ , onde U é uma matriz unitária e S é a matriz diagonal dos valores singulares s i . A partir daqui, pode-se ver facilmente que C = V S U ⊤ U S V ⊤ / ( n - 1 ) = V S 2X
Para resumir:
Links adicionais
Qual é a relação intuitiva entre SVD e PCA - um tópico muito popular e muito semelhante no math.SE.
Por que PCA de dados por meio de SVD dos dados? - uma discussão sobre quais são os benefícios da realização da PCA via SVD [resposta curta: estabilidade numérica].
A análise de PCA e Correspondência em relação ao Biplot - PCA no contexto de algumas técnicas congênicas, todas baseadas em SVD.
Existe alguma vantagem do SVD sobre o PCA? - uma pergunta perguntando se existem benefícios no uso de SVD em vez de PCA [resposta curta: pergunta incorreta].
Compreendendo a análise de componentes principais, os vetores próprios e os valores próprios - minha resposta fornece uma explicação não técnica do PCA. Para chamar a atenção, reproduzo uma figura aqui:
fonte
Eu escrevi um trecho de código Python & Numpy que acompanha a resposta da @ amoeba e deixo aqui caso seja útil para alguém. Os comentários são retirados principalmente da resposta da @ amoeba.
fonte
A matriz de covariância
Entro em mais alguns detalhes e benefícios do relacionamento entre PCA e SVD neste artigo mais longo .
fonte