Skip to content

Principal Component Analysis

Até agora, já tivemos experiências que mostram que o Espaço é semântico, vetores que estão mais próximos um do outro são mais similares (como no caso que a solução aproximada de um Sistema Linear sem solução é o vetor do Espaço Coluna mais próximo de \(\mathbf{b}\)).

Relembre

Sistema Linear sem solução dos Mínimos Quadrados

Entretanto, se temos o vetor como uma lista de propriedades numéricas, então podemos ter algumas propriedades que são redundantes, assim essas propriedades podem inflacionar o quanto um vetor está próximo um do outro.

Exemplo

Estamos estudando os comportamentos de crianças de acordo com algumas características que quantificamos, 2 delas são: tamanho do pé e grau do vocabulário.

Estranhamente essas duas propriedades estão muito correlacionadas, estatisticamente aumentar o tamanho do pé significa aumentar o grau do vocabulário, mas isso só acontece por conta de uma terceira propriedade.

A terceira propriedade é a idade, que é a maior causa das duas propriedades e do motivo da correlação grande.

Então, até agora já temos 3 dimensões que medem "uma característica", mas podemos ter ainda mais propriedades que dependem da idade, assim a característica idade terá sua importância aumentada artificialmente para ditar se 2 vetores são similares.

Dica

Aqui já é um bom ponto para garantirmos que sabemos a definição e a visualização do que é Correlação, consequentemente Covariância e Variância:

Visualização do vídeo

Então, note que precisamos fazer uma manutenção nos dados que recebemos para manter uma semântica do Espaço razoável, no exemplo dado deveríamos de alguma forma diminuir a importância da idade na hora de relacionar vetores, essa é uma das motivações para o PCA.

A outra motivação é a ideia de compressão, trabalhar com todos os dados disponíveis pode ser muito custoso, queremos de alguma forma comprimir a informação de similaridade entre 2 vetores. Para isso usamos a ideia de que algumas dimensões dão mais informações de similaridade do que outras.

Exemplo: temos alguns objetos com 3 propriedades numéricas e separamos eles em 2 categorias: vermelhos e azuis, se recebemos um novo objeto queremos saber se ele é vermelho ou azul.

Note que a dimensão z nos dá pouca informação de similaridade:

  • o intervalo de valores de z é [-1, 1] então influenciará menos na distância entre os pontos

  • apenas olhando para z não parece haver um padrão claro para diferenciarmos as categorias

Então podemos reduzir o Espaço Ambiente 3D para o plano xy sem perdermos muita informação.

Redução para o 2D

Agora percebemos que os valores de x e y são muito correlacionados, caso tivéssemos mais dimensões importantes isso afetaria a distância entre os pontos, com isso podemos reduzir mais uma dimensão sem perdermos informação considerável:

Redução para 1D

Agora classificar novos pontos seria só considerar qual intervalo aquele ponto cairia.

Note a semelhança com os Mínimos Quadrados, onde definíamos uma reta que aproximava os pontos, a diferença é que no contexto dos Mínimos Quadrados considerávamos que só as variáveis y continham erro, a variável x era independente e tínhamos certeza de seu valor.

Porém, agora só queremos uma reta que minimize a distância dos pontos até a reta, consideramos que os erros estão em todas as dimensões.

Exemplo

Geometricamente, queremos minimizar a soma dos (tamanhos das linhas entre os pontos e a reta)\(^2\):

Mínimos Quadrados: Mínimos Quadrados

PCA: PCA

Podemos definir isso matematicamente como:

\[min \sum_{i=1} ||(\mathbf{\vec{v}} \cdot \mathbf{p_i})\mathbf{\vec{v}} - \mathbf{p_i}||^2 \]

Onde \(\mathbf{\vec{v}}\) é o vetor unitário que define a reta e \(\mathbf{p_i}\) são os pontos (objetos) que temos, projetamos os pontos na reta e achamos os vetores que conectam as projeções com os pontos.

Relembre

Projeção

Relembre

Subtração de vetores

Nota

Note que dissemos que "\(\mathbf{\vec{v}}\) é o vetor unitário que define a reta", porém precisamos de um ponto e de um vetor para definirmos uma reta, isso acontece pois assumimos que o ponto é a origem.

