vendredi 4 juin 2021

(Vidéo) Régression linéaire avec Excel + Tanagra

Dans cette vidéo, nous présentons l'utilisation du tandem Excel (Tableur) – Tanagra dans un exercice de régression linéaire multiple. L'idée est d'exploiter les particularités des outils : le tableur pour la préparation des données et le post-traitement des résultats ; le logiciel spécialisé (Tanagra) pour la mise en œuvre des algorithmes de machine learning. Les thèmes abordés dans ce tutoriel sont : la régression, l'inspection des résultats, les graphiques des résidus, la détection des points atypiques, la sélection de variables et l'étude des colinéarités entre les exogènes.

Mots-clés : économétrie, modèle linéaire, régression linéaire multiple
Vidéo : Régression multiple avec Tanagra
Données : Consommation véhicules
Références :
Page de cours "Économétrie".

samedi 15 mai 2021

(Vidéo) Programmation parallèle sous R

Cette vidéo présente la programmation parallèle sous R via l'utilisation des packages "parallel"  et "foreach / doparallel". Nous reprenons l'idée du calcul du minimum d'un vecteur (déjà vu dans les vidéos précédentes : Dask / Python, Mapreduce sous R), mais avec un algorithme dégradé, en temps quadratique, pour mieux percevoir l'intérêt de la parallélisation des tâches lorsque les calculs deviennent complexes. Dès que la volumétrie est un tant soit peu conséquente, une meilleure utilisation des ressources des processeurs multicœurs s'avère décisive. Nous observerons aussi que les solutions proposées ("parallel" vs. "foreach / doparallel") ne présentent pas le même niveau de performances.

Mots-clés : logiciel r, programmation parallèle, parallel, foreach, doparallel
Vidéo : Parallel Programming with R
Programme : Calcul du minimum
Références :
"Programmation parallèle sous R", juin 2013.

mercredi 12 mai 2021

(Vidéo) Programmation MapReduce sous R

Cette vidéo présente la programmation MapReduce sous R via l'utilisation des packages de RHadoop. Elle s'attache en particulier à détailler les installations nécessaires au bon fonctionnement de la librairie "rmr2". Cette dernière n'est plus opérante avec les versions récentes de R (depuis les versions 3.5 et plus récentes en réalité). La solution préconisée passe par un downgrade (rétrogradage) de la version de R sous-jacente à RStudio, puis l'installation des librairies contemporaines. Un exemple de calcul du minimum d'un vecteur permet de vérifier la viabilité du dispositif.

Mots-clés : logiciel r, programmation parallèle, mapreduce, rmr, rhadoop
Vidéo : MapReduce R
Guide et programme : Calcul du minimum
Références :
"RHadoop".
"Programmation MapReduce sous R - Diapos", juillet 2015.
"MapReduce avec R", février 2015.
"Programmation R sous Hadoop", avril 2015.

lundi 10 mai 2021

(Vidéo) Parallel Machine Learning avec Dask

Nous explorons les fonctionnalités machine learning de la librairie "dask" dans cette vidéo. Nous mettons en place un schéma classique d'analyse prédictive avec une régression logistique, similaire à ce que l'on réaliserait avec "scikit-learn", sauf que nous tirons parti de ce qui fait l'intérêt de "dask" : calculs différés permettant de définir et tester les opérations sans être bloqué par la manipulation de la totalité des données ; lecture en blocs du fichier de données, permettant de traiter des très grandes bases, y compris lorsque celles-ci ne tiennent pas en mémoire centrale ; parallélisation des traitements, tirant parti efficacement des spécificités de l'environnement numérique de travail.

Mots-clés : python, dask, dataframe, dask-ml, régression logistique
Vidéo : dask-ml
Données et programme : Dask Logistic Regression
Références :
"Dask: a flexible library for parallel computing in Python".
"Python – Machine Learning avec scikit-learn", septembre 2015.

vendredi 7 mai 2021

(Vidéo) Gestion des DataFrame avec Dask (Python)

Nous continuons l'exploration de la librairie "dask" pour Python dans cette vidéo. Nous traitons de la gestion des données. "dask" met à notre disposition un équivalent du DataFrame de Pandas, mais avec des capacités spécifiques pour le traitement des données massives : un chargement en blocs (chunks) des gros fichiers, l'accès à des systèmes de fichiers distribuées (HDFS de Hadoop par ex.), le traitement différé, la parallélisation des calculs. Avantage incommensurable par rapport à Pandas, le dispositif est fonctionnel même lorsque les données ne tiennent pas en mémoire centrale.

