Affichage des articles dont le libellé est Régression logistique. Afficher tous les articles
Affichage des articles dont le libellé est Régression logistique. Afficher tous les articles

mercredi 24 novembre 2021

(Vidéo) StandardScaler et descente de gradient

Cette vidéo montre l'influence de la standardisation (centrage-réduction) des variables prédictives quantitatives sur l'algorithme de descente de gradient stochastique lors de la minimisation de la fonction de coût pour l'estimation des coefficients de la régression logistique binaire. La transformation joue sur la vitesse de convergence de l'algorithme, elle pèse en conséquence sur les qualités prédictives du classifieur. Nous travaillons avec les outils de la librairie "scikit-learn" pour Python.

Mots-clés : régression logistique binaire, scikit-learn, standardisation, transformation de variables
Vidéo : StandardScaler
Notebook + Données : Pima Indians Diabetes
Références :
"Régression logistique – Machine Learning", septembre 2021.
Page de cours "Régression Logistique".

lundi 8 novembre 2021

(Vidéo) Text mining avec Knime

Je montre dans cette vidéo quelques fonctionnalités de la librairie « Text processing » du logiciel Knime. Je mets l’accent en particulier sur la catégorisation de documents avec la comparaison des performances de deux algorithmes de machine learning dans un espace à très forte dimensionnalité. Sont tour à tour abordés les thèmes suivants : la conversion de textes en corpus, le pré-traitement (suppression des ponctuations, des mots-vides, de chiffres, l’harmonisation de la casse), la tokenisation, la représentation des documents en sac de mots, la matrice documents termes avec la pondération booléenne, l’analyse prédictive avec les arbres de décision et la régression logistique régularisée (Ridge).

Mots-clés : knime, tokenisation, dictionnaire, matrice documents-termes, pondération, catégorisation de documents
Vidéo : Knime Text Mining
Workflow + Données : Imdb Reviews
Références :
« Text mining avec Knime et RapidMiner », avril 2014.

jeudi 14 octobre 2021

(Vidéo) Scoring – Courbe Lift

