23 Março 2018

O que é o PCA – Principal Component Analysis e como aplicá-lo a um conjunto de dados

Muitas vezes, os conjuntos de dados que se pretende analisar são caracterizados por inúmeros atributos. A existência de um elevado número de dimensões (N) associada a estes conjuntos de dados faz com que visualizá-los graficamente seja impossível, uma vez que a nossa capacidade de análise visual está limitada a um espaço bidimensional e tridimensional. Neste cenário, o facto de ser possível reduzir o número de dimensões dos dados sem que haja uma perda significativa de informação adquire um papel importante na análise dos mesmos. Ao ser possível reduzir de N para 2 ou 3 dimensões, os dados podem ser visualizados graficamente, facilitando, assim, a sua compreensão e exploração, de modo a que seja mais fácil encontrar padrões nos dados em análise. Esta técnica que permite determinar como reduzir o número de dimensões de um conjunto de dados, de modo a minimizar a perda de informação/fidelidade subjacente nas características dos mesmos é designada por Dimension Reduction. De seguida, será abordado o que é o Principal Component Analysis (PCA).

O que é o Principal Component Analysis (PCA)?

Uma das técnicas mais utilizadas na redução de dimensionalidade é um método estatístico designado por Principal Component Analysis (PCA). O PCA é caracterizado por identificar as dimensões ao longo das quais os dados se encontram mais dispersos. Desta forma, conseguimos identificar as dimensões que melhor diferenciam o conjunto de dados em análise, ou seja, os seus componentes principais.

Usando esta técnica, é possível realçar as semelhanças e diferenças neles existentes através da identificação de padrões. A sua identificação em dados caraterizados por grandes dimensões é difícil, uma vez que a sua representação gráfica não é viável, logo uma análise visual aos dados não é possível. Quando identificados os padrões no conjunto, o número de dimensões a analisar pode ser reduzido sem que haja uma perda significativa de informação, pois o foco recai sobre a análise das dimensões principais que caracterizam o conjunto de dados.

Como aplicar o PCA a um conjunto de dados?

Suponhamos que temos um conjunto de dados composto por duas dimensões (X e Y), tal como ilustrado na figura abaixo.

Figura 1 – Conjunto de dados inicial

Graficamente, estes dados podem ser representados da seguinte forma:

 

Figura 2 – Representação gráfica do conjunto de dados de 2 dimensões

Para aplicar o PCA a este conjunto de dados é necessário executar os seguintes passos:

1º) Subtrair a Média

O primeiro passo na execução do PCA consiste em normalizar os dados, isto é, subtrair a média de cada uma das dimensões que caracterizam o conjunto de dados, de modo a obter um novo conjunto, cuja a média é 0. Para este exemplo, é necessário calcular X-Média(X)  e  Y-Média(Y)  , obtendo-se assim um novo conjunto de dados.

Média:

Figura 3 – Média, Normalização dos dados e representação gráfica dos dados normalizados.

2º) Calcular a Matriz de Covariância

A variância e a covariância são duas medidas utilizadas em estatística. A variância indica quão dispersos estão os dados de uma dimensão em relação à média, “ignorando” a existência de outras dimensões. A covariância, por sua vez, aplica-se a duas dimensões, permitindo assim perceber como ambas estão relacionadas entre si. Esta medida indica quanto as dimensões variam em relação à média, tendo em conta a relação que existe entre elas. Ao calcular a covariância entre duas dimensões, podemos deduzir como elas se relacionam entre si, ao efetuar a seguinte análise:

• cov(X,Y) > 0: Se a covariância entre as dimensões X e Y for positiva, ambas as dimensões estão diretamente relacionadas entre si, ou seja, se os valores de X aumentam, os valores de Y também aumentam.
• cov(X,Y) < 0: Se a covariância entre as dimensões X e Y for negativa, ambas as dimensões estão inversamente relacionadas entre si, ou seja, se os valores de X aumentam, os valores de Y diminuem. • cov(X,Y) = 0: Se a covariância entre as dimensões X e Y for nula, verifica-se que as dimensões são independentes uma da outra, como tal o comportamento da dimensão X não influencia o comportamento da dimensão Y. Variância:

 

Covariância:

 

De modo a percebermos como é que todas as dimensões do conjunto de dados se relacionam entre si, é necessário calcular as covariâncias entre todas as dimensões do conjunto. Uma forma útil de obter todos os valores de covariância possíveis entre todas as diferentes dimensões do conjunto de dados consiste em calculá-las e escrevê-las sob a forma de uma matriz. Para este exemplo em particular, por termos apenas um conjunto de dados composto por 2 dimensões, a nossa matriz de covariância será uma matriz 2x2 representada da seguinte forma:

 

