Você sabe como fazer um pré-processamento de dados e tratar variáveis numéricas para melhorar a performance dos modelos de Machine Learning?
Ao estudar Ciência de Dados, aprendemos que os resultados de nossos modelos de Machine Learning são altamente influenciados pela quantidade e qualidade dos nossos dados. Isso significa que devemos cuidar muito bem dos nossos dados, tratando valores ausentes, outliers e outros passos do pré-processamento, para alimentar os modelos.
É por isso que neste artigo, destacaremos alguns pontos chave e ideias trazidas pelos instrutores do curso “How To Win A Data Science Competition”, disponível na plataforma Coursera .
Ao estudar este material, achei esse conteúdo muito interessante, pela forma em que foi abordado. Neste primeiro artigo, focaremos no pré-processamento de dados numéricos. Lidaremos com variáveis categóricas mais para frente.
Entenda o seu modelo
O primeiro passo de qualquer projeto de Data Science é entender e definir bem o problema, para que possamos buscar a melhor solução. Isso é extremamente importante, pois cada modelo trabalha de uma forma diferente, e é mais ou menos sensível a diferentes características dos dados.
Primeiro, precisamos saber se o modelo é baseado em Árvores de Decisão ou não. Árvore de Decisão não são tão sensíveis à escala dos dados e não apresentam melhoras significativas ao trabalharem com dados pré-processados.
Entretanto, quando falamos de modelos que não são baseados em Árvores de Decisão, como modelos Lineares, KNN, e Redes Neurais, fazer o pré-processamento dos dados pode trazer grandes melhorias nos resultados.
Mas que técnicas podemos aplicar? Vamos falar de algumas das mais utilizadas.
MinMaxScaler
MinMaxScaler do Sklearn é uma técnica de pré-processamento que coloca os dados na mesma escala. Em tradução livre da documentação:
Transforma as features ao deixá-las na mesma escala em um determinado range.
Este estimador escala e traduz cada feature individualmente de forma que esta estará em um determinado intervalo no conjunto de treino, por exemplo, entre zero e um.
Para visualizarmos melhor, imagine um conjunto de dados de imóveis em Los Angeles. Este conjunto teria dados de área dos imóveis, que variam de dezenas de metros quadrados para apartamentos pequenos até kilômetros quadrados nas grandes mansões.
Essa discrepância torna as coisas mais difíceis para o modelo, e colocar tudo na mesma escala (por exemplo, de 0 a 1) faz com que os modelos trabalhem com os dados de forma mais eficiente, melhorando os resultados.
É claro, transformaríamos o conjunto inteiro para rodar o algoritmo nos dados na mesma escala.
Standard Scaler
Standard Scaler, assim como MinMax, transforma os dados e os coloca na mesma escala. Entretanto, ele trabalha de forma um pouco diferente. Na documentação, eles explicam:
Padroniza as features removendo a média e escala a variância a uma unidade.
Isso significa que para cada feature, a média seria 0, e o Desvio Padrão seria 1. Desta forma, as features são padronizadas, tornando-as mais manejáveis para nossos modelos. Mais uma vez, modelos Não Baseados em Árvores de Decisão se beneficiam mais deste tipo de padronização.
Rank
O método Rank da biblioteca Scipy define espaços entre valores devidamente ordenados para que sejam iguais. Segundo a documentação:
O Rank associa categorias aos dados, lidando com nós apropriadamente.
Ranks começam em 1. O argumento method controla como os ranks serão assinalados a valores iguais.
Se você ainda não tiver lidado com outliers até o momento, Rank funciona melhor do que o MinMaxScaler , já que este coloca os outliers mais próximos aos outros objetos. Mais uma vez, essa abordagem funciona muito bem com modelos Lineares, KNN e Redes Neurais.
Melhores Práticas para Melhores Resultados
No curso, os instrutores do Higher School of Economics na Rússia também mencionam algumas boas práticas que podem ajudar nossos modelos ainda mais:
- Treine o modelo em dataframes concatenados, produzidos por diferentes técnicas de pré-processamento. Por exemplo, use MinMaxScaler, depois Standard Scaler e então Rank para pré-processar pedaços separados do dataset. Depois, concatene os resultados e treine o seu modelo nesse dataframe.
- Faça Ensemble de modelos treinados utilizando dados pré-processados por diferentes técnicas, para aproveitar os benefícios que cada técnica traz para os dados.
De forma geral, estas técnicas devem ajudar a melhorar a performance dos seus modelos, e render melhores resultados.
O objetivo desse artigo é apresentar uma revisão, ou um guia geral de onde começar ao fazer o pré-processamento dos dados. Para se aprofundar nesse tema, indico esse excelente artigo no Towards Data Science.