Classification linéaire



Au cours de cette démo pratique (et de la suivante), vous allez coder un classificateur linéaire avec coûts quadratique et logistique (régression logistique).

Fin de la démo précédente

Il est important d'avoir été capable de coder un perceptron qui tourne correctement dans la démo 5, afin de maîtriser les concepts de base de PLearn. Alors si ce n'est pas encore le cas, retournez-y (et n'hésitez pas à poser des questions pour ne pas rester bloqué).

Installation des fichiers de la démo

Classificateur linéaire

Au cours de la partie théorique, vous avez calculé le gradient de la fonction de coût (quadratique ou logistique) par rapport aux paramétres du modèle. Vous allez utiliser la formule ainsi trouvée dans votre propre code.

En vous inspirant du code de votre Perceptron, complétez la classe LinearClassifier (fichiers LinearClassifier.cc et LinearClassifier.h) pour implémenter un classificateur linéaire. Ce classificateur doit avoir un champ model_type de type string, qui devra être déclaré comme option dans LinearClassifier::declareOptions afin de pouvoir spécifier sa valeur dans les scripts. Ce champ doit pouvoir prendre deux valeurs :

Pour compiler votre code dans PLearn, vous devrez éditer le fichier plearn.cc dans votre répertoire d'installation de PLearn (faites which plearn si vous ne savez plus où il est), et rajouter une ligne #include "YYY/demo_6/LinearClassifier.h" où YYY est le répertoire dans lequel vous avez décompressé demo_6.tar.gz.

Vous devrez, en plus de rajouter les champs nécessaires, implémenter les méthodes suivantes :

Voici quelques fonctions PLearn utiles (voir la démo 5 pour d'autres fonctions) :

Lorsque vous pensez que votre code pourrait fonctionner, lancez par exemple une évaluation en train/valid/test par :
plearn train-valid-test-progression.plearn train_set=mnist_train_4_9.amat valid_set=mnist_valid_4_9.amat test_set=mnist_test_4_9.amat slr=0.001 mt=least_squares_classification dc=0 nstages=200 plearner=lin_classif.plearn
et ensuite :
plearn vmat view train-valid-test-progression-expdir/Split0/LearnerExpdir/Strat0results.pmat
Dans le fichier de résultats ainsi visulalisé, test1, test2 et test3 correspondent respectivement aux ensembles d'entraînement, de validation et de test.

Vous pouvez aussi jouer avec pyplot pour afficher par exemple des surfaces de décision sur des exemples jouets.

gdb 101

Comme généralement rien ne marche du premier coup, vous allez avoir le plaisir de débugguer votre programme. Tapez gdb plearn, puis la simple commande r qui va lancer PLearn sans argument (cela permet de s'assurer que la librairie entière est bien chargée). Des commandes utiles sont alors :