Porquê e Quando é Necessário Normalizar os Dados

Cloves Paiva
Estudante-C
Published in
6 min readApr 26, 2019

Ouve-se com frequência que, durante o processo de preparação do seu dataset para a criação de seu modelo de aprendizado de máquina, é importante normalizar os dados para que o modelo venha a performar melhor.

Você saberia explicar, tanto conceitualmente como teoricamente, o porquê? Isso é necessário sempre? A normalização é útil para todo tipo de modelo?

Só para não haver confusão, quero enfatizar que estou usando a palavra “normalização” no contexto de padronização/escalonamento dos dados.

Motivação de Escrever esse Artigo

Recentemente fui confrontado com essas perguntas e, apesar de saber em partes o motivo desse processo, eu percebi que no fundo poderia me embaraçar na explicação teórica (sim, paguei mico…).

Muitas vezes lemos rapidamente sobre um determinado conceito e ficamos com a falsa impressão de entendimento, mas quando nos deparamos com uma série de perguntas sobre os detalhes, como aconteceu comigo, percebemos que no fundo não entendemos tão bem assim ( The Knowledge Illusion é um livro que trata bastante sobre essas “ilusões”).

Escrever esse artigo foi um exercício não só para “combater” uma das minhas ignorâncias, mas também para ajudá-los a entender que normalização não é algo tão trivial quanto parece.

Chega de papo e vamos ao que interessa.

Escalas Diferentes Podem Ser um Problema

O objetivo da normalização é alterar os valores das colunas numéricas no conjunto de dados para uma escala comum, sem distorcer as diferenças nos intervalos de valores. Para o aprendizado de máquina, nem todos os conjuntos de dados requerem normalização. Esse método é necessário apenas quando os parâmetros tiverem intervalos muito diferentes.

Por exemplo, considere um conjunto de dados contendo duas variáveis explicativas: idade e renda. A faixa etária varia de 0 a 100 anos, enquanto a renda varia de R$ 0,00 a R$ 20.000,00 ou mais. A renda é cerca de 1.000 vezes maior que a idade, ou seja, os intervalos são muito diferentes. Se formos usar regressão linear multivariada para modelar esse problema, a renda influenciará bastante o resultado devido aos valores maiores e não necessariamente porque ela é mais importante como um preditor.

Usando um pouquinho mais de matematiquês, será necessário resolver os coeficientes 𝑤1 e 𝑤2 correspondentes a idade e renda. Agora, devido as escalas diferentes das variáveis, uma pequena alteração em 𝑤2 irá alterar muita a previsão em comparação com a mesma mudança em 𝑤1, ao ponto do coeficiente 𝑤2 dominar todo processo de otimização.

Se, por exemplo, você for usar a técnica de regularização Lasso Regression (LR), com a finalidade de aumentar a capacidade de generalização do seu modelo, isso irá empurrar pesos maiores em direção a zero mais fortemente do que pesos menores.

O que fazemos? Um dos métodos mais usados para normalização dos dados é o seguinte:

Onde X com índice j é a j-ésima coluna da matriz X.

O que essa fórmula está dizendo é que pra cada observação em ambas as variáveis, eu respondo a seguinte pergunta: quantos desvios padrões esse valor está longe da média?

Agora sim!!! As duas variáveis estão “falando a mesma língua”, ou seja, padronizamos, criamos uma mesma forma para descrever os valores de cada variável, tornando mais “justo” o processo de comparação.

Tá Cloves, mas disso eu já sabia. Você não sabia? ”.

Ok, beleza! Mas tu já parou pra pensar nas justificativas geométricas desse processo? Como isso influencia a convergência do método de otimização?

Visão Geométrica

Usando ainda o mesmo exemplo das variáveis explicativas idade e renda, as curvas de nível geradas pela função de erro a ser otimizada seria mais ou menos como o da figura abaixo, com formas elípticas.

O motivo você já deve imaginar, a renda “estica” a figura horizontalmente por possuir uma escala bem maior que a idade.

Suponha que você comece no ponto marcado em vermelho. Observe que, para alcançar o ponto ideal, você precisa dar um passo muito grande na direção horizontal (representando o coeficiente 𝑤2 da renda), mas um pequeno passo na direção vertical (representando o coeficiente 𝑤1 da idade). A direção da descida do gradiente descendente é dada pela seta verde. Se o gradiente acabar seguindo nessa direção, então ele irá percorrer uma distância maior na direção vertical e uma distância menor na horizontal, que é o oposto daquilo que se pretende fazer. Esse comportamento é devido à forma dos contornos.

A seguir, temos uma imagem das curvas de nível da superfície de erro, gerada pelos dados não normalizados, na qual podemos ver a performance de alguns algoritmos de otimização baseados em gradiente.

Os algoritmos de otimização mencionados na imagem acima são os seguintes:

No segundo gráfico da imagem, o eixo x representa o número de iterações e o eixo y o valor de convergência.

Podemos notar que nas primeiras iterações há certa dificuldade/resistência em mover os vetores de peso na direção dos ótimos locais.

Quando eu normalizo esses dados, os contornos mudam, ficam mais circulares, pois os dados estão distribuídos igualmente em torno da média, mais densamente concentrados. Quanto mais circulares os contornos, mais rápido minha função de otimização irá convergir para os pesos ideais.

É Preciso Normalizar Sempre?

Normalização nem sempre ajuda no que diz respeito ao desempenho no processo de otimização. Um caso óbvio é quando as variáveis explicativas do seu dataset não são tão diferentes assim em escala.

As vezes, basta mudar a maneira que seus dados estão expressos, em vez de falar de m², talvez faça mais sentido falar em hectares.

A normalização pode até nem mesmo ser desejada. Esse é o caso quando você deseja interpretar seus coeficientes numa regressão linear multivariada.

“E se eu quiser modelar um classificador usando Regressão Logística, eu precisaria normalizar meus dados?”

Tecnicamente falando, a normalização não é necessária para a Regressão Logística, pois ela trata com probabilidades relacionadas as classes envolvidas, se preocupa em desenhar um “fronteira” de decisão em torno de um limiar (o famoso threshold).

Mas a normalização poderá fazer sentido no tratamento de outliers.

Os autores de Elements of Statistical Learning, recomendam a normalização (ver página 125 do livro) caso se decida usar alguma técnica de regularização.

“E para Random Forest? Preciso normalizar meus dados?”

Deixar variáveis com escalas similares é algo importante em algoritmos que trabalham com distâncias euclidianas, como é o caso das regressões lineares multivariadas. Random Forest, como o próprio nome diz, é apenas uma coleção de “árvores”, e os processos utilizados para a geração dessas “árvores” não envolvem o uso de distâncias euclidianas. Random Forest trabalha com a técnica de particionamento recursivo.

Ponderações Finais

Dá pra se delongar muito sobre técnicas de normalização, mencionei aqui apenas uma delas.

Não mostrei matematicamente o porquê das coisas que falei. A meta é fazer isso em um outro artigo.

Ainda preciso fazer muito dever de casa e à medida que eu for fazendo isso, irei compartilhando com vocês aqui.

Espero que esse artigo tenha servido, pelo menos, para motivar seus estudos futuros.

Bora estudar minha gente. Virar um unicórnio não é fácil!!!

--

--