Logo Zéphyrnet

Expliquer les modèles de PNL avec LIME

Date :

By Ayan Kundu, Scientifique des données

Il est très important de savoir comment LIME parvient à ses sorties finales pour expliquer une prédiction faite pour des données textuelles. Dans cet article, j'ai partagé ce concept en éclairant les composants de LIME.

Expliquer les modèles NLP avec LIME


Photo par Ethan Médrano on Unsplash


 

Il y a quelques semaines, j'ai écrit un blogue sur la façon dont différents outils d'interprétabilité peuvent être utilisés pour interpréter certaines prédictions faites par les modèles de boîte noire. Dans cet article, j'ai partagé les mathématiques derrière LIME, SHAP et d'autres outils d'interprétabilité, mais je n'ai pas beaucoup approfondi les détails de la mise en œuvre de ces concepts sur des données originales. Dans cet article, j'ai pensé à partager le fonctionnement de LIME sur les données textuelles étape par étape.

Les données utilisées pour l'ensemble de l'analyse sont tirées de ici . Ces données permettent de prédire si un tweet donné concerne une véritable catastrophe(1) ou non(0). Il a les colonnes suivantes :


Expliquer les modèles NLP avec LIME
Identifier

 

Comme l'objectif principal de ce blog est d'interpréter LIME et ses différents composants, nous allons donc construire rapidement un modèle binaire de classification de texte à l'aide de Random Forest et nous concentrerons principalement sur l'interprétation LIME.

Tout d'abord, nous commençons par importer les packages nécessaires. Ensuite, nous lisons les données et commençons le prétraitement comme la suppression des mots vides, les minuscules, la lemmatisation, la suppression de la ponctuation, la suppression des espaces, etc. Tout le texte prétraité nettoyé est stocké dans une nouvelle colonne 'cleaned_text' qui sera ensuite utilisée pour l'analyse et les données sont divisées dans le train et la validation définie dans un rapport de 80:20.

Ensuite, nous passons rapidement à la conversion des données textuelles en vecteurs en utilisant TF-IDF vectoriser et adapter un Forêt aléatoire modèle de classification à ce sujet.


Expliquer les modèles NLP avec LIME
Image par auteur

 

Commençons maintenant l'intérêt principal de ce blog qui est de savoir comment interpréter les différents composants de LIME.

Voyons d'abord quelle est la sortie finale de l'interprétation LIME pour une instance de données particulière. Ensuite, nous approfondirons pas à pas les différents composants de LIME, ce qui aboutira finalement au résultat souhaité.


Expliquer les modèles NLP avec LIME
Image par auteur

 

Ici, labels=(1,) est passé comme argument, ce qui signifie que nous voulons l'explication de la classe 1. Les fonctionnalités (les mots dans ce cas) surlignées en orange sont les principales fonctionnalités qui provoquent une prédiction de classe 0 (pas de catastrophe) avec probabilité 0.75 et classe 1 (catastrophe) avec probabilité 0.25.

REMARQUE: char_level est l'un des arguments de LimeTextExplainer qui est un booléen identifiant que nous traitons chaque caractère comme une occurrence indépendante dans la chaîne. La valeur par défaut est False, nous ne considérons donc pas chaque caractère indépendamment et la fonction IndexedString est utilisée pour la segmentation et l'indexation des mots dans l'instance de texte, sinon la fonction IndexedCharacters est utilisée.

Donc, vous devez être intéressé de savoir comment ceux-ci sont calculés. À droite?

Voyons ça.

LIME commence par créer des échantillons perturbés autour du voisinage du point d'intérêt des données. Pour les données textuelles, des échantillons perturbés sont créés en supprimant au hasard certains des mots de l'instance et la distance cosinus est utilisée pour calculer la distance entre les échantillons d'origine et perturbés comme métrique par défaut.