Note-se que a cov(X,Y) = cov(Y,X) e que a cov(X,X) =

Com os novos dados obtidos no passo 1) criamos uma matriz:

Figura 4 – Matriz do conjunto de dados normalizados.

A partir da nova matriz, calculamos a matriz de covariância:

Figura 5 – Matriz de covariância dos dados normalizados.

É de notar que a cov(X,Y) < 0, como tal podemos deduzir que as dimensões X e Y estão inversamente relacionadas entre si.

3º) Calcular os Vetores Próprios e os Valores próprios a partir da matriz de covariância

Os vetores próprios e os valores próprios representam as características principais de uma matriz. Relativamente aos vetores próprios, estes são caraterizados pelas seguintes propriedades:

• Apenas existem em matrizes quadradas (NxN)
• Numa matriz NxN existe N vetores próprios
• São ortogonais entre si
• São calculados de modo a que o seu comprimento seja unitário.

Para determinar os vetores próprios de uma matriz é necessário calcular primeiro os seus valores próprios. Os valores próprios são valores escalares que se obtêm resolvendo a seguinte equação:

 

Sendo A a matriz para a qual se pretende encontrar os vetores próprios, I a matriz identidade e λ o(s) valor(es) próprio(s) a encontrar.

Como calcular o determinante de uma matriz?

Este cálculo é feito através da seguinte fórmula:

 

Por exemplo, para uma matriz 2×2, em que   o det(A) é dado por:

 

 

Utilizando a matriz de covariância obtida no passo 2), obtemos os seguintes valores próprios:

Figura 6 – Valores próprios da matriz de covariância.

Encontrados os valores próprios, utilizamos os mesmos para obter os respetivos vetores próprios. Novamente, através da resolução de uma equação:

Sendo  o vetor próprio associado ao valor próprio .

 

Figura 7 – Vetores Próprios da matriz de covariância.

Os vetores próprios da matriz de covariância dão-nos informação acerca dos padrões existentes nos dados. Ao projetarmos estes vetores sobre os dados normalizados conseguimos visualizar mais facilmente esta informação.

 

Figura 8 – Projeção dos dados normalizados, orientados pelos respetivos vetores próprios.

Ao analisarmos o gráfico, reparamos que o vetor próprio X2 atravessa o conjunto dos dados, passando pelo meio dos pontos. Isto indica-nos o quão relacionado está este vetor com os dados em análise. Já o vetor próprio X1, revela-nos outro padrão nos dados, indicando que todos os pontos tendem a seguir a linha principal (representada pelo vetor X2), permanecendo os mesmos afastados da linha principal por um certo valor. Desta análise, conseguimos inferir que o vetor próprio X2 é o componente principal, caracterizando melhor os dados que o vetor próprio X1.

4º) Ordenar os vetores próprios por ordem decrescente dos seus valores próprios

Uma vez determinados os vetores próprios do conjunto de dados, o próximo passo consiste em ordená-los por ordem decrescente do respetivo valor próprio. Desta forma, conseguimos saber quais as dimensões mais importantes do conjunto em análise, ou seja, quais os seus componentes principais.

No passo anterior, deduzimos que o vetor próprio que melhor caracteriza o conjunto de dados do exemplo é o vetor próprio X2. De facto, o valor próprio de X2 (lambda 2) é superior ao valor próprio de X1 (lambda 1) e, por essa razão, X2 é o componente principal do conjunto de dados.

Figura 9 – Valores e vetores próprios ordenados por ordem decrescente.

5º) Escolher p (p < N) componentes principais de um conjunto com N dimensões

Sabendo quais as dimensões mais importantes do conjunto de dados, as dimensões menos relevantes podem ser ignoradas, sem que haja uma perda significativa de informação, caso os seus valores próprios sejam pequenos. Se optarmos por ignorar os componentes menos importantes, o conjunto de dados final terá menos dimensões.

Quer isto dizer que, se inicialmente tivermos um conjunto de dados composto por N dimensões, após o cálculo dos seus N vetores e valores próprios e respetiva ordenação, escolhemos apenas os primeiros p componentes e obtemos um novo conjunto de dados constituído por p dimensões que representa o conjunto original. Criamos assim uma matriz formada por p vetores próprios, designada por Feature Vector(F).

6º) Transformar o conjunto de dados normalizado num novo conjunto

Seja F a matriz dos vetores próprios ordenada pelo vetor próprio de maior importância da esquerda para a direita e M a matriz que representa o conjunto de dados normalizados:

Figura 10 – Feature Vector.

Figura 11 – Conjunto de dados normalizados M

