L'utilisation de manière brute d'algorithmes de classification n'est souvent pas suffisante pour obtenir des performances optimales en vue des problèmes auxquels vous serez confrontés. A travers l'exemple de la classification de sentiments, on va voir qu'il est important d'effectuer des modifications préalables de son corpus et de ses features spécifiques à nos problèmes.
Particularités de la classification de sentiments
Comme la classification des sentiments d’un texte est un problème relativement classique de traitement du langage, il existe un certain nombre de techniques spécifiques qui permettent d’obtenir des modèles plus performants sur cette tâche. C’est une bonne illustration du type de manipulation qui permet d’orienter son travail de modélisation en fonction de la problématique abordée.
Par exemple, on ne va pas utiliser un bag-of-words avec comptage, mais simplement la présence ou pas d’un mot dans un document. En effet, que le mot “désastre” apparaisse une ou deux fois influence peu la probabilité que le document soit négatif. C'est un critère flag binaire.
Voici une autre technique utilisée pour régler le problème de la négation. Si je dis « je n’ai pas aimé ce film », la négation “n’” inverse le sentiment de ma phrase comparé à “aimer” qui se retrouve davantage dans des documents positifs habituellement. Pour contrer ce problème de manière simple, il suffit d’ajouter un indicateur au mot suivant la négation comme signifiant que son sens a été modifié.
Ainsi, une phrase telle que “je n’aime pas cette personne” sera transformée en bag-of-words : { “je”, “ne”, “NON_aime”, “pas”, “cette”, “personne” }. en ajoutant des préfixes du type "NON_", une bonne partie des problèmes sur ce genre d’inversions de sens est ainsi réglée.
Enfin, une technique de base est d’utiliser un lexique de mots représentatifs de vos classes, en l’occurrence ici positif et négatif. Si on utilise simplement le nombre d’apparitions de mots du lexique par classe bien construit pour entraîner un modèle de classification, on a déjà une bonne baseline.
Ainsi, toute ces petites modifications et ajouts permettent de rendre notre modèle plus spécialisé pour notre problématique afin de donner de meilleures performances. Je vous encourage à développer ce genre de tweaks lors de la création d’un modèle pour un problème donné.
Utiliser d’autres types d'algorithmes de classification supervisée
On a utilisé un modèle simple et robuste, le classifieur bayésien naïf. Pourquoi vouloir utiliser un autre type de classifieur ?
Une hypothèse très forte qui est faite lors de l’utilisation du classifieur Bayes est l’indépendance des features. Ce qui signifie que si deux features sont en réalité corrélées, elles auront un effet plus fort que ce qu’elles apportent en réalité comme information pour la classification. D’autres types de modèles ne sont pas aussi sensibles à cette corrélation entre les features, voire permettent de modéliser cette interaction entre les features pour rendre le modèle plus performant. C'est une des différences possibles qui influenceront votre choix de classifieur. En général, l'idée est de pré-tester un certain nombre de classifieur qui intuitivement correspondent à votre problème pour savoir sur lequel vous concentrer.
Régression Logistique
La régression logistique, à l’opposé de la classification bayes ,est un modèle de classification discriminant. Il est expliqué plus en détail ici.
Son objectif est de maximiser la probabilité d’avoir une classe y = c étant donné certaines features f(x,c) calculées à partir des observations x. Cette maximisation s’effectue en général avec les méthodes classiques de descente de gradient, avec un terme de régularisation supplémentaire.
On peut directement appliquer la régression logistique sur des matrices creuses de la taille du vocabulaire ou sur les vecteurs plus denses que l’on a créé à l’aide des techniques utilisées dans les chapitres précédents.
SVM, forêts aléatoires
Le choix d’un classifieur est en fait un retour à l’éternel dilemme biais-variance, indépendamment du fait qu’on est amené à traiter du texte. Le classifieur Naive Bayes possède une variance faible et va pouvoir mieux généraliser plus rapidement, ce qui peut être utile lorsqu’on a un petit jeu de données ou des documents avec peu de texte. La contrepartie, bien sûr, c’est que ce genre de classifieur va avoir une plus faible précision (un biais plus grand) comparé à des classifieurs type SVM + RBF Kernel ou une régression logistique.
Conclusion
Dans un premier temps, nous favorisions un travail expert sur les features avant de se concentrer sur l'utilisation d'un classifieur approprié à la problématique en cours et aux hypothèses de départ.