Mots-clés : python dask, dataframe, pandas
Vidéo : DataFrame avec Dask
Données et programme : CovType
Références :
"Dask: a flexible library for parallel computing in Python".
"R et Python, performances comparées", février 2019.

mardi 4 mai 2021

(Vidéo) Programmation parallèle avec Dask

Nous discutons de la programmation parallèle sous Python dans cette vidéo. Nous utilisons la librairie "dask". L'objectif est d'exploiter au mieux les capacités multicœurs du processeur de ma machine de test. Les exemples montrent que la parallélisation des tâches ne devient décisive que lorsque nous traitons un certain volume de données. En deçà, les gains issus de la parallélisation ne compensent pas le temps consommé par les opérations supplémentaires que nécessitent la préparation des données et l'organisation des structures de calculs.

Mots-clés : python, dask
Vidéo : Parallel programming with Dask
Programme : Min et Mean sous Python
Références :
"Dask: a flexible library for parallel computing in Python".
"Programmation MapReduce sous R", juillet 2015.
"Programmation parallèle sous R", juin 2013.

vendredi 30 avril 2021

(Vidéo) Cost-sensitive learning

Dans cette vidéo, il est question de la prise en compte des coûts de mauvais classement en analyse prédictive. Les erreurs de prédiction ne sont pas toutes équivalentes. Classer en bonne santé une personne malade n'induit pas les mêmes conséquences que l'inverse par exemple. Cette information additionnelle est portée par une matrice dite de "coûts de mauvais classement". Elle traduit en valeurs numériques les répercussions des erreurs. Notre rôle consiste à utiliser à bon escient cette matrice pour guider la modélisation, mais aussi pour évaluer et comparer les performances des classifieurs.

Mots-clés : logiciel R, package rpart, MASS, lda, matrice de coûts de mauvais classement
Vidéo : Cost-sensitive learning
Données, slides, notebook : Breast cancer
Références :
Documentation MLR, "Cost-Sensitive Classification".
"Pratique de la régression logistique", version 2.0, septembre 2009.
"Coûts de mauvais classement en apprentissage supervisé", janvier 2009.

mercredi 14 avril 2021

Econométrie par Régis Bourbonnais

Cette fiche de lecture concerne la 10ème édition de l'ouvrage "Économétrie" de Régis Bourbonnais, une véritable institution qui a marqué et continue à marquer plusieurs générations de férus de régression et de traitement des séries temporelles. Le livre s'adresse aux étudiants de niveau licence et master en filière économétrie. En réalité, il est susceptible d'intéresser tous les étudiants des composantes à fort contenu mathématique et statistique (MIASHS, BUT STID, etc.).

En son temps, la 2nde édition du même ouvrage, celle de 1998, m'avait inspiré lorsque j'ai eu à élaborer mon cours d'économétrie pour notre licence il y a une quinzaine d'années (corrélation, régression simple et multiple, aspects pratiques de la régression).

Fiche de lecture : "Econométrie" - 10ème édition - Dunod - 2018
Site web de l'auteur : https://regisbourbonnais.dauphine.fr/

vendredi 9 avril 2021

(Vidéo) Model Explainability par H2O

Dans cette vidéo, je reprends l'idée de l'interprétation des modèles exposée précédemment (voir "Outils pour l'interprétation des modèles", avril 2021). Nous explorons les fonctionnalités de la librairie "H2O" cette fois-ci. Elle propose les instruments usuels dans un cadre simplifié (importance des variables, partial dependence plot, shapley values). Je mets surtout un focus particulier sur le graphique "individual conditional expectation plot (ICE)" qui permet de caractériser l'effet marginal d'une variable explicative sur la variable cible lors du classement d'un individu supplémentaire. En d'autres termes, il enrichit la lecture d'une prédiction en mettant en exergue l'évolution de la conclusion (la probabilité d'appartenance à la modalité cible) en fonction de la variation de la variable explicative.

Mots-clés : python, h2o, partial dependence plot, shapley additive explanations, individual conditional expectation
Vidéo : Model Explainability
Données et Notebook Python : Pima H2O Interpretation
Références :
Documentation H2O, "Model Explainability", version 3.32.1.1.
"Machine Learning avec H2O (Python)", Janvier 2019.
"(Vidéo) Outils pour l'interprétation des modèles", avril 2021.

jeudi 8 avril 2021

(Vidéo) Outils pour l'interprétation des modèles

Dans cette vidéo, nous explorons les outils d'interprétation agnostiques des classifieurs c.-à-d. applicables à tous types de modèles, y compris et en particulier aux modèles "boîtes noires" pour lesquels il est difficile d'identifier de prime abord la pertinence des variables explicatives et la nature de leurs liaisons avec l'attribut cible. Pour comprendre le fonctionnement et la teneur des résultats qu'ils fournissent, nous les appliquons dans un premier temps sur un classifieur linéaire (régression logistique) dont nous savons interpréter les coefficients estimés. L'idée est de vérifier la cohérence entre la lecture usuelle des paramètres du modèle (valeur et signe des coefficients) et les résultats proposés par les outils étudiés ([PFI] permutation feature importance et [PDP] graphique de dépendance partielle). Rassurés par leur comportement, nous les utilisons dans un deuxième temps sur un gradient boosting machine. Ils permettent de décrypter les caractéristiques du classifieur, notamment sa capacité à mettre en évidence des relations non-linéaires, impossibles à identifier avec la régression logistique.

Dans la seconde partie du tutoriel, nous étudions le concept de SHAP. Il permet de décortiquer le processus d'affectation des classes pour un individu à classer c.-à-d. à comprendre les caractéristiques (les valeurs prises par les variables pour l'individu à classer) qui ont conduit le modèle à produire l'estimation de la probabilité d'appartenance aux classes. Appliqué à un ensemble d'observations, l'outil SHAP rejoint les informations fournies par les outils d'interprétation des modèles évalués précédemment (PFI et PDF).

