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 atributoA
. - 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 chamadonet_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.
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.
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 chamadoheight
, 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 deY
. - À medida que os valores de
X
aumentam, os valores deY
diminuem rapidamente. Consequentemente, valores altos deX
têm valores muito baixos deY
.
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 deY
. - A maioria dos filmes tem poucas classificações dos usuários. Os valores altos de
X
têm valores baixos deY
.
A escala logarítmica muda a distribuição, o que ajuda a treinar um modelo que fará previsões melhores.
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:
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?
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ção | Fórmula | Quando 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
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
?
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.