Boosting



Au cours de cette démo pratique, vous allez jouer avec un algorithme de boosting (AdaBoost), et vous amuser comme des petits fous.

Installation des fichiers de la démo

Visualisation de la surface de décision

Écrivez un script binary_stump.plearn qui décrit un objet de la classe BinaryStump. Ce sera votre "weak learner".

Écrivez un script adaboost.plearn qui décrit un objet de la classe AdaBoost, et qui permet de choisir le "weak learner" en incluant le fichier pointé par la variable weak_learner (qui sera passée sur la ligne de commande). La variable nstages devra aussi permettre de spécifier le nombre d'itérations d'AdaBoost. Mettez l'option weight_by_resampling à 0 (false) puisque le PLearner sous-jacent est capable d'utiliser les poids de son ensemble d'entraînement.

Utilisez pyplot pour visualiser la frontière de décision obtenue sur train.amat pour différentes valeurs de nstages. (NOTE : utilisez binary_2d_classif plutôt que 2d_classif, il s'agit d'un hack temporaire fait a pyplot pour qu'il fonctionne avec une sortie uni-dimensionelle).

Essayez avec un autre "weak learner", comme une régression logistique. Vous pouvez utiliser la classe NNet (la régression logistique est identique à un réseau de neurones sans couche cachée, avec une sigmoide en fonction de transfert de sortie). Mettez comme coût à optimiser le coût gradient_adaboost_cost (vous pourrez comparer les résultats avec le coût stable_cross_entropy).

Script d'expérience

Écrivez un script tester.plearn qui décrit un objet de la classe PTester, et qui fait une expérience consistant à entraîner sur train.amat, et ensuite calcule les erreurs de classification sur train.amat, valid.amat et test.amat. Vous pouvez vous inspirer du script tester.plearn de la démo 7. N'hésitez pas à demander de l'aide pour comprendre l'utilisation de l'option final_commands pour stocker les résultats d'expériences dans un seul fichier.

Utilisez ce script pour observer l'évolution des erreurs ci-dessus lorsque le nombre d'itérations d'AdaBoost augmente, et avec différents "weak learners".