Mots-clés : python, scikit-learn, partial dependence plot, pdp, permutation feature importance, shap package, shapley additive explanations, interpretation
Vidéo : Interpretable machine learning
Données et Notebook Python : Pima ML Interpretation
Références :
Documentation Scikit-Learn, "Inspection", Chapitre 4, version 0.24.1.
C. Molnar, "Interpretable Machine Learning – A Guide for Making Black Box Models Explainable", version 08/04/2021.
"Importance des variables dans les modèles", février 2019.
"Graphique de dépendance partielle – R et Python", avril 2019.
"Interpréter un classement en analyse prédictive", avril 2019.
"Python – Machine Learning avec scikit-learn", septembre 2015.

vendredi 2 avril 2021

(Vidéo) Python – AutoML de Scikit-Learn

Nous explorons la solution AutoML basée sur la librairie "scikit-learn" dans cette vidéo. Le package "auto-sklearn" explore l'espace des solutions en croisant les algorithmes d'apprentissage automatique, les hyperparamètres associés, et les techniques de préparation des données. Il s'appuie sur un mécanisme de recherche sophistiqué plutôt qu'un simple brute force. Particularité très intéressante, il utilise également l'expérience acquise durant le traitement d'autres bases benchmark. Un rapprochement à partir des méta-informations extraites des jeux de données permet de situer le problème en cours de traitement.

Nous reprenons dans ce tutoriel le même schéma d'évaluation mis en place durant l'étude de la solution AutoML de la librairie H2O.

Mots-clés : python, automl, scikit-learn, auto-sklearn
Vidéo : Auto-Sklearn
Données : Spam auto-sklearn
Références :
Auto-sklearn – Efficient and Robust Automated Machine Learning (2015, 2020).
"Python – Machine Learning avec scikit-learn", septembre 2015.

dimanche 28 mars 2021

(Vidéo) Python – AutoML de H2O

Il est question de la fonction AutoML de la librairie H2O dans cette vidéo. Pour un temps de calcul défini à l'avance, elle se charge d'expérimenter des scénarios de modélisation prédictive en testant différents algorithmes, et en jouant sur les valeurs de leurs paramètres. Au-delà de l'identification de la configuration la plus performante, elle propose également une solution additionnelle composée par la combinaison de tous les modèles essayés ou des meilleurs modèles pour chaque famille d'algorithmes (linéaires, deep learning, gradient boosting machine, random forest, etc.). Le principal intérêt d'AutoML est de nous fournir une approche clé en main qui permet de se donner une idée sur les performances atteignables sur un jeu de données quelconque, avec un temps d'exécution maîtrisé. Charge à nous par la suite de développer une solution circonstanciée en rapport avec les données étudiées et de nous comparer à la référence que représenterait AutoML.

Mots-clés : python, h2o, automl, scikit-learn
Vidéo : AutoML
Données : Spam H2O
Références :
H2O AutoML – Automatic Machine Learning
"Machine learning avec H2O (Python)", janvier 2019.
"Python – Machine Learning avec scikit-learn", septembre 2015.

dimanche 21 mars 2021

(Vidéo) Python - Le package Yellowbrick