Deux vidéos pour le prix d'une cette fois-ci. Nous retraçons la construction de la courbe de gain (courbe lift cumulé) à l'aide du tandem Tanagra + Excel. L'idée est de reproduire pas-à-pas les étapes décrites dans le cours : construction du modèle prédictif à partir de l'échantillon d'apprentissage, mise en lumière de la fonction score, son application sur l'échantillon test pour obtenir les scores des individus (probabilités d'appartenance à la classe cible, ou une grandeur équivalente), conception des deux colonnes permettant l'élaboration de la courbe (taille de cible et taux de vrais positifs [rappel, sensibilité]). Deux vidéos parce que nous utilisons l'analyse discriminante linéaire d'une part, la régression logistique d'autre part.

Mots-clés : tableur excel, courbe lift cumulé, courbe de gain, gain chart
Vidéo 1 : Scoring – Analyse Discriminante
Vidéo 2 : Scoring – Régression logistique
Données : Heart Dataset
Références :
"Scoring – Ciblage Marketing".

jeudi 7 octobre 2021

(Vidéo) Ridge, Lasso – Optim. des hyperparamètres

La question de l'optimisation des hyperparamètres des algorithmes de machine learning est posée dans cette vidéo. Nous nous appuyons sur l'exploration des performances mesurées en validation croisée sur l'échantillon d'apprentissage. Nous prenons pour exemple la régression logistique binaire, avec les régression pénalisées "Ridge" et "Lasso", pour lesquels nous faisons varier le paramètre de régularisation. L'outil GridSearchCV de la librairie Scikit-Learn pour Python est mise à contribution.

Mots-clés : python, scikit-learn, régression logistique binaire, gridsearchcv
Vidéo : Hyperparamètres Ridge Lasso
Notebook + Données : Spam Dataset
Références :
"Python - Machine Learning avec scikit-learn", septembre 2015.
"Régression logistique sur les grandes bases avec scikit-learn", décembre 2020.
"Pipeline Python pour le déploiement", janvier 2021.

mardi 28 septembre 2021

Régression Logistique – Machine Learning

Ce document est une version simplifiée et "modernisée" de mon support de cours pour la régression logistique, un peu plus "machine learning", un peu moins "statistique". Elle fait la part belle aux algorithmes d'optimisation, et essaie de clarifier autant que faire se peut le rôle des hyperparamètres. Sont tour à tour présentés : le mode d'estimation des coefficients de la régression, l'explicitation de l'importance des variables, les différentes approches pour la sélection de variables, les mécanismes de régularisation pour la régression en grandes dimensions (ridge, lasso, elasticnet), la régression multiclasse (approche multinomiale et combinaison de régressions binaires). L'interprétation approfondie des coefficients (odds-ratio), l'analyse des interactions, et l'inférence statistique qui s'y rapportent (tests, intervalles de confiance) ont été mis de côté.

Signe des temps, les exemples illustratifs sont réalisés sous Python avec la fameuse librairie "Scikit-Learn".

Mots-clés : régression logistique binaire, algorithmes d'optimisation, newton-raphson, descente de gradient, descente de gradient stochastique, importance des variables, sélection de variables, rfe, recursive feature elimination, rfecv, cross-validation, validation croisée, régression multiclasse, modèle multinomial, régressions one vs. rest, ovr, ridge, lasso, elasticnet
Support : ML – Régression logistique
Notebooks Python et fichiers : Breast - Iris
Références :
Page de cours "Régression logistique".
"Python - Machine learning avec scikit-learn", septembre 2015.
"Vidéo – Régression logistique avec Python / Scikit-Learn", juillet 2021.
"Régression logistique sous Python (Scikit-Learn, Statsmodels)", mars 2020.

mardi 3 août 2021

(Vidéo) SAS sous Python avec SASPy

Dans cette vidéo, nous explorons les fonctionnalités du package SASPy. Il fournit des API qui permettent d'exploiter les fonctionnalités de la solution SAS Cloud pour l'enseignement académique. Plusieurs aspects retiennent particulièrement notre attention ici : la configuration de l'outil, qui n'est pas des plus simples ; la gestion en ligne des données, notamment l'accès aux banques SAS ; la mise en œuvre des algorithmes de machine learning et l'affichage des résultats. Nous privilégions un seul mode d'interaction avec le serveur distant dans notre tutoriel. En fin de vidéo, je précise les autres modalités possibles.

Mots-clés : sas, saspy, cloud, régression logistique, haute performance, random forest, sas ondemand for academics
Vidéo : SASPy
Données, fichier de configuration, notebook : Breast Cancer
Références :
"SASPy".
"SAS onDemand for Academics".

mardi 13 juillet 2021

(Vidéo) Régression logistique avec Python / scikit-learn

Dans cette vidéo, nous étudions les fonctionnalités de la régression logistique proposée par la librairie scikit-learn de Python. Nous inspectons les résultats, en particulier la lecture des coefficients et leur exploitation en tant qu'indicateurs de pertinence des variables. Nous embrayons alors sur la sélection de variables en détaillant le mode opératoire de l'outil RFE (recursive feature elimination), qui combine la stratégie backward avec la méthodologie wrapper basée sur la mesure des performances en validation croisée (RFECV). L'étude de cas confirme encore une fois la nature exploratoire de la démarche machine learning.

Mots-clés : régression logistique binaire, sélection de variables backward, wrapper, accuracy, taux de reconnaissance, recursive feature elimination, rfe, refcv, validation croisée, scikit-learn
Vidéo : Logistic Python
Données et notebook : Vote au Congrès
Références :
Page de cours "Régression logistique".
"Régression logistique sous Python", mars 2020.
"Python – Machine learning avec sckit-learn", septembre 2015.
"(Vidéo) Python – La package Yellowbrick", mars 2021.

jeudi 8 juillet 2021

(Vidéo) Régression logistique avec Knime

Dans cette vidéo, nous étudions les fonctionnalités de la régression logistique proposée dans Knime Analytics Platform. Nous appliquons le schéma usuel "holdout" dans un premier temps, un modèle prédictif est élaboré à partir d'une base d'apprentissage, il est par la suite évalué sur une base de test. Nous comparons les résultats obtenus par ailleurs avec d'autres outils. Dans un second temps, nous implémentons une approche de sélection de variables "wrapper" où l'objectif est de chercher le sous-ensemble de variables explicatives le plus performant au sens d'un critère de performance. 

Mots-clés : régression logistique binaire, sélection de variables forward, wrapper, accuracy, taux de reconnaissance, knime
Vidéo : Logistic Regression Knime
Données et workflow : Vote au Congrès
Références :
Page de cours "Régression logistique".
"Analyse prédictive sous Knime", février 2016.

(Vidéo) La Proc Logistic de SAS

Dans cette vidéo, nous réalisons une régression logistique sous SAS Studio, version accessible via le programme SAS OnDemand for Academics. Après avoir importé le fichier de données (classeur Excel) dans le cloud, nous le chargeons dans la banque WORK, nous lançons ensuite les traitements : une régression logistique binaire basique dans un premier temps, nous introduisons la sélection de variables ensuite, à laquelle nous associons la construction de la courbe ROC pour l'évaluation des performances des modèles.

Mots-clés : régression logistique binaire, sélection de variables forward, courbe ROC, critère AUC, SAS Studio, SAS OnDemand for Academic
Vidéo : Proc Logistic
Données, programmes et sorties : Vote au Congrès
Références :
Page de cours "Régression logistique".
"La proc logistic de SAS 9.3", avril 2012.

mardi 6 juillet 2021

(Vidéo) Régression logistique pas-à-pas

 Dans cette vidéo, nous détaillons une démarche d'analyse prédictive en utilisant le tandem Tanagra et tableur (Excel). La modélisation, via la régression logistique binaire, sur l'échantillon d'apprentissage est réalisée à l'aide de Tanagra. Le déploiement du modèle sur l'échantillon test est réalisée "manuellement" sous le tableur Excel. Il comprend : le calcul du logit, la dérivation de la probabilité d'appartenance à la classe cible, la déduction de la classe d'appartenance prédite. La matrice confusion est ensuite calculée, ainsi que les indicateurs de performances usuels. Nous comparons enfin les performances prédictives des modèles sans et avec sélection de variables.

Mots-clés : régression logistique binaire, sélection de variables forward, matrice de confusion, taux d'erreur, rappel / sensibilité, précision
Vidéo : Régression logistique avec Tanagra / Excel
Classeur Excel et schéma : Vote au Congrès
Références :
Page de cours "Régression logistique".

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.

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.

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.

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.

mercredi 23 décembre 2020

(Vidéo) Régression logistique sous R avec Keras

Dans cette vidéo, je montre l'instanciation de la régression logistique sous R avec la librairie "keras". Cette dernière est connue pour proposer essentiellement des algorithmes de deep learning. Il est néanmoins facile d'observer qu'il y a une relation directe entre la régression logistique et le perceptron simple, un des réseaux de neurones les plus simples.

Pour l'exemple traité, nous constatons que la "régression logistique" de keras se comporte très favorablement par rapport à la fonction glm(.) (du package "stats") qui fait pourtant référence sous R.

Mots-clés : logiciel R, keras, tensorflow, régression logistique, glm
Vidéo : LogisticRegression Keras R
Données et programme : MIT Face Image
Références :
"Deep Learning : perceptrons simples et multicouches", novembre 2018.
"Deep Learning – Tensorflow et Keras sous R", avril 2018.
"Packages R pour le Deep Learning", décembre 2018.

lundi 21 décembre 2020

(Vidéo) La régression logistique de scikit-learn

Dans cette vidéo sont explorés les paramètres de la régression logistique implémentée dans la librairie "scikit-learn" pour Python, en particulier : "multi_class" pour le mode d'appréhension des problèmes multi-classes (variable cible à plus de 2 modalités) ; "solver" qui correspond à l'algorithme d'optimisation de la vraisemblance sous-jacente à l'estimation des coefficients de la régression. Nous constaterons qu'ils influent directement sur la qualité de la modélisation et la vitesse de convergence.

Mots-clés : python, scikit-learn, régression logistique binaire et multinomiale
Vidéo : LogisticRegression Scikit-Learn
Données et programme : Covertype data
Références :
"Régression Logistique", page de cours.
"Régression Logistique sous Python", mars 2020.

dimanche 13 décembre 2020

(Vidéo) Classifieurs linéaires

Dans cette vidéo, je reprend un ancien tutoriel dans lequel j'évaluais le comportement des différents algorithmes d'apprentissage de classifieurs linéaires sur des données artificielles. L'idée est de montrer qu'à système de représentation égal, les modèles s'expriment sous la forme de combinaisons linéaires des variables initiales, nous pouvons obtenir des résultats différents, et par conséquent des performances différentes, parce que les approches se distinguent par le mode d'estimation des coefficients.

Plutôt que R (dans la précédente expérimentation), nous utilisons Python et la fameuse librairie "scikit-learn" dans cette vidéo. Nous comparons l'analyse discriminante, la régression logistique et les SVM (support vector machine) à noyau linéaire. Pour ce dernier cas, nous observons que le paramétrage adopté pèse également sur la teneur des résultats, au-delà du choix de l'algorithme.

Les représentations graphiques dans le plan des frontières de séparation des classes induites par les algorithmes permettent d'illustrer leur comportement sur notre jeu de données.

Mots-clés : python, scikit-learn, analyse discriminante, régression logistique, svm
Vidéo : Classifieurs linéaires
Données et programme : Artificial data
Références :
"Classifieurs linéaires", mai 2013.

samedi 28 novembre 2020

(Vidéo) Exportation des modèles prédictifs

 Dans cette vidéo, je vais plus loin dans le déploiement de modèles prédictifs en abordant 2 points clés du processus : le stockage du modèle élaboré sur les données d'apprentissage dans un fichier de manière à pouvoir l'exploiter par la suite sans avoir à le réentraîner ; l'élaboration d'une application de déploiement qui prend en entrée le modèle sauvegardé et les données à traiter, dans le but d'automatiser le processus de prédiction.

Après avoir détaillé la démarche, je détaille les deux programmes pour R (glm), Python (Scikit-Learn, LogisticRegression) et Knime (Logistic Regression Learner) : (1) celui qui permet d'entraîner le modèle sur les données d'apprentissage et de le sauvegarder ; (2) celui qui prend en entrée le fichier représentant le modèle et les données de déploiement, effectue la prédiction, et exporte cette dernière dans un fichier Excel (un CSV aurait pu faire l'affaire aussi).

Les codes sources et les données utilisées sont bien sûr disponibles.

Mots-clés : modélisation, exportation des modèles, déploiement, logiciel r, glm, python, scikit-learn, knime
Didacticiel vidéo : Exportation de modèles et déploiement
Slides de présentation : Modélisation - Déploiement
Données et programmes : Codes R et Python, Archive Knime
Références :
"Introduction à R – Régression Logistique", mars 2012.
"Python – Machine Learning avec scikit-learn", septembre 2015.
"Analyse prédictive avec Knime", février 2016.