PCA para redução de dimensionalidade | Dimensões decrescentes com PCA

Conteúdo

Este artigo foi publicado como parte do Data Science Blogathon.

Introdução

Este artigo lhe dará clareza sobre o que é a redução de dimensionalidade, sua necessidade e como funciona. Também há código Python para ilustração e comparação entre PCA, ICA e t-SNE.

O que é redução de dimensionalidade e por que precisamos de

A redução da dimensionalidade é simplesmente reduzir o número de recursos (colunas) enquanto retém o máximo de informações. A seguir estão as razões para a redução da dimensionalidade:

  • A redução da dimensionalidade ajuda na compressão de dados e, portanto, reduz o espaço de armazenamento.
  • Reduza o tempo de cálculo.
  • Também ajuda a eliminar recursos redundantes, sim, existem.
  • Remover funções mapeadas.
  • Reduzir as dimensões dos dados para 2D ou 3D pode nos permitir traçar e visualizar com precisão. A seguir, pode ver os padrões mais claramente.
  • Também é útil para remover ruído e, como resultado disso, nós podemos melhorar

Existem muitos métodos para redução de dimensionalidade como PCA, ICA, t-SNE, etc., veremos PCA (Análise do componente principal).

Vamos primeiro entender o que é em formação em dados. Considere os seguintes dados imaginários, quem é velho, peso e altura das pessoas.

27588picture1-8073345

Figura 1

Como a 'Altura’ de todas as pessoas é o mesmo, quer dizer, a variação é 0, então não adiciona nenhuma informação, para que possamos excluir a coluna ‘Height’ sem perder nenhuma informação.

Agora que sabemos que a informação é variação, Vamos entender como funciona o PCA. Em PCA, nós encontramos novas dimensões (caracteristicas) que capturam a variação máxima (quer dizer, em formação). Para entender isso, usaremos o exemplo anterior. Depois de remover 'Height', Nós temos 'Idade’ e 'Peso'. Essas duas características cuidam de todas as informações. Em outras palavras, podemos dizer que precisamos 2 caracteristicas (Idade e Altura) para conter a informação, e se pudermos encontrar um novo recurso que sozinho pode conter todas as informações, podemos substituir as características de origem 2 com um novo recurso exclusivo, alcançando a redução de dimensionalidade!

48715picture2-9325909

Agora considere uma linha (linha pontilhada azul) o que passa por todos os pontos. A linha pontilhada azul está capturando todas as informações, para que possamos substituir 'Idade’ e 'Peso’ (2 dimensões) com linha pontilhada azul (1 dimensão) sem perder nenhuma informação, e neste w

Você se pergunta como encontramos a linha pontilhada azul (componente principal), então há muita matemática por trás disso.. Você pode ler Este artigo o que explica isso, mas em palavras simples, encontramos as direções em que podemos capturar variância máxima usando autovalores e autovetores.

Ilustração de PCA em Python

Vamos ver como usar o PCA com um exemplo. Usei dados de qualidade do vinho que 12 características como acidez, açúcar residual, cloretos, etc., e a qualidade do vinho para 1600 amostras. Você pode baixar o caderno jupyter daqui e siga.

Primeiro, vamos carregar os dados.

importar numpy como np
importar pandas como pd
de sklearn.decomposition import PCA
df = pd.read_csv('winequality-red.csv')
df.head()
y = df.pop('qualidade')
62859captura-6188689

Depois de carregar os dados, nós eliminamos a 'Qualidade’ Do vinho, uma vez que é a característica alvo. Agora vamos dimensionar os dados, porque senão, O PCA não será capaz de encontrar os componentes principais ideais. Por ex. temos uma característica em 'metros’ e outro em ‘quilômetros’, a característica com unidade 'metro’ terá mais variação do que ‘quilômetros’ (1 km = 1000 m), então o PCA dará mais importância à característica com alta variância . Então, vamos fazer a escala.

de sklearn.preprocessing import StandardScaler
escalar = StandardScaler()
df_scaled = pd.DataFrame(scalar.fit_transform(df), colunas = df.columns)
df_scaled
29349capture 4-1003513

Agora nós

pca = PCA()
df_pca = pd.DataFrame(pca.fit_transform(df_scaled))
df_pca
48365captura 5-8154357

Depois de aplicar PCA, obtemos 11 componentes principais. É interessante ver quanta variação cada componente principal captura.

import matplotlib.pyplot as plt
pd.DataFrame(pca.explained_variance_ratio_).plot.bar()
plt.legend('')
plt.xlabel('Componentes Principais')
plt.ylabel('Variância Explicada');
65519capture 6-6715542

Os primeiros 5 captura de componentes principais em torno do 80% da variância, para que possamos substituir o 11 características originais (acidez, açúcar residual, cloretos, etc.) com o novo 5 características que têm o 80% da informação. Portanto, nós reduzimos o 11 dimensões apenas 5 dimensões, mantendo a maior parte das informações.

Diferença entre PCA, ICA e t-SNE

81779img-5003467

Como este artigo se concentra nas idéias básicas por trás da redução de dimensionalidade e como funciona o PCA, não vamos entrar em detalhes, mas aqueles que estão interessados ​​podem passar por Este artigo.

Em resumo, PCA reduz dimensionalidade enquanto captura a maior parte da variação. Agora, ficaria animado em aplicar o PCA aos seus dados, mas antes disso, Quero destacar algumas das desvantagens do PCA:

  • Variáveis ​​independentes tornam-se menos interpretáveis
  • A padronização de dados é uma obrigação antes do PCA
  • Perda de informação

Espero que você encontre este artigo informativo. Obrigado!

A mídia mostrada neste artigo não é propriedade da DataPeaker e é usada a critério do autor.

Assine a nossa newsletter

Nós não enviaremos SPAM para você. Nós odiamos isso tanto quanto você.

Datapeaker