Quand voudrait-on utiliser AdaBoost?

14

Comme j'ai entendu parler du classificateur AdaBoost à plusieurs reprises au travail, je voulais avoir une meilleure idée de son fonctionnement et du moment où on pourrait l'utiliser. Je suis allé de l'avant et j'ai lu un certain nombre d'articles et de didacticiels que j'ai trouvés sur Google, mais il y a des aspects du classificateur que j'ai encore du mal à comprendre:

  1. La plupart des didacticiels que j'ai vus parlent d'AdaBoost comme de la meilleure combinaison pondérée de nombreux classificateurs. Cela me semble logique. Ce qui n'a pas de sens, ce sont les implémentations (c'est-à-dire MALLET) où AdaBoost semble n'accepter qu'un seul apprenant faible. Comment cela a-t-il un sens? S'il n'y a qu'un seul classificateur fourni à AdaBoost, ne devrait-il pas simplement renvoyer ce même classificateur avec un poids de 1? Comment produit-il de nouveaux classificateurs à partir du premier classificateur?

  2. Quand voudrait-on réellement utiliser AdaBoost? J'ai lu qu'il était censé être l'un des meilleurs classificateurs prêts à l'emploi, mais lorsque j'essaie d'augmenter un classificateur MaxEnt, j'obtenais des scores f de 70% +, AdaBoost le tue et me donne f- scores de quelque chose comme 15% avec un rappel très élevé et une très faible précision à la place. Alors maintenant, je suis confus. Quand voudrais-je jamais utiliser AdaBoost? Je cherche plus d'une réponse intuitive plutôt que strictement statistique, si possible.

YuliaPro
la source

Réponses:

11

Adaboost peut utiliser plusieurs instances du même classificateur avec différents paramètres. Ainsi, un classificateur précédemment linéaire peut être combiné en classificateurs non linéaires. Ou, comme les gens d'AdaBoost aiment le dire, plusieurs apprenants faibles peuvent faire un apprenant fort. Une belle photo peut être trouvée ici , en bas.

Fondamentalement, cela va comme avec tout autre algorithme d'apprentissage: sur certains ensembles de données, il fonctionne, sur certains, il ne fonctionne pas. Il y a bien sûr des ensembles de données là où ça excelle. Et peut-être que vous n'avez pas encore choisi le bon apprenant faible. Avez-vous essayé la régression logistique? Avez-vous visualisé l'évolution des limites de décision lors de l'ajout d'apprenants? Vous pouvez peut-être savoir ce qui ne va pas.

bayerj
la source
(+1). Remarque supplémentaire: Même les paramètres des apprenants faibles ne diffèrent pas, le comportement (c'est-à-dire ce qu'ils prédisent) change lorsque la structure de l'ensemble de données (comme pour le renforcement) change.
steffen
MaxEnt est une régression logistique. Visualiser l'évolution des limites de décision serait en fait très utile. Comment peut-on s'y prendre? De plus, je ne comprends toujours pas comment AdaBoost fonctionne toujours quand on ne lui donne qu'un seul ensemble de fonctionnalités et un seul type de classificateur (comme dans MALLET). Pour moi, cela semble complètement contre-intuitif.
YuliaPro
Tracez simplement votre ensemble de données. De plus, tracez une grille où vous choisissez une couleur pour chaque point, comment elle est classée par votre système. Cela ne fonctionne que pour la 2D, je suppose. Vous pouvez toujours tracer les axes les plus importants ou quelque chose. Si vous n'avez qu'un seul ensemble de fonctionnalités et un seul classificateur, il se réduit à un seul classificateur. J'avais l'impression que l'entropie maximale était un paradigme et non un classifieur concret. En tous cas.
bayerj