explicabilite-machine-learning

Interprétez simplement vos modèles de Machine Learning

Interprétez simplement vos modèles de Machine Learning

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 :

Quand on adresse cette problématique, il convient de définir les différents termes (étroitement liés) que l’on peut retrouver :

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 :

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 :

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 :

Dans l’exemple ci-dessous, on peut constater que :

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 :

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é :

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 :

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 :