Os valores de todos os objetos para uma determinada propriedade pode ser vista como uma Distribuição, note que o valor absoluto de uma propriedade não importa, o que importa são os valores em relação um ao outro, por conta disso Normalizamos a Distribuição (movemos os dados para ficar com a média da Distribuição igual a zero).

Isso facilita muito o cálculo de variância pois não precisamos subtrair a média.

Outra operação importante é a Padronização, onde condensamos a distribuição para termos Desvio Padrão (e variância) igual a 1, assim tiramos as diferenças de escala entre diferentes propriedades.

Isso facilita, pois a covariância de duas Distribuições Padronizadas já é a Correlação.

Exemplo: Propriedades como altura e salário em uma matriz de Dados

\(A = \begin{pmatrix} 1.7 & 1.8 \\ 1000 & 5000 \end{pmatrix}\)

Subtraímos as médias e dividimos os Desvios Padrões

\(A = \begin{pmatrix} -0.05 & 0.05 \\ -2000 & 2000 \end{pmatrix}\)

Ao calcularmos a variância geralmente dividimos por \(n-1\) ao invés de \(n\)

\(A = \begin{pmatrix} -0.71 & 0.71 \\ -0.71 & 0.71 \end{pmatrix}\)

No entanto, existe uma otimização equivalente que é mais fácil, ao invés de minimizar as distâncias, podemos achar uma reta que maximiza a variância das projeções:

\[\max{ \sum_{i=1} (\mathbf{\vec{v}} \cdot \mathbf{p_i})^2 }\]

Podemos ver isso pelo teorema de Pitágoras, pois a hipotenusa está fixa, então minimizar um cateto significa maximizar o outro:

\[||p_i||^2 = (\mathbf{\vec{v}} \cdot \mathbf{p_i})^2 + ||(\mathbf{\vec{v}} \cdot \mathbf{p_i})\mathbf{\vec{v}} - \mathbf{p_i}||^2\]

Podemos expandir essa relação:

Relembre

Dualidade do Produto Interno

\[\max{ \sum_{i=1} (\mathbf{\vec{v}}^T \mathbf{p_i})^2 }\]
\[\max{ \sum_{i=1} \mathbf{\vec{v}}^T \mathbf{p_i} \mathbf{\vec{v}}^T \mathbf{p_i} }\]
\[\max{ \mathbf{\vec{v}}^T \sum_{i=1}\mathbf{p_i} \mathbf{p_i}^T \mathbf{\vec{v}} }\]
Relembre

Soma de Produtos Externos

Se juntarmos todos os vetores como as colunas de uma matriz \(A\), então:

\[\sum_{i=1}\mathbf{p_i} \mathbf{p_i}^T = AA^T\]

Podemos interpretar \(AA^T\) como uma multiplicação por Produto Interno, então note que o Produto Interno dos valores (já normalizados) de uma propriedade com os valores de outra propriedade é justamente a covariância multiplicado por n.

\[\max{ \mathbf{\vec{v}}^T AA^T \mathbf{\vec{v}} }\]

Usando Cálculo (Multiplicadores de Lagrange) para esse problema de otimização, chegamos a conclusão que os valores de \(\mathbf{\vec{v}}\) que maximizam essa relação são os Autovetores de \(AA^T\), como os Autovetores são Ortogonais é como se estivéssemos criando novos eixos e novas coordenadas para o Espaço.

Exemplo

Note que \(AA^T\) é quase a matriz de Covariância \(C\), só precisamos multiplicar uma escalar \(\frac{1}{n}\), podemos dizer que essas matrizes são paralelas.

Matrizes paralelas têm os mesmos Autovetores, então podemos fazer PCA usando a matriz de Covariância.

Como a quantidade de variância contida em cada eixo depende do Autovalor associado, então podemos excluir os eixos com menor Autovalor (reduzir a dimensionalidade) sem perdermos muita informação.

Aplicação

Visualização do vídeo

Para testar a compreensão e ver mais características do PCA:

Visualização do vídeo


<Anterior