Cela renvoie le tableau de 5000 échantillons perturbés (chaque échantillon perturbé est de longueur de l'instance d'origine et 1 signifie que le mot dans cette position de l'instance d'origine est présent dans l'échantillon perturbé), leurs probabilités de prédiction correspondantes et les distances cosinus entre l'original et des échantillons perturbés. Un extrait de cela est le suivant :


Expliquer les modèles NLP avec LIME
Image par auteur

 

Maintenant, après avoir créé les échantillons perturbés dans le voisinage, il est temps de donner des poids à ces échantillons. Les échantillons proches de l'instance d'origine reçoivent une pondération plus élevée que les échantillons éloignés de l'instance d'origine. Noyau exponentiel avec une largeur de noyau de 25 est utilisé par défaut pour donner ces pondérations.

Après cela, les caractéristiques importantes (selon num_features : nombre maximal de caractéristiques à expliquer) sont sélectionnées en apprenant un modèle épars localement linéaire à partir de données perturbées. Il existe plusieurs méthodes pour choisir les caractéristiques importantes à l'aide du modèle clairsemé linéaire local comme 'auto' (par défaut), 'forward_selection', 'lasso_path', 'highest_weights'. Si nous choisissons 'auto' alors 'forward_selection' est utilisé si num_features≤6, sinon 'highest_weights' est utilisé.


Expliquer les modèles NLP avec LIME
Image par auteur

 

Ici, nous pouvons voir que les caractéristiques sélectionnées sont [1,5,0,2,3] qui sont les indices des mots (ou caractéristiques) importants dans l'instance d'origine. Comme ici num_features=5 et method='auto', la méthode 'forward_selection' est utilisée pour sélectionner les fonctionnalités importantes.

Voyons maintenant ce qui se passera si nous choisissons la méthode comme 'lasso_path'.


Expliquer les modèles NLP avec LIME
Image par auteur

 

Même. À droite?

Mais vous pourriez être intéressé à approfondir ce processus de sélection. Ne vous inquiétez pas, je vais vous faciliter la tâche.

Il utilise le concept de Régression au moindre angle pour sélectionner les principales fonctionnalités.

Voyons ce qui se passera si nous sélectionnons la méthode comme 'highest_weights'.


Expliquer les modèles NLP avec LIME
Image par auteur

 

Attendez. Nous allons plus loin dans le processus de sélection.

Alors maintenant, les fonctionnalités importantes que nous avons sélectionnées en utilisant l'une des méthodes. Mais finalement nous devrons ajuster un modèle linéaire local pour expliquer la prédiction faite par le modèle de boîte noire. Pour ça Régression Ridge est utilisé par défaut.

Vérifions enfin à quoi ressembleront les sorties.

Si nous sélectionnons respectivement la méthode auto, poids_maximal et chemin_lasso, la sortie ressemblera à ceci :


Expliquer les modèles NLP avec LIME
Image par auteur

 

Ceux-ci renvoient un tuple (ordonnée à l'origine du modèle linéaire local, indices des caractéristiques importantes et ses coefficients, valeur R² du modèle linéaire local, prédiction locale par le modèle d'explication sur l'instance d'origine).

Si nous comparons l'image ci-dessus avec


Expliquer les modèles NLP avec LIME
Image par auteur

 

alors nous pouvons dire que les probabilités de prédiction données dans le panneau le plus à gauche sont la prédiction locale faite par le modèle d'explication. Les caractéristiques et les valeurs indiquées dans le panneau du milieu sont les caractéristiques importantes et leurs coefficients.

REMARQUE: En ce qui concerne cette instance de données particulière, le nombre de mots (ou de caractéristiques) n'est que de 6 et nous sélectionnons les 5 principales caractéristiques importantes, toutes les méthodes donnent le même ensemble de 5 principales caractéristiques importantes. Mais cela peut ne pas arriver pour les peines plus longues.

Si vous aimez cet article, cliquez sur recommander. Ce serait génial.

Pour obtenir le code complet, veuillez visiter mon GitHub dépôt. Pour mes futurs blogs, suivez-moi sur LinkedIn et Technique.

Conclusion

Dans cet article, j'ai essayé d'expliquer le résultat final de LIME pour les données textuelles et comment l'ensemble du processus d'explication se déroule pour le texte, étape par étape. Des explications similaires peuvent être faites pour les données tabulaires et d'image. Pour cela je recommanderai vivement de passer par this.

Bibliographie

  1. Référentiel GitHub pour LIME : https://github.com/marcotcr/lime
  2. Documentation sur LARS : http://www.cse.iitm.ac.in/~vplab/courses/SLT/PDF/LAR_hastie_2018.pdf
  3. https://towardsdatascience.com/python-libraries-for-interpretable-machine-learning-c476a08ed2c7

 
 
Ayan Kundu est un scientifique des données avec plus de 2 ans d'expérience dans le domaine de la banque et de la finance et également un apprenant passionné pour aider la communauté autant que possible. Suivez Ayan sur LinkedIn et Technique.

Source : https://www.kdnuggets.com/2022/01/explain-nlp-models-lime.html

spot_img

Dernières informations

spot_img

Discutez avec nous

Salut! Comment puis-je t'aider?