Tradução de: Beginners Guide To Learn Dimension Reduction Techniques
Autor: SUNIL RAY
Introdução
"A brevidade é a alma da sabedoria"
Este é um dito poderoso de William Shakespeare que se aplica bem às técnicas usadas na ciência e análise de dados. Curioso? Permita-me provar isso usando uma história breve.
Em Maio de 2015 foi realizado um Hackathon Dados (uma competição de ciência de dados) em Delhi-NCR, Índia.
Demos as participantes o desafio de identificar o Reconhecimento de Atividade Humana usando conjunto de dados de smartphones. O conjunto de dados tinha 561 variáveis para o modelo de treinamento usado para a identificação de atividade humana dentro do conjunto de dados de teste.
Os participantes do hackaton tinham experiência e nível de especialização diverso. Como esperado, os mais experientes fizeram um trabalho notável em identificar a atividade humana. No entanto, iniciantes e intermediários tiveram problemas em lidar com o enorme número de variáveis do conjunto de dados (561 variáveis). Sob pressão de tempo, eles tentaram usar variáveis sem realmente entender o nível de significância das variáveis. Faltava-lhes a habilidade para filtrar informações de problemas dimensionais aparentemente elevados e reduzi-los a algumas dimensões relevantes – a habilidade de redução de dimensão.
Além disso, essa falta de habilidade ficou demonstrada de várias formas através de perguntas feitas por vários participantes:
- Existem muitas variáveis - que eu preciso para explorar todas e cada variável?
- São todas as variáveis importantes?
- Todas as variáveis são numéricas e o que acontence se elas tiverem multi-colinearidade? Como posso identificar essas variáveis?
- Quero usar uma árvore de decisão. Ela pode automaticamente selecionar as variáveis certas. Esta é uma técnica correta?
- Estou usando “random forest”, mas está tomando muito tempo de execução por conta do grnade número de recursos necessários
- Existe algum algoritmo de “machine learning” que pode identificar as variáveis mais significativas automaticamente?
- Como se trata de um problema de classificação, posso usar SVM com todas as variáveis?
- Qual é a melhor ferramenta para lidar com número grande de variáveis, R ou Python?
Se você tem enfrentado questões semelhantes, você está lendo o artigo certo. Neste artigo, vamos olhar vários métodos para identificar as variáveis relevantes, utilizando as técnicas e métodos mais comuns de redução de dimensão.
Índice
- Por que redução de dimensões é importante para machine learning e modelagem preditiva?
- O que são técnicas de redução de dimensão?
- Quais são os benefícios da utilização de técnicas de redução de dimensão
- Quais são os métodos mais comuns para reduzir o número de dimensões
- Reduzir dimensões é bom ou ruim?
Por que redução de dimensões é importante para machine learning e modelagem preditiva?
O problema do aumento indesejado de dimensões está intimamente relacionado com a definição de medição/gravação de dados em um nível muito mais granular do que era feito no passado. Isto de modo algum sugere que este é um problema recente. Mas começou a ganhar mais importância ultimamente devido ao aumento exponencial nas bases de dados.
Ultimamente, tem havido um grande aumento na forma como os sensores são utilizados na indústria. Continuamente, estes sensores gravam dados e os armazenam para análise em um momento posterior. Na forma como os dados são capturados, pode haver muita redundância. Por exemplo, tomemos caso de um piloto de moto em competições de corrida. Hoje, a sua posição e movimento são medidos pelo sensor de GPS na bicicleta, por giroscópios, por feeds de vídeo e pelo seu smartwatch. Por causa de seus respectivos erros de gravação, os dados não seriam exatamente iguais. No entanto, há muito pouca informação incremental sobre a posição que pode ser adquirida a partir dessas fontes adicionais. Agora vamos supor que um analista senta-se com todos esses dados para analisar a estratégia de corrida do motociclista – ele/ela teria um monte de variáveis/dimensões que são semelhantes e de pouca (ou nenhum) valor incremental. Este é o problema do número elevado de dimensões indesejadas e que necessita de um tratamento de redução de dimensão.
Vejamos outros exemplos de novas formas de coleta de dados:
- Cassinos estão capturando dados usando câmeras, acompanhando todo e qualquer movimento de seus clientes.
- Os partidos políticos capturam dados junto ao público
- Seus aplicativos de smartphone recolhem um monte de detalhes pessoais sobre você
- Seu aparelho de set-top recolhe dados sobre suas preferências de programas e horários
- Organizações estão avaliando seu valor de marca através de mídia social (comentários, likes), seguidores, sentimentos positivos e negativos
Com mais variáveis, vêm mais problemas! E para evitar este problema, temos técnicas de redução de dimensão para ajudar.
O que são técnicas de redução de dimensão?
Redução de dimensão refere-se ao processo de conversão de um conjunto de dados que têm vastas dimensões em dados com dimensões menores, assegurando que ele transmite informações semelhantes de forma concisa. Estas técnicas são normalmente utilizadas na resolução de problemas de machine learning para obter melhores recursos para uma tarefa de classificação ou de regressão.
Vamos olhar para a imagem mostrada abaixo. Ele mostra 2 dimensões X1 e X2, que são digamos medições de vários objetos em cm (x1) e polegadas (x2). Agora, se você fosse usar estas duas dimensões em machine learning, eles vão transmitir informações semelhantes e introduzir uma grande quantidade de ruído no sistema, de modo que é melhor você usar apenas uma dimensão. Aqui nós convertemos a dimensão dos dados de 2D (de x1 e x2) para 1D (Z1), o que faz com que os dados fiquem relativamente mais fáceis de explicar.
De forma semelhante, podemos reduzir n dimensões de dados definidos para k dimensões (k <n). Estas dimensões de k podem ser diretamente identificadas (filtrada) ou podem ser uma combinação de dimensões (médias ponderadas das dimensões) ou novas dimensões que representam bem várias dimensões existentes.
Uma das aplicações mais comuns desta técnica é a de processamento de imagem. Você pode ter cruzado com esta aplicação do Facebook – “Com qual celebridade você se parece?”. Mas, você já pensou sobre o algoritmo usado por trás disso?
Aqui está a resposta: Para identificar a imagem da celebridade que combina com você, usa-se dados de pixels e cada pixel é equivalente a uma dimensão. Em cada imagem, existem um grande número de pixels, i.e. um grande número de dimensões. E cada dimensão é importante aqui. Você não pode omitir dimensões aleatoriamente para obter um melhor uso do seu conjunto global de dados. Nesses casos, as técnicas de redução de dimensão ajudam a encontrar a dimensão, ou dimensões, relevantes usando vários métodos. Vamos discutir esses métodos um pouco.
Quais são os benefícios da utilização de técnicas de redução de dimensão?
Vamos olhar para os benefícios da aplicação do processo de redução de dimensões:
- Isso ajuda a comprimir dados e a reduzir o espaço de armazenamento requerido.
- Acelera o tempo necessário para a realização de cálculos dos mesmos. Menos dimensões conduz a uma menor computação, menos dimensões também pode permitir o uso de algoritmos que não se aplicariam para o caso de um número de dimensões muito grande
- Ela cuida da multi-colinearidade que melhora o desempenho do modelo. Remove recursos redundantes. Por exemplo: não há lógica em armazenar um valor em duas unidades diferentes (em metros e polegadas).
- Reduzir as dimensões de dados para 2D ou 3D pode nos permitir traçar e visualizar com precisão. Você pode, então, observar padrões mais claramente. Abaixo, você pode ver isso, como um dado 3D é convertida em 2D. Primeiro ele identificou o plano 2D, e então representou os pontos sobre estes dois novos eixos z1 e z2.
- É útil também na remoção de ruídos e como resultado disso, podemos melhorar o desempenho dos modelos.
Quais são os métodos mais comuns para reduzir o número de dimensões?
Existem muitos métodos para executar redução de dimensões. Abaixo, listei os métodos mais comuns:
- Valores nulos: Ao explorar dados, se nos deparamos com valores vazios, o que fazemos? O nosso primeiro passo deve ser identificar a razão, então imputar valores ou tirar variáveis utilizando métodos adequados. Mas, e se tivermos muitos valores nulos? Devemos imputar os valores ou deixar tirar as variáveis?
Eu prefiro o último, porque não teria muito mais detalhes sobre conjunto de dados. Além disso, não iria ajudar a melhorar o poder do modelo. Próxima pergunta, existe algum limite de valores para determinar a remoção de uma variável? Isso varia de caso para caso. Se a informação contida na variável que não é muita, você pode tirar a variável se tiver mais do que 40% a 50% dos valores nulos.
- Baixa Variância: Vamos pensar num cenário onde temos uma variável constante (todas as observações têm o mesmo valor: 5) em nosso conjunto de dados. Você acha que pode melhorar o poder de modelo? Claro que não, porque ele tem variância zero. Em caso de grande número de dimensões, deveríamos tirar variáveis com baixa variação em comparação às outras, porque essas variáveis não explicam a variação das variáveis-alvo.
- Árvores de Decisão: É uma das minhas técnicas favoritas. Ela pode ser usada como uma solução definitiva para enfrentar múltiplos desafios, como valores nulos, valores atípicos e a identificar as variáveis significativas. Funcionou bem no nosso Hackathon de Dados também. Vários data scientists utilizaram árvores de decisão e funcionou bem para eles.
- Random Forest: Semelhante à árvore de decisão. Também gostaria de recomendar utilizar o recurso próprio fornecido pela random forest para selecionar um subconjunto menor de valoers de input. Apenas tome cuidado para que as random forests tenham uma tendência de favorecer as variáveis que têm maior númreo de valores distintos ou seja, favorecer variáveis numéricas em lugar de valores binários ou categóricos.
- Alta Correlação: Dimensões com maior correlação podem jogar para baixo o desempenho do modelo. Além disso, não é bom ter múltiplas variáveis de informações ou variação similares, também conhecido como “Multicolinearidade”. Você pode usar Pearson (variáveis contínuas) ou matriz de correlação policórica (variáveis discretas) para identificar as variáveis com alta correlação e selecionar um deles usando VIF (Fator de Inflação da Variância). Variáveis que têm maior valor (VIF> 5) podem ser descartadas.
- Backward Feature Elimination: Neste método, começamos com todas as n dimensões. Calcule a soma dos quadrados dos erros (SSR) depois de eliminar cada variável (n vezes). Em seguida, identifique as variáveis cujo remoção tenha produzido o menor aumento na SSR e a remova, finalmente, deixando-nos com n-1 funções de entrada.
Repita este processo até que não haja outras variáveis podendo ser descartadas. Recentemente, em Hackathon online organizado pelo Analytics Vidhya (11-12 Jun’15), o data scientist que ficou em segundo lugar usou essa técnica em regressão linear para treinar o seu modelo.
Contrário a isso, podemos utilizar o método “Forward Feature Elimination”. Neste método, nós selecionamos uma variável e analisamos o desempenho do modelo adicionando outra variável. Aqui, a seleção de variável é baseada na melhoria do desempenho do modelo.
- Análise de fator: Digamos que algumas variáveis sejam altamente correlacionadas. Essas variáveis podem ser agrupadas por suas correlações, ou seja, todas as variáveis em um determinado grupo podem ser altamente correlacionadas entre si, mas podem ter baixa correlação com variáveis de outro grupo (s). Aqui cada grupo representa uma única construção ou fator. Estes fatores são em pequeno número em relação a um grande número de dimensões. No entanto, esses fatores são difíceis de observar. Existem basicamente dois métodos de análise fatorial desempenho:
- EFA (Análise Exploratória de Fator)
- CFA (Análise Confirmatória de Fator)
- Análise de Componentes Principais (PCA): Nesta técnica, as variáveis são transformados em um novo conjunto de variáveis, que são a combinação linear das variáveis originais. Estes novos conjuntos de variáveis são conhecidos como componentes principais. Eles são obtidos de tal forma que o primeiro componente principal é responsável pela maior parte da variação possível de dados originais após o que cada um dos sucessivos componentes tem a maior variância possível.
O segundo componente principal deve ser ortogonal em relação ao primeiro componente principal. Em outras palavras, faz o melhor para capturar a variância nos dados que não são capturados pelo primeiro componente principal. Para conjuntos de dados bi-dimensionais, pode haver apenas dois componentes principais. Abaixo está uma instantânea dos dados e da sua primeira e segunda componente principal. Você pode notar que o segundo componente princípio é ortogonal ao primeiro componente principal.
Os principais componentes são sensíveis à escala de medição, agora para corrigir esta questão devemos sempre padronizar as variáveis antes de aplicar PCA. Aplicar o PCA para o seu conjunto de dados perde o seu sentido. Se a interpretação dos resultados é importante para a sua análise, PCA não é a técn
Reduzir dimensões é bom ou ruim?
Recentemente, recebemos esta pergunta em nosso fórum de ciência de dados. Aqui demos nossa resposta completa.
Nota final
Neste artigo, nós olhamos para a versão simplificada de redução de dimensões cobrindo sua importância, benefícios, os métodos mais comuns e a discrição quanto ao melhor momento de escolher cada técnica particular. Em post futuro, gostaria de escrever sobre o PCA e análise de fatores em mais detalhes.
Veja também: