Dados numéricos: normalização

Depois de examinar os dados por meio de técnicas estatísticas e de visualização, transforme os dados de maneiras que ajudem o modelo a treinar com mais eficiência. O objetivo da normalização é transformar os recursos para que fiquem em uma escala semelhante. Por exemplo, considere os dois recursos a seguir:

  • O recurso X abrange o intervalo de 154 a 24.917.482.
  • O recurso Y abrange o intervalo de 5 a 22.

Esses dois recursos abrangem intervalos muito diferentes. A normalização pode manipular X e Y para que eles tenham um intervalo semelhante, talvez de 0 a 1.

A normalização oferece os seguintes benefícios:

  • Ajuda os modelos a convergerem mais rapidamente durante o treinamento. Quando elementos diferentes têm intervalos diferentes, a descida á gradiente pode "recuar" e desacelerar a convergência. No entanto, otimizadores mais avançados, como Adagrad e Adam, protegem contra esse problema mudando a taxa de aprendizado efetiva ao longo do tempo.
  • Ajuda os modelos a inferir previsões melhores. Quando recursos diferentes têm intervalos diferentes, o modelo resultante pode fazer previsões menos úteis.
  • Ajuda a evitar a "armadilha NaN" quando os valores de recurso são muito altos. NaN é uma abreviação de not a number (número inválido). Quando um valor em um modelo excede o limite de precisão de ponto flutuante, o sistema define o valor como NaN em vez de um número. Quando um número no modelo se torna um NaN, outros números no modelo também se tornam um NaN.
  • Ajuda o modelo a aprender pesos adequados para cada atributo. Sem o escalonamento de recursos, o modelo presta muita atenção a recursos com intervalos amplos e não presta atenção suficiente a recursos com intervalos estreitos.

Recomendamos a normalização de recursos numéricos que abrangem intervalos diferentes (por exemplo, idade e renda). Também recomendamos normalizar um único elemento numérico que abranja uma ampla faixa, como city population.

Considere os dois recursos a seguir:

  • O valor mais baixo do recurso A é -0,5, e o mais alto é +0,5.
  • O menor valor do recurso B é -5,0 e o maior é +5,0.

Os recursos A e B têm períodos relativamente estreitos. No entanto, o período do recurso B é 10 vezes maior que o do recurso A. Assim:

  • No início do treinamento, o modelo assume que o atributo B é dez vezes mais "importante" do que o atributo A.
  • O treinamento vai demorar mais do que o esperado.
  • O modelo resultante pode não ser o ideal.

O dano geral devido à não normalização será relativamente pequeno. No entanto, ainda recomendamos normalizar o recurso A e o recurso B na mesma escala, talvez de -1,0 a +1,0.

Agora, considere dois atributos com maior disparidade de intervalos:

  • O valor mais baixo do recurso C é -1, e o mais alto é +1.
  • O valor mais baixo do recurso D é +5.000, e o mais alto é +1.000.000.000.

Se você não normalizar os atributos C e D, o modelo provavelmente não será o ideal. Além disso, o treinamento vai levar muito mais tempo para convergir ou até mesmo falhar completamente.

Esta seção aborda três métodos de normalização comuns:

  • dimensionamento linear
  • Escalonamento do escore padronizado
  • dimensionamento logarítmico

Esta seção também aborda cortes. Embora não seja uma técnica de normalização verdadeira, o recorte acalma os atributos numéricos indisciplinados em intervalos que produzem modelos melhores.

Dimensionamento linear

Dimensionamento linear (mais comumente abreviado para apenas dimensionamento) significa converter valores de ponto flutuante do intervalo natural em um intervalo padrão, geralmente de 0 a 1 ou -1 a +1.

O escalonamento linear é uma boa escolha quando todas as condições a seguir são atendidas:

  • Os limites mínimo e máximo dos dados não mudam muito ao longo do tempo.
  • O recurso tem poucos ou nenhum valor fora da curva, e esses valores não são extremos.
  • O recurso é distribuído de forma aproximadamente uniforme em todo o intervalo. Ou seja, um histograma mostraria barras quase uniformes para a maioria dos valores.

Suponha que o age humano seja um recurso. O escalonamento linear é uma boa técnica de normalização para age porque:

  • Os limites inferior e superior aproximados são de 0 a 100.
  • age contém uma porcentagem relativamente pequena de valores discrepantes. Apenas cerca de 0,3% da população tem mais de 100 anos.
  • Embora certas idades sejam um pouco melhor representadas do que outras, um grande conjunto de dados precisa conter exemplos suficientes de todas as idades.

Exercício: testar seu conhecimento

Suponha que seu modelo tenha um recurso chamado net_worth que armazena o valor líquido de pessoas diferentes. O dimensionamento linear seria uma boa técnica de normalização para net_worth? Por que sim ou por que não?

Escalonamento do escore padronizado

Um valor Z é o número de desvios padrão de um valor em relação à média. Por exemplo, um valor que é 2 desvios padrão maior que a média tem um escore Z de +2,0. Um valor menor que 1,5 desvios padrão do que a média tem um valor Z de -1,5.

Representar um atributo com dimensionamento de Z-score significa armazenar o Z-score desse atributo no vetor de atributo. Por exemplo, a figura a seguir mostra dois histogramas:

  • À esquerda, uma distribuição normal clássica.
  • À direita, a mesma distribuição normalizada pelo escalonamento Z-score.
Figura 4. Dois histogramas: ambos mostram distribuições normais com
           a distribuição idêntica. O primeiro histograma, que contém dados brutos, tem uma média de 200 e um desvio padrão de 30. O segundo histograma, que contém uma versão de pontuação Z da primeira distribuição, tem uma média de 0 e um desvio padrão de 1.
Figura 4. Dados brutos (à esquerda) em comparação com o valor Z (à direita) para uma distribuição normal.

A escala de Z-score também é uma boa escolha para dados como os mostrados na figura a seguir, que tem apenas uma distribuição vagamente normal.

Figura 5. Dois histogramas de forma idêntica, cada um mostrando um aumento
            acentuado para um platô e, em seguida, uma descida relativamente rápida seguida por
            uma diminuição gradual. Um histograma ilustra a distribuição dos dados brutos, o outro ilustra a distribuição dos dados brutos quando normalizado pela escala Z-score.
            Os valores no eixo X dos dois histogramas são muito diferentes.
            O histograma de dados brutos abrange o domínio de 0 a 29.000,enquanto
            o histograma dimensionado pelo Z-score varia de -1 a cerca de +4, 8.
Figura 5. Dados brutos (à esquerda) em comparação com a escala de Z-score (à direita) para uma distribuição normal não clássica.

A pontuação Z é uma boa opção quando os dados seguem uma distribuição normal ou uma distribuição semelhante a uma distribuição normal.

Algumas distribuições podem ser normais dentro do intervalo, mas ainda contêm valores extremos. Por exemplo, quase todos os pontos em um atributo net_worth podem se encaixar perfeitamente em três desvios padrão, mas alguns exemplos desse atributo podem estar a centenas de desvios padrão da média. Nessas situações, você pode combinar o escalonamento do valor Z com outra forma de normalização (geralmente recorte) para lidar com essa situação.

Exercício: testar seu conhecimento

Suponha que seu modelo seja treinado com um recurso chamado height, que contém as alturas de adultos de 10 milhões de mulheres. A escala de pontuação Z seria uma boa técnica de normalização para height? Por que sim ou por que não?

Dimensionamento logarítmico

A escala logarítmica calcula o logaritmo do valor bruto. Em teoria, o logaritmo pode ser qualquer base. Na prática, o dimensionamento de registros geralmente calcula o logaritmo natural (ln).

A escala logarítmica é útil quando os dados estão em conformidade com uma distribuição de lei de potência. Informalmente, uma distribuição de lei de potência é assim:

  • Valores baixos de X têm valores muito altos de Y.
  • À medida que os valores de X aumentam, os valores de Y diminuem rapidamente. Consequentemente, valores altos de X têm valores muito baixos de Y.

As classificações de filmes são um bom exemplo de distribuição de lei de potência. Na figura abaixo, observe:

  • Alguns filmes têm muitas classificações dos usuários. Valores baixos de X têm valores altos de Y.
  • A maioria dos filmes tem poucas classificações dos usuários. Os valores altos de X têm valores baixos de Y.

A escala logarítmica muda a distribuição, o que ajuda a treinar um modelo que fará previsões melhores.

Figura 6. Dois gráficos comparando dados brutos com o registro de dados brutos.
            O gráfico de dados brutos mostra muitas avaliações de usuários na cabeça, seguidas por uma cauda longa. O gráfico de registro tem uma distribuição mais uniforme.
Figura 6. Comparação de uma distribuição bruta com o registro dela.

Como segundo exemplo, as vendas de livros se conformam a uma distribuição de lei de potência porque:

  • A maioria dos livros publicados vende um número pequeno de cópias, talvez uma ou duas centenas.
  • Alguns livros vendem um número moderado de cópias, na casa dos milhares.
  • Apenas alguns mais vendidos venderão mais de um milhão de cópias.

Suponha que você esteja treinando um modelo linear para encontrar a relação entre, por exemplo, capas de livros e vendas de livros. Um treinamento de modelo linear em valores brutos precisaria encontrar algo sobre capas de livros que vendem um milhão de cópias que seja 10.000 vezes mais poderoso do que capas de livros que vendem apenas 100 cópias. No entanto, a escalação de registro de todos os valores de vendas torna a tarefa muito mais viável. Por exemplo, o registro de 100 é:

  ~4.6 = ln(100)

enquanto o registro de 1.000.000 é:

  ~13.8 = ln(1,000,000)

Portanto, o registro de 1.000.000 é apenas cerca de três vezes maior do que o registro de 100. Você provavelmente poderia imaginar que a capa de um livro mais vendido é cerca de três vezes mais poderosa (de alguma forma) do que a capa de um livro que vende pouco.

Recorte

Recorte é uma técnica para minimizar a influência de outliers extremos. Em resumo, o truncamento geralmente limita (reduz) o valor de valores discrepantes para um valor máximo específico. O recorte é uma ideia estranha, mas pode ser muito eficaz.

Por exemplo, imagine um conjunto de dados com um recurso chamado roomsPerPerson, que representa o número de cômodos (total de cômodos dividido pelo número de ocupantes) de várias casas. O gráfico a seguir mostra que mais de 99% dos valores de atributos estão em conformidade com uma distribuição normal (aproximadamente, uma média de 1,8 e um desvio padrão de 0,7). No entanto, o recurso contém alguns outliers, alguns extremos:

Figura 7. Um gráfico de quartos por pessoa em que quase todos os valores
            estão agrupados entre 0 e 4, mas há uma cauda muito longa
            que chega até 17 quartos por pessoa
Figura 7. Principalmente normal, mas não completamente normal.

Como você pode minimizar a influência desses outliers extremos? Bem, o histograma não é uma distribuição uniforme, normal ou lei de potências. E se você simplesmente limitar ou cortar o valor máximo de roomsPerPerson em um valor arbitrário, digamos 4,0?

Um gráfico de quartos por pessoa em que todos os valores estão entre 0 e 4,0. O gráfico tem a forma de sino, mas há uma colina anormal em 4,0
Figura 8. Valores de recorte de recursos em 4,0.

Cortar o valor do recurso em 4,0 não significa que o modelo ignora todos os valores maiores que 4,0. Em vez disso, significa que todos os valores maiores que 4,0 agora se tornam 4,0. Isso explica a colina peculiar em 4,0. Apesar disso, o conjunto de recursos dimensionado agora é mais útil do que os dados originais.

Espere um momento! É possível reduzir todos os valores discrepantes para um limite superior arbitrário? Ao treinar um modelo, sim.

Também é possível cortar valores depois de aplicar outras formas de normalização. Por exemplo, suponha que você use a escala de Z-score, mas alguns valores discrepantes tenham valores absolutos muito maiores que 3. Nesse caso, você pode:

  • Cortar escores z maiores que 3 para que se tornem exatamente 3.
  • Clipe os escores Z menores que -3 para que se tornem exatamente -3.

O recorte evita que o modelo faça uma indexação excessiva de dados não importantes. No entanto, alguns valores discrepantes são importantes, então corte os valores com cuidado.

Resumo das técnicas de normalização

Técnica de normalizaçãoFórmulaQuando usar
Dimensionamento linear $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Quando o elemento é distribuído uniformemente em um intervalo fixo.
Escalonamento do escore padronizado $$ x' = \frac{x - μ}{σ}$$ Quando a distribuição de recursos não contém valores extremos.
Dimensionamento logarítmico $$ x' = log(x)$$ Quando o recurso está em conformidade com a lei da potência.
Corte Se $x > max$, defina $x' = max$
Se $x < min$, defina $x' = min$
Quando o recurso contém valores extremos.

Exercício: teste seus conhecimentos

Qual técnica seria mais adequada para normalizar um recurso com a distribuição a seguir?

Um histograma mostrando um cluster de dados com valores no intervalo de 0 a
          200.000. O número de pontos de dados aumenta gradualmente de 0 a 100.000 e depois diminui de 100.000 para 200.000.

Escalonamento do escore padronizado
Os pontos de dados geralmente se conformam a uma distribuição normal, então a escala de Z-score os forçará para o intervalo de –3 a +3.
Dimensionamento linear
Leia as discussões sobre técnicas de normalização nesta página e tente novamente.
Dimensionamento logarítmico
Leia as discussões sobre técnicas de normalização nesta página e tente novamente.
Corte
Leia as discussões sobre técnicas de normalização nesta página e tente novamente.

Suponha que você esteja desenvolvendo um modelo que prevê a produtividade de um data center com base na temperatura medida dentro dele. Quase todos os valores de temperature no conjunto de dados estão entre 15 e 30 (Celsius), com as seguintes exceções:

  • Uma ou duas vezes por ano, em dias extremamente quentes, alguns valores entre 31 e 45 são registrados em temperature.
  • Cada milésimo ponto em temperature é definido como 1.000, em vez da temperatura real.

Qual seria uma técnica de normalização razoável para temperature?

Cortar os valores discrepantes entre 31 e 45, mas excluir os discrepantes com um valor de 1.000

Os valores de 1.000 são erros e precisam ser excluídos em vez de serem cortados.

Os valores entre 31 e 45 são pontos de dados legítimos. O recorte provavelmente seria uma boa ideia para esses valores, supondo que o conjunto de dados não contenha exemplos suficientes nessa faixa de temperatura para treinar o modelo e fazer boas previsões. No entanto, durante a inferência, o modelo cortado faria a mesma previsão para uma temperatura de 45 e de 35.

Cortar todos os valores discrepantes
Leia as discussões sobre as técnicas de normalização nesta página e tente novamente.
Excluir todos os outliers
Leia as discussões sobre as técnicas de normalização nesta página e tente novamente.
Exclua os valores discrepantes entre 31 e 45, mas recorte os discrepantes com um valor de 1.000.
Leia as discussões sobre as técnicas de normalização nesta página e tente novamente.