Accéder au contenu principal

Explainable AI - Comprendre et faire confiance aux modèles d'apprentissage automatique

Plongez dans l'IA explicable (XAI) et apprenez comment instaurer la confiance dans les systèmes d'IA avec LIME et SHAP pour l'interprétabilité des modèles. Comprendre l'importance de la transparence et de l'équité dans les décisions prises par l'IA.
Actualisé 14 nov. 2024  · 12 min de lecture

De nombreux secteurs et organisations utilisent l'intelligence artificielle et les modèles d'apprentissage automatique pour prendre des décisions éclairées. Cependant, à mesure que ces technologies continuent de progresser et deviennent plus complexes, les humains sont mis au défi de comprendre et de retracer le processus de prise de décision de ces solutions d'IA. Un tel défi peut être relevé grâce à l'IA explicable (XAI en abrégé).

Nous examinerons ici ce qu'est l'IA explicable, puis nous soulignerons son importance et illustrerons ses objectifs et ses avantages. Dans la deuxième partie, nous vous donnerons un aperçu et l'implémentation Python de deux modèles de substitution populaires, LIME et SHAP, qui peuvent aider à interpréter les modèles d'apprentissage automatique.

L'amélioration de l'IA pour les débutants

Apprenez les bases de l'IA et du ChatGPT en partant de zéro.
Apprendre l'IA gratuitement

Qu'est-ce que l'IA explicable (XAI) ?

L'IA explicable désigne un ensemble de processus et de méthodes visant à fournir une explication claire et compréhensible par l'homme des décisions générées par l'IA et les modèles d'apprentissage automatique.

En intégrant une couche d'explicabilité dans ces modèles, les scientifiques des données et les praticiens de l'apprentissage automatique peuvent créer des systèmes plus fiables et plus transparents pour aider un large éventail de parties prenantes telles que les développeurs, les régulateurs et les utilisateurs finaux.

Renforcer la confiance grâce à l'IA explicable

Voici quelques principes d'IA explicables qui peuvent contribuer à instaurer la confiance :

  • Transparence. Veiller à ce que les parties prenantes comprennent le processus décisionnel des modèles.
  • L'équité. Veiller à ce que les décisions des modèles soient équitables pour tous, y compris pour les personnes appartenant à des groupes protégés (race, religion, sexe, handicap, appartenance ethnique).
  • La confiance. Évaluer le niveau de confiance des utilisateurs humains qui utilisent le système d'IA.
  • Robustness. Résistant aux modifications des données d'entrée ou des paramètres du modèle, il maintient des performances cohérentes et fiables même lorsqu'il est confronté à des incertitudes ou à des situations inattendues.
  • Vie privée. Garantir la protection des informations sensibles des utilisateurs.
  • Interprétabilité. Fournir des explications compréhensibles par l'homme pour leurs prédictions et leurs résultats.

Éléments de l'IA explicable

La mise en œuvre de l'IA explicable présente plusieurs avantages. Pour les décideurs et les autres parties prenantes, il offre une compréhension claire de la logique qui sous-tend les décisions basées sur l'IA, ce qui leur permet de faire des choix plus éclairés. Elle permet également d'identifier les éventuels biais ou erreurs dans les modèles, ce qui permet d'obtenir des résultats plus précis et plus équitables.

Exemples d'IA explicables

Il existe deux grandes catégories d'explicabilité des modèles : les méthodes spécifiques aux modèles et les méthodes diagnostiques. Dans cette section, nous allons comprendre la différence entre les deux, en nous concentrant plus particulièrement sur les méthodes agnostiques.

Ces deux techniques permettent d'obtenir des informations précieuses sur le fonctionnement interne des modèles d'apprentissage automatique, tout en garantissant l'efficacité et la fiabilité des modèles.

Pour mieux illustrer ces outils, nous utiliserons l'ensemble de données sur le diabète de Kaggle. Dans un premier temps, nous construirons un classificateur simple, puis nous mettrons en œuvre l'explicabilité. Le code source complet est disponible dans ce classeur DataLab.

Construire un classificateur

