mardi 31 mars 2020

Régression Logistique sous Python

Ce tutoriel fait suite à la série d'exercices corrigés de régression logistique sous R (TD 1 à TD 8). Il aurait pu constituer la 9ème séance des travaux dirigés où l'on ferait travailler les étudiants sous Python. J'aime bien alterner les logiciels dans ma pratique de l'enseignement. J'ai quand-même préféré le format tutoriel parce qu'il y a de nombreux commentaires à faire sur le mode opératoire  et les résultats des outils que nous utiliserons. Les librairies "statsmodels" et "scikit-learn" adoptent des points de vue très différents sur les mêmes traitements. Il est important de mettre en relation directe les thèmes et les commandes avec le cours rédigé disponible en ligne (voir références).

Enfin, ce document peut être vu comme le pendant pour la régression logistique de celui consacré à la régression linéaire disponible sur notre site ("Python - Econométrie avec StatsModels", septembre 2015).

Mots-clés : python, package statsmodels, package scikit-learn, log-vraisemblance, régression logistique, inférence statistique, évaluation du modèle en resubstitution et en test, courbe roc, critère auc
Didacticiel : Régression logistique avec statsmodels et scikit-learn
Données et code source Python : Infidélité
Références :
R. Rakotomalala, "Cours de régression logistique".

vendredi 27 mars 2020

Régression Logistique -- TD 8

Huitième et dernier TD de mon cours de régression logistique, nous traitons de la régression logistique multinomiale où la variable cible est qualitative nominale à plus de 2 modalités.

Nous explorons deux packages spécialisés, "nnet" et "vgam". Les modes opératoires sont similaires mais il faut faire attention aux spécificités, notamment lors de la prédiction. Ces librairies, de par leur mode de fonctionnement, requièrent la standardisation ou la normalisation des données. L'occasion est belle pour montrer comment réaliser l'opération sur l'échantillon d'apprentissage (facile), puis la transposer sur l'échantillon test (la procédure n'est pas toujours très bien comprise par les étudiants).

Enfin, pour élargir nos perspectives d'analyse,  une comparaison avec les résultats d'un arbre de décision – autre méthode qui permet d'appréhender simplement les variables cibles nominales – est réalisée.

Mots-clés : logiciel R, régression multinomiale, arbre de décision, package rpart, scale, rappel / sensibilité par classe, précision par classe

Sujet du TD : Régression multinomiale
Données : waveform
Correction du TD (code R) : waveform – Correction
Correction du TD (Notebook) : Notebook TD 8
Vidéo de correction : Vidéo TD 8
Référence : Site du cours de régression logistique

jeudi 26 mars 2020

Régression Logistique -- TD 7

Dans cette septième séance, nous abordons le traitement des données groupées en régression logistique. La ligne du tableau de données correspond à une combinaison des variables explicatives, on parle de pattern ou de profil. Elle représente un ensemble d'observations dont tout ou partie (ou aucun) sont rattachées à la modalité cible de la variable dépendante.

Ce prisme permet de mieux souligner l'influence des caractéristiques des individus dans la régression. Avec l'étude des profils, nous pouvons identifier les aspects mal restitués, ceux qui pèsent fortement – voire indûment – dans le modèle. Elle permet également de suggérer des combinaisons des variables qui approfondissent notre analyse.

Mots-clés : logiciel R, covariate pattern,  profil, données groupées, levier, résidus de pearson, résidus déviance, statistique de pearson, statistique déviance, distance de cook, interaction, données titanic

Sujet du TD : Covariate pattern
Données : titanic
Correction du TD (code R) : titanic – Correction
Correction du TD (Notebook) : Notebook TD 7
Vidéo de correction : Vidéo TD 7
Référence : Site du cours de régression logistique

mercredi 25 mars 2020

Régression Logistique -- TD 6

Nous approfondissons la sélection de variables durant cette sixième séance. Nous revenons tout d'abord sur les approches classiques pas-à-pas, ascendantes et descendantes. Elles fournissent des sous-ensembles de variables parfois différentes qui sont autant de scénarios de solutions. Nous confrontons les résultats et nous nous en remettons aux performances prédictives pour identifier la plus intéressante.

Puis nous explorons les approches alternatives, en particulier les techniques de ranking, qui agissent en amont et indépendamment des méthodes de machine learning pour effectuer la sélection, et l'approche wrapper, qui s'appuie sur des critères de performances estimés explicitement à partir des méthodes de machine learning.

Mots-clés : logiciel R, stepwise, forward, backward, stepAIC, critère AIC, akaike, BIC, schwartz, méthode filtre, ranking, incertitude symétrique, symmetrical uncertainty, méthode CFS, wrapper, package caret, cross-validation, validation croisée, sélection de variables

Sujet du TD : Sélection de variables, Ranking, Wrapper
Données : kr-vs-kp
Correction du TD (code R) : kr-vs-kp – Correction
Correction du TD (Notebook) : Notebook TD 6
Vidéo de correction : Vidéo TD 6
Référence : Site du cours de régression logistique

mardi 24 mars 2020

