Effectuer la normalisation des fonctionnalités avant ou dans la validation du modèle?

52

Une bonne pratique courante en Machine Learning est de normaliser les caractéristiques ou de normaliser les données des variables prédites, centrer les données soustrayant la moyenne et les normaliser en les divisant par la variance (ou l’écart type). Pour nous maîtriser et pour autant que je sache, nous faisons cela dans le but de réaliser deux choses principales:

  1. Évitez les poids de modèle très petits pour la stabilité numérique.
  2. Assurer la convergence rapide des algorithmes d'optimisation tels que, par exemple, le gradient de conjugué, de sorte que la grande amplitude d'une dimension d'un prédicteur par rapport aux autres ne provoque pas une convergence lente.

Nous divisons généralement les données en ensembles de formation, de validation et de test. Dans la littérature, nous voyons généralement que pour normaliser les caractéristiques, elles prennent la moyenne et la variance (ou écart type) sur l’ensemble des variables prédictives. Le gros défaut que je vois ici est que si vous faites cela, vous introduisez en fait des informations futures dans les variables prédictives de formation, à savoir les informations futures contenues dans la moyenne et la variance.

Par conséquent, je présente la normalisation sur les données d'apprentissage et enregistre la moyenne et la variance. Ensuite, j'applique la normalisation des caractéristiques aux variables de prévision des ensembles de données de validation et de test à l'aide de la moyenne d'apprentissage et des variances. Y at-il des défauts fondamentaux avec cela? quelqu'un peut-il recommander une meilleure alternative?

SkyWalker
la source

Réponses:

46

Votre approche est tout à fait correcte. Bien que les transformations de données soient souvent sous-estimées en tant que "prétraitement", on ne saurait trop insister sur le fait que les transformations permettant d'optimiser les performances du modèle peuvent et doivent être traitées comme faisant partie du processus de construction du modèle.

Raisonnement: Un modèle doit être appliqué à des données invisibles qui ne sont généralement pas disponibles au moment de la construction du modèle. Le processus de validation (y compris le fractionnement des données) simule cela. Donc, pour obtenir une bonne estimation de la qualité du modèle (et de la puissance de généralisation), il faut limiter le calcul des paramètres de normalisation (moyenne et variance) à l'ensemble d'apprentissage.

Je ne peux que deviner pourquoi cela n’est pas toujours fait dans la littérature. L'un des arguments pourrait être que le calcul de la moyenne et de la variance n'est pas très sensible aux petites variations de données (même si cela n'est vrai que si la taille de l'échantillon est suffisamment grande et que les données sont approximativement normalement distribuées sans extrêmes extrêmes).

steffen
la source
Je trouve cela un peu déroutant. L'opérateur dit qu'il effectue la normalisation des fonctionnalités sur la validation et les ensembles de données de test. Votre réponse dit d'abord que son approche est correcte. Ensuite, vous dites "il faut limiter le calcul des paramètres de normalisation à l'ensemble d'apprentissage", ce qui n'est pas ce qu'il fait. Donc, votre réponse se contredit en lui disant que ce qu'il fait est correct et en suggérant le contraire. Qu'est-ce que j'oublie ici?
Mahonya
4
Ce que fait le PO est décrit dans son dernier paragraphe et c’est exactement ce que j’ai dit. Bien entendu, la normalisation est appliquée à l'ensemble test / validation si elle a été appliquée à l'ensemble d'apprentissage. Le point important est que les paramètres de cette normalisation ont été calculés uniquement sur les données d'apprentissage et non sur l'ensemble. J'espère que cela t'aides.
steffen
Ah, merci beaucoup. J'ai mal compris votre réponse. Je pensais que vous aviez suggéré l'application de la normalisation à un ensemble d'entraînement uniquement, ce qui n'était clairement pas ce que vous avez suggéré.
Mahonya
2

La normalisation des fonctionnalités consiste à créer différentes fonctionnalités à la même échelle. La mise à l'échelle accélère la descente de gradient en évitant de nombreuses itérations supplémentaires nécessaires lorsqu'une ou plusieurs entités prennent des valeurs beaucoup plus grandes que les autres (sans mise à l'échelle, la fonction de coût visualisée affichera une grande asymétrie).

Je pense qu'il est logique d'utiliser la moyenne et la variété de l'ensemble d'apprentissage lorsque les données de test sont fournies. Cependant, si la taille des données est énorme, les ensembles de formation et de validation peuvent être approximativement considérés comme une distribution normale; ils partagent donc approximativement la moyenne et la variété.

lennon310
la source
1
La raison pour laquelle la normalisation des données peut accélérer la descente de gradient, je suppose, est que sans normalisation, les flux rss ont des contours elliptiques. Par conséquent, si le taux d’apprentissage est fixe, il faudra peut-être plus d’itérations pour que la descente de gradient converge. Tandis qu'avec la mise à l'échelle, rss a des contours de cercle (symétriques), de sorte que la descente de gradient converge rapidement. Ai-je raison?
avocat
1

La méthodologie que vous avez décrite est valable, comme d'autres l'ont dit. Vous devez effectuer exactement la même transformation sur les fonctionnalités de votre ensemble de test que sur les fonctionnalités de votre ensemble de formation.

Je pense qu'il est intéressant d'ajouter qu'une autre raison de la normalisation des fonctionnalités est l'amélioration des performances de certains processus sensibles aux différences d'échelle de certaines variables. Par exemple, l'analyse en composantes principales (ACP) vise à capturer la plus grande proportion de variance et donne ainsi plus de poids aux variables présentant la variance la plus importante si la normalisation des caractéristiques n'est pas effectuée initialement.

bibzzzz
la source
Très bon point! merci de l'avoir apporté. Je me souviens de mes études en normalisant toujours la matrice d'entrée avant de calculer PCA.
SkyWalker