Primeira vez aqui? Seja bem vindo e cheque o FAQ!
x

O que é o método em estatística conhecido como Análise dos Componentes Principais (Principal Component Analysis - PCA)?

+1 voto
1,078 visitas
perguntada Ago 14, 2015 em Estatística por danielcajueiro (5,376 pontos)  

NespressoPCA

Compartilhe

1 Resposta

+3 votos
respondida Ago 14, 2015 por danielcajueiro (5,376 pontos)  
editado Ago 15, 2015 por danielcajueiro

Antes de abordar o método matematicamente, vamos tentar ganhar intuição sobre o problema.

Imagine que você seja fanático por cafés e um amigo te peça sugestões de capsulas de café e você deseje apresenta-las. Você conhece bem as capsulas da Nespresso e sabe que elas são classificadas da seguinte forma:

1) Tamanho ideal da xícara

2) Intensidade

3) Pela inclusão de uma proporção de ítens como cacau, baunilha, frutas vermelhas e vinhos etc.

4) Proporção de cafeína

Quais dessa variáveis acima são as mais interessantes para expressar os tipos de capsulas de café? Obviamente, se uma determinada variável não varia na amostra, ela não é interessante para diferenciar uma capsula da outra. Por outro lado, pode ser que existam combinações dessas características que sejam melhores para representar capsulas do que elas individualmente e nem todas variáveis sejam realmente necessárias. Por exemplo, as capsulas sem cafeína em geral possuem baixa intensidade de café. Logo, talvez exista uma variável que poderia ser criada combinando intensidade e proporção de cafeína que possa expressar melhor as diferenças das capsulas acima. De fato, existem situações em que o número de variáveis é tão grande que você gostará de trabalhar com apenas um subconjunto dessas variáveis.

É justamente isso que a Análise dos Componentes Principais faz. Ela busca um subconjunto dessas variáveis que representam melhor uma determinada matriz de dados.

É válido mencionar que no caso da Nespresso (e provavelmente) outras marcas de café, algumas dessas variáveis são categóricas como, por exemplo, o tamanho da xícara que varia em três categorias (Ristreto, Expresso e Lungo). A versão mais comum de análise dos componentes principais normalmente supõe que todas as variáveis são contínuas e para fazer aplicações a conjuntos de dados que possuem variáveis discretas normalmente pequenas modificações precisam ser feitas. Entretanto, é óbvio que, no exemplo acima, usamos apenas as capsulas de Nespresso como uma abstração.

Como definir matematicamente?

A análise dos componentes principais é uma técnica usada para reduzir um conjunto de variáveis (possivelmente correlacionadas) em um conjunto menor de projeções ortogonais não correlacionadas das variáveis originais que são chamadas de componentes principais. Os componentes principais são ordenados de acordo com a sua variância, isto é, do impacto que eles têm na dispersão do dados.

A dedução matemática do método vem diretamente dessa definição apresentada acima. Vamos precisar de noções dos conceitos matemáticos conhecidos como autovalores e autovetores. Se você não entende bem esses conceitos, dê uma olhada aqui.

Seja \(X=X_1,\cdots,X_R\) um vetor de \(R\) variáveis com média \(\mu_X\) e variância \(\Sigma_{XX}\). A análise dos componentes principais busca representar essas variáveis por um conjunto menor de projeções ortogonais \(\xi_1,\cdots,\xi_r\) dadas por

\[\xi_i=\beta_{i1} X_1 +\cdots + \beta_{iR} X_R, \; i=1,\cdots,r\]

Note que a variância de \(\xi_i, \; i=1,\cdots ,r\), é dada por

\[\mathrm{var}(\xi_i)=\beta_{i}^{\prime}\Sigma_{XX}\beta_i\]

Logo, o primeiro componente \(\xi_1\) é encontrado maximizando a função \(\mathrm{var}(\xi_1)\) sujeita a restrição \(\beta_{1}^{\prime}\beta_{1}=1\), pois não desejamos que a variância \(\mathrm{var}(\xi_1)\) aumente simplesmente porque estamos aumentando os tamanhos dos \(\beta\)s.

Para resolver esse problema, transformamos esse problema de otimização restrita, no seguinte problema de otimização irrestrita (se você não sabe resolver problemas com restrição de igualdade, veja aqui):

\[\max_{\lambda_1,\beta_1} \mathcal{L}(\lambda_1,\beta_1),\]

onde \(\mathcal{L}(\lambda_1,\beta_1)=\beta_{1}^{\prime}\Sigma_{XX}\beta_1 + \lambda_1 (\beta_{1}^{\prime}\beta_{1}-1)\).

Derivando em relação a \(\lambda_1\) e \(\beta_1\) e igualando a zero, chegamos ao seguinte conjunto de equações

\[(\Sigma_{XX}-\lambda_1 I)\beta_1=0.\]

Logo, \(\lambda_1\) é o maior autovalor da matriz \(\Sigma_{XX}\) e \(\beta_1\) é um autovetor associado a \(\lambda_1\).

Podemos proceder da mesma forma para encontrar \(\beta_2\) adicionando a restrição adicional \(\beta_{2}^{\prime}\beta_{1}=0\) e encontraremos também um resultado análogo. Adicionalmente, podemos fazer esse procedimento para encontrar todos os vetores de parâmetros desejados.

É ainda válido mencionar que como \(\Sigma_{XX}\) é simétrica positiva definida, ela possui decomposição espectral dada por \(\Sigma_{XX}=\sum_{i=1}^{R}\lambda_i V_i\), onde \(V_i=\beta_{i}\beta_{i}^{\prime}\). Como a norma \(||\beta_i||=1\), então \(\frac{\sum_{i=1}^{r}\lambda_i}{\sum_{i=1}^{R}\lambda_i}\) pode ser usado para medir a qualidade da aproximação dada pelas primeiras \(r\) variáveis.

Para mais detalhes, você pode olhar as seguintes referências aqui.

Como gerar os componentes principais a partir de uma amostra?

O cálculo dos componentes principais para uma amostra depende do cálculo das médias e dos desvios amostrais para a construção da matriz de variância-covariância amostral. Depois que isso é feito, calculamos os autovalores e autovetores dessa matriz. Veja os detalhes dessa implementação aqui em Python.

Na figura a seguir geramos dados a partir de uma distribuição normal bivariada com variáveis com média zero e matriz de covariância dada por

\[\left[\begin{array}{cc} 4 & 1.5 \\ 1.5 & 2 \\ \end{array}\right]\]

Veja que os dois autovetores inseridos nessa figura que tem tamanho proporcional aos seus autovalores apontam na direção da máxima variância.

Relembrando o problema de café Nespresso descrito acima, veja que as características descritas pelos autovetores representam bem melhor as variáveis que os eixos \(X\) e \(Y\) originais desse problema. O que ocorreria se as variáveis \(x\) e \(y\) fossem não correlacionadas? Os autovetores apontariam exatamente na direção dos eixos originais. Por que você não modifica o código em Python descrito acima para checar essa idéia?

EigenvectorsPCAprincipalComponentAnalysis

comentou Nov 29, 2015 por Iúri Honda (141 pontos)  
Incrível como eu saí da intuição de matrizes para cá. Esses links internos entre as perguntas estão muito bons.
comentou Nov 29, 2015 por danielcajueiro (5,376 pontos)  
Legal! É importante conectar as perguntas interessantes e relacionadas, pois um cara entra para saber mais sobre um tópico e acaba sabendo mais sobre outro também!
...