PCA em Sklearn

PCA em Sklearn
O PCA (Análise de Componentes Principais) é um algoritmo matemático que transforma as observações de variáveis ​​correlacionadas em um conjunto de valores de variáveis ​​linearmente não correlacionadas, conhecidas como componentes principais. PCA é um dos algoritmos mais populares para redução de dimensionalidade. Karl Pearson (Li, 1901) inventou o PCA em 1901, definindo como “identificando linhas e planos de ajuste mais próximo dos sistemas de pontos no espaço”.

Discutiremos os detalhes do PCA e sua implementação usando Sklearn.

O que é PCA?

Análise de componentes principais (PCA) é um método de redução de dados. Quando você tem muitas medidas para cada caso, mas algumas delas estão correlacionadas entre si, esse método é usado. Os principais componentes usam a correlação para diminuir o número de variáveis ​​necessárias para caracterizar cada situação adequadamente, dependendo dos resultados. Mas uma análise de componentes principais provavelmente revelará que, apesar das dez medidas, apenas três variáveis ​​estavam sendo medidas. É mais provável que tenham sprint, pulando e jogando habilidade-três, em vez de dez características. Os componentes principais forneceriam coeficientes para cada uma das dez pontuações, indicando quanto cada pontuação entra na nova corrida, pular e lança pontuações. As três pontuações compostas também diriam quanto da variação total é contabilizada. Trabalhar com três variáveis ​​é mais fácil do que trabalhar com 10 e, se eles consideram a maior parte da flutuação, você capturou todas as informações das dez pontuações em três.

A técnica se torna muito mais útil quando você tem centenas de medições. No entanto, podemos encontrar um problema: algumas de nossas propriedades de entrada estão conectadas. Dependendo da força da associação, isso pode indicar que incluímos dimensões extras em nossos dados de entrada quando poderíamos adquirir a mesma quantidade de informações com menos. O PCA fornece uma técnica sistemática para determinar quais combinações de recursos parecem ser mais responsáveis ​​pela variação de dados do que outros e fornece algumas recomendações para reduzir o número de dimensões em nossa entrada. Isso não quer dizer que o PCA nos diga quais características não são necessárias; Em vez disso, nos mostra como integrar recursos em um subespaço menor sem perder (muito) informações. Tradicionalmente, reduzir o número de dimensões antes de alimentar dados em algoritmos ML tem sido útil porque reduz a complexidade e o tempo de processamento. No entanto, devo ressaltar que o PCA não é uma panacéia, mas uma ferramenta fantástica quando funciona.

Exemplo 1

Considere o caso do conjunto de dados D, que contém dados bidimensionais ao longo do y = x linha. Esses dados são representados em duas dimensões, com um x e y ponto para cada ponto de dados. O vetor seria identificado como a direção da variação máxima via PCA e este vetor seria usado como o novo eixo x. Agora podemos representar o conjunto de dados em apenas uma dimensão. Como resultado, o PCA é uma técnica de redução de dimensionalidade focada em localizar os maiores vetores de variância.

Exemplo 2

Suponha que seus dados estejam ao longo de uma linha em duas dimensões. Nesse caso, o PCA reconhece rapidamente que seus X e Y estão associados e desenvolve um novo sistema de coordenadas ortogonais para maximizar a variação na primeira coordenada. Como resultado, o segundo componente (primário) não tem capacidade preditiva e você provavelmente pode removê -lo de seus modelos sem causar muito dano. Você conseguiu projetar duas dimensões em uma sem perder muita informação neste método. Embora você possa fazer isso visualmente em duas dimensões, pode ser um pouco mais difícil no n dimensão.

Recursos do PCA

Transformando os dados em uma escala comparável. Alguns recursos em um conjunto de dados podem ser extremamente altos (1 a 100). Por outro lado, outros são extremamente baixos (0 a 1), resultando em altos recursos com maior impacto nas previsões de saída do que os dados de recursos baixos.

Para identificar as correlações entre todos os recursos, calcule a covariância de dados.

Em seguida, encontre os autovalores e os autovetores da matriz de covariância. Depois disso, classifique os autovetores, diminuindo os valores próprios e selecione os k autovetores com os maiores valores próprios.

Para transformar as amostras no novo subespaço, use esta matriz de vetor próprio.

Pode ser usado para descobrir se existem correlações entre suas variáveis. Se você tem variáveis ​​tridimensionais e seu plano bidimensional com melhor ajuste as captura com precisão, os valores na terceira dimensão provavelmente serão uma função linear dos dois primeiros, mais ou menos algum ruído gaussiano.

Em vez de transmitir pontos de dados n-dimensionais, você pode usar o PCA para comunicar coordenadas M-dimensionais em um subespaço de melhor ajuste se precisar transmitir dados (mais a equação do subespaço). Pode ser usado para compactar dados também. Se o ajuste for perfeito, você não perderá informações; Se estiver perto, você perderá um pouco.

Como muitos algoritmos de aprendizado de máquina funcionam melhor quando cada variável adiciona novas informações, ela é frequentemente usada no aprendizado de máquina para encontrar e excluir variáveis ​​redundantes no seu conjunto de dados.

Nem sempre encontra duplicação real e não linear. Se você interpretar o PCA estatisticamente, precisará fazer algumas suposições sobre as relações subjacentes entre as variáveis ​​/ o seu ruído. Ainda assim, é uma ferramenta altamente valiosa, mesmo que algumas suposições não sejam ideais.

Implementando PCA em Sklearn

importar numpy como np
de Sklearn.Decomposição Importar PCA
X = np.Array ([[1, 2], [2, 1], [3, 2], [2, 3], [4, 5], [5, 4]]))
PCA = PCA (n_Components = 2)
PCA.ajuste (x)
Imprimir (PCA.explicado_varare_ratio_)
Imprimir (PCA.singular_values_)

Saída
[0.86153846 0.13846154]
[4.3204938 1.73205081]

Conclusão

Este artigo discutiu a análise de componentes principais e sua implementação usando Sklearn. Sklearn é uma biblioteca Python popular usada para desenvolver modelos de aprendizado de máquina. O PCA reduz a maldição da dimensionalidade, direcionando dados de alta dimensão para dimensões mais baixas sem perder muita informação. O PCA pode ser implementado usando Sklearn com o 'Sklearn.Classe de decomposição.