Comment gérer la différence entre la distribution de l'ensemble de test et l'ensemble de formation?


23

Je pense qu'une hypothèse de base de l'apprentissage automatique ou de l'estimation des paramètres est que les données invisibles proviennent de la même distribution que l'ensemble d'apprentissage. Cependant, dans certains cas pratiques, la distribution de l'ensemble de test sera presque différente de l'ensemble de formation.

Disons pour un problème de classification multiple à grande échelle qui essaie de classer les descriptions de produits en environ 17 000 classes. L'ensemble de formation aura des classes a priori très asymétriques, de sorte que certaines classes peuvent avoir de nombreux exemples de formation, mais certaines peuvent n'en avoir que quelques-unes. Supposons que l'on nous donne un ensemble de tests avec des étiquettes de classe inconnues d'un client. Nous essayons de classer chaque produit de l'ensemble de test dans l'une des 17 000 classes, en utilisant le classificateur formé sur l'ensemble de formation. L'ensemble de tests aurait probablement des distributions de classe asymétriques mais probablement très différentes de celles de l'ensemble de formation, car elles pourraient être liées à différents domaines d'activité. Si les deux distributions de classe sont très différentes, le classificateur formé peut ne pas fonctionner correctement dans l'ensemble de test. Cela semble particulièrement évident avec le classificateur Naive Bayes.

Existe-t-il un moyen de principe de gérer la différence entre l'ensemble de formation et un ensemble de test donné pour les classificateurs probabilistes? J'ai entendu dire que "SVM transductif" fait la même chose dans SVM. Existe-t-il des techniques similaires pour apprendre un classificateur qui fonctionne le mieux sur un ensemble de tests donné? Ensuite, nous pouvons recycler le classificateur pour différents ensembles de tests donnés, comme cela est autorisé dans ce scénario pratique.

Réponses:


17

Si la différence réside uniquement dans les fréquences de classe relatives dans les ensembles de formation et de test, je recommanderais la procédure EM présentée dans cet article:

Marco Saerens, Patrice Latinne, Christine Decaestecker: Ajuster les sorties d'un classifieur aux nouvelles probabilités a priori: une procédure simple. Calcul neuronal 14 (1): 21-41 (2002) ( www )

Je l'ai utilisé moi-même et j'ai trouvé que cela fonctionnait très bien (vous avez besoin d'un classificateur qui génère une probabilité d'appartenance à la classe).

Si la distribution des modèles au sein de chaque classe change, alors le problème est connu sous le nom de «décalage covariable» et il y a un excellent livre de Sugiyama et Kawanabe . De nombreux articles de ce groupe sont disponibles en ligne, mais je recommanderais fortement de lire le livre également si vous pouvez vous procurer un exemplaire. L'idée de base est de pondérer les données d'entraînement en fonction de la différence de densité entre l'ensemble d'entraînement et l'ensemble de test (pour lesquels des étiquettes ne sont pas requises). Un moyen simple d'obtenir la pondération consiste à utiliser la régression logistique pour prédire si un modèle est tiré de l'ensemble d'apprentissage ou de l'ensemble de tests. La partie difficile consiste à choisir la pondération à appliquer.

Voir aussi le bel article de blog d'Alex Smola ici .


Merci beaucoup d'avoir fourni autant de conseils utiles!
Fashandge

pas de problème, ce genre de situations "non standard" est vraiment intéressant, et le décalage covariable est un domaine de recherche particulièrement utile.
Dikran Marsupial

1
Il est bon de savoir que. Bien que "non standard", il est réaliste dans la pratique.
Fashandge

1

J'ai trouvé un excellent tutoriel sur l'adaptation de domaine qui pourrait aider à expliquer cela plus en détail: http://sifaka.cs.uiuc.edu/jiang4/domain_adaptation/survey/da_survey.html La seule solution qui n'a pas été mentionnée ici est basée sur ADABOOST. Voici le lien vers l'article d'origine: http://ftp.cse.ust.hk/~qyang/Docs/2007/tradaboost.pdf L'idée de base est d'utiliser certaines des nouvelles données de test pour mettre à jour l'apprentissage à partir des données du train Cet article est la pointe de l'iceburg sur le transfert d'apprentissage - où vous prenez ce que vous savez d'une tâche et l'appliquez à une autre.


1
Pourriez-vous inclure certains points récapitulatifs clés du premier didacticiel, en particulier dans le cas où le lien tombe en panne ou que son emplacement change? Nous avons un problème avec la "pourriture de lien" ici où la valeur de certaines de nos réponses plus anciennes s'est dégradée en raison de l'arrêt des liens, donc c'est bien si les réponses peuvent être aussi autonomes que possible
Silverfish

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.