TDC2018SP | Trilha Machine Learning - PCA: Como saber o que realmente importa ?
1. 1
Globalcode – Open4education
PCA
O que realmente importa ?
Jacques Brawerman
Globalcode – Open4education
Aviso
O autor da palestra não está apresentando a mesma como
representante de qualquer empresa que ele tenha
trabalhado, esteja trabalhando ou que venha a trabalhar;
Os assuntos são de domínio público não expondo dados,
cases ou procedimentos desenvolvidos especificamente
para serem utilizados em uma empresa;
Todas as marcas são de propriedade dos seus respectivos
detentores;
3. 3
Globalcode – Open4education
Vamos começar a plotar os gráficos das colunas
para ver se descobrimos algo novo
Globalcode – Open4education
Dados
4. 4
Globalcode – Open4education
Apenas com o atributo ‘Sepal length’, não
conseguimos saber nada a respeito de nossos dados !
Globalcode – Open4education
Será que os outros atributos conseguem nos dar
alguma informação realmente interessante a
respeito destes dados ?
7. 7
Globalcode – Open4education
Já está começando a ficar difícil visualizar os dados ...
Globalcode – Open4education
Ainda faltam os valores do atributo do tipo ‘Petal width’
8. 8
Globalcode – Open4education
Mas, não temos como desenhar um gráfico
com 4 dimensões
Globalcode – Open4education
Imagina se tivéssemos dados com 10, 100 ou
mais colunas.
9. 9
Globalcode – Open4education
O que vamos fazer ?
Globalcode – Open4education
Podemos escolher alguns atributos e ignorar os outros.
10. 10
Globalcode – Open4education
Mas poderíamos estar perdendo informação
importante contida nos dados
Globalcode – Open4education
Que tal tentar combinar os dados de alguma forma
para que possamos utilizar todas as informações
disponíveis, mas de alguma maneira que possam ser
mais facilmente tratadas ?
11. 11
Globalcode – Open4education
O PCA é uma técnica que faz exatamente isto !
Globalcode – Open4education
Ao invés de jogar fora dados, ele os combina
formando novos dados, a fim de que nesta nova
forma, possamos fazer nossas análises apenas com
as informações mais relevantes!
12. 12
Globalcode – Open4education
É o processo de jogar dados fora
Feature Elimination
Globalcode – Open4education
É o processo de combinar os dados de forma que
possamos ficar com os mais relevantes para as
nossas análises !
Feature Extraction
13. 13
Globalcode – Open4education
PCA
É o processo de combinar os dados de forma que
possamos ficar com os mais relevantes para as
nossas análises !
Globalcode – Open4education
Mas, o que são os dados mais relevantes ?
PCA
14. 14
Globalcode – Open4education
Para saber isso, precisamos saber como os
dados se comportam!
PCA
Globalcode – Open4education
A B
12 8
23 28
25 24
11 5
25 33
24 22
20 20
média 20 20
Dados
Dados
15. 15
Globalcode – Open4education
Média
A = [12,23,25,11,25,24]
Média(A) = 20
B = [08,28,24,05,33,22]
Média(B) = 20
Globalcode – Open4education
Soma das discrepâncias
Vamos tentar somar as discrepâncias !
16. 16
Globalcode – Open4education
Soma das discrepâncias
A A - média (A)
12 -8
23 3
25 5
11 -9
25 5
24 4
20 0
média 20 0 soma
Dados
B B - média(B)
8 -12
28 8
24 4
5 -15
33 13
22 2
20 0
média 20 0 soma
Dados
Globalcode – Open4education
Soma das discrepâncias
A soma das discrepâncias também não é uma boa
medida pois sempre é igual a 0.
17. 17
Globalcode – Open4education
(Soma das discrepâncias)2
Vamos tentar a soma das discrepâncias ao quadrado !
Globalcode – Open4education
(Soma das discrepâncias)2
A C
Dados A - média (A)
12 -8 64
23 3 9
25 5 25
11 -9 81
25 5 25
24 4 16
20 0 0
média 20 soma 0 220
18. 18
Globalcode – Open4education
Variância
Se 7 dados forem todos os elementos de A
(população):
Se 7 dados não forem todos os elementos de A
(amostra):
Var(A) = 220 / 7 = 31,43
Var(A) = 220 / 6 = 36,67
Globalcode – Open4education
Variância
A = [12,23,25,11,25,24]
Média(A) = 20
Variância (A) = 36,67
B = [08,28,24,05,33,22]
Média(B) = 20
Variância (B) = 103,67
20. 20
Globalcode – Open4education
Variância
Quando queremos saber como um atributo varia
em relação ao outro, o que podemos fazer ?
Globalcode – Open4education
Covariância
Quando queremos saber como um atributo varia
em relação ao outro, o que podemos fazer ?
24. 24
Globalcode – Open4education
Matriz de covariância
Quando temos muitas variáveis e queremos ver
como cada uma se comporta em relação às
outras, fazemos uma matriz de covariâncias !
Globalcode – Open4education
Matriz de covariância
26. 26
Globalcode – Open4education
Matriz de covariância
A matriz de covariâncias é simétrica !
Globalcode – Open4education
É o processo de combinar os dados de forma que
possamos ficar com os mais relevantes para as
nossas análises !
PCA
27. 27
Globalcode – Open4education
No que a matriz de covariâncias pode nos ajudar a
achar os dados mais relevantes para nossas
análises ?
PCA
Globalcode – Open4education
Queremos dados que tenham muita informação, ou
seja, alta variância!
PCA
28. 28
Globalcode – Open4education
Queremos dados que tenham pouca redundância, ou
seja, baixa covariância.
PCA
Globalcode – Open4education
PCA
Matriz X
Matriz de covariâncias Sx
Matriz Y
Matriz de covariâncias Sy
Queremos achar uma matriz P que multiplique X e nos
leve a Y de tal forma que:
Covariâncias de Sy sejam iguais a 0;
Variâncias de Sy sejam diferentes de 0;
Sy seja uma matriz diagonal;
29. 29
Globalcode – Open4education
Mas, como gerar uma matriz diagonal Sy a partir da
matriz de covariâncias Sx ?
PCA
Globalcode – Open4education
Teorema espectral
Toda matriz simétrica é diagonalizável ortogonalmente
31. 31
Globalcode – Open4education
Teorema espectral
Toda matriz simétrica é diagonalizável ortogonalmente
Globalcode – Open4education
Teorema espectral
Toda matriz simétrica é diagonalizável ortogonalmente
32. 32
Globalcode – Open4education
Teorema espectral
Toda matriz simétrica é diagonalizável ortogonalmente
Globalcode – Open4education
Teorema espectral
Toda matriz simétrica é diagonalizável ortogonalmente
33. 33
Globalcode – Open4education
PCA
O que é uma matriz ortogonal ?
Globalcode – Open4education
Matriz ortogonal
É uma matriz onde o produto escalar entre os
vetores que formam suas colunas tem valor
igual a 0.
34. 34
Globalcode – Open4education
Matriz ortogonal
É uma matriz onde o produto escalar entre os vetores
que formam suas colunas tem valor igual a 0.
Globalcode – Open4education
Matriz ortogonal
É uma matriz onde o produto escalar entre os vetores
que formam suas colunas tem valor igual a 0.
35. 35
Globalcode – Open4education
Matriz ortogonal
É uma matriz onde o produto escalar entre os vetores
que formam suas colunas tem valor igual a 0.
Globalcode – Open4education
Matriz ortogonal
É uma matriz onde o produto escalar entre os vetores
que formam suas colunas tem valor igual a 0.
36. 36
Globalcode – Open4education
PCA
Mas, como calcular P-1 ?
Globalcode – Open4education
(Matriz ortogonal)-1 = (Matriz ortogonal)T
Em uma matriz ortogonal, a sua inversa
é igual a sua transposta !
37. 37
Globalcode – Open4education
Em uma matriz ortogonal, a sua inversa
é igual a sua transposta !
P = P-1 =
(Matriz ortogonal)-1 = (Matriz ortogonal)T
Globalcode – Open4education
Em uma matriz ortogonal, a sua inversa
é igual a sua transposta !
P = P-1 =
(Matriz ortogonal)-1 = (Matriz ortogonal)T
38. 38
Globalcode – Open4education
Em uma matriz ortogonal, a sua inversa
é igual a sua transposta !
P = P-1 =
(Matriz ortogonal)-1 = (Matriz ortogonal)T
Globalcode – Open4education
Em uma matriz ortogonal, a sua inversa
é igual a sua transposta !
P = P-1 =
(Matriz ortogonal)-1 = (Matriz ortogonal)T
39. 39
Globalcode – Open4education
Em uma matriz ortogonal, a sua inversa
é igual a sua transposta !
P = PT =
(Matriz ortogonal)-1 = (Matriz ortogonal)T
Globalcode – Open4education
PCA
Já vimos o que é uma matriz ortogonal e como
achamos a sua inversa. Mas, como calculamos
os elementos da matriz ortogonal ?
40. 40
Globalcode – Open4education
PCA
Em uma matriz simétrica, se e são autovalores
com valores diferentes, então os seus respectivos
autovetores são ortogonais
(a matriz de covariâncias é simétrica)
Globalcode – Open4education
PCA
Mas, o que são autovalores e autovetores ?
42. 42
Globalcode – Open4education
PCA
Mas, o que são autovalores e autovetores ?
Globalcode – Open4education
PCA
Em uma matriz simétrica, se e são autovalores
com valores diferentes, então os seus respectivos
autovetores são ortogonais
43. 43
Globalcode – Open4education
PCA
E se há autovalores iguais ?
Globalcode – Open4education
PCA
Aplica-se o processo de ortogonalização de
Gram-Schmidt
44. 44
Globalcode – Open4education
PCA
Como achar uma matriz ortogonal a uma
matriz simétrica ?
Globalcode – Open4education
PCA
Matriz de
covariâncias
Matriz diagonal
de autovalores
Matriz ortogonal
de autovetores
Matriz transposta da
matriz ortogonal de autovetores
q > r > s PC1 PC2 PC3
45. 45
Globalcode – Open4education
PCA
Como saber quanto de informação cada
componente principal carrega ?
Globalcode – Open4education
Matrizes similares
Duas matrizes A e B são similares se podem ser
escritas na seguinte forma:
A = P-1 . B . P
46. 46
Globalcode – Open4education
Matrizes similares
Isto não parece com nada que acabamos de ver ?
A = P-1 . B . P
Globalcode – Open4education
PCA
A = P-1 . B . P
Isto não parece com nada que acabamos de ver ?
Mat(Cov)=Mat(autovetores) -1. Mat(autovalores) . Mat(autovetores)
47. 47
Globalcode – Open4education
PCA
A = P-1 . B . P
Mat(Cov)=Mat(autovetores) -1. Mat(autovalores) . Mat(autovetores)
Duas matrizes similares possuem os mesmos traços
Globalcode – Open4education
PCA
Mas, o que é o traço de uma matriz ?
48. 48
Globalcode – Open4education
PCA
É a soma dos elementos de sua diagonal principal !
Globalcode – Open4education
Traço
Traço(Matriz de covariâncias) = a + d + f
Soma das variâncias(Matriz de covariâncias) = a + d + f
49. 49
Globalcode – Open4education
Traço
Traço(Matriz de covariâncias) = Traço(Matriz de autovalores)
Globalcode – Open4education
Traço
Traço(Matriz de covariâncias) = Traço(Matriz de autovalores)
a + d + f = q + r + s
50. 50
Globalcode – Open4education
PCA
Como saber quanto de informação cada
componente principal carrega ?
Globalcode – Open4education
PCA
Como saber quanto de informação cada
componente principal carrega ?
74,77% > 20,56% > 4,67 %
51. 51
Globalcode – Open4education
PCA
Como saber quanto de informação cada
componente principal carrega ?
74,77% > 20,56% > 4,67 %
Se precisar de 90% da informação, basta usar as duas
primeiras componentes, que somadas representam
aproximadamente 95,33% da informação.
Globalcode – Open4education
PCA
Voltando ao exemplo das flores ...
55. 55
Globalcode – Open4education
Normalizando os dados
-
-
-
-
...
(
(
(
(
) /
) /
) /
) /
Vamos normalizar cada
coluna da matriz de dados
subtraindo cada valor da
média da coluna e
dividindo pelo desvio
padrão da coluna
Globalcode – Open4education
PCA
Obtendo as matrizes necessárias
56. 56
Globalcode – Open4education
Matriz de covariâncias
Matriz de
covariâncias
Globalcode – Open4education
Matriz de covariâncias
Matriz de
covariâncias
58. 58
Globalcode – Open4education
Autovalores & Autovetores
Globalcode – Open4education
Autovalores & Autovetores
Vamos juntar cada autovalor com o seu respectivo
autovetor para podermos montar a matriz P
59. 59
Globalcode – Open4education
Autovalores & Autovetores
Ordenar por quem tem o maior autovalor
Globalcode – Open4education
PCA
Como saber quanto de informação cada componente
principal carrega ?
60. 60
Globalcode – Open4education
PCA
Como saber quanto de informação cada
componente principal carrega ?
Globalcode – Open4education
PCA
Como saber quanto de informação cada
componente principal carrega ?
61. 61
Globalcode – Open4education
PCA
Como saber quanto de informação cada componente
principal carrega ?
Globalcode – Open4education
PCA
Como saber quanto de informação cada componente
principal carrega ?
62. 62
Globalcode – Open4education
PCA
As duas primeiras componentes principais
(PC1 & PC2) possuem aproximadamente
95% da informação!
Globalcode – Open4education
PCA
Vamos criar a matriz P com as duas componentes
principais (PC1 & PC2)