Tech

Chatbot & NLP / NLU : comment (vraiment) évaluer la performance ?

Si vous êtes des lecteurs réguliers de nos articles sur les agents conversationnels et le traitement du langage naturel ou de nos cas clients, vous savez que nous sommes attachés à construire des chatbots performants avec une approche pragmatique. Pour cela, nous utilisons différentes méthodes de conception comme le Chatbot Design Canva.

Au cœur d'un agent conversationnel se situe un élément qui lui permet de comprendre le langage naturel d'un utilisateur. Il peut s'agir simplement de détecter des mots-clefs, mais celui peut aussi souvent être un système plus complexe qui s'appuie sur le machine learning. Le machine learning appliqué au traitement du langage naturel (NLP = Natural Langage Processing & NLU = Natural Langage Understanding) repose un processus simple : la récupération de données, leur annotation et évaluation, puis l’entraînement d’un modèle NLU à partir de ces données. Une fois la phase d’entraînement terminée, il faut alors évaluer les performances du modèle. Pour cela, il est nécessaire d'utiliser un indicateur qualitatif tel que la matrice de confusion.

Avant de définir le contenu de cette matrice et de voir comment elle permet d'évaluer les performances d'un modèle de NLP / NLU, jetons d’abord un œil au tableau ci-dessous qui nous servira d'exemple pour cet article.

Qu’est-ce que la matrice de confusion ?

Il s'agit de la représentation synthétisée en un tableau à deux dimensions du tableau ci-dessus, dont la structure est alors :

Cette matrice évalue la performance d'un modèle de classification sur un ensemble de valeurs prédites dont les valeurs réelles sont connues. En d'autres termes, elle permet de comparer facilement les résultats prédits par le modèle aux résultats réels.

Elle est définie par quatre caractéristiques :

  • Vrai positif : Les situations pour lesquelles un évènement qui s’est produit a été également prédit par le modèle. Dans notre exemple, le patient est atteint du cancer, et le modèle l’a également prédit.
  • Vrai négatif : Cas pour lesquels le modèle prédit que rien ne s’est passé lorsqu’il ne s’est réellement rien passé. Le modèle prédit que le patient n’a pas le cancer, et effectivement, il ne l’a pas.
  • Faux positif : Cas pour lesquels le modèle prédit que quelque chose s’est passé, alors que ce n’est pas le cas. Dans notre exemple, le patient n’a pas le cancer mais le modèle prédit qu’il l’a.
  • Faux négatif : Situations pour lesquelles le modèle ne prédit rien alors qu’il aurait dû. Pour notre exemple, ce sont les cas où le modèle ne prédit pas que le patient a le cancer, alors qu’il en est réellement atteint.

Comment la matrice de confusion évalue la performance de votre modèle NLP NLU, et donc de votre chatbot ?

Ce que nous avons maintenant besoin de savoir est comment fonctionne cette matrice sur le jeu de données. Pour cela, nous allons continuer sur le même exemple (le patient est atteint d’un cancer ou ne l’est pas), que nous allons visualiser comme un ensemble de données avec des paramètres en entrée (âge, taille, etc), le résultat (la cible) et la prédiction.

Dans ce classement des données, les caractéristiques qui sont l'âge de la personne, si elle est fumeuse ou non, sa taille, jusqu'à n critères, sont les différentes variables. Pour la cible, qui est une variable dépendante, nous avons assigné le numéro 1 à une valeur positive (le patient a le cancer), et 0 à une valeur négative (il ne l’a pas).

Une fois que nous avons entraîné le modèle, que nous avons les différentes prédictions, et que nous voulons évaluer la performance, voici ce à quoi la matrice de confusion ressemblerait.

  • Vrais positifs (VP) = 4 : il y a 4 cas dans le jeu de données pour lesquels le modèle a prédit 1, et où la cible était également de 1.
  • Faux positif (FP) = 1 : il y a 1 cas pour lequel le modèle a prédit 1, tandis que la cible était 0.
  • Faux négatifs (FN) = 1 : il y a 1 cas pour lequel le modèle a prédit 0, tandis que la cible était de 1.
  • Vrais négatifs (VN) = 3 : il y a 3 cas pour lesquels le modèle a prédit 0, et où la cible était également de 0.

Pourquoi la matrice de confusion est-elle importante pour évaluer la performance de votre modèle NLP / NLU ?

Il y a 4 indicateurs déductibles de la matrice de confusion déterminant les performances de votre modèle NLP / NLU :

  1. L’exactitude,
  2. La précision (valeur de prédiction positive)
  3. Le rappel (taux positif réel)
  4. Le score F beta

Chaque indicateur aura un score compris entre 0 et 1, permettant d’indiquer si dans leur globalité les prédictions du modèle étaient justes (le score sera plus près du 1) ou fausses (le score sera plus près du 0). Aussi bon ou mauvais que le score soit, il est important de ne pas se fier qu'à un seul indicateur, mais de tous les prendre en compte pour pouvoir correctement juger de la performance globale de votre modèle.

L’exactitude

L’exactitude est le nombre de vraies valeurs correctement prédites sur le total.

L’exactitude doit être prise en compte lorsque les vrais positifs et les vrais négatifs sont les plus importants, et que l'ensemble de données est équilibré, car dans ce cas le modèle ne sera pas biaisé en fonction de la distribution des classes. Cependant, dans la réalité des problèmes de classification, la distribution de classes est souvent déséquilibrée.

