Pourquoi y a-t-il une asymétrie entre l'étape de formation et l'étape d'évaluation?

27

Il est bien connu, en particulier dans le traitement du langage naturel, que l’apprentissage automatique doit se dérouler en deux étapes, une étape de formation et une étape d’évaluation, et utiliser des données différentes. Pourquoi est-ce? Intuitivement, ce processus permet d'éviter de sur-ajuster les données, mais je ne vois pas de raison (théorique de l'information) que ce soit le cas.

De manière similaire, j'ai vu des chiffres sur la quantité d'un ensemble de données à utiliser pour la formation et la quantité pour l'évaluation, comme 2/3 et 1/3 respectivement. Existe-t-il une base théorique pour choisir une distribution particulière?

Tamzin Blake
la source

Réponses:

15

C'est drôle que la réponse la plus votée ne réponde pas vraiment à la question :) j'ai donc pensé qu'il serait bon de l'étayer avec un peu plus de théorie - principalement tirée de "Data Mining: Practical Machine Learning Tools and Techniques" et de Tom Mitchell. "Apprentissage automatique" .


Introduction.

Nous avons donc un classificateur et un ensemble de données limité, et une certaine quantité de données doit aller dans l'ensemble d'apprentissage et le reste est utilisé pour les tests (si nécessaire, un troisième sous-ensemble utilisé pour la validation).

Le dilemme auquel nous sommes confrontés est le suivant: pour trouver un bon classi fi cateur, le "sous-ensemble de formation" doit être aussi grand que possible, mais pour obtenir une bonne estimation d'erreur, le "sous-ensemble de test" doit être aussi grand que possible - mais les deux sous-ensembles sont tirés de la même piscine.

Il est évident que l'ensemble d'entraînement devrait être plus grand que l'ensemble de test - c'est-à-dire que le fractionnement ne devrait pas être 1: 1 (l'objectif principal est de s'entraîner , pas de tester ) - mais il n'est pas clair où le fractionnement devrait être.

Procédure d'exclusion.

La procédure de fractionnement du "surensemble" en sous-ensembles est appelée méthode d'exclusion . Notez que vous pouvez facilement être malchanceux et que des exemples d'une certaine classe peuvent être manquants (ou surreprésentés) dans l'un des sous-ensembles, qui peuvent être adressés via

  • échantillonnage aléatoire, qui garantit que chaque classe est correctement représentée dans tous les sous-ensembles de données - la procédure est appelée rétention stratifiée
  • échantillonnage aléatoire avec un processus répété de formation, de test et de validation en plus - ce que l'on appelle le maintien stratifié répété

Dans une procédure d'exclusion unique (non répétée), vous pourriez envisager d'échanger les rôles des données de test et de formation et de faire la moyenne des deux résultats, mais cela n'est plausible qu'avec une répartition 1: 1 entre les séries de formation et de test, ce qui n'est pas acceptable (voir Introduction ). Mais cela donne une idée, et une méthode améliorée (appelée à la place la validation croisée ) - voir ci-dessous!

Validation croisée.

En validation croisée, vous décidez d'un nombre fixe de plis (partitions des données). Si nous utilisons trois plis, les données sont divisées en trois partitions égales et

  • nous utilisons 2/3 pour la formation et 1/3 pour les tests
  • et répétez la procédure trois fois afin qu'au final, chaque instance ait été utilisée une seule fois pour les tests.

C'est ce qu'on appelle la triple validation croisée , et si la strati fi cation est également adoptée (ce qui est souvent vrai), elle est appelée triple validation croisée stratifiée .

Mais, voilà, la méthode standard n'est pas la division 2/3: 1/3. Quotting "Data Mining: Practical Machine Learning Tools and Techniques" ,

La méthode standard consiste à [...] utiliser une validation croisée multipliée par 10. Les données sont divisées au hasard en 10 parties dans lesquelles la classe est représentée dans les mêmes proportions que dans l'ensemble de données complet. Chaque partie se déroule à son tour et le programme d'apprentissage est formé sur les neuf dixièmes restants; puis son taux d'erreur est calculé sur l'ensemble de retenue. Ainsi, la procédure d'apprentissage est exécutée au total 10 fois sur différents ensembles de formation (chacun ayant beaucoup en commun). Enfin, les 10 estimations d'erreur sont moyennées pour donner une estimation d'erreur globale.