Un classificateur Random Forest est construit pour prédire les résultats du diabète à l'aide de l'ensemble de données sur le diabète. Le code est divisé en plusieurs étapes : (1) importer les bibliothèques pertinentes, (2) créer des ensembles de données d'entraînement et de test, (3) construire le modèle, et (4) présenter les mesures de performance dans le rapport de classification.

# Load useful libraries
from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
from sklearn.metrics import classification_report

# Separate Features and Target Variables
X = diabetes_data.drop(columns='Outcome')
y = diabetes_data['Outcome']

# Create Train & Test Data
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.3,
                                                	stratify =y,
                                                	random_state = 13)

# Build the model
rf_clf = RandomForestClassifier(max_features=2, n_estimators =100 ,bootstrap = True)

rf_clf.fit(X_train, y_train)

# Make prediction on the testing data
y_pred = rf_clf.predict(X_test)

# Classification Report
print(classification_report(y_pred, y_test))

La dernière instruction d'impression génère le rapport suivant : 

Rapport de classification du modèle

Le classificateur de la forêt aléatoire fournit une performance décente dans la prédiction des résultats du diabète, avec une marge d'amélioration évidente en utilisant différents modèles.

Nous pouvons maintenant intégrer la couche d'explicabilité dans ce modèle afin de mieux comprendre ses prédictions. La section suivante se concentre sur les deux grandes catégories d'explicabilité des modèles : les méthodes spécifiques aux modèles et les méthodes agnostiques.

Notre Classification dans l'apprentissage automatique : Introduction L'article vous aide à vous familiariser avec la classification dans l'apprentissage automatique, en examinant ce qu'elle est, comment elle est utilisée et quelques exemples d'algorithmes de classification.

Méthodes agnostiques

Ces méthodes peuvent être appliquées à n'importe quel modèle d'apprentissage automatique, indépendamment de sa structure ou de son type. Ils se concentrent sur l'analyse de la paire entrée-sortie des caractéristiques. Cette section présente et analyse LIME et SHAP, deux modèles de substitution largement utilisés.

SHAP

Il s'agit de SHapley AdditiveexPlanations. Cette méthode vise à expliquer la prédiction d'une instance/observation en calculant la contribution de chaque caractéristique à la prédiction. Elle peut être installée à l'aide de la commande pip suivante.

!pip install shap

Après l'installation :

  • La bibliothèque principale de shaps est importée.
  • La classe TreeExplainer est utilisée pour expliquer les modèles basés sur les arbres, ainsi que la classe initjs.
  • La fonction shape.initjs() initialise le code JavaScript nécessaire à l'affichage des visualisations SHAP dans un environnement jupyter notebook.
  • Enfin, après avoir instancié la classe TreeExplainer avec le classificateur de la forêt aléatoire, les valeurs de forme sont calculées pour chaque caractéristique de chaque instance dans l'ensemble de données de test.
import shap
import matplotlib.pyplot as plt

# load JS visualization code to notebook
shap.initjs()

# Create the explainer
explainer = shap.TreeExplainer(rf_clf)

shap_values = explainer.shap_values(X_test)

SHAP offre une gamme d'outils de visualisation pour améliorer l'interprétabilité des modèles, et la section suivante aborde deux d'entre eux : (1) importance de la variable avec le graphique de synthèse, (2) graphique de synthèse d'une cible spécifique, et (3) graphique de dépendance.

Importance des variables et graphique de synthèse

Dans ce graphique, les caractéristiques sont classées en fonction de leur valeur SHAP moyenne, les plus importantes étant placées en haut et les moins importantes en bas, à l'aide de la fonction summary_plot(). Cela permet de comprendre l'impact de chaque caractéristique sur les prédictions du modèle.

print("Variable Importance Plot - Global Interpretation")
figure = plt.figure()
shap.summary_plot(shap_values, X_test)

Graphique de synthèse montrant les variables importantes

Vous trouverez ci-dessous l'interprétation que l'on peut faire du graphique ci-dessus :

  • On constate que les couleurs rouge et bleue occupent la moitié des rectangles horizontaux pour chaque classe. Cela signifie que chaque caractéristique a un impact égal sur la classification des cas de diabète (étiquette=1) et de non-diabète (étiquette=0).
  • Cependant, le glucose, l'âge et l'IMC sont les trois premières caractéristiques ayant le plus grand pouvoir prédictif.
  • D'autre part, la grossesse, les taches cutanées, l'insuline et la tension artérielle ne contribuent pas autant que les trois premières caractéristiques.

