Grâce aux sections précédentes, nous savons comment élaborer un modèle dont on connaît les performances dans le détail ! Après avoir sécurisé un tel modèle, on doit être capable d’expliquer son comportement à d’autres interlocuteurs, qu’ils soient techniques ou non !
On a d’ailleurs déjà expliqué l’intérêt de cette démarche, en prenant comme exemple la régression linéaire, au tout début de ce cours !
Nous avons également évoqué tout au long du cours qu’il était possible d’atteindre ce degré de transparence avec des modèles non linéaires. Eh bien, nous y sommes. ;)
Découvrez l’Explainable AI :
Nous avons plusieurs familles de méthodes quantitatives qui permettent de rendre tangible le comportement d’un modèle de ML. Il y a d’ailleurs toute une littérature à ce sujet en plein essor qui s’appelle l’Explainable AI (ou XAI). Nous allons brièvement citer certaines familles, puis nous allons nous concentrer sur l’une d’entre elles en particulier.
Les méthodes de type Black Box Openers : Ce sont des méthodes qui vont prendre un modèle non-linéaire entraîné (la fameuse black box) et qui vont calculer des métriques ou des quantités tierces qui nous informent sur le comportement du modèle concernant ses prédictions ou son lien avec les features.
Les méthodes de type Counterfactuals : plutôt que de calculer des quantités tierces qui nous éclairent sur le comportement d’un modèle, ces méthodes vont répondre à la question suivante : “À quoi doivent ressembler mes features si j’ai envie d’observer un comportement donné dans mon modèle ?” Prenons un exemple du projet fil rouge pour illustrer :
Mon modèle de classification estime qu’une transaction fait partie de la classe 0 (un bien qui n'est pas en dessous du marché).
Comment dois-je changer mes features de telle sorte à ce que mon modèle change d’avis et place cette transaction dans la classe opposée ?
Je fais alors appel à un algorithme de génération de Counterfactuals, qui va prendre les features de la transaction, en modifier certaines pour simuler des cas alternatifs où le modèle prédit la classe opposée.
Cela me permet de savoir sur quelles caractéristiques de la transaction je dois agir si j’ai envie d’obtenir la prédiction que je souhaite.
Si vous voulez pratiquer avec ce type de méthodes, vous pouvez tester ce package.
Que ce soit pour les Black Box Openers ou les Counterfactuals, toutes les méthodes peuvent être :
Model Agnostic : C’est-à-dire calculable pour tout type d’algorithme de ML utilisé (réseau de neurones, arbres, etc.).
Model Specific : Unique à certaines familles d’algorithmes, voire à certains algorithmes en particulier.
Task Specific : Spécifiquement conçues pour des modèles entraînés sur des tâches particulières. Par exemple : la détection d’objet en Computer Vision.
Parmi l’ensemble des méthodes, les plus connues dans la communauté Data Science et les projets de ML restent les méthodes de type Black Box Opener, en particulier les méthodes de calcul de feature importance. Ces techniques vont être le focus du reste de ce chapitre.
Comprenez les méthodes de feature importance dites “globales”
Comme il s’agit d’une méthode Black Box Opener, les features importantes sont des quantités que l’on calcule après l'entraînement du modèle.
Commençons par expliquer le terme “global”. Des méthodes de calcul de feature importance sont dites globales, car :
elles peuvent déterminer dans l’ensemble à quel point une feature a une influence sur la prédiction du modèle ;
mais elles sont incapables de dire, pour chaque observation en particulier, quelle feature a été la plus influente dans la prédiction.
Pour reprendre l’exemple du projet filé, c’est comme si je disais :
Les features “surface habitable”, “nombre de transactions du mois précédent” et “taux d’intérêt” impactent beaucoup plus les prédictions du modèle au sens large ;
Par contre, je suis incapable de dire pour une transaction immobilière en particulier si ces mêmes features ont été impactantes, ou s’il s’agit d’autres.
Cette distinction est importante, car pour une transaction donnée, la feature qui a le plus influencé le modèle dans sa décision est peut-être la 5ᵉ feature la plus importante du modèle au global. Sans doute parce qu'il s’agit d’un bien un peu atypique dans ces attributs.
Par exemple, la régression linéaire est une méthode de feature importance locale et globale. En effet, les coefficients de la moyenne pondérée représentent la feature importance. De plus, ces coefficients sont les mêmes utilisés pour toutes les observations du jeu de données d’apprentissage ou de test.
Découvrons maintenant ensemble deux méthodes très connues pour calculer la feature importance globale d’un modèle de régression entraîné sur la région Occitanie.
La méthode spécifique au modèle à base d'arbres de décision
La méthode modèle-agnostique
Nous renvoyons vers l’excellent e-Book de Christoph Molnar pour comprendre dans le détail mathématique le sens et les limites de :
Comprenez la feature importance locale avec SHAP
Nous allons présenter la technique la plus connue, tout en étant la plus complexe, afin de calculer la feature importance locale. Il s’agit du calcul des valeurs de Shapley en utilisant le package SHAP.
Qu’est-ce qu’une valeur de Shapley et pourquoi la calculer ?
Expliquons d'abord le pourquoi avant de donner une définition précise. Nous avons vu dans la toute première partie de cours que la régression linéaire est particulièrement attrayante pour sa simplicité d’interprétation : on se base simplement sur des coefficients d'une moyenne pondérée comme feature importance !
Et si on était capable de répliquer ce même avantage pour les modèles non-linéaires ? C’est en effet la promesse des valeurs de Shapley ! Ces valeurs vont chercher à trouver, pour chaque observation, la régression linéaire qui approxime le mieux les performances et le comportement de notre modèle non linéaire.
La phrase précédente sous-entend plusieurs choses :
Les valeurs de Shapley vont être écrites sous forme d’une régression linéaire et sont donc des feature importances ;
Il s’agit d’une feature importance “locale” car chaque observation aura ses propres valeurs de Shapley, autrement dit : sa propre équation de régression linéaire ;
Les coefficients de cette régression linéaire doivent nous informer le plus possible sur le comportement réel du modèle non-linéaire.
Maintenant, nous devons comprendre le sens de ces coefficients calculés et pourquoi ils réussissent aussi bien à ouvrir la boîte noire.
Le coefficient associé à une certaine feature d’une certaine observation, représente le changement moyen dans la performance du modèle, comparé à une valeur de référence, quand nous incluons cette feature dans la prédiction du modèle.
Il se passe beaucoup de choses dans cette phrase précédente ! Nous allons la décomposer :
On a établi que l’objectif des valeurs de Shapley est de quantifier la valeur ajoutée d’une feature pour une observation donnée. Imaginons que nous souhaitons calculer la valeur ajoutée de la feature “surface habitable” dans notre donnée de transactions immobilières. Pour ce faire, il faudrait :
Prendre une situation A où la feature “surface habitable” n’existe pas ;
Prendre une situation B où la feature “surface habitable” existe en plus de ce qu’on a dans la situation A ;
Réaliser une prédiction pour les 2 et mesurer la différence dans l’estimation du modèle.
Sauf qu’on peut définir cette situation A de plusieurs manières différentes :
A = présence de toutes les autres features à part “surface habitable” ;
A = présence de la feature “taux d’intêret” uniquement ;
A = présence des features “nombre de transactions du mois précédent”, “taux d’intérêt” et “longitude” ;
A = présence d’aucune feature !
etc.
En réalité, nous avons autant de situations A possible que de combinaisons de features (en excluant la surface habitable) ! Comment choisir notre point de comparaison A alors ? En fait, les valeurs de Shapley vont venir résoudre ce problème en les choisissant tous à tour de rôle, et en calculant les moyennes des différences entre les prédictions des situations A et B.
En effet, cette approche va venir évaluer l’apport de la feature “surface habitable” par rapport à toutes les situations possibles où elle n’existait pas. Cette moyenne représente alors la contribution objective de la feature “surface habitable” à la prédiction du modèle, pour cette transaction donnée . C’est le “changement moyen” dont on a parlé.
Parmi les situations “A” citées plus haut, nous avons délibérément mentionné “présence d’aucune features”. Eh oui ! Le calcul de la valeur de Shapley prévoit également le cas où le modèle n’utilise aucune features, comme nous l’avons vu pour les modèles Dummy.
C’est exactement cette “prédiction sans features” que nous appelons “valeur de référence”. Nous l’utilisons comme référence, car elle représente l’extrême inverse du sens de la valeur de Shapley calculée :
La valeur de Shapley estime la valeur ajoutée d’une feature en considérant toutes les situations possibles et imaginables où elle peut être insérée pour enrichir le modèle. On essaye de tirer un maximum possible de nos features.
La valeur de référence représente au contraire l’absence totale de features (donc d’informations). C’est alors un excellent repère de comparaison pour évaluer l’importance d’une feature.
Synthétisons toutes ces explications en prenant un exemple d’une transaction fictive, pour calculer la valeur de Shapley de la feature “surface habitable” concernant un modèle de classification :
Nous y voyons enfin plus clair ! En revanche, nous avons un problème assez important de puissance de calcul : nous devons calculer toutes les combinaisons de prédictions, pour obtenir le coefficient d’une seule feature, d’une seule observation. Si nous avons 10 features et 10000 observations, cela fait 2^9 * 10000 soit 5 millions de prédictions à réaliser. Cela est juste infaisable en entreprise !
En réalité, nous utilisons des approximations des valeurs de Shapley. En Python, le package le plus connu pour cela est SHAP. Nous allons d’ailleurs regarder ensemble comment utiliser en pratique les valeurs de Shapley, maintenant que nous sommes à l’aise avec le sens des coefficients :
Le package SHAP
Le screencast montre le cas d’un modèle de régression, mais comment cela fonctionne avec un modèle de classification ?
C’est quasiment la même chose ! Sauf qu’au lieu de parler de la différence entre la prédiction de la target et une valeur de référence, on va parler de la différence entre la probabilité prédite et une probabilité de référence (définie à l’instar d’un Dummy Classifier ;) )
Vous savez désormais comment fournir des explications de vos prédictions via une feature importance locale comme globale ! On peut se permettre maintenant de légèrement complexifier le schéma récapitulatif que nous avions vu lors de la partie 1 :
Quelles sont les limites de toutes ces méthodes ?
Nous allons passer du spécifique au général. Commençons par les avantages et inconvénients du package SHAP :
Avantages de SHAP :
C’est une méthode Model Agnostic, vous pouvez l’utiliser pour tout type d'algorithmes supervisés ;
Pour accélérer les calculs, vous avez plusieurs types d’approximations des valeurs de Shapley en fonction de la famille de modèle utilisée (TreeExplainer pour les arbres, DeepExplainer pour les réseaux de neurones) ;
SHAP propose également des outils de visualisation pour de la donnée non structurée (comme les images ou le texte).
Inconvénients de SHAP :
Les valeurs de Shapley estimées doivent être plus importantes que l’erreur de votre modèle pour être fiables !
SHAP est une méthode indirecte dans la mesure où elle ne donne pas la prédiction directe du modèle quand une feature prend une certaine valeur. Elle renvoie la différence entre la prédiction du modèle et une valeur de référence. Ce procédé en deux temps complexifie l’interprétation, surtout pour des interlocuteurs moins techniques ;
Les approximations faites par le package SHAP vont nécessairement induire un biais dans le calcul des valeurs de Shapley et leur interprétation. C’est un sujet assez complexe techniquement, nous renvoyons vers ce papier "True to the Model or True to the Data" (en anglais) pour les lecteurs curieux et surtout déjà bien à l’aise avec les bases.
Ensuite, passons aux inconvénients plus structurels, communs aux méthodes d’XAI quelles qu’elles soient : Votre modèle est aussi explicable et transparent que vos features.
Pour illustrer ce point, nous prenons un exemple du projet fil rouge. Imaginez que vous avez ajouté, lors de votre phase de feature engineering, une nouvelle feature qui est le logarithme de la surface habitable. Ayant augmenté significativement la performance du modèle, vous concluez qu’il s’agit d’une feature prometteuse et vous souhaitez la garder dans votre modélisation finale à mettre en production.
Le problème est le suivant : Ce que vous allez gagner en performance sera perdu en simplicité d’interprétation.
Effectivement, imaginez-vous en train d’expliquer à un agent immobilier qu’une hausse de 0.7 points du logarithme de surface habitable pousserait le modèle à prédire un prix de transaction à la hausse de 10k €, mais uniquement pour les biens avec un logarithme de surface habitable entre 13.2 et 15.6. Ce type de profil est rarement habitué à manipuler au quotidien des transformations logarithmiques pour des interprétations qu’il a toujours réalisées sans. Votre objectif, via les techniques d’AI, est d’aider l’agent immobilier à adopter le modèle pour de l’aide à la décision, pas de le dissuader avec de la complexité !
Même pour vous, Data Scientists/ML Engineers ! Imaginez que vous souhaitez appliquer un algorithme de réduction de dimension (comme l’ACP ou l’UMAP) sur vos features pour baisser la durée d'entraînement tout en augmentant les performances. Vous allez sans doute arriver à des interprétations du type “diminuer la composante principale 1 de 1,82 points pousse le modèle à prédire à la baisse son estimation de 7k € ”. Sauf que la diminution ou l’augmentation d’une composante principale est beaucoup moins tangible que celle de la feature brute ! Vous avez alors rajouté, via la réduction de dimension, une couche de complexité qui rend très indirecte et peu pratique l’utilisation d’une méthode XAI.
Ceci nous ramène à la deuxième limitation structurelle des méthodes XAI : Elles ne garantissent pas un lien de causalité entre les features et la target.
Eh oui, les modèles de ML et les méthodes d’XAI n’échappent pas à la question de la corrélation vs la causalité. En plus de cet article qui vous présente assez simplement la différence entre les deux, nous pouvons identifier via une méthode XAI qu’un modèle utilise des raisonnements étranges.
Dans notre projet filé par exemple, rien n'empêchera notre modèle de nous dire qu’il faut baisser notre surface habitable ou encore de baisser le taux d’endettement de la France. Or, d’un point de vue métier, il y a certaines features :
Sur lesquelles nous pouvons agir relativement facilement : Ne rien faire et laisser le bien prendre de la valeur dans le temps via l’évolution naturelle du marché de l’immobilier sur le long terme.
Sur lesquelles nous pouvons agir, mais avec difficulté : Faire des travaux de rénovation de notre bien pour en augmenter la valeur.
Sur lesquelles nous ne pouvons pas du tout agir à l'échelle individuelle : Faire baisser les taux d’intérêt ou le taux d’endettement de la France.
Comme lecture d’approfondissement, nous vous renvoyons à cet article (en anglais) de la documentation de SHAP qui explore davantage comment utiliser le package de manière précautionneuse.
À vous de jouer !
En plus des graphiques que nous avons vus lors du screencast, SHAP propose d’autres outils de visualisations pertinents pour donner du sens à notre modèle.
Parmi ces techniques, nous trouvons le Partial Dependence Scatterplot. Tracez et interprétez le résultat de ce graphique en complétant ce notebook template.
Une fois que vous avez fini, vous avez ce corrigé à disposition.
En résumé
Explainable AI (XAI) regroupe des méthodes quantitatives pour rendre les modèles de Machine Learning plus transparents, comme les Black Box Openers (qui révèlent des informations sur les prédictions) et les Counterfactuals (qui montrent comment modifier les features pour obtenir une autre prédiction).
Les méthodes de feature importance globale (comme celle de la Random Forest ou la Permutation Importance) mesurent l'impact global des features sur le modèle, mais elles ne donnent pas d'informations précises pour chaque observation individuelle.
La feature importance locale peut être mesurée avec des méthodes comme SHAP, qui calcule la contribution individuelle de chaque feature pour chaque observation en imitant une régression linéaire locale.
Les valeurs de Shapley, utilisées par SHAP, estiment la valeur ajoutée d'une feature en comparant les prédictions du modèle avec et sans cette feature, mais ces calculs sont complexes et nécessitent des approximations.
Les méthodes XAI sont limitées par la qualité des features utilisées : des features complexes ou peu tangibles rendent les explications difficiles à interpréter, et ces méthodes ne garantissent pas de lien de causalité entre features et target, seulement des corrélations.
Vous maîtrisez maintenant la transparence de vos modèles ! Il est temps de franchir une nouvelle étape : préparez votre modèle pour le déploiement et faites-le entrer en production.