Pourquoi 10? Parce que ".. Des tests approfondis sur de nombreux ensembles de données, avec différentes techniques d'apprentissage, ont montré que 10 est à peu près le bon nombre de plis pour obtenir la meilleure estimation d'erreur, et il existe également des preuves théoriques qui corroborent cela .." Je n'ai pas Je n'ai pas trouvé les tests approfondis et les preuves théoriques qu'ils voulaient dire, mais celui-ci semble être un bon début pour creuser davantage - si vous le souhaitez.

Ils disent simplement

Bien que ces arguments ne soient nullement concluants et que le débat continue de faire rage dans les cercles de l'apprentissage automatique et de l'exploration de données sur le meilleur schéma d'évaluation, la validation croisée 10 fois est devenue la méthode standard en termes pratiques. [...] De plus, il n'y a rien de magique dans le nombre exact 10: 5 ou 20 fois la validation croisée est probablement aussi bonne.

Bootstrap, et - enfin! - la réponse à la question d'origine.

Mais nous ne sommes pas encore arrivés à la réponse, pourquoi le 2/3: 1/3 est souvent recommandé. Mon point de vue est qu'il est hérité de la méthode bootstrap .

Il est basé sur un échantillonnage avec remplacement. Auparavant, nous plaçions un échantillon du "grand ensemble" dans exactement l'un des sous-ensembles. Le bootstraping est différent et un échantillon peut facilement apparaître à la fois dans la formation et dans l'ensemble de test.

Examinons un scénario particulier où nous prenons un ensemble de données D1 de n instances et l'échantillons n fois avec remplacement, pour obtenir un autre ensemble de données D2 de n instances.

Regardez maintenant de près.

Étant donné que certains éléments de D2 seront (presque certainement) répétés, il doit y avoir des instances dans l'ensemble de données d'origine qui n'ont pas été sélectionnées: nous les utiliserons comme instances de test.

Quelle est la probabilité qu'une instance particulière n'ait pas été récupérée pour D2 ? La probabilité d'être capté à chaque prise est de 1 / n, donc l'inverse est (1 - 1 / n) .

Lorsque nous multiplions ces probabilités ensemble, c'est (1 - 1 / n) ^ n qui est e ^ -1 qui est d'environ 0,3. Cela signifie que notre ensemble de tests sera d'environ 1/3 et l'ensemble d'entraînement sera d'environ 2/3.

Je suppose que c'est la raison pour laquelle il est recommandé d'utiliser le fractionnement 1/3: 2/3: ce rapport est tiré de la méthode d'estimation bootstrap.

Envelopper.

Je veux terminer avec une citation du livre d'exploration de données (que je ne peux pas prouver mais supposer correcte) où ils recommandent généralement de préférer la validation croisée 10 fois:

La procédure d'amorçage peut être le meilleur moyen d'estimer l'erreur pour de très petits ensembles de données. Cependant, à l'instar de la validation croisée avec omission, elle présente des inconvénients qui peuvent être illustrés en considérant une situation spéciale et artificielle [...] un ensemble de données complètement aléatoire avec deux classes. Le taux d'erreur réel est de 50% pour toute règle de prédiction, mais un schéma qui a mémorisé l'ensemble d'entraînement donnerait un score de resubstitution parfait de 100% de sorte que les instances de formation = 0, et le bootstrap 0,632 mélangera cela avec un poids de 0,368 à donnent un taux d'erreur global de seulement 31,6% (0,632 ¥ 50% + 0,368 ¥ 0%), ce qui est trompeusement optimiste.

andreister
la source
13

Considérons un ensemble fini de m enregistrements. Si vous utilisez tous les enregistrements comme un ensemble d'entraînement, vous pouvez parfaitement ajuster tous les points avec le polynôme suivant:

y = a0 + a1 * X + a2 * X ^ 2 + ... + an * X ^ m

Maintenant, si vous avez un nouvel enregistrement, non utilisé dans l'ensemble d'apprentissage et que les valeurs d'un vecteur d'entrée X sont différentes de tout vecteur X, utilisé dans l'ensemble d'apprentissage, que pouvez-vous dire sur la précision de la prédiction y?

