Comment appliquer la normalisation / normalisation à la formation et aux tests si l'objectif est la prédiction?

47
  1. Est-ce que je transforme toutes mes données ou mes plis (si CV est appliqué) en même temps? par exemple

    (allData - mean(allData)) / sd(allData)

  2. Est-ce que je transforme les trains et les tests séparément? par exemple

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(testData)) / sd(testData)

  3. Ou dois-je transformer la rame et utiliser des calculs sur la base de tests? par exemple

    (trainData - mean(trainData)) / sd(trainData)

    (testData - mean(trainData)) / sd(trainData)

Je crois que 3 est la bonne façon. Si 3 est correct, dois-je m'inquiéter de ce que la moyenne ne soit pas 0 ou que la plage ne soit pas comprise entre [0; 1] ou [-1; 1] (normalisation) du jeu de tests?

DerTom
la source
Y at-il un moyen ellegant de le coder R? Voir cette question: stackoverflow.com/questions/49260862/…
Boern

Réponses:

42

La troisième voie est correcte. C’est exactement la raison pour laquelle l’on aborde de manière très détaillée les éléments de l’apprentissage statistique , voir la section "Validation croisée fausse et correcte", ainsi que le dernier chapitre de Learning From Data , dans l’exemple du marché boursier.

Essentiellement, les procédures 1 et 2 contiennent des informations sur la réponse, ou celles du futur, de votre ensemble de données de conservation dans la formation ou l'évaluation de votre modèle. Cela peut entraîner un biais d'optimisme considérable dans l'évaluation de votre modèle.

L’idée de la validation du modèle est d’imiter la situation dans laquelle vous vous trouvez lorsque votre modèle prend des décisions de production, lorsque vous n’avez pas accès à la vraie réponse. La conséquence est que vous ne pouvez pas utiliser la réponse dans l'ensemble de tests pour quoi que ce soit, sauf pour comparer vos valeurs prédites.

Une autre façon de procéder consiste à imaginer que vous n’avez accès qu’à un seul point de données de votre réserve à la fois (situation courante pour les modèles de production). Tout ce que vous ne pouvez pas faire dans cette hypothèse doit être assumé par de grands soupçons. Clairement, une chose que vous ne pouvez pas faire est d'agréger tous les nouveaux points de données passés et futurs pour normaliser votre flux de données de production. De même, faire de même pour la validation du modèle n'est pas valide.

Vous n'avez pas à vous soucier de la moyenne de votre ensemble de tests comme étant non nulle, c'est une meilleure situation que de biaiser vos estimations de performance de maintien. Bien entendu, si le test est véritablement tiré de la même distribution sous-jacente que votre train (hypothèse essentielle de l’apprentissage statistique), cette moyenne devrait être approximativement égale à zéro.

Matthew Drury
la source
C'est ce que je pensais. Merci d'avoir clarifié cela!
DerTom
Clearly, one thing you cannot do is aggregate over all new data-points past and future to normalize your production stream of data. Pourquoi pas?
Anmol Singh Jaggi
1
@AnmolSinghJaggi C'est le "et l'avenir". Si vous n'avez pas encore collecté les données, vous ne pouvez pas les utiliser normalement.
Matthew Drury
5
@floodking Si vous pensez des données de formation en tant que données « passé », et d' essai « actuelle ou future » des données, en regroupant l' ensemble de vos données de test que vous utilisez implicitement des informations sur l' avenir de X. fuite de données ne concerne pas seulement les fuites dans votre prédicteurs, il s’agit également de la fuite d’informations du futur. En règle générale, vous devriez être capable de faire des prédictions en utilisant une seule ligne ou vos données de test, sinon vous utilisez l'avenir. y
Matthew Drury
1
@ MatthewDrury. Merci pour votre explication claire. Je suis d'accord avec toi maintenant. Seule la troisième voie est correcte.
inondation