Executar a normalização de recursos antes ou dentro da validação do modelo?

52

Uma boa prática comum no Machine Learning é apresentar normalização ou padronização de dados das variáveis ​​preditoras, é isso, centralizar os dados subtraindo a média e normalizá-los dividindo pela variação (ou desvio padrão também). Para auto-contenção e para minha compreensão, fazemos isso para alcançar duas coisas principais:

  1. Evite pesos de modelo pequenos demais para fins de estabilidade numérica.
  2. Garanta a convergência rápida de algoritmos de otimização, como por exemplo, o Gradiente Conjugado, para que a grande magnitude de uma dimensão preditora em relação às demais não leve a uma convergência lenta.

Geralmente, dividimos os dados em conjuntos de treinamento, validação e teste. Na literatura, geralmente vemos que, para caracterizar a normalização, eles levam a média e a variação (ou desvio padrão) ao longo de todo o conjunto de variáveis ​​preditoras. A grande falha que vejo aqui é que, se você fizer isso, estará introduzindo informações futuras nas variáveis ​​preditivas de treinamento, ou seja, as informações futuras contidas na média e na variância.

Portanto, eu caracterizo a normalização sobre os dados de treinamento e salvo a média e a variação. Em seguida, aplico a normalização de recursos às variáveis ​​preditivas dos conjuntos de dados de validação e teste usando a média e as variações do treinamento. Existem falhas fundamentais nisso? alguém pode recomendar uma alternativa melhor?

SkyWalker
fonte

Respostas:

46

Sua abordagem está totalmente correta. Embora as transformações de dados geralmente sejam subvalorizadas como "pré-processamento", não se pode enfatizar o suficiente para que as transformações para otimizar o desempenho do modelo possam e devam ser tratadas como parte do processo de construção do modelo.

Raciocínio: Um modelo deve ser aplicado em dados não vistos, que geralmente não estão disponíveis no momento em que o modelo foi construído. O processo de validação (incluindo a divisão de dados) simula isso. Portanto, para obter uma boa estimativa da qualidade do modelo (e poder de generalização), é necessário restringir o cálculo dos parâmetros de normalização (média e variância) ao conjunto de treinamento.

Só posso adivinhar por que isso nem sempre é feito na literatura. Um argumento poderia ser que o cálculo da média e variância não é tão sensível a pequenas variações de dados (mas mesmo isso só é verdade se o tamanho básico da amostra for grande o suficiente e os dados forem distribuídos aproximadamente normalmente sem valores extremos).

Steffen
fonte
Acho isso um pouco confuso. O OP diz que está executando a normalização de recursos em conjuntos de dados de validação e teste. Sua resposta primeiro diz que a abordagem dele está correta. Então você diz "é necessário restringir o cálculo dos parâmetros de normalização ao conjunto de treinamento", o que não é o que ele está fazendo. Portanto, sua resposta se contradiz dizendo a ele que o que ele está fazendo é correto e sugerindo o contrário. O que estou perdendo aqui?
Mahonya
4
O que o OP faz é descrito em seu último parágrafo e é exatamente isso que eu disse. Obviamente, a normalização é aplicada ao conjunto de teste / validação se tiver sido aplicada ao conjunto de treinamento. O ponto importante é que os parâmetros dessa normalização foram calculados apenas nos dados de treinamento e não em todo o conjunto. Espero que isto ajude.
Steffen
Ah, muito obrigado. Eu não entendi sua resposta. Eu pensei que você estava sugerindo a "aplicação" da normalização apenas ao conjunto de treinamento, o que claramente não foi o que você sugeriu.
Mahonya 13/10
2

A normalização de recursos é criar recursos diferentes na mesma escala. A escala acelera a descida do gradiente, evitando muitas iterações extras necessárias quando um ou mais recursos assumem valores muito maiores que os demais (sem escala, a função de custo visualizada mostrará uma grande assimetria).

Eu acho que faz sentido usar a média e var do conjunto de treinamento quando os dados do teste chegarem. No entanto, se o tamanho dos dados for grande, os conjuntos de treinamento e validação podem ser vistos aproximadamente como distribuição normal, portanto, eles compartilham aproximadamente a média e var.

lennon310
fonte
11
A razão pela qual a normalização dos dados pode acelerar a descida do gradiente, eu acho, é que, sem normalização, o rss tem contornos elípticos, portanto, dada a taxa de aprendizado fixa, pode ser necessário mais iterações para que a descida do gradiente converja. Enquanto na escala, o rss possui contornos circulares (simétricos); portanto, a descida do gradiente converge rapidamente. Estou certo?
Abacate
1

A metodologia que você descreveu é sólida como outros disseram. Você deve executar exatamente a mesma transformação nos recursos do seu conjunto de testes e nos recursos do seu conjunto de treinamento.

Acho que vale a pena acrescentar que outro motivo para a normalização de recursos é melhorar o desempenho de certos processos sensíveis às diferenças na escala de determinadas variáveis. Por exemplo, a análise de componentes principais (PCA) visa capturar a maior proporção de variação e, como resultado, dará mais peso às variáveis ​​que exibem a maior variação se a normalização do recurso não for realizada inicialmente.

bibzzzz
fonte
Muito bom ponto! obrigado por trazê-lo. Lembro-me dos meus estudos sempre normalizando a matriz de entrada antes de calcular o PCA.
21416 SkyWalker