Je vous suggère de passer en revue un exemple où vous avez un vecteur d'entrée 1 ou 2 dimensions X (afin de visualiser le polynôme de surajustement) et de vérifier quelle est l'erreur de prédiction pour une paire (X, y) dont les valeurs X ne sont qu'un peu différent des valeurs de l'ensemble d'entraînement.

Je ne sais pas si cette explication est suffisamment théorique, mais j'espère que cela aide. J'ai essayé d'expliquer le problème sur le modèle de régression car je le considère plus intuitivement compréhensible que d'autres (SVM, Neural Networks ...).

Lorsque vous créez un modèle, vous devez diviser les données en au moins un ensemble de formation et un ensemble de test (certains divisent les données en ensemble de formation, d'évaluation et de validation croisée). Habituellement, 70% des données sont utilisées pour l'ensemble de formation et 30% pour l'évaluation, puis, lorsque vous créez le modèle, vous devez vérifier l'erreur de formation et l'erreur de test. Si les deux erreurs sont importantes, cela signifie que votre modèle est trop simple (le modèle a un biais élevé). D'un autre côté, si votre erreur d'apprentissage est très faible mais qu'il y a une grande différence entre l'erreur d'apprentissage et l'erreur de test, cela signifie que votre modèle est trop complexe (le modèle présente une variance élevée).

La meilleure façon de choisir le bon compromis est de tracer les erreurs de formation et de test pour les modèles de complexité variable, puis de choisir celle où l'erreur de test est minime (voir l'image ci-dessous). entrez la description de l'image ici

niko
la source
5
C'est une très bonne réponse pour savoir comment - pas tant pour pourquoi. Mais peut-être que c'est juste une mauvaise question - ce qui nous intéresse vraiment, c'est ce qui fonctionne empiriquement, pas la théorie.
Tamzin Blake
@Thom: Votre question est donc vraiment le deuxième paragraphe et non la fin du premier ("ne voyez pas pourquoi") parce que ce qui fonctionne empiriquement, c'est que vous êtes trop ajusté: votre modèle fait un excellent travail de gestion des bizarreries mineures dans votre données de formation qui ne sont pas présentes dans le cas général.
winwaed
1
@winwaed Les questions sont "Pourquoi y a-t-il ...?", "Pourquoi est-ce?" et "Y en a-t-il ...?", tous clairement indiqués par des points d'interrogation. Je connais le phénomène, je le trouve intuitif et je connais des exemples empiriques, mais je ne sais pas pourquoi c'est le cas, et il semble que la théorie de l'information devrait avoir une réponse pour moi. Le commentaire ci-dessus était juste une réflexion que les questions «pourquoi» ne sont peut-être pas particulièrement pertinentes une fois que vous avez des régularités empiriquement vérifiées que vous pouvez exploiter.
Tamzin Blake
7

C'est le problème de la généralisation - c'est-à-dire, dans quelle mesure notre hypothèse classera correctement les exemples futurs qui ne font pas partie de l'ensemble de formation. Veuillez voir cet exemple fantastique, ce qui s'est passé dans le cas où votre modèle ne correspondrait qu'aux données que vous avez et non à une nouvelle: loi de Titius-Bode

Dov
la source
Un bon exemple - c'est à peu près la même chose que pour les hypothèses scientifiques. Nous parlons toujours de modèles, qu'il s'agisse de modèles statistiques ML ou de modèles de l'univers.
winwaed
1

Jusqu'à présent, @andreiser a donné une réponse brillante à la deuxième partie de la question d'OP concernant la répartition des données de formation / test, et @niko a expliqué comment éviter le surapprentissage, mais personne n'a compris le mérite de la question: pourquoi utiliser des données différentes pour la formation et l'évaluation nous aide à éviter le sur-ajustement.


Nos données sont divisées en:

  1. Instances de formation
  2. Instances de validation
  3. Instances de test (évaluation)

M

M1,...,Mn

Il est important de comprendre quels sont les différents rôles des instances de validation et de test.

  1. Instances de formation - utilisées pour s'adapter aux modèles.
  2. Instances de validation - utilisées pour choisir un modèle
  3. Instances de test (évaluation) - utilisées pour mesurer la précision d'un modèle sur de nouvelles données

Voir la page 222 de The Elements of Statistical Learning: Data Mining, Inference, and Prediction pour plus de détails.


la source