Graphique de synthèse sur une étiquette spécifique

Cette approche permet d'obtenir une vue d'ensemble plus granulaire de l'impact de chaque caractéristique sur un résultat spécifique (étiquette).

Dans l'exemple ci-dessous, shap_values[1] est utilisé pour représenter les valeurs SHAP des instances classées sous l'étiquette 1 (diabétiques).

shap.summary_plot(shap_values[1], X_test)

Résumé Plot deep-dive on label = 1

Extrait du graphique ci-dessus :

  • L'axe des ordonnées représente les caractéristiques classées en fonction de leurs valeurs absolues moyennes de SHAP, comme dans le graphique de l'image 2.
  • L'axe X représente les valeurs SHAP. Des valeurs positives pour une caractéristique donnée rapprochent la prédiction du modèle de l'étiquette examinée (étiquette=1). En revanche, les valeurs négatives poussent vers la classe opposée (étiquette=0).
  • Un individu dont le taux de glucose est élevé (points rouges) est susceptible d'être diagnostiqué comme diabétique (résultat positif), tandis qu'un taux de glucose faible permet de ne pas être diagnostiqué comme diabétique.
  • De même, les patients vieillissants sont plus susceptibles de se voir diagnostiquer un diabète. Cependant, le modèle semble incertain quant au diagnostic pour les patients plus jeunes.

L'une des façons de traiter cette ambiguïté pour l'attribut Age est d'utiliser le graphique de dépendance pour obtenir plus d'informations.

Graphique de dépendance

Contrairement aux diagrammes de synthèse, les diagrammes de dépendance montrent la relation entre une caractéristique spécifique et le résultat prédit pour chaque cas dans les données. Cette analyse est effectuée pour de multiples raisons et ne se limite pas à l'obtention d'informations plus granulaires et à la validation de l'importance de l'élément analysé en confirmant ou en remettant en question les résultats des diagrammes de synthèse ou d'autres mesures globales de l'importance de l'élément. 

Diagramme de dépendance pour l'attribut Âge

Le graphique de dépendance révèle que les patients de moins de 30 ans ont un risque plus faible d'être diagnostiqués comme diabétiques. En revanche, les personnes de plus de 30 ans sont plus susceptibles de recevoir un diagnostic de diabète.

LIME

Explications locales interprétables du modèle diagnostic (LIME en abrégé). Au lieu de fournir une compréhension globale du modèle sur l'ensemble des données, LIME se concentre sur l'explication de la prédiction du modèle pour des instances individuelles.

LIME explainer peut être mis en place en deux étapes principales : (1) importer le module lime, et (2) adapter l'explicateur à l'aide des données d'apprentissage et des cibles. Pendant cette phase, le mode est réglé sur la classification, qui correspond à la tâche en cours.

# Import the LimeTabularExplainer module
from lime.lime_tabular import LimeTabularExplainer

# Get the class names
class_names = ['Has diabetes', 'No diabetes']

# Get the feature names
feature_names = list(X_train.columns)

# Fit the Explainer on the training data set using the LimeTabularExplainer
explainer = LimeTabularExplainer(X_train.values, feature_names =     
                                 feature_names,
                                 class_names = class_names, 
                                 mode = 'classification')

L'extrait de code ci-dessous génère et affiche une explication LIME pour la 8e instance des données de test en utilisant le classificateur de la forêt aléatoire et en présentant la contribution finale des caractéristiques sous forme de tableau. 

Explication de LIME pour la 8ème instance de l'ensemble de données de test

Le résultat contient trois informations principales, de gauche à droite : (1) les prédictions du modèle, (2) les contributions des caractéristiques et (3) la valeur réelle de chaque caractéristique.

Nous pouvons observer que l'on peut prédire que le huitième patient est diabétique avec un taux de confiance de 72 %. Les raisons qui ont conduit le modèle à prendre cette décision sont les suivantes :

  • Le taux de glucose du patient est supérieur à 99.
  • La tension artérielle est supérieure à 70.

Ces valeurs peuvent être vérifiées dans le tableau ci-contre.

Méthodes spécifiques au modèle