Il est question de la librairie "Yellowbrick" dans cette vidéo. Elle propose des outils pour visualiser graphiquement les process ou les résultats des algorithmes de machine learning. Elle est adossée à "scikit-learn", incontournable dans la pratique de la data science sous Python. Nous explorons tour à tour les fonctionnalités graphiques de Yellowbrick dans le cadre de l'analyse prédictive : l'étude de la redondance et de la pertinence des variables prédictives, leur importance dans la modélisation, la sélection de variables par l'élimination récursive (RFE, recursive feature elimination), les représentations des performances des modèles (matrice de confusion, rapport de performance, courbe ROC), la modulation du seuil d'affectation, le choix des valeurs des paramètres des algorithmes de machine learning, l'identification de la taille nécessaire des données (en nombre d'observations) pour modéliser les "pattern" qu'elles recèlent.

Mots-clés : python, yellowbrick, scikit-learn
Vidéo : Yellowbrick
Données et Notebook Python : Spam Yellowbrick
Références :
Yellowbrick : Machine Learning Visualization
"Python – Machine Learning avec scikit-learn", septembre 2015.

lundi 8 mars 2021

(Vidéo) Stratégies pour classes déséquilibrées

Dans cette vidéo, j'aborde le problème des classes déséquilibrées en classement binaire. J'ai essayé de mettre en évidence plusieurs résultats importants.

Modéliser à partir d'un échantillon d'apprentissage fortement déséquilibré n'est pas vain. C'est ce que nous montrent la courbe ROC et le critère AUC calculés sur un échantillon test représentatif. Le mécanisme d'affectation est en revanche défectueux. C'est ce que nous dit la matrice de confusion et les indicateurs associées (taux de reconnaissance, rappel, précision, F-Score).

La solution populaire qui consiste à rééquilibrer artificiellement les données d'apprentissage par sous ou sur échantillonnage revient en réalité à recalibrer les probabilités d'affectation fournies par le modèle. Elle ne modifie pas les propriétés intrinsèques de ce dernier. Elle pèse en revanche sur le mécanisme d'affectation des classes.

Une solution alternative préconisée dans ce tutoriel serait de manipuler directement le seuil d'affectation dans le classement binaire. Je montre une procédure d'optimisation basée sur l'échantillon d'apprentissage pour obtenir de meilleures performances en classement, mesurée à l'aide du F1-Score sur l'échantillon test. Cette stratégie permet de dépasser le problème délicat de la détermination de la proportion des classes des approches basées sur l'échantillonnage.

Mots-clés : logiciel R, régression logistique, glm, courbe roc, auc, F1-Score, F-Measure
Vidéo : Classes déséquilibrées
Données et programme R : Imbalanced dataset
Références :
"Imbalanced Classification Problems", mlr documentation.
"F-Score", Wikipédia.
"Traitement des classes déséquilibrées", mai 2010.
"Coûts de mauvais classement en apprentissage supervisé", janvier 2009.

samedi 6 mars 2021

(Vidéo) Google Colab

Dans cette vidéo, je présente Google Colab (Google Colaboratory). Il s'agit d'un outil que met à notre disposition Google pour développer des applications de machine learning (ipynb). Google Colab permet d'écrire et exécuter du code Python dans un navigateur, à la manière de Jupyter Notebook, sauf que nous travaillons directement dans le cloud. Il présente plusieurs avantages : il nous affranchit d'une installation locale ; les librairies de machine learning le plus populaires sont déjà installées et constamment mises à jour ; nous avons la possibilité d'installer facilement les packages spécifiques (!pip install …) ; nous bénéficions de la puissance de calcul de Google, avec des accès aux GPU et TPU, les gains en temps de traitement sont parfois faramineux par rapport au fonctionnement sur des machines locales aussi puissantes soient-elles ; nous disposons d'un espace de stockage pour nos données et nos projets ; nous avons la garantie de toujours disposer du même environnement de travail quelle que soit la machine que nous utilisons pour nous connecter ; enfin, une adresse Gmail suffit pour disposer de l'outil.

Je profite de cette présentation pour décrire la construction de la courbe ROC (receiving operating characteristics) dans un problème de classement binaire. J'explique pourquoi ce dispositif d'évaluation des classifieurs est plus générique que la matrice de confusion et ses indicateurs associés. Je parle aussi du critère AUC (area under curve) qui lui est associé. Nous utilisons les données "mushroom", où l'objectif est de déterminer la comestibilité des champignons à partir de leurs caractéristiques, pour illustrer notre propos.

Mots-clés : google colab, courbe roc, roc curve, auc, aire sous la courbe, régression logistique, scikit-learn
Vidéo : Google Colab
Données et programme : Mushroom
Références :
"Courbe ROC", Support de cours.
"Evaluation des classifieurs – Quelques courbes", octobre 2009.
"TD de Régression Logistique – TD 4.b", mars 2020.
"Courbe ROC pur la comparaison de classifieurs", mars 2008.