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) :
Aucun commentaire:
Enregistrer un commentaire