Contrairement aux méthodes agnostiques, ces méthodes ne peuvent être appliquées qu'à une catégorie limitée de modèles. Parmi ces modèles figurent la régression linéaire, les arbres de décision et l'interprétabilité des réseaux neuronaux. Différentes techniques telles que DeepLIFT, Grad-CAM ou Integrated Gradients peuvent être utilisées pour expliquer les modèles d'apprentissage profond.

Lorsque vous utilisez un modèle d'arbre de décision, un arbre graphique peut être généré avec la fonction plot_tree de scikit-learn pour expliquer le processus de prise de décision du modèle de haut en bas, et une illustration est donnée ci-dessous.

L'article Deep Learning - A Tutorial for Data Scientists répondra aux questions les plus fréquemment posées sur le deep learning et explorera divers aspects du deep learning à l'aide d'exemples concrets.

Entraînons un arbre de décision avec des hyperparamètres spécifiques tels que max_depth et min_samples_leaf avant de générer l'arbre graphique.

from sklearn.tree import DecisionTreeClassifier, plot_tree
dt_clf = DecisionTreeClassifier(max_depth = 3, min_samples_leaf = 2)
dt_clf.fit(X_train, y_train)

# Predict on the test data and evaluate the model
y_pred = dt_clf.predict(X_test)

print(classification_report(y_pred, y_test))

L'instruction d'impression précédente génère le rapport de classification suivant du modèle. 

Rapport de classification du modèle

Le processus de prise de décision du modèle peut être visualisé dans le code ci-dessous :

fig = plt.figure(figsize=(25,20))
_ = plot_tree(dt_clf,
               	feature_names = feature_names,
               	class_names = class_names,
               	filled=True)

Arbre de décision pour la tâche de prédiction du diabète

En examinant l'arborescence, on peut retracer le processus de décision pour chaque échantillon, ce qui permet de mieux comprendre le comportement et l'interprétabilité du modèle.

Dans le graphique ci-dessus, chaque nœud représente une décision ou une division basée sur une valeur de caractéristique spécifique. Pour chaque nœud interne, le graphique indique la caractéristique utilisée pour la division, la valeur du critère de division, l'impureté de Gini et le nombre d'échantillons atteignant ce nœud.

Dans les nœuds feuilles, la classe majoritaire et le nombre d'échantillons sont affichés. En outre, les couleurs des nœuds représentent la classe majoritaire, l'intensité de la couleur indiquant la proportion de la classe dominante dans ce nœud. Par exemple, les nœuds orange de la branche gauche correspondent à l'étiquette "diabète", tandis que les nœuds bleus correspondent à l'absence de diabète.

Défis de la XAI et perspectives d'avenir

À mesure que la technologie de l'IA progresse et devient plus sophistiquée, il devient de plus en plus difficile de comprendre et d'interpréter les algorithmes pour déterminer comment ils produisent des résultats, ce qui permet aux chercheurs de continuer à explorer de nouvelles approches et à améliorer celles qui existent déjà.

De nombreux modèles d'IA explicables nécessitent une simplification du modèle sous-jacent, ce qui entraîne une perte de performance prédictive. En outre, les méthodes actuelles d'explicabilité peuvent ne pas couvrir tous les aspects du processus décisionnel, ce qui peut limiter le bénéfice de l'explication, en particulier lorsqu'il s'agit de modèles plus complexes.

De nouvelles méthodes de recherche se concentrent sur l'amélioration des techniques d'IA explicables en développant des algorithmes plus efficaces pour traiter les questions éthiques tout en créant des explications conviviales.

Enfin, grâce aux recherches en cours, nous avons plus de chances de disposer de méthodes plus sophistiquées qui favorisent la transparence, la fiabilité et l'équité.

Conclusion

Cet article a donné un bon aperçu de ce qu'est l'IA explicable et de certains principes qui contribuent à instaurer la confiance et peuvent fournir aux Data Scientists et aux autres parties prenantes des compétences pertinentes pour construire des modèles dignes de confiance qui aident à prendre des décisions exploitables.

Nous avons également abordé les méthodes diagnostiques et spécifiques à un modèle, en nous concentrant plus particulièrement sur la première en utilisant LIME et SHAP. En outre, les défis, les limites et certains domaines de recherche ont été mis en évidence en ce qui concerne l'IA explicable.

