samedi 31 mai 2014

Bilan du TP "neural computing"

Quelques informations au sujet du TP. Les meilleurs performances, les moins bonnes, là où vous m'avez épaté, et là où vous auriez pu faire un peu mieux. Je donne aussi quelques hypothèses pouvant expliquer la baisse de performance de prédiction que certains d'entre vous ont pu constater sur leur système. Je vous donne aussi le fichier de label (les réponses attendues) que beaucoup d'entre vous m'on demandé...

Le sujet était d'identifier,automatiquement, la langue d'un message. Il s'agit d'un problème classique en "machine learning" (apprentissage, en français.), et qui est souvent traité par des réseaux neuronaux.
En pratique la formulation du TP était notablement plus difficile que la version classique du problème, car les messages étudiés étaient des Tweets, donc des messages court, et forcément plus le message est court plus le problème est difficile. De plus ces messages pouvaient contenir des URL qui sont très souvent raccourcies et donc ne reflètent pas les statistiques du langage. Une autre difficulté est que l'information des langages est même parfois fausse, ce qui peut évidement gêner l'apprentissage (en particulier les allemands qui semblent tweeter très souvent anglais... Mais ces difficultés étaient les même pour tous.

Les résultats en chiffres :
Puisqu'il y avait 7 langues à prédire, une prédiction aléatoire donnerai environ (1/7*100= 14,29%). Seul 4 rendus était à ce niveau. Un rendu était à 90,67% !! , et 9 étaient > 80%, et les 35 autres se situent entre ~20% et 80%. C'est pas mal du tout vu la difficulté du problème, et le temps que vous aviez à consacrer à ce TP. Et surtout, c'était votre premier projet en "machine learning".
Je suis donc globalement satisfait du travail. Je note cependant un manque de rigueur. Presque 1/3 d'entre vous on perdu au moins 1 point pour non respect des modalités de rendu, ou l'oubli de donner une information demandée pour le rapport, ou on eu besoin de soumettre plusieurs fois leur prédiction par manque de vérification.
Pour beaucoup les performances annoncées dans le rapport était assez proche de celles que j'ai constaté sur les données d'évaluation. pour ceux qui ont perdu plus de 10% voici une liste d'hypothèses :
  • Certain n'avaient pas bien compris le principe des test (quand la matrice de confusion du rapport était fausse) dans ce cas il s'agissait probablement de sur-apprentissage (de l'apprentissage "par coeur").
  • Les retweets , si ils ne sont pas supprimés, peuvent fausser l'estimation des performance. En effet, si le tweet original se trouve dans la base d'apprentissage, et si les retweets se trouvent dans la base de test, ils seront naturellement (trop) bien identifiés. En gros ça revient à avoir une base d'apprentissage et une base de test non-disjointe. La base d'évaluation étant faite plusieurs jours après, à priori, elle ne contient pas de retweet provenant de la base que je vous avait fournit, d'où la baisse de performance. Pour être exact, il s'agirait plutôt d'une sur évaluation des performances sur les tests, que une baisse sur le fichier d'évaluation.
  • Après discussion avec certains d'entre vous qui sont venu me voir, j'ai identifié que l'étape de normalisation était parfois mal comprise. Voici les deux mal-entendus que j'ai identifiés :
    • La normalisation doit de faire par colonne et non par ligne. C'est à dire qu'il faut rechercher, pour chaque neurone d'entrée, une valeur min et max. Certain l'avaient apparemment fait par ligne (et donc avoir un min et un max par tweet.)
    • La recherche des min et des max, doit être fait une seule fois, sur la base d'apprentissage. Il faut reprendre les même valeurs pour normaliser sur la base de test et d'évaluation. Pour vous en convaincre imaginez que vous n'avez qu'un seul tweet à évaluer, vous sentez bien que vous n'allez pas re-estimer les min et max sur un seul tweet. Gardez en mémoire que vous devez présenter des données qui ont eu le même traitement que la base d'apprentissage. Si vous re-estimez les min et max, vous ne présentez donc plus des données conformes à ce qu'on à présenté lors de l'apprentissage. Et donc les performances sont moins bonnes.
Certains étudiants on constaté qu'il y avait, quelque part dans le fichier d'évaluation, un caractère "retour à la ligne" non standard, et selon les manières de l'interpréter cela pouvait générer un décalage. Ce décalage pouvait évidement faire chuter les performances mesurées, et cela d'autant plus que ce décalage était vers le début du fichier. Rassurez vous, j'ai gérer le problème, j'ai tout simplement calculer les 2 cas (avec et sans le décalage) et j'ai pris la configuration qui donnait le meilleur résultat.
Pour finir, je suis content de voir que plusieurs personnes m'ont demandé le fichier de label, c'est à dire la réalité des prédictions que vous avez faites. C'est bien de s'intéresser au fond des choses, et pas seulement s'arrêter à la note. J'ai donc attaché à cet article la version compressée du fichier de labels.


Annexe(s) :