.. image:: pyeco.png :height: 20 :alt: Economie :target: http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/td_2a_notions.html#pour-un-profil-plutot-economiste .. image:: pystat.png :height: 20 :alt: Statistique :target: http://www.xavierdupre.fr/app/ensae_teaching_cs/helpsphinx/td_2a_notions.html#pour-un-profil-plutot-data-scientist .. _l-interpretabilite-ml: Interprétabilité des modèles ++++++++++++++++++++++++++++ .. index:: transparence, protection des données, loi européenne, LIME Le machine learning tend à déléguer une partie de la modélisation pour fabriquer des modèles opaques, avec beaucoup de coefficients là où les statistiques privilégient la simplicité. On gagne en rapidité lors de la mise en oeuvre et on perd en interprétabilité. Il est de plus en plus important de comprendre pourquoi un modèle se trompe, pourquoi il donne telle ou telle réponse pour une plus grande transparence. La loi sur le `Règlement général sur la protection des données `_ (voir aussi `Règlement européen sur la protection des données : ce qui change pour les professionnels `_), va dans le sens d'une plus grande transparence. Elle doit rentrer en application à partir du 25 mai 2018. La compréhension des décisions d'un modèle est parfois une nécessité. Quelques idées de recherche : * **Déléguer la complexité sur les variables** : on utilise un modèle simple (linéaire, arbre de décision), et on construit de nouvelles variables ou features parfois complexes qui font du sens pour le problèmes et qu'un modèle de machine learning ne pourrait pas reproduire aisément (voir aussi `feature learning `_). * **Sélectionner les variables** et en garder le moins possibles, voir `feature selection `_, voir aussi `Feature importances with forests of trees `_. * Extraire des informations sur les variables elle-même, une forêt d'arbre produit une décision pour une observation qui n'utilise qu'une petite partie du modèle, il est possible d'extraire la liste des variables impliquées dans cette décision et de les trier par ordre d'importance, on regarde les **parties du modèle activées lors de la prédiction**, voir `treeinterpreter `_. * Poser des contraintes sur le modèle comme la **monotonie de la décision** par rapport aux variables, voir `Isotonic Regression `_. * Apprendre un **second modèle dédié à l'interprétation**, voir `Making Tree Ensembles Interpretable `_. * **Contenir la complexité des modèles**, voir `The information bottleneck method `_ * **Visualiser** la décision. .. index:: LIME Ces approches sont principalement macro et permettent de construire une vue d'ensemble. Pour étudier un cas particulier, une observation, on choisira plutôt d'explorer autour d'une observation en changeant quelques-unes des variables par d'autres valeurs plausibles. C'est l'idée de l'approche `LIME `_. Ces approches sont sensibles au nombre de variables, plus il y a de dimensions, plus il est difficile de donner du sens à une variable en particulier quand celle-ci est présente sur quelques observations seulement. *Notebooks* (*à venir*) lime, shap, unified approach, `partial_dependence `_, `permutation_importance `_ (bientôt dans scikit-learn 0.22) * `Interpret scikit-learn machine learning models `_ (from scikit-learn's consortium workshop) *Lectures - LIME - SHAP* * `"Why Should I Trust You?" Explaining the Predictions of Any Classifier `_ (sans doute un des articles à lire en premier - `lime `_) * `Defining Locality for Surrogates in Post-hoc Interpretablity `_ * `A Unified Approach to Interpreting Model Predictions `_ (SHAP) *Lectures : livre* * `Explanatory Model Analysis `_ *Lectures : expliquer* * `Ideas on interpreting machine learning `_ * `Learning to learn by gradient descent by gradient descent `_ * `Importance Weighting Without Importance Weights: An Efficient Algorithm for Combinatorial Semi-Bandits `_ * `Making Tree Ensembles Interpretable `_ * `Understanding variable importances in forests of randomized trees `_ * `Confidence Intervals for Random Forests: The Jackknife and the Infinitesimal Jackknife `_ * `Random Rotation Ensembles `_ * `Wavelet decompositions of Random Forests - smoothness analysis, sparse approximation and applications `_ * `Edward: A library for probabilistic modeling, inference, and criticism `_ * `Strictly Proper Scoring Rules, Prediction, and Estimation `_ * `Visualizing and Understanding Neural Machine Translation `_ * `Multiplicative Multitask Feature Learning `_ * `Multi-Target Regression with Rule Ensembles `_ * `SVCCA: Singular Vector Canonical Correlation Analysis for Deep Learning Dynamics and Interpretability `_ * `The Myth Of Interpretability of Econometric Models `_ * `Interpretable Policies for Reinforcement Learning by Genetic Programming `_ * `An Efficient Explanation of Individual Classifications using Game Theory `_ ** * `How to Explain Individual Classification Decisions `_ * `Interpretable Machine Learning with XGBoost `_ * `Interpretability Beyond Feature Attribution: Quantitative Testing with Concept Activation Vectors (TCAV) `_, `tutorial `_) * `To Trust Or Not To Trust A Classifier `_, `Mind the Gap: A Generative Approach to Interpretable Feature Selection and Extraction `_ * `Interpretation of Neural Networks is Fragile `_ * `Intelligible Models for HealthCare: Predicting Pneumonia Risk and Hospital 30-day Readmission `_ * `How Interpretable and Trustworthy are GAMs? `_ * `TREPAN Reloaded: A Knowledge-driven Approach to Explaining Black-box Models `_ * `Controlling a confound in predictive models with a test set minimizing its effect `_ * `INTERPRÉTABILITÉ ET EXPLICABILITÉ (FORMALISÉ) DES MODÈLES PRÉDICTIFS `_ *Lectures : monotonie* * `Isotonic Regression `_ * `Monotonic Calibrated Interpolated Look-Up Tables `_ * `Lattice Regression `_ * `Optimized Regression for Efficient Function Evaluation `_ * `Fast and Flexible Monotonic Functions with Ensembles of Lattices `_ * `Reluplex: An Efficient SMT Solver for Verifying Deep Neural Networks `_ (pas tout à fait sur la monotonie mais plutôt sur une façon de s'assurer que le modèle ne produit pas de valeur aberrante) * `Multivariate Convex Regression with Adaptive Partitioning `_ * `Isotone Optimization in R: Pool-Adjacent-Violators Algorithm (PAVA) and Active Set Methods `_ * `Online Isotonic Regression `_ *Lectures : assemblage de modèles simples* * `Intelligible Models for Classification and Regression `_ *Lectures : local* * `Learning Deep Nearest Neighbor Representations Using Differentiable Boundary Trees `_ *Lectures : modèle graphique* * `Factor Graph `_ * `An Introduction to Conditional Random Fields for Relational Learning `_ * `Factor Graphs and the Sum-Product Algorithm `_ *Lectures : erreurs, outliers* * `BoostClean: Automated Error Detection and Repair for Machine Learning `_ * `Scorpion: Explaining Away Outliers in Aggregate Queries `_ * `Outlier Detection Techniques `_, `abod.py `_ *Lectures : information bottleneck* * `Information bottleneck method `_ (wikipédia) * `The information bottleneck method `_ * `Deep Learning and the Information Bottleneck Principle `_ * `Opening the black box of Deep Neural Networks via Information `_ *Lectures : causalité* .. index:: causalité, causality * `Machine Learning Methods Economists Should Know About `_ * `Counterfactual Inference `_ * `The State of Applied Econometrics: Causality and Policy Evaluation `_ * `Estimating Treatment Effects with Causal Forests: An Application `_ *Lectures : régression discontinue* .. index:: régression discontinue, Regression Discontinuity * `150C Causal Inference Regression Discontinuity Design `_ * `Regression Discontinuity for Causal Effect Estimation in Epidemiology `_ *Vidéos* * `Explaining behavior of Machine Learning models with eli5 library `_ *Modules* Plein d'autres options sont disponibles sur cette page : `awesome-machine-learning-interpretability `_. * `eli5 `_ (développement actif) * `shap `_ (développement actif) * `alibi explain `_ (développement actif) * `facet `_ * `aix360 `_ * `skater `_ * `edward `_ * `trelawney `_ * `interpretml `_ * `deepdive `_: ce n'est pas un module python, cet outil a été développé pour étudier les relations dans les données et plus particulièrement les `dark data `_ * `treeinterpreter `_ * `lime `_ (`notebooks `_) * `ml-insights `_ : méthode empiriques pour observer les prédictions en fonctions de variations des features * `savvy `_ * `dalex `_ * `skope-rules `_ * `confound_prediction `_, plus vraiment maintenu mais il y a peut-être quelques idées à récupérer *Modules de visualisation* * `Netron `_ : cet outil n'explique pas vraiment mais permet de visualiser des modèles de machine learning. * `VisualDL `_ : cet outil n'explique pas vraiment mais permet de visualiser des modèles de deep learning. * `dalex `_ *A suivre* * `Been Lim `_