Régression Logistique -- TD 5

Il est question de détection et traitement des non-linéarités dans cette cinquième séance. Nous commençons par un test omnibus, simple à mettre en œuvre mais peu puissant, pour identifier les variables qui agissent non-linéairement sur le LOGIT. Nous enchaînons ensuite avec une procédure graphique, les résidus partiels, pour la même tâche, mais elle présente l'avantage de suggérer la transformation de variables à opérer. Enfin, dans une dernière étape, nous étudions l'intérêt du passage systématique par la discrétisation des variables explicatives en régression logistique, stratégie souvent évoquée pour traiter simplement et automatiquement les non-linéarités.

Mots-clés : logiciel R, package rms, test de box-tidwell, graphiques des résidus partiels, transformation de variables, discrétisation de variables, package discretization, non-linéarité, package caret

Sujet du TD : Non-linéarité, identification, traitement
Données (Excel) : Pima diabete - Non-linéarité
Correction du TD (code R) : Non-linéarité – Correction
Correction du TD (Notebook) : Notebook TD 5
Vidéo de correction : Vidéo TD 5
Référence : Site du cours de régression logistique

lundi 23 mars 2020

Régression Logistique -- TD 4.b

Deuxième partie de la quatrième séance, nous nous intéressons à la courbe ROC pour l'évaluation de la régression, dans un schéma de resubstitution (on utilise les mêmes données pour la construction et l‘évaluation du modèle) dans un premier temps pour comprendre les mécanismes sous-jacents à la construction de la courbe et au calcul du critère AUC (aire sous la courbe).

Nous passons à un schéma de rééchantillonnage, le leave-one-out, dans un deuxième temps pour obtenir une courbe et une valeur de l'AUC plus représentatives de la qualité réelle du modèle dans la population. L'écart des résultats est substantiel, montrant, si besoin était, l'inanité de l'approche par substitution pour apprécier les performances des classifieurs.

Mots-clés : logiciel R, courbe ROC, receiver operating characteristic, auc, area under curve, aire sous la courbe, package ROCR, resubstitution, méthode de resampling, rééchantillonnage, leave-one-out

Sujet du TD : Courbe ROC, critère AUC
Données (Excel) : Faible poids des bébés - Courbe ROC, AUC
Correction du TD (code R) : Courbe ROC, AUC – Correction
Correction du TD (Notebook) : Notebook TD 4.b
Vidéo de correction : Vidéo TD 4.b
Référence : Site du cours de régression logistique

dimanche 15 mars 2020

Régression Logistique -- TD 4.a

Nous enchaînons avec l'évaluation des modèles dans cette quatrième séance.

Elle est subdivisée en deux parties. La première, celle-ci, est consacrée aux procédures visant à confronter les probabilités d'affectation aux classes fournies par le modèle avec les proportions observées dans les données disponibles : à l'aide d'une procédé graphique, le diagramme de fiabilité ; et d'un test statistique, le test de Hosmer et Lemeshow. Les calculs sont simples mais il faut bien décomposer les étapes pour ne pas se perdre dans les commandes R. Nous confrontons par la suite nos résultats avec ceux fournis par les packages spécialisés.

Mots-clés : logiciel R, package generalhoslem, package resourceselection, diagramme de fiabilité, reliability diagram, test de hosmer-lemeshow, probabilités d'affectation, scores

Sujet du TD : Diagramme de fiabilité, Test de Hosmer-Lemeshow
Données (Excel) : Faible poids des bébés
Correction du TD (code R) : Faible poids – Correction
Correction du TD (Notebook) : Notebook TD 4.a
Vidéo de correction : Vidéo TD 4.a
Référence : Site du cours de régression logistique

samedi 14 mars 2020

Régression Logistique -- TD 3

Cette troisième séance est consacrée aux interprétations sous la forme d'odds-ratio des coefficients de la régression logistique. Nous traitons des différentes configurations de la ou des variables indépendantes : binaires, qualitatives nominales, qualitatives ordinales, quantitatives.

Pour vérifier nos calculs, nous mettons en parallèle les résultats avec ceux fournis par un package spécialisé en épidémiologie 'epitools'.

Mots-clés : logiciel R, package xlsx, package epitools, riskratio, chisq.test, oddsratio, glm, risque relatif, odds-ratio, inférence statistique, intervalle de confiance, interprétation des coefficients, recodage des variables indépendantes

Sujet du TD : Risque relatif, odds-ratio
Données (Excel) : Coeur
Correction du TD (code R) : Coeur – Correction
Correction du TD (Notebook) : Notebook TD 3
Vidéo de correction : Vidéo TD 3
Référence : Site du cours de régression logistique

jeudi 12 mars 2020

Régression Logistique -- TD 2.b

Seconde partie de la seconde séance, nous étudions toujours l'estimation des coefficients et les tests de significativité associés. Nous analysons cette fois-ci les facteurs de risque des infidélités dans les ménages. Sans surprise, l'usure du temps joue un rôle important. Mais nous verrons que d'autres variables pèsent également. A noter que la variable cible nécessite un recodage avant de pouvoir initier une régression logistique.