Através do Feature Vector  podemos transformar os dados normalizados , de modo a que estes passem a ser representados segundo um novo sistema de coordenadas, dado pelos vetores próprios da matriz F. Esta transformação dos dados é feita, multiplicando a matriz transposta de F  pela matriz transposta de . O resultado dá origem à matriz  que representa o conjunto de dados original orientado segundo os novos eixos definido pelos vetores próprios.

Figura 12 – Conjunto de dados transformados no novo sistema de coordenadas (R), definido pelos vetores próprios.

Se optarmos por manter os dois vetores próprios para a transformação dos dados, obtemos o seguinte gráfico:

 

Figura 13 – Conjunto de dados R, representado pelos 2 componentes principais.

Este gráfico nada mais é que os dados do conjunto transformados segundo os eixos definidos pelos vetores próprios, após uma rotação dos mesmos, de modo a que coincidam com os eixos X e Y. O vetor X2 sofreu uma rotação de 315°, enquanto o vetor X1 sofreu uma rotação de 135° (no sentido dos ponteiros do relógio).

Estes dados correspondem aos dados originais, uma vez que ao manter os 2 vetores próprios não houve perda de informação, apenas uma transformação dos dados num novo sistema de coordenadas.

Todavia, se optarmos por transformar os dados de modo a manter apenas o componente principal deste conjunto de dados, ignorando a existência do segundo vetor próprio, os dados seriam representados numa única dimensão (Y=0). Obteríamos, assim, o seguinte gráfico:

 

Figura 14 – Conjunto de dados R, representado pelo componente principal.

Como obter novamente o conjunto de dados inicial?

A partir dos dados transformados no novo sistema de coordenadas , é possível obter o conjunto de dados original. Se optarmos por manter os 2 vetores próprios aquando a transformação de dados, conseguimos obter exatamente o conjunto de dados original. No entanto, se reduzirmos o número de vetores próprios na transformação final dos dados para um, verificar-se-á uma perda de informação nos dados recuperados.

Ao transformar o conjunto de dados inicial num novo sistema de coordenadas, utilizámos a seguinte fórmula:

Para obtermos o conjunto de dados original ( ), reajustámos a fórmula acima para:

Como a matriz F representa a matriz de vetores próprios, tratando-se, portanto, de uma matriz ortogonal, a sua inversa é equivalente à transposta de  que, por sua vez, é igual à matriz  . Assim sendo, esta fórmula pode ser reescrita da seguinte forma:

A matriz M representa o conjunto de dados normalizado, ou seja, o conjunto de dados aos quais a média foi subtraída. Para obter o conjunto de dados original teremos de adicionar a média, subtraída, inicialmente, no 1º passo:

Aplicando a fórmula de recuperação do conjunto de dados original ao exemplo e considerando a matriz F formada pelos 2 vetores próprios, obtemos o seguinte conjunto de dados:

Figura 15 – Conjunto de dados inicial recuperado a partir do conjunto de dados transformados.

Este novo conjunto de dados corresponde exatamente ao conjunto de dados inicial. Como se pode observar, não houve perda de informação aquando a recuperação dos dados, pelo que o gráfico obtido é igual ao gráfico inicial.

 

 

 

Figura 16 – Representação gráfica do conjunto de dados recuperado a partir dos dados transformados (gráfico da esquerda). Representação gráfica do conjunto de dados inicial (gráfico da direita).

No entanto, se na matriz F optarmos por manter apenas 1 vetor próprio (componente principal) e ignorarmos o segundo, ao recuperar o conjunto de dados inicial, verificamos uma pequena perda de informação, dando origem a um gráfico não muito diferente do inicial.

Figura 17 – Conjunto de dados inicial recuperado a partir dos dados transformados (1 componente principal).

 

Figura 18 – Representação gráfica do conjunto de dados inicial recuperado a partir dos dados transformados (1 componente principal) (gráfico da esquerda). Representação gráfica do conjunto de dados inicial (gráfico da direita).

Em suma, com esta análise, conseguimos mostrar, para um exemplo, como o PCA é capaz de transformar os dados num novo sistema de coordenadas, garantindo que:

• a primeira coordenada (1º componente principal) represente o eixo sobre o qual a variância dos dados é maior, ou seja, onde se verifica uma maior dispersão dos dados do conjunto;
• a segunda coordenada (2º componente principal) represente o eixo com a segunda maior variância.

E como, após a aplicação do PCA, conseguimos perceber quais as dimensões principais que caraterizam um conjunto de dados. Ao analisá-los, as dimensões menos significativas podem ser ignoradas sem que haja uma perda significativa de informação, tal como se pôde observar com a reconstrução do conjunto inicial a partir dos dados transformados, quando considerado apenas o 1º componente principal deste conjunto.