17 juin 2021
– 8 min de lecture
Valentin Defour
Consultant Senior Transformation Data
A l’heure de l’omniprésence algorithmique dans une multitude de domaines de notre société, une commission européenne dédiée publiait, il y a un an déjà, un livre blanc mettant en lumière le concept d’IA de confiance. Si ce concept englobe une multitude de notions et d’axes de réflexion (prise en compte des biais, robustesse des algorithmes, respect de la privacy, …), nous nous intéresserons ici particulièrement à la transparence et l’explicabilité des systèmes d’IA. Dans cette optique et après un rappel des enjeux et challenges de l’explication des modèles, nous construirons un simple tableau de bord rassemblant les principales métriques d’explicabilité d’un modèle, à l’aide d’une librairie Python spécialisée : Explainer-Dashboard.
Vous avez dit “explicabilité” ?
L’IA Explicable est l’intelligence artificielle dans laquelle les résultats de la solution peuvent être compris par les humains. Cela contraste avec le concept de «boîte noire» où parfois même les concepteurs du modèle ne peuvent pas expliquer pourquoi il est arrivé à une prédiction spécifique.
Le besoin d’explicabilité de ces algorithmes peut être motivé par différents facteurs :
- la confiance des utilisateurs et personnes concernées en leur justesse et en l’absence de biais ;
- l’obligation réglementaire de pouvoir justifier et expliquer toute décision prise sur recommandation de l’algorithme : si le RGPD prévoit vaguement que toute décision prise par une IA doive être expliquée à la personne concernée sur demande, la loi française est bien plus précise. En prévoyant la mise à disposition d’informations concernant le degré et le mode de contribution du traitement algorithmique à la prise de décision, les données traitées et leurs sources, les paramètres de traitement et, le cas échéant, leur pondération, appliqués à la situation de l’intéressé et les différentes opérations effectuées par le traitement. Les secteurs bancaires et assurantiels sont particulièrement surveillés sur le sujet, notamment via l’action de l’ACPR.
Quand on adresse cette problématique, il convient de définir les différents termes (étroitement liés) que l’on peut retrouver :
- La transparence donne à comprendre les décisions algorithmiques : elle traduit une possibilité d’accéder au code source des algorithmes, aux modèles qu’ils produisent. Dans le cas extrême d’une opacité totale, on qualifie l’algorithme de « boîte noire » ;
- L’auditabilité caractérise la faisabilité pratique d’une évaluation analytique et empirique de l’algorithme, et vise plus largement à obtenir non seulement des explications sur ses prédictions, mais aussi à l’évaluer selon les autres critères indiqués précédemment (performance, stabilité, traitement des données) ;
- L’explicabilité et l’interprétabilité, que l’on peut distinguer comme suit :
Si l’on considère des travaux de chimie au lycée, une interprétabilité de cette expérience serait “on constate un précipité rouge”. De son côté, l’explicabilité de l’expérience nécessitera de plonger dans les formules des différents composants chimiques.
Note : dans un souci de simplification, nous utiliserons largement le terme “explicabilité” dans la suite de cet article.
Via l’explication d’un modèle, nous allons chercher à répondre à des questions telles que :
Quelles sont les causes d’une décision ou prédiction donnée ?
Quelle est l’incertitude inhérente au modèle ?
Quelles informations supplémentaires sont disponibles pour la prise de décision finale ?
Les objectifs de ces explications sont multiples, car dépendants des parties prenantes :
- faciliter les échanges itératifs avec les métiers, en imageant rapidement comment le modèle utilise les variables d’entrée pour répondre au problème posé ;
- rassurer les experts métiers et les équipes en charge de la conformité sur l’absence de biais algorithmique ;
- faciliter la validation du modèle par les équipes de conception et de validation ;
- garantir la confiance des individus impactés par les décisions ou prédictions de l’algorithme.
Et concrètement ?
Le caractère “explicable” d’une IA donnée va principalement dépendre de la méthode d’apprentissage associée. Les méthodes d’apprentissage sont structurées en deux groupes conduisant, selon leur type, à un modèle explicite ou à une boîte noire :
Dans le cas d’un modèle explicite (linéaire, gaussien, binomial, arbres de décision,…), la décision qui en découle est nativement explicable. Sa complexité (principalement son nombre de paramètres) peut toutefois endommager son explicabilité ;
La plupart des autres méthodes et algorithmes d’apprentissage (réseaux neuronaux, agrégation de modèles, KNN, SVM,…) sont considérés comme des boîtes noires avec néanmoins la possibilité de construire des indicateurs d’importance des variables.
Lors du choix d’un modèle de Machine Learning, on parle alors du compromis Performance / Explicabilité.
Récupérer les données et entraîner un modèle simple
Pour cette démonstration, notre cas d’usage analytique sera de prédire, pour un individu donné, le risque d’occurrence d’une défaillance cardiaque en fonction de données de santé, genre, âge, vie professionnelle, …
Si cette problématique ne revêt pas spécifiquement d’aspect éthique relatif à la transparence de l’algorithme utilisé, nous pouvons toutefois bien percevoir l’utilité de l’explicabilité d’un diagnostic de risque assisté par IA : collaboration facilitée avec l’expert métier (en l’occurrence, le médecin) et information plus concrète du patient, entre autres bénéfices.
Le jeu de données éducatif utilisé est fourni par l’OMS et peut être téléchargé sur la plateforme de data science Kaggle :
Il contient les données de 5110 personnes, réparties comme suit :
Données :
- Age du sujet ;
- Genre du sujet ;
- A déjà souffert d’hypertension (oui / non)
- A déjà souffert de maladies cardiaques (oui / non)
- Statut marital
- Type d’emploi
- Type de résidence (citadin, rural)
- Niveau moyen sanguin de glucose
- IMC
- Fumeur (oui / non)
Note : nous avons procédé à une simple préparation des données qu’il est possible de retrouver dans le notebook complet en bas de page.
Pour la partie modélisation, nous utiliserons un modèle « baseline » de Random Forest. Pour éviter que notre modèle ne reflète seulement que la distribution des classes (très déséquilibrée dans notre cas, 95-5), nous avons ajouté des données “synthétiques” à la classe la moins représentée (i.e. les patients victimes de crises cardiaques) en utilisant l’algorithme SMOTE, pour atteindre une répartition équilibrée (50-50) :
Notre modèle est prêt, nous pouvons à présent l’utiliser en input du dashboard !
Création du dashboard
Nous avons donc à disposition un modèle entraîné sur notre dataset et allons à présent construire notre tableau de bord d’interprétation de ce modèle.
Pour ce faire, nous utilisons la librairie explainer-dashboard, qui s’installe directement via le package installer pip :
pip install --upgrade explainerdashboard
Une fois la librairie installée, nous pouvons l’importer et créer simplement une instance “Explainer” à l’aide des lignes suivantes :
from explainerdashboard import ClassifierExplainer, ExplainerDashboard
explainer = ClassifierExplainer(RF, X_test, y_test)
db = ExplainerDashboard(explainer,
n_jobs = -1,
title="Heart Stroke Prediction Explainer"
)
db.run(port=8050)
Plusieurs modes d’exécution sont possibles (directement dans le notebook, dans un onglet séparé hébergé sur une IP locale, …) (plus d’informations sur les différents paramètres de la librairie dans sa documentation).
Note : le dashboard nécessitera d’avoir installé la librairie de visualisation “Dash” pour fonctionner.
Interprétation des différents indicateurs
Le tableau de bord se présente sous la forme de différents onglets, qu’il est possible d’afficher / masquer via son paramétrage :
- Features importance : impact des différents features du jeu de données sur les prédictions ;
- Classification Stats : aperçu complet de la performance du modèle de classification utilisé (ici, Random Forest) ;
- Individual Predictions & What if analysis : zoom sur les prédictions individuelles et influence des features sur ces dernières ;
- Features dependance : visualisation de l’impact de couples de features sur les prédictions et corrélations entre features ;
- Decision Trees : permet, pour les modèles à base d’arbres de décision, de visualiser les paramètres et cheminement de décisions de chacun de ces arbres.
Plongeons à présent dans les détails de chacun de ces onglets !
Features Importance
A l’instar de l’attribut feature_importances_ de notre modèle de Random Forest, cet onglet nous permet de visualiser, pour chaque colonne de notre dataset, le pouvoir de prédiction de chaque variable.
L’importance des features a ici été calculée selon la méthode des valeurs de SHAP (acronyme de SHapley Additive exPlanations). Nous n’approfondirons pas ce concept dans cet article (voir rubrique “aller plus loin”).
Ces scores d’importance peuvent permettre de :
- Mieux comprendre les données à disposition et ainsi, avec l’aide d’un expert métier, détecter lesquelles seront les plus pertinentes pour notre modèle ;
- Mieux comprendre notre modèle et son fonctionnement, puisque les scores d’importance peuvent varier en fonction du modèle choisi ;
- En phase d’optimisation de celui-ci, diminuer son nombre de variables pour en réduire sa durée d’entraînement, en augmenter son explicabilité, faciliter son déploiement ou encore atténuer le phénomène d’over-fitting.
Dans l’exemple ci-dessous, on peut constater que :
- l’âge, l’IMC et le niveau moyen de glucose dans le sang sont des prédicteurs forts du risque de crise cardiaque, ce qui correspond bien à une intuition commune ;
- Toutefois, d’autres prédicteurs forts sortent du lot, comme le fait de ne jamais avoir été marié ou encore le fait d’habiter en zone rurale, qui ne sont pas évidents à première vue …
Classification Stats
Cet onglet nous permet de visualiser les différentes métriques de performance de notre modèle de classification : matrice de confusion, listing des différents scores, courbes AUC, … Il sera utile en phase de paramétrage / optimisation du modèle pour avoir un aperçu rapide et complet de sa performance :
Individual Predictions
Cet onglet va nous permettre, pour un individu donné, de visualiser les 2 indicateurs principaux relatifs à la décision prise par le modèle :
Le graphe des contributions :
La contribution d’un feature à une prédiction représente l’impact probabilistique sur la décision finale de la valeur de la donnée considérée.
Suite à notre traitement du déséquilibre des classes, nous avons autant de sujets “sains” que de sujets “à risque” dans notre jeu de données d’apprentissage. Un estimateur aléatoire aura donc 50% de chances de trouver la bonne prédiction. Cette probabilité est donc la valeur “baseline” d’entrée dans notre graphe des contributions.
Ensuite, viennent s’ajouter en vert sur le visuel les contributions des features pour lesquelles la valeur a fait pencher la décision vers un sujet “à risque”. Ces features et leur contribution amènent la décision à une probabilité de ~60% de risque.
Puis, les features dont la contribution fait pencher la décision vers un sujet “sain” viennent s’ajouter (en rouge sur le graphe). On retrouve ici nos prédicteurs forts tels que l’âge ou encore l’IMC.
On a donc :
décision finale = 50% + probabilité(sain) + probabilité(à risque) = 5.08%
> Le sujet est proposé comme sain par l’algorithme
Le graphe des dépendances partielles :
Ce visuel nous permet de visualiser la probabilité de risque en fonction de la variation d’une des features, en conservant la valeur des autres constantes. Dans l’exemple ci-dessus, on peut voir que pour l’individu considéré, augmenter son âge aura pour effet d’augmenter sa probabilité d’être détecté comme “à risque”, ce qui correspond bien au sens commun.
What if Analysis
Dans l’optique de l’onglet précédent, l’analyse “what if” nous permet de renseigner nous mêmes les valeurs des différents features et de calculer l’output du modèle pour le profil de patient renseigné :
Il reprend par ailleurs les différents indicateurs présentés dans l’onglet précédent : graphe des contributions, dépendances partielles, …
Features Dependance
Cet onglet présente un graphe intéressant : la dépendance des features.
Il nous renseigne sur la relation entre les valeurs de features et les valeurs de SHAP. Il permet ainsi d’étudier la relation générale entre la valeur des features et l’impact sur la prédiction.
Dans notre exemple ci-dessus, le nuage de points nous apprend deux choses :
- L’âge (abscisses) est un fort prédicteur pour notre cas d’usage car, pour chaque observation, les valeurs de SHAP (ordonnées) sont élevées (mais nous le savions déjà). On remarque une inversion de la tendance autour de l’âge de 50 ans, ce qui conforte notre intuition (i.e. les sujets plus jeunes sont moins enclins à être considérés comme “à risque”) : une valeur de SHAP “hautement négative” nous indique que la feature est un prédicteur fort d’un résultat associé à la classe nulle (ici, un individu désigné comme “sain”) – à l’inverse, une valeur de SHAP “hautement positive” indique que la feature est un prédicteur fort d’un résultat associé à la classe positive (ici, un individu désigné comme “à risque”).
- L’âge est fortement corrélé au statut marital des individus observés (points rouges = individus célibataires). Cela est cohérent avec le sens commun mais nous renseigne également sur le pouvoir prédictif du statut marital qui ne serait finalement dû qu’à sa forte corrélation à l’âge, vrai prédicteur important de notre problématique. Dans une optique d’optimisation du modèle, cette feature pourrait potentiellement être retirée.
Decision Trees
Enfin, dans le cas où l’input du dashboard est un modèle à base d’arbres de décisions (gradient boosted trees, random forest, …), cet onglet sera utile pour visualiser le cheminement des décisions de la totalité des arbres du modèle.
Dans l’exemple ci-dessous, nous considérons le 2712ème individu du jeu de données pour lequel 50 arbres ont été calculés via l’algorithme de Random Forest. Nous visualisons la matrice de décision de l’arbre n°13 :
Ce tableau nous montre le cheminement de la décision, depuis une probabilité de ~50% (qui serait la prédiction d’un estimateur ne se basant que sur la moyenne observée sur le jeu de données). On peut constater que, pour cet individu et pour l’arbre de décision considéré :
- La ruralité, l’occupation professionnelle et le statut marital (bien que démontré précédemment comme prédicteur faible) ont poussé la décision de cet arbre vers “individu à risque” ;
- Les autres données de l’individu telles que son genre ou encore son âge ont fait basculer la décision finale de l’arbre à “individu sain” (probabilité de risque finale : 7.14%).
L’onglet nous propose également une fonctionnalité de visualisation des arbres via la librairie graphviz.
L’étude des différents indicateurs présentés dans les onglets du dashboard nous a permis :
- De confirmer des premières intuitions sur les variables importantes de ce problème de modélisation : l’âge du patient, son IMC ou encore son taux moyen de glucose ;
- A l’inverse, de conclure de la pertinence relativement moindre de variables telles que le statut marital (merci à la dépendance des features !), le statut professionnel, le lieu de résidence mais également les antécédents cardiaques (moins évident à priori…). On pourra alors se poser la question de conserver ou non ces variables dans une optique de simplification du modèle ;
- De mesurer la performance globale du modèle et, derrière une accuracy honorable de ~0.80, de découvrir de pauvres recall et precision (respectivement 0.44 et 0.14) : notre modèle est donc plus performant pour détecter les Vrais Négatifs (les sujets “sains”) que les sujets réellement à risque. Il faudra travailler à l’optimiser autrement.
- De procéder à des analyses de risque et de comportement du modèle sur un patient donné via l’interface de l’onglet “What if…”.
L’étude de ces indicateurs doit être partie intégrante de tout projet d’IA actuel et futur
L’explicabilité des modèles de Machine Learning, aujourd’hui considéré comme l’un des piliers d’une IA éthique, responsable et de confiance, représente un challenge important pour accroître la confiance de la société envers les algorithmes et la transparence de leurs décisions, mais également la conformité réglementaire des traitements en résultant.
Dans notre cas d’étude, si la librairie explainer-dashboard est à l’initiative d’un particulier, on remarque une propension à l’éclosion de plusieurs frameworks et outils servant le mouvement “Fair AI”, dont plusieurs développés par des mastodontes du domaine. On peut citer le projet AIF360 lancé par IBM, une boîte à outils d’identification et de traitement des biais dans les jeux de données et algorithmes.
Cette librairie est utile en phase de développement et d’échanges avec le métier mais peut toutefois ne pas suffire en industrialisation. Alors un dashboard “maison” sera nécessaire. Elle a toutefois un potentiel élevé de personnalisation qui lui permettra de répondre à de nombreux usages.
Note : l’intégralité du notebook utilisé est disponible sur ce lien.
Pour aller plus loin :