Pour en savoir plus sur l'éthique qui sous-tend ces technologies, consultez notre cours Introduction à l'éthique des données, qui couvre les principes de l'éthique des données, sa relation avec l'éthique de l'IA et ses caractéristiques à travers les différentes étapes du cycle de vie des données. 

Obtenez une certification de haut niveau en matière d'IA

Démontrez que vous pouvez utiliser l'IA de manière efficace et responsable.

Zoumana Keita 's photo
Author
Zoumana Keita
LinkedIn
Twitter

Scientifique de données aux multiples talents qui aime partager ses connaissances et rendre service aux autres, Zoumana est un créateur de contenu sur YouTube et un rédacteur technique de premier plan sur Medium. Il prend plaisir à parler, à coder et à enseigner. Zoumana est titulaire de deux masters. Le premier en informatique avec une spécialisation en apprentissage automatique à Paris, en France, et le second en science des données à l'université Texas Tech aux États-Unis. Son parcours professionnel a débuté en tant que développeur de logiciels au sein du Groupe OPEN en France, avant de rejoindre IBM en tant que consultant en apprentissage automatique, où il a développé des solutions d'IA de bout en bout pour les compagnies d'assurance. Zoumana a rejoint Axionable, la première startup d'IA durable basée à Paris et Montréal. Il y a occupé le poste de Data Scientist et a mis en œuvre des produits d'IA, principalement des cas d'utilisation NLP, pour des clients en France, à Montréal, à Singapour et en Suisse. En outre, 5 % de son temps a été consacré à la recherche et au développement. Il travaille actuellement en tant que scientifique de données senior à l'IFC, le groupe de la Banque mondiale.

Sujets

En savoir plus sur l'IA !

cours

AI Ethics

1 hr
23.5K
Explore AI ethics focusing on principles, fairness, bias reduction, and trust in AI design.
Afficher les détailsRight Arrow
Commencer le cours
Voir plusRight Arrow
Apparenté

blog

Les 32 meilleures questions d'entretien sur AWS et leurs réponses pour 2024

Un guide complet pour explorer les questions d'entretien AWS de base, intermédiaires et avancées, ainsi que des questions basées sur des situations réelles. Il couvre tous les domaines, garantissant ainsi une stratégie de préparation bien équilibrée.
Zoumana Keita 's photo

Zoumana Keita

30 min

blog

2022-2023 Rapport annuel DataCamp Classrooms

À l'aube de la nouvelle année scolaire, DataCamp Classrooms est plus motivé que jamais pour démocratiser l'apprentissage des données, avec plus de 7 650 nouveaux Classrooms ajoutés au cours des 12 derniers mois.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

8 min

blog

Célébration de Saghar Hazinyar : Une boursière de DataCamp Donates et une diplômée de Code to Inspire

Découvrez le parcours inspirant de Saghar Hazinyar, diplômée de Code to Inspire, qui a surmonté les défis en Afghanistan et s'est épanouie grâce à une bourse de DataCamp Donates.
Fereshteh Forough's photo

Fereshteh Forough

4 min

blog

Q2 2023 DataCamp Donates Digest

DataCamp Donates a offert plus de 20k bourses d'études à nos partenaires à but non lucratif au deuxième trimestre 2023. Découvrez comment des apprenants défavorisés et assidus ont transformé ces opportunités en réussites professionnelles qui ont changé leur vie.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

blog

Les 20 meilleures questions d'entretien pour les flocons de neige, à tous les niveaux

Vous êtes actuellement à la recherche d'un emploi qui utilise Snowflake ? Préparez-vous à répondre à ces 20 questions d'entretien sur le flocon de neige pour décrocher le poste !
Nisha Arya Ahmed's photo

Nisha Arya Ahmed

20 min

blog

Nous avons fait don de bourses DataCamp Premium à un million de personnes, et ce n'est pas fini.

Réparties entre nos deux programmes d'impact social, DataCamp Classrooms et #DCDonates, les bourses offrent un accès illimité à tout ce que DataCamp Premium a à offrir.
Nathaniel Taylor-Leach's photo

Nathaniel Taylor-Leach

Voir plusVoir plus