Par exemple, nous avons des données de tests déséquilibrées avec 900 enregistrements de la classe positive (1) et 100 enregistrements de la classe négative (0). Notre modèle a prédit que tous les enregistrements étaient positifs (1).

Dans ce scénario, le nombre de vrai positif sera de 900 et de vrai négatif de 0. Ainsi, l’exactitude sera de (900 + 0) / 1000 = 90%

Par conséquent, il est nécessaire de considérer la précision, le rappel et le score F comme une meilleure mesure pour évaluer le modèle.

La précision

La précision est le nombre de valeurs positives réelles sur le total des valeurs positives prévues.

Quand est-ce que la précision doit être considérée ?

Prenons un cas d'utilisation de la détection du spam. Supposons que le mail n'est pas du spam (0), mais que le modèle l'a prédit comme étant du spam (1). On a donc un faux positif.

Dans ce scénario, on peut passer à côté d’un courrier important. Nous devons donc nous concentrer sur la réduction des faux positifs, et bien tenir compte de la précision.

Le rappel

Le rappel est le nombre de valeurs correctement prédites comme positives sur le total des valeurs positives réelles.

Quand est-ce que le rappel doit être considéré ?

Dans la détection du cancer, supposons qu'une personne ait un cancer (1), mais que celui-ci ne soit pas prédit (0) par le modèle. On a alors un faux négatif. Cela pourrait être une catastrophe.

Dans ce scénario, nous devons donc nous concentrer sur la réduction des FN et envisager le rappel.

En fonction de votre problème, chaque fois que le taux de faux positif a un impact plus important, choisissez la précision. Chaque fois que le taux de faux négatif est important, choisissez le rappel.

NB : le rappel ne prend pas en compte les vrais négatifs. Par conséquent, son score n’est pas un indicateur absolu de la qualité d’une prédiction.

Le score F bêta

Dans certains cas d'utilisation, la précision et le rappel sont tous deux importants. De même, dans certains cas d'utilisation, même si la précision joue un rôle important ou si le rappel est important, nous devons combiner les deux pour obtenir un résultat reflétant le plus possible la réalité.

Sélection de la valeur bêta :

  • Choisir le score F-1 (bêta =1 )

Ce score est à utiliser lorsque le faux positif et le faux négatif sont tous deux d'égale importance. Cela permet au modèle de considérer à la fois la précision et le rappel de manière égale en utilisant un seul score.

Le score F-1 est la moyenne harmonique de la précision et du rappel.

  • Choisir une valeur bêta plus petite telle que bêta = 0.5.

Cette valeur est à utiliser si l'impact du faux positif est élevé. Cela permettra de donner plus de poids à la précision qu'au rappel.

  • Choisir une valeur bêta plus élevée telle que bêta = 2.

Si l'impact du faux négatif est élevé, alors cette valeur bêta est à utiliser. Ainsi, cela permettra de donner plus de poids au rappel et moins à la précision.

Comment nous utilisons ces indicateurs chez Like a Bot pour la mise au point de chatbot performant ?

Chez Like a Bot, nous utilisons en général des modèles qui nous renvoient une probabilité. Afin d’avoir un score entre 0 et 1 à l’instar des exemples précédents, nous estimons par exemple qu’au-dessus de 50%, la prédiction est positive et qu'en dessous de 50%, la prédiction est négative.

Quand nous faisons varier ce seuil de 50% vers le bas, notre modèle va avoir tendance à prédire plus de faux positifs et moins de faux négatifs, et inversement quand nous faisons varier ce seuil vers le haut.

L’intérêt de cette méthode vient du fait de l’importance des faux positifs et des faux négatifs, qui n’est pas la même d’un projet à l’autre.

Prenons un exemple pour lequel une même intention mais deux cas d’application différents nous montrent la différence d’importance entre faux positifs et faux négatifs : nous utilisons des modèles pour détecter quand une personne a besoin de contacter un humain pour poursuivre la conversation entamée avec le chatbot. Pour un chatbot marketing avec beaucoup de trafic et peu de besoin en service, il faut réduire au maximum le taux de faux positifs de cette intention car ils seront susceptibles d’envoyer une fausse alerte au service de relation client, et à terme de causer un engorgement du service. Inversement, pour un chatbot de service après-vente, pour lequel l’engagement de l’utilisateur est certain, il faut réduire au maximum le taux de faux négatifs, afin d’avoir une satisfaction client maximale. Dans ce cas de figure, on regardera avec plus d’attention le rappel afin de limiter ces faux positifs.

Vous le voyez, faire un chatbot performant ne se résume pas à donner quelques phrases d'exemple et à faire confiance au machine learning.

Il est important de consacrer du temps sur le nombre de vrais et faux positifs et négatifs, et d'avoir une démarche basée sur les valeurs issues de la matrice de confusion.

Il est également important de ne pas oublier que tous les indicateurs ne sont pas absolus, et comportent donc des limites. Il faut donc quand l'agent conversationnel est en production surveiller son comportement global. C'est là toute l'importance de la phase d'amélioration continue !

Notre outil de développement de chatbot no-code intègre ainsi des statistiques permettant de surveiller tout cela mais aussi d'améliorer le comportement des modèles, grâce aux modules Teach & Check.

Teach-Check-NLU-chatbot-builder.jpg#asset:1715

Grâce à ces fonctionnalités, vous pouvez en permanence apporter des données additionnelles à votre chatbot (Teach) et corriger son comportement (Check). Et vous l'aurez compris, c'est une démarche essentielle !

Partager l’article : arrow_backAccueil du Blog