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.

vendredi 26 février 2021

(Vidéo) Extraction des règles d'association

Dans cette vidéo, je montre comment extraire les règles d'association à partir d'un jeu de données en utilisant le module ARS inclus dans la distribution SIPINA. La mise en œuvre de l'outil est relativement simple. L'enjeu est la profusion de règles. Pour mieux les manipuler, je propose de les reprendre dans Excel afin de bénéficier des fonctionnalités de filtrage, de recherche et de tri du tableur.

Mots-clés : ars, association rule software, sipina
Vidéo : Règles d'association
Données : Habitudes alimentaires
Références :
"Associations dans la distribution SIPINA", avril 2013.
"Extraction des règles d'association - Cours", juin 2015.
"Règles d'association – Comparaison de logiciels", novembre 2008.

mercredi 17 février 2021

(Vidéo) AMADO-online

"AMADO-online est une application pour représenter et analyse les matrices de données selon les principes de Jacques Bertin". L'outil propose des fonctionnalités interactives pour mieux présenter les données, les réorganiser, pour rendre plus lisible les informations qu'elles véhiculent. Il permet également de structurer les tableaux par le calcul en s'appuyant sur les techniques d'analyse factorielle ou de classification automatique. L'application est directement accessible en ligne via un navigateur web. Importer ses propres données peut être réalisé via un simple copier-coller.

Mots-clés : amado, acp, afc, cah
Vidéo : AMADO-online
Données : Médias-professions, véhicules
Site de AMADO-online : https://paris-timemachine.huma-num.fr/amado/

dimanche 14 février 2021

(Vidéo) One hot encoding

