O que é a Redução de Dimensionalidade?

Por que devo utilizar essa técnica?

O que é a Dimension Reduction?

A redução da dimensionalidade (features) é o processo de reduzir o número de variáveis aleatórias que serão inseridas em um modelo para treino. Imagine que você possua um dataset com centenas de colunas(features), a redução de dimensionalidade traria as dimensões para um número mais fácil de se trabalhar, algumas poucas dezenas por exemplo. Seria como converter uma esfera de três dimensões para um círculo de duas dimensões.

Para fazer isso, precisamos identificar quais são as variáveis principais (ou seja, mais importantes). Chamamos de Principal Components o conjunto de variáveis que não são linearmente correlacionadas.

Ocorre que variáveis correlacionadas acabam sendo redundantes para um modelo de machine learning. Imagine que um desejamos determinar a "qualidade" de um jogador de basquete e entre todas as variáveis existem "Média da quantidade de dias que o jogador treina por semana" e exista outra: "Média de treinos por mês".

Ao analisar os resultados, percebemos que as variáveis são altamente correlacionadas, na maioria das vezes quando um jogador treina muitas vezes por semana, naturalmente, acaba realizando muitos treinos por mês. Não precisamos utilizar as duas variáveis para treinar o nosso modelo.

A premissa é que as variáveis redundantes podem ser removidas sem a perda de informação/valor para o modelo. Você pode alegar que saber a média semanal e a média mensal pode lhe ajudar a identificar outliers ou semanas de treinos excessivos que podem levar a um aumento das lesões. Ok! Mas para um modelo de machine learning essa variável não influenciará muito no resultado.

Por que realizar esse procedimento?

Por que eu deveria me preocupar em remover colunas do meu dataset? O algoritmo de Machine Learning não é capaz de receber esses dados e criar o modelo? Achei que quanto mais dados melhor seria para o treinamento, me enganei?

Para responder a essas perguntas, vamos conhecer o conceito de maldição da dimensionalidade (The Curse of Dimensionality):

The Curse of Dimensionality

Esse termo se refere a todos os problemas que surgem quando trabalhamos com dados de dimensões elevadas. Não confunda um dataset de alta dimensão com um dataset grande em número de linhas. As dimensões são a quantidade de colunas e não de linhas.

Quando o número de features aumenta, o número de amostras precisa aumentar também para que o número de combinações entre features e classes seja satisfatório. Isso faz com que o modelo fique cada vez mais complexo. Além disso, quanto maior o número de features, maior a chance de ocorrer overfitting.

Tudo isso prejudica a performance do classificador.

Conclusão

A redução de dimensionalidade é capaz de simplificar modelos, reduzir o tempo de treino e reduzir o overfitting.

O overfitting ocorre quando um modelo treino os dados "bem demais". Ou seja, o modelo entende perfeitamente os dados utilizados no treino. Funcionando bem até para os ruídos ou dados comprometidos do sistema, isso faz com que tenha um resultado excelente para os dados de treino, mas tenha um resultado ruim com dados novos.

Redução de Dimensionalidade é muito útil para aprendizado não supervisionado. Nesse tipo de aprendizado, inferências são extraídas das features sem saber quais os seus rótulos ou classes. É utilizado para explorar padrões ocultos ou agrupamentos de dados nos dados.

No Scikit-Learn temos três técnicas para redução de dimensionalidade: principal component analysis (PCA), LinearDiscriminantAnalysis (LDA), e Isomap. PCA e LDA são métodos lineares. Isomap é um método não-linear.

Em próximos artigos vou trazer exemplos de utilização com código.