Vous êtes sur la page 1sur 34
‘02/2023 20:02 Repousser les limites ¢ axpicabité Ln guide avancé de SHAP | by Ula La Paris | Medium A: Ula La Paris Jun 4, 2020 - 17min read (N Save oe Repousser les limites d’explicabilité — un guide avancé de SHAP Cet article est un guide des fonctionnalités avancées et moins connues de la librairie python SHAP. II se base sur un exemple de classification de données tabulaires. D’abord, parlons de la motivation et intérét pour lexplicabilité Saegus qui a motivé et financé mes explorations. ae Photo by ThisisEngineering RAEng on Unsplash hitpsiImediur.com!@ulalaparisirepousser-ies-liites-dexplicabllté-un-guide-avancé-de-shap-a338 adbbfe 14 ‘10212023 20:02 Repousser le mites dexpicabiité Explicabilité — la théorie Lexplicabilité des algorithmes prend de plus en plus de place dans les débats autour Ln guide avancé de SHAP | by Ula La Paris | Medium de la Data Science. On sait que les algorithmes sont puissants, on sait qu’ils peuvent nous assister dans de nombreuses taches : prédiction de prix, classification de documents, recommandation de vidéos. Dorénavant, on se pose de plus en plus de questions sur cette prédiction : © est-elle éthique ? + est-elle touchée par des bi * est-elle prise pour de bonnes raisons ? Dans de nombreux secteurs comme la médecine, la banque ou encore assurance, Temploi d’algorithmes peut avoir lieu si, et seulement si, il est possible de tracer et expliquer (ou encore mieux interpréter) les décisions de ces dits algorithmes. Parenthése sur le vocabulaire Dans cet article nous souhaitons distinguer les termes : Explicabilité: possibilité d’expliquer d'un point de vue technique la prédiction d'un algorithme. Interprétabilité: capacité d’expliquer ou de fournir du sens en termes compréhensibles par un étre humain. ‘Transparence: un modéle est considéré comme transparent s'il est compréhensible en soi. Pourquoi linterprétabilité est si importante ? Linterprétabilité aide a garantir ’impartialité dans la prise de décision, cest-a-dire a détecter et, par conséquent, a corriger les biais dans fensemble des données dentrainement. De plus, elle facilite la robustesse en mettant en évidence les perturbations adverses potentielles qui pourraient changer la prédiction. Elle peut également agir comme une assurance que seules des variables significatives inférent le résultat. Parfois, il serait plus judicieux dabandonner approche machine learning, utiliser les algorithmes déterministes basées sur les régles justifiées par le métier ou la hitpsiImediur.com!@ulalaparisirepousser-ies-liites-dexplicabllté-un-guide-avancé-de-shap-a338 adbbfe 2194 ‘02/2023 20:02 ‘Repousser les limites c'expicabl Ln guide avancé de SHAP | by Ula La Paris | Medium legislation [1]. anmoins, il est trop tentant d’accéder aux performances des algorithmes de machine learning qui peuvent proposer une haute efficacité. On peut parler du compromis entre la performance et l’explicabilité. Ce compromis consiste en abandon de modéles les plus complexes comme réseaux de neurones pour les algorithmes plus simples que lon peut expliquer. Hybrid modelling a XAI's future New explainabi research arena Interpretable featur idelling approaches High Post-hoe explain: Interpretability-d ty techniques model designs Model accuracy Low Ww High Model interpretability Comme décrit dans [2] relation entre linterprétabilité et la pertinence (accuracy) du modéle. Pour certains modéles des améliorations sont possibles vers un modéle plus interprétable ou plus pertinent. Pour atteindre ces objectifs, un nouveau domaine a émergé: XAI (Explainable Artificial Intelligence), qui vise & produire des algorithmes & la fois puissants et explicables. De nombreux frameworks ont été proposés pour aider a expliquer les algorithmes non-transparents. Une trés bonne présentation de ces méthodes se trouve dans livre blanc de Cloudera [3]. Dans cet article nous allons traiter une des frameworks les plus utilisés : SHAP. Pour qui? Des profils différents intéressés par lexplicabilité ou l’interprétabilité ont été identifé: hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte ia ‘02/2023 20:02 ‘Repousser les limites 'explicabilité — un guide avancé de SHAP | by Ub Paris | Medium Expert métier/utilisateur du modéle — afin de faire confiance au modéle, comprendre la causalité de la prédiction * Organes régulateurs afin de certifier la conformité avec la législation, faire un audit * Managers et executive board afin d'évaluer la conformité réglementaire, comprendre les applications d'IA d'entreprise * Utilisateurs impactés par les décisions du modéle afin de comprendre la situation, vérifier les décisions * Data scientist, développeur, PO afin d’assurer/améliorer performance du produit, trouver des nouvelles fonctionnalités, expliquer le fonctionnement/prédictions aux supéricurs Afin de rendre possible Vaccés & Vexplicabilité aux personnes peu techniques, tout dabord le créateur : un data scientist/développeur doit étre a Vaise avec les outils d'explicabilité. Le data scientist va s‘en servir en premier lieu pour comprendre, améliorer son modéle et ensuite pour communiquer avec ses supérieurs et les organes régulateurs. Récemment, les outils d’explicabilité sont rendus de plus en plus accessibles. Par exemple Dataiku — plateforme de ML — a ajouté dans sa derniére version 7.0 publiée le 2 mars 2020 des outils d’explicabilité : Shapley values et “The Individual Conditional Expectation” (ICE) hitpssImedium.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbfe 4ia4 ‘02/2023 20:02 FRepousser los limites e'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium EERE + er = a compsevecyoetiretrie [7 | naive sormnpcmibiie ingen: @ict Ostomy I INTERPRETATION me vee seemrm tins 1a Pr epedree va 0 cations rn enc tnsiahigntanes MoDEL INFORMATION = te. mm 1 2 cmapresnten| — ented Steseertionininon =a ce a Dati cu prediction studio Azure ML propose également leur propre variante de Shap et autres méthodes avec des tableaux de bord interactifs. ‘Azure ML tableau de bord de visualisation hitpssimedium.com/@ul patisirepousser-ee-limites-dexplicablité-un-guide-avancé-de-shap-a308 adbbfe ‘interpreatablité sia ‘1ioa2023 2002 Repousser ls tines explcbité—un gute avancé de SHAP| by Ula La Paris | Mesum Tlexiste aussi de webapps open-source comme celle-ci décrite dans Varticle medium [4] qui facilitent lexploration de la libraire SHAP. Understand the machine learning Blackbox with ML interpreter There are dangers in having models running the world and making decisions from hiring to criminal justice towardsdatasclence.com Ces outils, trés intéressants pour avoir un apercu rapide d’interprétablité, ne donnent pas forcément une compréhension du plein potentiel de la librairie SHAP. Peu permettent d’explorer les valeurs d’interactions ou utiliser différents sets de fond (background) ou affichage (display). Jai investigué le framework SHAP et je vous présente mes remarques et l'utilisation de fonctionnalités moins connues, disponibles dans la version officielle de la librairie en open source. Je propose également quelques visualisations interactives faciles a intégrer dans vos projets. Explicabilité — la pratique La plupart de data scientists ont déja entendu parler du framework SHAP. Dans ce post, nous n’allons pas vous expliquer en détail comment se font les calculs derriére la libraire. De nombreuses ressources sont disponibles en ligne comme la documentation de SHAP [5], les publications d’auteurs de la librairie [6,7], le superbe livre “Interpretable Machine Learning” [8] et nombreux articles medium (9,10,11]). En résumé, les valeurs de Shapley calculent importance d'une variable en comparant ce qu’un modéle prédit avec et sans cette variable. Cependant, étant donné que Yordre dans lequel un modéle voit les variables peut affecter ses prédictions, cela se fait dans tous les ordres possibles, afin que les fonctionnalités soient comparées équitablement. Cette approche est inspirée de la théorie des jeux. Aprés avoir travaillé avec des nombreux clients, par exemple dans le secteur bancaire ct assuranciel, on peut se rendre compte que leurs data scientists ont du mal a exploiter le potentiel de SHAP au maximum. Ils ne savaient pas comment cet hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte e134 ‘02/2023 20:02 ‘Repousser les limites 'explicabilité — un guide avancé de SHAP | by Ub a Paris | Medium outil pouvait vraiment étre utile pour comprendre un modéle et comment I'utiliser pour aller plus loin que simplement extraire importance de variables. Le diable est dans les détails SHAP vient avec un ensemble de visualisations qui sont assez complexes et pas. toujours intuitives méme pour un data scientist. En plus de cela, il existe plusieurs nuances techniques pour pouvoir utiliser SHAP avec vos données. Llarticle sur le blog de Francesco Porchetti [12] exprime quelques- unes de ces frustrations en explorant les libraries SHAP, LIME, PDPbox (PDP et ICE) et ELIS. Chez Saegus, j'ai travaillé sur la construction d’une formation qui vise 4 donner plus de clarté au framework SHAP et & faciliter la prise en main de cet outil. Dans ce post je voudrais vous partager quelques observations collectionnées au long de ce process. SHAP sutilise pour expliquer un modéle existant. Prenant un cas de classification binaire construite avec un modéle sklearn. On entraine, tune et teste notre modéle. Ensuite on peut utiliser nos données et le modéle pour créer un modéle supplémentaire de SHAP qui explique notre modéle de classification. prediction explanation Image source: SHAP github Vocabulaire Lest important de comprendre tous les briques qui composent une explication de SHAP, Souvent, en utilisant les valeurs par défaut des paramétres, la complexité des choix que nous faisons reste obscure. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte ia4 ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium explications globales explications concernant fonctionnement du modéle de point de vue général explication locales explications du modéle pour un instance explainer (shap.explainer_type(params)) type dalgorithme d’explicabilité & choisir en fonction du modéle utilisé, Les paramétres sont différents pour chaque type du modéle. Habituellement, il faut fournir, a minima, le modéle et les données d’entrainement. base value (explainer.expected_value) E(y_hat) est «la valeur qui serait prédite si nous ne connaissions aucune caractéristique (feature) de la sortie actuelle » c’est la prédiction moyenne ou mean(y_hat) pour le jeu de données dentrainement ou le jeu de fond (background set). On peut Pappeler “valeur de référence”, cest un scalaire (n). Tl est important de bien choisir son jeu de fond — si nous avons le jeu dentrainement non-equilibré ceci va résulter en valeur de base placé parmila majorité d’instances. Ceci peut étre également un effet souhaité: par exemple si pour un crédit bancaire nous souhaitons répondre a la question: “en quoile client en question est différent de clients qui ont eu l'accord pour le crédit2?” ou bien “en quoi mon faux positif est différent des vrais positifs?”. # equilibrated case background = X.sample(1000) #X is equilibrated # background used in explainer defines base value explainer = shap.TreeExplainer (xgb_model, background, model_output="raw" ) shap_values = explainer.shap_values(X) # background used in the plot, the points that are visible on the plot shap.summary_plot (shap_values, background, feature_names=background. columns) hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte aia ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium # base value shifted classi = X.loc[classi,:] #X is equilibrated # background from class 1 is used in explainer defines base value explainer = shap.TreeExplainer (xgb_model,class1,model_output="raw" ) shap_values = explainer.shap_values (Xx) # points from class © is used in the plot, the points that are visible on the plot shap. summary_plot (shap_values,X.loc[class®, :], feature_names=X.columns) Importance de dataset de fond en construction d’un SHAP Expl: Base value Base value ‘Summary plot, dataset de fond eomprends le méme ‘Summary plot, datasot de fond compronds instances de nombre d'instances de la classe 1 et 0, les points la classe 1, 6s points projeées provient de la classe 0 projetées provient de la classe 0 et la classe 1 Sélection du dataset de fond change la question auquel répondent shap values SHAPley values (explainer.shap_values(x)) la contribution moyenne de chaque variable A chaque prédiction pour chaque instance sur la base de toutes les configurations de variables (features) possibles. Cest une matrice (n,m) n — instances, m — features qui represente la contribution de chaque variable & chaque instance. output value (pour une instance) hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte sia ‘02/2023 20:02 ‘Repousser les limites c'expicabl un gue avancé de SHAP | by Ula La Paris | Medium La valeur prédite par l/algorithme (peut-étre la probabilité, logit ou valeurs bruts (raw) de sortie du modéle) display features (n x m) Une matrice de valeurs dorigine — avant la transformation/encoding/ingénierie de variables etc. qui peut étre fournie a certains graphiques pour améliorer linterprétation. Souvent négligé et indispensable pour donner une interprétation. SHAPIey values — les valeurs Shapley restent I’élément central. Une fois on se rend compte que ceci est simplement une matrice avec les mémes dimensions que nos donées d’entrée et que nous pouvons lanalyser de différentes maniéres pour expliquer le modéle et pas seulement. On peut reduire ses dimensions, on peut faire du clustering, on peut utiliser pour créer de nouvelles varaibles. Une exploration intéressante décrite dans article [12] vise 4 améliorer la détection danomalies en utilisant autoencodeurs et SHAP. La librarie SHAP propose une exploration riche mais pas exchaustive a travers de visualisations. Visualisations La librairie SHAP propose de différentes visualisations. Une bonne explication sur la fagon de lire les couleurs du “summary plot” se trouve dans cet aticle medium 14]. hitpsiImediur.com!@ulalaparislrepousser-ies-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbfe 0194 ‘Wo2/2023 20:02 ‘Repousser los limites e'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium SHAP graphiques — explications globales ve | A kt ‘Summary plot « dot » ‘Summary plot « compact dot » Dependence plot ‘pour les interaction values ‘Summary plot «bar» Summary plot « violin » un résumé de visualisations de graphiques permettant analyser les explications globales Le summary plot permet de voir les variables les plus importantes et 'amplitude de leur impact sur le modéle. II peut prendre plusieurs formes graphiques et pour les modéles expliqués par TreeExplainer nous pouvons observer aussi les valeurs dinteractions utilisant le “compact dot” avec shap_interaction_values en input. Le dependence plot permet d’analyser les variables deux par deux en suggérant une possiblité dobservation des interactions. Le scatter plot représente une dépendence entre une variable (en x) et les shapley values (en y) colorié par une deuxiéme variable (coleur). A titre personnel, je trouve qu’une observation de relation a trois facteurs en méme temps n’est pas intuitive pour le cerveau humain (du moins le mien). Je doute également qu'une observation de dépendance en observant les couleurs peut étre scientifiquement exacte. Shap peut nous donner une relation d’interaction qui est calculée comme une corrélation entre les shapley values de la premiére variable et les valeurs de la deuxiéme variable. Si possible (pour TreeExplainer) il est plus judicieux d'utiliser les valeurs d’interaction de shapley pour observer les interactions. 1 inport plotly.to as pio 2 pio.tenplates.default = “plotly_white 3. fron plotly.subplots import make_subplots 4 import pandas as pd 5 imoort plotlv.express as ox hitpssImediur. com! @ulalaparisirepousseries-limites-dexplicabllté-ur-quide-avancé-de-shap-a338 adbbfe v8 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium 7 Anport matplotlib.pylab as pl 8 inport nunpy as np 9 10 n 12. def dependence_plot_classes(Feature_nane, background display, y_background, shap_values) Boot 14 Create a plot showing relationship between a feature and the shapley values for this featur 5 Q « fi © y_label=1 © y_label=0 6 o 4 § E 2 2 Income=149 5 Shapley values for Income=2.547556 Ss 4 0 3 2 o $ > ag a 8 £ wn 0 50 100 150 200 Income “3 x.nane = X_background_display.colunns[i] a4 GF = pd.bataFrane({y_nane:a,x_nane:b,"y label": res}) 45 Fig = px.scatter(df, x=x.nane, y=y_nane, color="y_label", marginal_y="histogran", marginal 46 ar Fig. shou() 48 ‘ » hitpsiImediur.com!@ulalaparislrepousser-ies-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbfe yaa ‘Wo2/2023 20:02 ‘Repousser les limites c'expicabl Ln guide avancé de SHAP | by Ula La Paris | Medium SHAP graphiques - explications locales Force plot pour une instance Decision plot for one samples Waterfall plot pour une instance Force plot pour un ensemble dinstances Decision plot pourun ensemble ‘instances un résumé de visualisations de graphiques permettant analyser les explications locales Pour les visualisations d’explications d'une instance il existe trois alternatives: plot, decision plot et waterfall plot. Pour une instance, ces trois représentations sont redondantes, elles représentent Tinformation de maniére trés similaire. En méme temps, certains éléments de ces graphiques sont complémentaires. En mettant cdte a céte les trois, jai limpression de comprendre d'une maniére plus intuitive le résultat. Le force plot est bon pour voir ott se place le “output value” par rapport a la “base value”. Nous observons également quelles variables ont un impact positif (rouge) ou négatif (bleu) sur la prédiction et amplitude de cet impact. Le water plot permet aussi de voir Yamplitude et la nature d’impact d'une variable avec sa quantification. Il permet de voir également lordre importance des variables et les valeurs prises par chacune des variables pour instance étudiée. Le Decision plot permet d’observer l'amplitude de chaque changement, “une trajectoire” prise par une instance pour les valeurs des variables affichées. En utilisant le force plot et le decision plot nous pouvons représenter plusieurs instances en méme temps. The force plot pour un ensemble des instances peut étre comparé au dernier niveau d'un dendrogramme. Les échantillons sont groupés par similarité ou par variable hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 13104 ‘02/2023 20:02 ‘Repousser les limites c'expicabl Lun guide avancé de SHAP | by Ula La Paris | Medium sélectionnée. A mon avis, ce graphique est difficile a lire pour un échantillon aléatoire. I] est beaucoup plus parlant si nous représentons les cas contrastés ou avec une hypothése derriére. Le decision plot, pour un ensemble d’échantillons, devient vite encombrant si nous sélectionnons trop d’instances. Il est trés utile pour observer ‘un écart de trajectoire’ ou des “trajectoires divergentes/convergentes” d'un groupe d’instances limité. Explainers Explainers sont les modéles qui sert a calculer les valeurs shapley. Le schémat ci- dessous présente différentes types d’Explainers. Le choix d’explainer dépend essentiellement du modéle dapprentissagé selectionné, Pour les modéles linéaires, on utilise le “Linear Explainer’, pour les arbres de décisons et modéles type “ensemble” — “TreeExplainer”. “Kernel Explainer” est plus lent que les explainers cités ci-dessus. En plus le “Tree Explainer” permet d’afficher les valeurs d’interactions (voir section suivante). Il permet aussi transformer le model output en probabilities ou logloss, ce qui est habile pour une meilleure compréhension du modéle ou pour comparer plusieurs modéles. Le Kernel Explainer crée un modéle qui substitue le plus proche de notre modéle. On peut utiliser le Kernel Explainer pour expliquer les réseaux de neurones. Pour les modéles d’apprentissage profond, il existe le Deep Explainer et le Grandient Explainer. Pour cet article nous n’avons pas investigué lexplicabilité des réseaux de neurones. hitpsiImediur.com!@ulalaparislrepousser-ies-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbfe aia ‘Wo2/2023 20:02 ‘Repousser los limites e'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium Une libraire plusieurs algorithmes Model type Explainer type Output ‘shapley values Modéles linéaires pow biomes rer open te mrss, pate! ———*] Expla ~ a | ‘shapley values Modéles des arbres : , {interaction values: omnes tee eee | ee mete) La ‘shapley values Kernel Explainer ew | { model output Model i ' omen) ‘Sampling Explainer [ogi] Partition Explainer Dearne Deep Learning H = * Rasen Erianes, un resumé de types d’Explainer dans la librairie SHAP Shapley values interactions Une des propriétés qui permet daller plus loin dans analyse dun modéle qui peut sexpliquer avec le “Tree Explainer” est le calcul des valeurs shapley d’interactions. Ces valeurs permettent de quantifier impact d'une interaction entre deux variables sur la prédiction pour chaque instance. Comme la matrice des valeurs shapley a deux dimensions (instances x variables), les interactions sont un tensor avec trois dimensions (instances x variables x variables). hitpssImediur.com!@ulalaparislrepousseries-liites-dexplicabllté-un-guide-avancé-de-shap-a338 adbbfe 15104 ‘02/2023 20:02 Repousser le mites d'explicabllté — un guide avanoé de SHAP | by Ula La Pars | Medium Somme de chaque ligne de la matrice (# features x # features) correspond a la valeur SHAP de cette variable pour cet instance. i Shapley values pour chaque variable ws Ici Shapley value pour la variable 1 ose pour la premiére instance ‘Shaple Kk ae apley values powrceuaveaie ® Les entrées diagonales de la matrice 2 représentent «I'effet principal» de 3s cette variable sur la prédiction £i Ici effet principale variable 2 as pour la premiére instance Shapley values pour chaque variable les entrées symétriques hors iagonales représentent les effets eft interaction entre toutes les paires ae de variables pour cette instance pele 32 Ici interaction variable 1 avec variable 3 os pour la premiére instance “8 fi f2 3 Shapley valves pour chaque variable Voici comment les valeurs d’interactions aident a interpréter un modéle de classification binaire. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 16134 ‘02/2023 20:02 Je me suis servi dun jeu de données Kaggle [15] qui represente une base de clients FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium et la variable dépendante binaire: est-ce que le client a accepté le prét personnel? NON/OUI (0/1). (Castomer 1D [Customers age in completed years [sears of professional experience [annual income of the customer ($000) Nome Address ZI code. Family size of the customer [ava spending on creat cards per month (5000) [Education Level. 1: Undergrad; 2: Graduate; 3: Advanced/ Professional [Value of house mortgage if any. ($000) Did ths customer accept the personal loan offered in the last campaign? [Does the customer have a securities account with the bani? Does the customer have-a certificate of deposit (CD) account with the bani? [Does the customer use intemet banking faciities? [Does the customer use a creit card issued by Universa1Bank7 Jai entrainé plusieurs modéles, dont un modéle xgboost que nous avons traité avec le Tree Explainer. hitpsiImedium.com/@ut patisirepouscer-ee-limites-dexplicablité-un-guide-avancé-de-shap-a308 Wadbbfe ria ‘02/2023 20:02 Repousser les mites d'explicabilté — un guide avanoé de SHAP | by Ula La Pars | Medium Confusion matrix, without normalization precision recall fl-score support Class 0 0.99 0.99 0.99 672 Class 1 0.92 0.92 0.92 78 accuracy 0.98 750 macro avg 0.96 0.96 0.96 750 weighted avg 0.98 0.98 0.98 750 Cohen Kappa Score: 0.9141483516483516 ROC AUC Score: 0.996432387057387 Default Recall Score: 0.9230769230769231 £1: 0.9230769230769231 xgb confusion matrix Predicted label Le dataset de fond était équilibré et représantant 40% du jeux de données. # xgb - modéle entrainé # X_background - dataset de fond explainer_raw = shap.TreeExplainer (xgb,X_background, model_output="raw", feature_perturbation="tree_path_dependent" ) # projeter les instances de dataset de fond shap_values = explainer_raw. shap_values(X_background) # obtenir les valeurs d' interactions hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 18194 ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium shap_interaction_values explainer_raw. shap_interaction_values (X_background) # dimensions shap_values. shape >>>(2543, 16) shap_interaction_values. shape >>>(2543, 16, 16) shap.summary_plot(shap_interaction_values, X_background, plot_type="compact_dot") High ee Education o » cCAvg ede- > Family ee Income* - Education Education* - income Family* - income Income* - Family CcAvgt - Income Income - CCAvg CD Account “Feature value Family* - Education Education* - Family Age Greditcard Online Securities Account Age*- Income Income* - Age region 95.0 ' 1 i ' low “4 2 2 4 SHAP value (impact on model output) Summary plot avec les interactions Pour mieux explorer les interactions, une heatmap peut étre trés utile. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 19104 ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium 1750 1500 1250 ~ 100 Histogram dinterractions Sur le Summary_plot on observe 'importance de variables et importance de ces variables mais aussi les interactions. Les interactions apparait en double ce qui broute un peu la lecture. Sur lhistogramme, on observe directement les interactions. Les plus fortes étant: Income-Education, Income — Family, Income — CCAvg et Family-Education, Income-Age. Ensuite j'ai investigué les interactions deux par deux. Pour comprendre la différence entre un dependence_plot et un dependence_plot des interactions voici les deux: hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 20194 ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium # dependence_plot classique shap.dependence_plot("Age", shap_values, features= X_background, display_features=X_background_display, ‘interaction_index="Income") 10 05 SHAP value for Income 20 -15 -10 -05 09 o8 10 15 20 Age # dependence_plot des interactions shap.dependence_plot(("Age","Income"), shap_interaction_values, features= X_background,display_features=X_background_display) 10 & Ze os a Se boo @ ge 8 es = 28 ~~ g8 z z “a0 stp nudum coniueparnpusteietiineenkabitn giseaarceceshapa8 atte aia ‘10212023 20:02 Repousser les limites c'expicabiité — un guide avancd de SHAP | by Ula La Paris | Medium Méme en utilisant le paramétre ‘display_features’, les valeurs de l’Age et de I'Income sont affichées dans l’espace transformée. Pour ceci je propose une version interactive, qui affiche les valeurs non- transformées. Qa == 08 income g 8 & : 8 200 ce | S : 3 ° 5 4 150 3 oa § 100 £ 0 = so a -02 G -04 Age Et le code pour reproduire ce graphique: htpsimedun com/@ulalapaisepouseres-mtes-dexpcaiité-unguide-avancé-de-shap-a338 2a4bb'e za ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium 1 def interaction plot(col1, col2, interaction_values, background display, is_cat-True, widt! 2 3 This function plots shap interaction values between two selected columns (coll & col2), whe 4 5 Args 6 colt (str) : name of the first feature 7 col2 (str) : name of the second feature 8 interaction_values (nunpy.array) : matrix obtained with shap shap_interaction_values 9 background_display (pandas.DataFrame) : the original values for background data used ir 10 is_eat (bool) : is the col? a categorical value, True by default a 2 Returns B {an interactive version of shap dependence_plot 4 as a 16 Anteract_val_arraysnp.enpty (background_display. iloc[ :,0].size) v for idx, __ in enumerate background _display. {lect :,0]) 8 i = background_display.colunns.get_loc (col) 19 background _display.colums.get_loc(col2) 20 res = interaction_values[idx,i,3] Fy interact_val_array[idx]=res 2 23 a = background_display.loc[:,col1].values 24 b = background_display.loc[:,col2].values 2s Af As cat: 26 b = b.astype(str) 7 28 assert len(a) == len(b) 29 y.nane = "Shapley interaction values for "+coli+ " & "scol2 30 x.name = coll 31 color_nane = col2 32 af = pd.bataFrane({y_nane:interact_val_array,X_name:a,color_nane:b }) 3 Fig = px.scatter(df, x-xname, y+y_nane, color-color_name,width-width, heightsheight,opaci aa 35 Fig. show() 36 < » Voici pour les interactions les plus fortes: Income — Education hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 294 ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium 1s © Education=3.0 error, Naren tomes S| g te og MRNA LS OAMARS ay -os SUR wf y i. eenlcenutap Sense Hh: nas parece. ° 50 100 150 200 Income Shapley interaction values for Income & Education Sur ce graphique, nous remarquons qu’avec un niveau d’Education 1 (undergrad) le revenu bas (sous 100 k USD) est un facteur encourageant 4 prendre un crédit, et le revenu haut (plus de 120 k USD) est une interaction inhibitrice. Pour les individus avec PEducation 2 & 3 (graduated & advanced/professional), leffet dinteraction est un peu plus faible et contraire 4 celui pour l'Education == 1. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 20194 ‘02/2023 20:02 FRepousser los limites c'explicabililé — un guide avancé de SHAP | by Ula La Paris | Medium i © Family © Family=2.0 Family=3.0 : Family=4.0 05 ote irre end” Shapley interaction values for Income & Family 05 mawenda dags kone “hee tao otnane = > & arene make 1 sO nntoren WegerR utewacuy * ° 50 100 150 200 Income Pour la variable Family, nombre de personnes dans le foyer, interaction est positive quand le revenu est bas (sous 100 k USD) et famille comporte 1-2 membres. Pour les revenus plus hauts (> 120 k USD), pour famille de 1-2 membres a un effet négatif. Le contraire se passe pour les familles de 3-4 personnes. 05 SauNeRee™ T aise l Rage 2 Shapley interaction values for Income & CCAvg hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 25194 ‘02/2023 20:02 ‘Repousser les limites 'explicabilité — un guide avancé de SHAP | by Ub a Paris | Medium Linteractions entre le revenu et credit card average spending est plus complexe. Pour le revenu bas (<100 k USD) et CCAvg bas (<4 k USD) interaction a un effet négatif, pour le revenu entre 50 et 110 k USD et le CCAvg 2-6 k USD Ieffet est fortement positif, cela pourrait définir une cible potentielle pour la prospection sur le crédit selon ces deux axes. Pour les revenus hauts (> 120 k USD) , le CCAvg bas impacte positivement la prédiction de la classe 1, haut CCAvg a un faible effet négatif sur les prédictions, le CCAvg moyen a un plus fort impact impact négatif. 5 1 . S ' 1 . § oe 2 . 2 08 ‘ 7 S ’ 1 —E o4 @ . : & : : ; 4 B 02 » i 1 ‘ 2 0 4 3 1 § -02 ' z } g . s ’ ‘ B -o4 « = ' po | ! s ' ' ' i £ -o8 a 1 1s 2 25 3 35 4 Family Linteraction entre deux facteur est un peu moins lisible. Pour une famille de 1 et 2 membres avec I'Education “undergrad”, linteraction a un impact négatif. Pour une famille de 3-4 personnes lefifet est contraire. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 20194 ‘02/2023 20:02 ‘Repousser les limites c'expicabl Ln guide avancé de SHAP | by Ula La Paris | Medium 08 Age ~ 65 os "Re ne Ba 55 os 0.2 Ae Nhe a su ¢ Shapley interaction values for Income & Age ° 50 100 150 200 Pour les revenus bas (< 70k USD), impact change lineairement avec Page, plus Page est haut, plus limpact varie positivement., Pour les revenus hauts (>120 k USD), Vimpact d’interaction est plus faible, 4 Y4ge moyen (~40 ans) impact est Iégerement positif, a ’Age bas impact est négatif et pour lage >45 limpact est neutre. Ces conclusions seraient plus compliquées a interpréter si les valeurs des variables niavaient pas correspondues a des valeurs dorigine, Parler de age en négatif ou de revenus dans unités. Représenter les explications dans une dimension compréhensible facilite linterprétation. Comparer les modéles Dans certaines situations, nous pouvons étre amenés a vouloir comparer les prédictions de différents modéles pour les mémes instances. Comprendre pourquoi un modéles classifie instance correctement et l'autre non. Pour commencer, on peut afficher les summary plots pour chaque modéle, regarder les importance de features et les distributions de valeurs shapley. Cela donne une prémiére idée générale. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-guide-avancé-de-shap-a338 adbbfe 27194 ‘Wo2/2023 20:02 ‘Repousser les limites c'expicabl Ln guide avancé de SHAP | by Ula La Paris | Medium Comparaison d’explications de trois modéles avec TreeExplainer xgboost random forest Decision plot permet de comparer sur le méme graphique les prédictions de deifférents modéles pour la méme instance. Il suffit de créer un objet qui simule la classification multiclasses. # on a trois modéles: xgb, gbt, rf # pour chaque nous construisons un explainer (*_explainer), on obtient les probabilités (*_probs), les prédictions (*_pred) et les valeurs shapley (*_values: axgb xgb_explainer = shap.TreeExplainer(xgb, X_background, model_output="probability", feature_perturbation="interventional") xgb_values = xgb_explainer.shap_values(X_background) xgb_probs xgb.predict_proba(pipeline_trans. transform(x_background) ) xgb_pred = xgb.predict (pipeline_trans.transform(x_background) ) # rf rf_explainer = shap.TreeExplainer(rf, X_background model_output="probability", feature_perturbation: rf_values = rf_explainer.shap_values (X_background) rf_probs = rf.predict_proba(pipeline_trans, transform(x_background) rf_pred = rf.predict(pipeline_trans, transform(x_background) nterventional") it gbt gbt_explainer = shap.TreeExplainer(gbt, X_background, model_output="probability", feature_perturbation="interventional") gbt_values = gbt_explainer.shap_values(X_background) gbt_probs gbt.predict_proba(pipeline_trans. transform(x_background) ) gbt_pred = gbt.predict (pipeline_trans.transform(x_background) ) aegeneee hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 20194 Ln guide avancé de SHAP | by Ula La Paris | Medium ‘02/2023 20:02 ‘Repousser les limites c'expicabl # on construit une liste qui simule la classification multiclass base_values = [xgb_explainer.expected_value, rf_explainer .expected_value[1], gbt_explainer.expected_value] shap_values = [xgb_values, rf_values[1], gbt_values] predictions = [xgb_probs,rf_probs,gbt_probs] labels = ["xgb", "rf", "gbt"] # index d' instance # Plot idx = 100 shap.multioutput_decision_plot (base_values, shap_values, idx, feature_names=X_background.columns.to_list() ,legend_labels=labels, Legend_location="lower right") Comparaison de prédictions de trois modéles pour deux instances différentes Instance 100 Instance 300 La seule difficulté consiste a bien vérifier les dimensions de shapley values car pour certains modéles, shapley values sont calculées pour chaque classe, dans le cas de la classification binaire (classe 0 et 1) alors que pour d’autres on obtient une seule matrice qui correspond la classe 1. Dans notre exemple, nous sélectionnons seconde matrice (index 1) pour random forest. Simulations Par défaut SHAP ne contiens pas de fonctions qui facilitent la réponse & la question “Bt si?” : “Et si je pouvais gagner 10K USD annuel de plus, mon crédit serait-il accordé ?” hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 20104 ‘02/2023 20:02 Repousser les limites ¢ axpicabité Lun guide avancé de SHAP | by Ula La Paris | Medium Néanmoins, il est possible d’effectuer les simulations en variant une variable et calculer les valeurs shapley hypothétiques. explainer_margin_i = shap.TreeExplainer (xgb,X_background, model_output="raw", feature_perturbation="interventional” ) ‘idx = 100 rg = range(1, 202, 10) r, R, hypothetical_shap_values, hypothetical_predictions, y_r = simulate_with_shap(x_background,100, "Income", rg yexplainer_margin_i, pipeline_trans=pipeline_trans) Jai crée une fonction ‘simulate_with_shap* qui simule différentes valeurs de la variable et calcule les valeurs hypothétiques de shapley. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte 3034 ‘02/2023 20:02 ‘Repousser los limites 'explcabil Ln guide avancé de SHAP | by Ula La Paris | Medium def simulate with_shap(x,idx, col, val_range, explainer, pipeline_trans=None) Function starts with an instance “idx” of dataset x and varies values of selected column “¢ it needs eplainer for dataset x anc optionally it can use the pipeline transformer to trans Parameters nmin : int minimal value to sinulate nmax : int maximal value to sinulate nistep: int step for the simulation values x + pd.pata Frame dataset idx: int selected instance col : str or int Indicate nane of the column or the index explainer : shap.explainer pipeline_trans : pipeline sklearn transformation of the dataset (optional), if absent dataset used as is Af Asinstance(col, str) : i = x.colunns.get_loc(col) else i= col rg = val_range P= x.Lloc[np.repeat: dx, 1en(rg))].reset_index(drop=True) P.iloc[:,i] = rg Lf plpeLine_trans: & = pipeline_trans.transform(r) else hypothetical_shap_values = explainer. shap_values(2) hypothetical_predictions = explainer.expected_value + hypothetical_shap_values.sun(axis=1) hypothetical_predictions = 1 / (1 + np.exp(-hypothetical_predictions)) YLP = np.arnay([@ if <= @.5 else 1 for i in hypothetical_predictions }) return (r, Ry hypothetical_shap values, hypothetical_predictions, y_r) hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-guide-avancé-de-shap-a338 adbbfe a4 ‘02/2023 20:02 ‘Repousser les limites 'explicabilité — un guide avancé de SHAP | by Ub Paris | Medium Simulation de prédiction pour une instance en variant la variable « Income » Cette simulation permet de voir pour linstance sélectionnée, si fon fige toutes les variables a part de l'Income, comment on pourrait changer la prédiction et quel seraient les valeurs shapley pour ces nouveaux valeurs. Tl est possible de simuler les changements ‘variable par variable’, il serait intéressant de pouvoir en faire plusieurs simultanement. Note finale Les algorithmes d’IA prennent de plus en plus de place dans notre vie. Lexplicabilité de prédictions est un sujet dimportance pour les data scientists, les décisionnels et les individus qui sont impactés par les prédictions. Plusieurs frameworks ont été proposé afin de transformer les modéles non explicables en explicables. Un des frameworks les plus connus et plus utilisés est SHAP. Malgré une trés bonne documentation, il n'est pas évident de savoir comment exploiter en profondeur toutes ses fonctionnalités. Jai proposé quelques simples améliorations de graphiques et jai tenté de demontrer Tutilité de fonctionnalités moins connus et non-comprises dans la plupart dutilisations standard de SHAP. Remerciments Je voudrais remercier a Péquipe Saegus DATA qui a participé A ce travail avec du bon conseil, notamment le manager Fréderic Brajon et Senior Consultant Manager Clément Moutard. hitpsiImediur.com!@ulalaparisirepousseries-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbte a4 ‘02/2023 20:02 Repousser le mites d'explicablté — un guide avanoé de SHAP | by Ula La Pars | Medium Reférences Openinapp 7 (Getanimed access) on Q B @- [2] Explainable Artificial Intelligence (XAI): Concepts, Taxonomies, Opportunities and Challenges toward Responsible Al; Arrietaa et al. https://arxiv.org/pdf/1910.10045.pdf [3] Cloudera Fast Forward Interpretability: https://ff06-2020.fastforwardlabs.com/? utm_campaign=Data Elixir&utm source=Data Elixir 282 [4] https://towardsdatascience.com/understand-the-machine-learning-blackbox- [5] https://github.com/slundberg/shap [6] http://papers.nips.cc/paper/7062-a-unified-approach-to-interpreting-model- predictions [7] https://www.nature.com/articles/s42256-019-0138-9 (8] https://christophm. github io/interpretable-ml-book/ (9] https://towardsdatascience.com/shap-explained -the-way-i-wish-someone- e-ab81cc69ef30 explaine [10] https://medium.com/@gabrieltseng/interpreting-complex-models-with-shap- values-1¢187db6ec83 [11] https://medium.com/@stanleyg1/a-detailed-walk-through-of-shap-example-for- interpretable-machine-learning-d2650693ac22 [12] https://francescopochetti.com/whitening-a-black-box-how-to-interpret-a-ml- model/ [13] Explaining Anomalies Detected by Autoencoders Using SHAP; Antwarg et al. hitps://arxiv.org/pdf/1903.02407.pdf [14] https://medium.com/fiddlerlabs/case-study-explaining-credit-modeling- predictions-with-shap-2a7b3f? «6 Qa hitpssImediur.com!@ulalaparisirepousser-ies-liites-dexplicabllté-un-quide-avancé-de-shap-a338 adbbfe saad ‘02/2023 20:02 Repousser le mites d'explicabilté — un guide avanoé de SHAP | by Ula La Pars | Medium [15]https://www.kaggle.com/itsmesumuvans-van-modelling DataScience Data Visualization Python Machine Learning —_—_—Explainable Ai hitps/Imedium.com/ @ulalaparisirepousser- -limites-dexplicablitén-guide-avancé-de-shap-2338 13a4bbte 3434

Vous aimerez peut-être aussi