Dans cette vidéo, je montre comment procéder au recodage des variables explicatives catégorielles dans la régression logistique. Elles sont transformées en variables indicatrices 0/1. Deux problèmes se posent alors : durant l'apprentissage, comment procéder pour éviter le problème de la colinéarité (la somme des indicatrices de la variable qualitative originelle est égale à une constante) ; durant le test ou le déploiement, comment gérer le cas des modalités supplémentaires (les catégories présentes dans l'échantillon test mais pas dans le train set) ou absentes (l'inverse).

Mots-clés : python, pandas, get_dummies, régression logistique, dummy variable
Vidéo : One hot encoding
Données et programme : Heart avec Python
Références :
"Prédicteurs catégoriels en Régression Logistique", avril 2015.
"Codage disjonctif complet", mars 2008.
"(Vidéo) Recodage des explicatives qualitatives en ADL", novembre 2020.

mardi 9 février 2021

(Vidéo) Subdivision apprentissage-test avec R

Dans cette vidéo, je montre comment subdiviser aléatoirement un dataset en échantillons d'apprentissage et de test. Le dispositif repose sur la génération aléatoire d'un index sans aucun rapport avec le problème à traiter. Il sert à désigner les observations appartenant à l'apprentissage. L'échantillon test est obtenu par opposition à cet index, en exploitant le mécanisme des indices négatifs sous R. Les données sont ensuite utilisées dans un processus de modélisation par arbres de décision à l'aide du package "rpart".

Mots-clés : logiciel R, train set, training set, learning set, test set
Vidéo : Subdivision train-test avec R
Données et programme : Partition apprentissage-test
Références :
"Apprentissage-test avec Orange, Tanagra et Weka", avril 2008.
"(Vidéo) Subdivision train-test pour les comparaisons", novembre 2020.

lundi 25 janvier 2021

(Vidéo) Sélection forward en ADL

Dans cette vidéo, je détaille une implémentation possible de la sélection pas-à-pas "forward" de sélection de variables en analyse discriminante linéaire. Le mécanisme repose sur l'ajout graduel des variables les plus contributives. Dans la méthode proposée, les matrices de variance covariances intra-classes et totales sont calculées une fois pour toutes sur la totalité des variables au démarrage des calculs, puis nous y piochons au fur et à mesure les sous-matrices adéquates pour évaluer la pertinence des variables, sans qu'il ne soit nécessaire de revenir sur les données initiales. Cette approche assure la rapidité des calculs sur les grandes bases de données en nombre d'observations avec un nombre de variables candidates relativement modéré (de l'ordre de plusieurs centaines). Elle devient problématique lorsque le nombre de variables est très élevé (de l'ordre de plusieurs milliers, situation courante en text mining par exemple) du fait de l'occupation mémoire des matrices initiales de covariances. Une implémentation sous R montre la viabilité de la solution. 

Mots-clés : analyse discriminante prédictive, stepdisc, forward, sélection de variables
Vidéo : Stepdisc Forward
Données et programme : Forward Selection dataset
Références :
"Pratique de l'analyse discriminante linéaire", mai 2020.
"Stepdisc – Analyse discriminante", mars 2008.

dimanche 24 janvier 2021

(Vidéo) Classification sur données pré-classées

Dans cette vidéo, je montre la mise en œuvre d'un algorithme de classification automatique, la CAH – Classification Ascendante Hiérarchique, sur des données où préexiste un premier niveau de regroupement. On peut voir l'approche comme une variante de la CAH Mixte où l'on empile deux algorithmes de clustering (voir les références ci-dessous), mais à la différence que le premier niveau n'est pas obtenu par le calcul mais est endémique est données. Il est caractérisé par une variable catégorielle qui fait partie intégrante de la base.

Mots-clés : cah, classification automatique, clustering
Vidéo : CAH on preclassified data
Données et programme : Segmentation dataset
Références :
"Classification ascendante hiérarchique – Diapos", juillet 2016.
"Traitement de gros volumes – CAH Mixte", octobre 2008.

jeudi 21 janvier 2021

(Vidéo) Arbres sur très grandes bases avec R

Dans cette vidéo, je montre l'induction des arbres de décision sur une grande base de données sous R (494 021 obs., 200 variables). Elle cumule les caractéristiques qui mettent à mal l'algorithme "rpart" (du package "rpart") qui fait pourtant référence en la matière : la variable cible comporte 23 classes, certaines des variables explicatives sont catégorielles avec de nombreuses modalités (jusqu'à 66 pour l'une d'entre elles). Nous nous tournons alors vers l'algorithme J48, ersatz de la méthode C4.5 de Quinlan (1993), de la librairie "RWeka" basé sur le logiciel "Weka". Nous constatons que ses performances sont tout à fait satisfaisantes dans notre contexte. Conclusion : il est tout à fait possible de construire des arbres de décision à partir de très grandes bases sous R, il nous appartient de choisir judicieusement l'algorithme (le package) à utiliser en fonction des caractéristiques des données.

Mots-clés : logiciel R, decision trees, rweka, j48
Vidéo : J48 (RWeka) sous R
Données et programme : Arbres Large Dataset
Références :
"(Vidéo) Arbres de décision avec R", janvier 2021.
"Arbres de décision sur les grandes bases", janvier 2012.
"Traitement de gros volumes – Comparaison de logiciels", septembre 2008.

mercredi 20 janvier 2021

(Vidéo) Arbres de décision avec R

Dans cette vidéo, je montre l'induction des arbres de décision avec R via les fonctions "rpart" du package éponyme et "J48" de "Rweka". La première est basée sur l'approche CART de Breiman et al. (1984), la seconde sur l'algorithme C4.5 de Quinlan (1993).

L'objectif est de montrer qu'il existe une alternative à "rpart" pour la construction des arbres, avec des caractéristiques dont nous pourrons tirer avantage lors du traitement des très grandes bases de données. Ce thème fera l'objet d'une seconde vidéo.

Mots-clés : logiciel R, decision trees, rpart, rweka, j48, rpart.plot, partykit
Vidéo : Rpart (rpart) + J48 (RWeka) sous R
Données et programme : Arbres Iris
Références :
"Introduction aux arbres de décision", décembre 2014.
"Arbres de décision", Revue Modulad, Numéro 33, 2005.
"Introduction à R – Arbre de décision", mars 2012.
"Arbres de décision avec Scikit-Learn – Python", février 2020.

jeudi 14 janvier 2021

(Vidéo) La méthode des K-Means sous R et Python

Dans ces deux vidéos, je montre succinctement la mise en œuvre de la méthode des K-Means sous R et sous Python (package scikit-learn). Faire le parallèle entre les deux outils est très intéressant pédagogiquement. L'accent est mis sur : la préparation des données ; la lecture des résultats ; une piste possible pour identifier le "bon" nombre de classes, problème récurrent de la classification automatique. Sous R, le projet est élaboré sous la forme d'un Notebook sous RStudio. L'output sous forme de page HTML est disponible en temps (quasi) réel, nous donnant une visibilité directe sur la teneur de nos traitements et des sorties y afférentes. Sous Python, j'utilise un Notebook Jupyter. Les résultats sont directement exportables en PDF.

Mots-clés : logiciel R, python, scikit-learn, k-means, méthode des centres mobiles, clustering
Vidéo 1 : K-Means sous R
Vidéo 2 : K-Means sous Python
Données et programme : Avec R , avec Python
Références :
"Classification automatique sous R – CAH et K-Means", octobre 2015.
"Classification automatique sous Python", mars 2016.
"Clustering : méthode des centres mobiles", octobre 2016.
"Clustering : caractérisation des classes", septembre 2016.

lundi 4 janvier 2021

(Vidéo) Déploiement de Pipeline Python

Dans cette vidéo, je reprends l'idée de la sauvegarde de modèles prédictifs en vue du déploiement. Sauf que nous nous plaçons dans une situation autrement plus complexe dans la mesure où le "modèle" intègre non seulement le classifieur mais aussi une série d'étapes intermédiaires relatives à la préparation et la sélection des variables explicatives. Je m'appuie sur le concept de "Pipeline" de la librairie "scikit-learn" pour Python. Il cumule les avantages dans notre contexte : il permet de définir un enchaînement de traitements ; il se prête à l'optimisation des hyperparamètres sélectivement sur certaines étapes via des techniques de rééchantillonnage ; la structure peut être sauvegardée d'un bloc dans un fichier en vue du déploiement, nous déchargeant des tâches de coordination.

Mots-clés : python, scikit-learn, sklearn, pipeline, perceptron, validation croisée
Vidéo : Pipeline Scikit-Learn
Données et programme : Segmentation dataset
Références :
"Exportation des modèles prédictifs", novembre 2020.
"Pipeline sous Python – La méthode DISQUAL", juin 2018.

samedi 2 janvier 2021

Bonne Année 2021 - Bilan 2020

L'année 2020 s'achève, 2021 commence. Je vous souhaite à tous une belle et heureuse année 2021.

2020 aura été très particulière : d'une part avec le double confinement que nous avons vécu, d'autre part avec le passage en distanciel des établissements d'enseignement supérieur en France (plus marqué encore à l'automne 2020, alors que nous sommes au cœur du premier semestre). Ça n'a pas été facile, c'est peu de le dire.

Il y a quand même des points positifs.

J'ai pu profiter de l'état de stase prolongée du printemps pour rédiger deux ouvrages qui me tenaient à cœur depuis un moment déjà, le premier sur l'analyse discriminante (Pratique de l'Analyse Discriminante Linéaire, mai 2020), le second sur l'analyse factorielle (Pratique des Méthodes Factorielles avec Python, juillet 2020). 

Inquiet pour mes étudiants en distanciel, je me suis résolu à réaliser des tutoriels vidéo pour mieux les accompagner. Nécessité est mère de l'invention, dit-on, pour moi c'était vraiment une première. Je me rends compte surtout avec la nouvelle chaîne YouTube mise en en ligne fin octobre 2020 qu'il y a là matière à réflexion sur ma pratique pédagogique. Même lorsque nous reviendrons en présentiel une fois cette crise passée, le plus tôt possible j'espère, l'idée de communiquer par vidéo interposée avec les étudiants me paraît intéressante pour certains aspects de mes enseignements. Je pourrais ainsi prendre plus le temps de mettre l'accent sur d'autres thèmes lorsque nous sommes ensemble en salle de cours. J'avoue que tout cela reste un peu confus encore dans ma tête, Je ne mesure pas totalement la portée de cette nouvelle perspective. Mais cette période est peut-être une occasion unique de faire évoluer mon mode fonctionnement avec les étudiants dans les années à venir. A voir…

En cette nouvelle année, je souhaite le meilleur à tous les passionnés de Data Science, de Statistique et d'Informatique.

Ricco.

Diaporama : Tanagra – Bilan 2020