ML Pre_processamento

Naoki Yokoyama
5 min readNov 9, 2020

--

Nós estamos sempre dizendo que em machine learning primeiro devemos coletar os dados, realizar a limpeza e processamento e finalmente aplicar o algoritmo de machine learning ideal para o nosso problema.

O Sklearn tem algoritmos que nos auxiliam nas etapas que se antecedem a aplicação de machine learning.

Com o pre-processamento conseguimos deixar o nosso dataset em formatos numéricos, binários, balanceados, etc, ou seja, etapa que se conclui toda limpeza e manipulação dos dados.

Existe diversos algoritmos de pre-processamento e nesse artigo vamos falar um pouco dos:

One Hot Encoder

label encoder

One hot encoder

Normalize

Min max scaler

Standart Sclaler

Robust Scaler

Binalizer

Utilizaremos um Dataset simples criado abaixo apenas para exemplos.

One Hot Encoder

Transforma todos valores categóricos em posição

Mostraremos um exemplo abaixo que vai explicar melhor

porém não utilizaremos o algoritmo one hot encoder do sklearn e sim o get_dummy do pandas que é mais simples de se usar.

Label Encoder

Quando se aplica modelos de machine leaning são obrigado a passar números para o algoritmo pois ele não reconhece string.

O label encoder faz essa função, substitui valores categóricos por numéricos .

imagine a lista abaixo:

lista = [Brasil, Argentina, Uruguai]

o label encoder substitui essas strings por numéricos.

lista = [1,2,3]

Normalize

Quando temos problema de escala em todo o dataset com valores muito longe uns do outro como no nosso exemplo idade variando entre 18 a 60 e faixa salarial entre 5000 a 15000 isto pode causar um grande problema no treino do nosso modelo uma vez o salário por possuir uma escala muito maior que a idade terá uma influência consequentemente muito maior no resultado

Alem disso podemos notar a presença de outlier visto que temos valores 0

Para solucionar esses problemas poderíamos usar diversas técnicas de estatística e algumas métricas como quartis, desvio padrão e variância ou podemos ser muito mais espertos e já usar inúmeras ferramentas do sklearn que já aplicam todas essas técnicas a fim de obter uma melhor solução para o nosso problema através da reescala dos dados.

Normalizer que talvez seja a solução mais diferente, uma vez que o Normalize age reescalando os dados por exemplos linhas e não por colunas, ou seja, o Normalizer levará em contas os atributos idade, salário e reescalar os valores com base nesses dois valores. O Normalizer é uma boa escolha quando você sabe que a distribuição dos seus dados não é normal/gaussiana ou quando você não sabe qual é o tipo de distribuição dos seus dados.

Min Max Scaler

O MinMaxScaler é uma outra alternativa a reescala de dados, seu diferencial se dá uma vez que este age sobre sobre a coluna, ou seja, o cálculo da reescala é feito de forma independente entre cada coluna, de tal forma que a nova escala se dará entre 0 e 1 (ou -1 e 1 se houver valores negativos no dataset). Importante ressaltar que essa técnica funciona melhor se a distribuição dos dados não for normal e se o desvio padrão for pequeno, além disso o MinMaxScaler não reduz de forma eficaz o impacto de outliers e também preserva a distribuição original. De forma simples o MinMaxScaler subtrai o valor em questão pelo menor valor da coluna e então divide pela diferença entre o valor máximo e mínimo:

valor = ( valor — Coluna.min) / (Coluna.max — Coluna.min)

Stand Scaler

Assim como o MinMaxScaler o StandardScaler age sobre as colunas, porém seu método é diferente uma vez que este subtrai do valor em questão a média da coluna e divide o resultado pelo desvio padrão. No final temos uma distribuição de dados com desvio padrão igual a 1 e variância de 1 também. Esse método trabalha melhor em dados com distribuição normal porém vale a tentativa para outros tipos de distribuições, além disso podemos deixar como dica que esse método resulta em ótimos frutos quando usado em conjunto com algoritmos como Linear Regression e Logistic Regression.

valor = (valor — média) / desvioPadão

Robust Scaler

Atua sobre as colunas e o diferencial deste método é a combinação com o uso de quartis o que nos garante um bom tratamento dos outliers. Em seu método o RobustScaler subtrai a média do valor em questão e então divide o resultado pelo segundo quartil. Importante notar que os outliers ainda estão presentes porém estão representados dentro de uma escala em que o seu impacto negativo é reduzido.

Binalizer

Esse é o pre processamento mais simples porem podem ser util em diversas ocasioes. O Binalizer trabalha com dados binarios entre 0 ou 1, o que for 0 ele assume 0, qualquer valor diferente de 0 ele assume 1

--

--