Mots-clés : logiciel R, package xlsx, glm, tests du rapport de vraisemblance, tests de wald, interprétation des coefficients, recodage de la variable dépendante, colinéarité

Sujet du TD : Estimation, test et interprétations
Données (Excel) : Infidélités
Correction du TD (code R) : Infidélités – Correction
Correction du TD (Notebook) : Notebook TD 2.b
Vidéo de correction : Vidéo TD 2.b
Référence : Site du cours de régression logistique

mardi 10 mars 2020

Régression Logistique -- TD 2.a

Seconde séance des TD (travaux dirigés sur machine) de régression logistique. Il s'agit d'aborder les tests de significativité et les interprétations des coefficients, pour les variables explicatives quantitatives et qualitatives. La question du recodage des variables et l'interprétation des coefficients qui en découle sont étudiés.

La séance est en deux parties. Dans cette première partie, nous étudions l'impact des caractéristiques physiologiques et comportementales des personnes sur le ronflement. Les conclusions confortent à peu près ce que l'on sait de ce phénomène bien connu.

Mots-clés : logiciel R, package xlsx, glm, tests du rapport de vraisemblance, tests de wald, interprétation des coefficients, termes d'interaction, recodage des explicatives

Sujet du TD : Estimation, test et interprétations
Données (Excel) : Ronflement
Correction du TD (code R) : Ronflement – Correction
Correction du TD (Notebook) : Notebook TD 2.a
Vidéo de correction : Vidéo TD 2.a
Référence : Site du cours de régression logistique

lundi 9 mars 2020

Régression Logistique -- TD 1

J'ai la fièvre du rangement de temps en temps. Je me mets en tête de mettre de l'ordre dans mes innombrables fichiers de préparations, supports de cours, tutoriels, etc., etc. Et comme il m'arrive parfois d'oublier ce que j'ai moi-même écrit, je tombe sur des sacrées surprises.

Ces dernières années, je me tourne de plus en plus vers les cours de machine learning et leurs applications. Mais je n'oublie pas que j'ai en réserve de nombreux cours de statistique, avec notamment un module de régression logistique que j'ai assuré pendant de nombreuses années et dont la préparation m'avait amené à rédiger de nombreux supports comprenant un livre (accessible sur ma page de cours dédiée). Je ne fais plus le cours depuis 2016, mais j'avais gardé bien au chaud toutes mes séances de TD (travaux dirigés sur machine) découpées en tranches d'1h45 où je faisais travailler mes étudiants sur les différentes thématiques de la régression logistique sous le logiciel R.

Vite, vite, avant que je n'oublie tout et que ce travail tombe dans l'oubli, j'ai décidé de mettre un coup de propre sur mes énoncés, et de les diffuser avec les données et les corrigés. Tout le monde peut en profiter comme il l'entend, je ne revendique absolument aucun droit là-dessus.

Première (TD 1) publication d'une longue série (TD 2.a, TD 2.b, TD 3, TD 4a, TD 4.b, TD 5, TD 6, TD 7, TD 8) donc : la création d'un modèle à l'aide de la régression logistique sur un échantillon d'apprentissage, son évaluation statistique, l'évaluation de ses performances prédictives sur un échantillon test, l'identification et la sélection des variables explicatives pertinentes.

Il faut avoir un bon niveau sous R pour pouvoir profiter pleinement des exercices, de cette séance et des suivantes.

Mots-clés : logiciel R, package xlsx, glm, package MASS, stepAIC, critère AIC, akaike, BIC, schwartz, tests de significativité, sélection de variables, estimation des coefficients, modélisation, efficiacité prédictive, échantillon d'apprentissage, échantillon test, matrice de confusion, taux d'erreur

Sujet du TD : Estimation, prédiction, sélection de variables
Données (Excel) : Diabete
Correction du TD (code R) : Diabete - Correction
Correction du TD (Notebook) : Notebook TD 1
Vidéo de correction : Vidéo TD 1
Référence : Site du cours de régression logistique

mercredi 4 mars 2020

Détection des anomalies sous Python

Ce tutoriel vient en complément du support de cours consacré à la détection des anomalies ("Détection des anomalies", décembre 2019). Nous nous intéressons à deux aspects du domaine : la détection des observations atypiques ou déviantes dans une base, on parle de "outlier" ; par rapport à un jeu de données de référence non-pollué (qui joue le rôle d'ensemble d'apprentissage), l'identification des nouveautés parmi des individus supplémentaires, au sens où leurs caractéristiques s'en écartent significativement, on parle de "novelty".

Nous utiliserons la librairie "Scikit-Learn" (Novelty and Outler Detection) pour mener notre étude, avec en particulier les classes de calcul EllipticEnvelope et LocalOutlierFactor.

Mots-clés : anomalies, points atypiques, points aberrants, nouveautés, outlier, novelty, package scikit-learn
Didacticiel : Détection des outliers et novelties
Code source + données : Cars
Références :
Tutoriel Tanagra, "Détection des anomalies - Diapos", décembre 2019.