jeudi 24 décembre 2020

(Vidéo) Régression logistique multinomiale avec keras

Dans cette vidéo, nous généralisons la régression logistique avec keras sous R au traitement des problèmes multi-classes c.-à-d. la prédiction d'une variable cible catégorielle comportant plus de 2 modalités. L'opération nécessite une préparation des données où nous exprimons la variable cible à l'aide d'une matrice d'indicatrices 0/1 via un recodage "one-hot-encoding" (un codage disjonctif tout simplement).

Mots-clés : logiciel R, keras, tensorflow, régression logistique,
Vidéo : Régression logistique multinomiale
Données et programme : iris dataset
Références :
"Deep Learning : perceptrons simples et multicouches", novembre 2018.
"(Vidéo) Régression logistique sous R avec keras", décembre 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.

jeudi 17 décembre 2020

Titre : (Vidéo) Sélection rapide de variables

Il est question de la sélection rapide de variables en analyse prédictive dans cette vidéo. Nous nous penchons en particulier sur les méthodes de ranking permettant de filtrer en amont les descripteurs avant la mise en œuvre des algorithmes de machine learning. Elles présentent l'avantage d'être très rapides sur des grandes bases de données, tant en nombre de variables que de variables prédictives candidates.

Ces techniques ne prennent en compte que la pertinence des descripteurs cependant c.-à-d. au sens de leur liaison statistique avec la variable cible, sans égard pour d'éventuelles redondances entre eux. Elles introduisent également un présupposé fort – très audacieux même – reposant sur l'idée que les descripteurs ainsi mis en évidence seront efficaces quel que soit l'algorithme d'apprentissage utilisé pour modéliser le concept les associant à la variable cible. Malgré tout, elles constituent une alternative très intéressantes aux autres méthodes de sélection. Elles permettent de défricher rapidement les grandes bases de données en réduisant drastiquement la dimensionnalité avec un effort de calcul minime.

Nous utilisons le module "feature_selection" de la libraire "scikit-learn" pour Python dans ce tutoriel. Le jeu de données correspond au fameux "waveform", bien connu en machine learning, auquel nous avons adjoint des descripteurs a priori non-pertinents que la méthode devrait pouvoir évacuer relativement facilement.

Mots-clés : python, scikit-learn, filter, ranking, feature selection, filtrage, analyse discriminante
Vidéo : Fast Feature Selection
Données et programme : Waveform data
Références :
"Filtrage des prédicteurs".
"Filtrage des prédicteurs discrets", juin 2010.

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.

vendredi 11 décembre 2020

(Vidéo) Induction de règles prédictives

Dans cette vidéo, je parle des approches alternatives aux arbres de décision pour construire des modèles prédictifs à base de règles. Je fais en particulier un focus sur les algorithmes "separate-and-conquer" aboutissant à des systèmes de règles sous forme de liste de décisions ou de système de règles non-imbriquées. Les autres approches (bottom-up, algorithmes génétiques, règles floues) sont rapidement évoquées.

Je reprends alors un ancien tutoriel pour montrer la mise en oeuvre de ces algorithmes : (1) sous le logiciel R avec la procédure JRip du package "RWeka" ; (2) sous Tanagra avec les composants "Decision List" et "Rule Induction".  

Mots-clés : induction de règles, liste de décision, logiciel R
Vidéo : Induction de règles prédictives
Données et programme : Life Insurance
Références :
"Règles de décision prédictives – Diapos", décembre 2014.
"Induction de règles prédictives", novembre 2009.
"Listes de décision (vs. arbres de décision)", avril 2005.

lundi 7 décembre 2020

(Vidéo) Description des modèles avec PMML

Dans cette vidéo, je montre comment utiliser le format PMML pour déployer dans Knime un arbre de décision élaboré dans SIPINA. L'idée est de mettre en avant l'interopérabilité des outils à travers la norme description PMML (Predictive Model Markup Language) des modèles, format standardisé dérivé du XML. Ainsi, il est possible de faire coopérer les logiciels de machine learning et décupler les possibilités de traitements en associant les qualités des uns et des autres.

Une version rédigée de ce tutoriel (cf. références) montre que les possibilités d'interaction peuvent s'étende aux outils ETL (Extract, Transform, Load) tels que Pentaho Data Integration, introduisant de plain-pied les modèles issus d'algorithmes de machine learning au sein des systèmes d'information.

Mots-clés : déploiement, pmml, predictive model markup language
Vidéo : Le format PMML pour le déploiement
Données et programme : Heart - PMML
Références :
"Le format PMML pour le déploiement de modèles", septembre 2010.

samedi 5 décembre 2020

(Vidéo) Manipulation des DataFrames "pandas"

Dans cette vidéo, je montre comment manipuler la structure DataFrame de la librairie "pandas" pour Python. Nous explorons plusieurs étapes : l'importation d'un ensemble de données (fichier Excel ici, mais facilement transposable à d'autres types de fichiers comme les CSV), l'inspection de la structure, l'affichage des valeurs. Différents types d'accès sont détaillés : la projection sur quelques colonnes, les restrictions à partir de conditions, les accès indicés. Je montre également la réalisation de calculs statistiques simples (calcul de fréquences) sur les variables. Enfin, nous effectuons la jonction avec les structures de "numpy" pour effectuer facilement, rapidement, des calculs matriciels.

Une version détaillée et rédigée de la manipulation des DataFrames pandas est disponible sur ce site (voir les références).

Mots-clés : python, pandas, numpy
Vidéo : La librairie pandas pour Python
Données et programme : Iris - Pandas
Références :
"Python : Manipulation des données avec Pandas", février 2017.

vendredi 4 décembre 2020

(Vidéo) Analyse discriminante sous Python

Analyse discriminante linéaire sous Python avec le package "scikit-learn". Utilisation de la classe de calcul LinearDiscriminantAnalysis. Modélisation, entraînement du modèle sur les données d'apprentissage ; prédiction sur un échantillon non-étiqueté. Lecture des résultats, en particulier des coefficients des fonctions de classement. Références vers des tutoriels plus détaillés (lambda de Wilks, F de Rao, évaluation de la pertinence des variables) ou complémentaires (autres logiciels).

Mots-clés : analyse discriminante prédictive, python, scikit-learn
Vidéo : ADL sous Python
Données et programme : Kirsch – Mirabelle – Poire sous Python
Références :
"Pratique de l'Analyse Discriminante Linéaire", mai 2020.
"Analyse discriminante linéaire sous Python", avril 2020.
"Python - Machine Learning avec scikit-learn", septembre 2015.

jeudi 3 décembre 2020

(Vidéo) Analyse discriminante sous SAS

Analyse discriminante linéaire sous SAS. Modélisation (entraînement du modèle sur les données d'apprentissage) avec la PROC DISCRIM. Sélection de variables avec la PROC STEPDISC, les méthodes pas-à-pas et en particulier l'approche "forward". Détail du mode opératoire et lecture des résultats.

Mots-clés : analyse discriminante prédictive, logiciel SAS, proc discrim, proc stepdisc
Vidéo : ADL avec SAS
Données et programme : Kirsch – Mirabelle – Poire sous SAS
Références :
"Pratique de l'Analyse Discriminante Linéaire", mai 2020.
"SAS OnDemand for Academics".

mercredi 2 décembre 2020

(Vidéo) ADL sous R avec "discriminR"

Analyse discriminante linéaire sous R avec le package "discriminR". Modélisation (entraînement du modèle sur les données d'apprentissage), prédiction, sélection de variables avec les méthodes pas-à-pas, en particulier l'approche "forward". Lecture des résultats, focus sur les fonctions de classement directement fournies par la librairie, comparaison avec le mode opératoire et les sorties du package "klaR" pour la sélection.

Mots-clés : analyse discriminante prédictive, logiciel R, package discriminR, package klaR
Vidéo : ADL avec discriminR
Sortie des traitements : Sortie Markdown
Données et programme : Kirsch – Mirabelle - Poire
Références :
"Pratique de l'Analyse Discriminante Linéaire", mai 2020.
"Analyse discriminante linéaire sous R", avril 2020.

dimanche 29 novembre 2020

(Vidéo) Recodage des explicatives qualitatives en ADL

Cette vidéo montre une solution possible pour l'intégration de variables explicatives qualitatives dans un modèle d'analyse discriminante linéaire. Elle passage par l'utilisation des "dummy variables" c.-à-d. des indicatrices 0/1. Deux questions importantes apparaissent alors : combien d'indicatrices créer pour recoder convenablement une variable catégorielle à K modalités ; et comment lire les résultats par la suite.

Mots-clés : analyse discriminante prédictive, dummy variables, indicatrices, codage disjonctif
Didacticiel vidéo : Recodage dummy variables en ADL
Classeur Excel : heart disease
Références :
"Pratique de l'Analyse Discriminante Linéaire", mai 2020, chapitre 3.

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.

dimanche 22 novembre 2020

(Vidéo) Conversion d'un Notebook Python avec Pandoc

Dans cette vidéo, je montre comment générer un fichier Word (docx) à partir d'un projet Jupyter Notebook (ipynb). On peut y voir plusieurs avantages pour le post-traitement du document : disposer d'un correcteur orthographique et grammatical plus performant, bénéficier des fonctionnalités d'édition plus avenants des traitements de texte, etc. 

Je m'appuie sur un projet très succinct de construction d'un arbre de décision sur le jeu de données ultra-connu des Iris de Fisher. Nous remarquerons que les commentaires, le code, les sorties y compris graphiques du notebook sont parfaitement intégrés dans le fichier Word.

Mots-clés : pandoc, jupyter notebook, scikit-learn, arbre de décision
Didacticiel vidéo : Pandoc pour fichiers ipynb
Données et programme : Notebook et output
Références :
Pandoc - A universal document converter.

jeudi 19 novembre 2020

(Vidéo) Modélisation, évaluation, déploiement

 Dans cette vidéo, je parle d'une des modalités d'évaluation pratique que j'utilise dans mon cours d'introduction à la data science, dans la partie concernant l'analyse prédictive tout du moins.

L'idée est simple : les étudiants doivent produire une modèle prédictif pour le classement, en mesurer les performances, puis le déployer sur une base non-étiquetée c.-à-d. sans la variable cible.

Ils doivent rendre plusieurs éléments dont les projections réalisées sur cette dernière base. Parmi les critères d'évaluation du travail des étudiants figure en bonne place la confrontation entre les classes prédites et les classes observées que j'avais en réalité conservé à part pour la correction. Deux aspects m'importent alors : la performance prédictive pure (la capacité à faire le moins d'erreurs possibles), qui me permet de comparer les projets ; la concordance entre les erreurs annoncées et celles que je mesure moi-même après coup.

Mots-clés : analyse prédictive, arbre de décision, knime, déploiement
Didacticiel vidéo : Modélisation, évaluation, déploiement
Support : Schéma CRISP-DM
Données et programme : Spam et archive Knime
Références :
R. Rakotomalala, "Support de cours Data Science".

dimanche 15 novembre 2020

(Vidéo) Subdivision train-test pour les comparaisons

La période de confinement est un véritable challenge pour l'enseignement. Autant je suis à l'aise en cours avec les étudiants en présentiel dans la salle informatique durant les travaux dirigés sur machine ; autant j'ai du mal à me situer en distanciel, sans véritable retours, sans repères sur l'avancement des uns et des autres.

Pour mieux accompagner les étudiants, j'ai décidé de créer une chaîne vidéo sur YouTube pour qu'ils puissent avoir sous la main (sous les yeux) les explications ou démonstrations que j'effectue au début de chacune de mes séances.

En effet, je me permets d'aller vite en présentiel (je suis incapable de faire autrement de toute manière) parce que je suis avec eux par la suite. Je passe mon temps à roder derrière les étudiants, traquant les bugs, expliquer ce que je constate mal compris, refaire avec eux les étapes des traitements, ou tout simplement discuter de tel ou tel aspect de la data science. Ces échanges sont on ne peut plus enrichissants, à la fois pour les étudiants et pour les enseignants.

Rien de tout cela en distanciel, et surtout reproduire les démos à plusieurs reprises n'est pas envisageable, même si l'idée de discussion privée existe avec les outils d'échange à distance que nous utilisons.

Finalement, cette idée de vidéos n'est pas si mauvaise. Je m'étais toujours refusé à le faire jusqu'à présent. D'une part parce que montrer ma bobine sur le web ne m'intéresse pas spécialement ; d'autre part parce que je crois en la force de l'écrit où nous disposons de l'opportunité de prendre le temps d'expliquer les choses, parfois même de faire des digressions, choses moins évidente dans une vidéo où l'on doit être le plus schématique possible sous peine de perdre le spectateur. Mais bon, nécessité fait loi. Au moins pour les démonstrations, cette idée des tutoriels-vidéos me paraît viable.

Dans cette vidéo, je montre comment subdiviser un ensemble de données en échantillons d'apprentissage et de test, et comment s'organiser pour que la même partition soit exploitée pour comparer différents algorithmes de machine learning implémentés dans différents logiciels de data science. Nous utilisons : Knime, Tanagra, Sipina, Python / Scikit-Learn, R / Rpart. Le matériel pédagogique (données, programmes) associé aux traitements est disponible ci-dessous.

Allez savoir. Peut-être sommes-nous à un tournant de notre pratique de l'enseignement dans les universités….

Mots-clés : analyse discriminante, régression logistique, arbre de décision, python, logiciel r, scikit-learn, rpart, tanagra, sipina, knime
Didacticiel vidéo : Comparaisons des algorithmes
Support : Schéma train-test en analyse prédictive
Données et programmes : Spam, archives et code R/Python
Références :
"Analyse prédictive avec Knime", février 2016.
"Apprentissage-test avec Orange, Tanagra et Weka", avril 2008.
"Apprentissage-test avec Sipina", mars 2008.
"Python - Machine Learning avec Scikit-Learn", septembre 2015.
"Introduction à R – Arbre de décision", mars 2012.

samedi 31 octobre 2020

Réduction de dimension - La méthode GLRM

 La réduction de dimensionnalité est une tâche essentielle de l'analyse exploratoire. L'objectif est de concentrer la représentation des données sur un faible nombre de facteurs, exprimés à l'aide des variables initiales, qui traduisent les "formes" (pattern) pertinentes qui les régissent. En résumant l'essentiel de l'information sur un jeu de caractères réduits : nous pouvons représenter graphiquement les observations quand leur nombre est faible (souvent dans le plan) pour mieux apprécier les proximités ; les algorithmes de machine learning subséquents (supervisé ou non) sont plus efficaces lorsqu'ils sont appliqués sur un espace de représentation plus consistant.

Mon attention a été attirée récemment par l'algorithme GLRM (generalized low rank model). Plusieurs qualités sont mises en avant pour justifier son utilisation : à l'instar de l'AFDM, elle sait traiter nativement les descripteurs mixtes ; en s'affranchissant de la définition des facteurs sous la forme de combinaisons linéaires des variables initiales, elle dépasse les limitations de l'ACP notamment et est capable de capturer des formes non-linéaires. Une solution performante qui nous sortirait donc du sempiternel cadre de la décomposition en valeurs singulières d'une variante de la matrice des données initiales. L'idée est d'autant plus séduisante que l'appréhension des problèmes à très forte dimensionalité est devenu un standard dans le contexte du traitement des données non-structurées, en particulier le text mining.

Dans ce tutoriel, nous décrivons succinctement la méthode, puis nous étudions son comportement en l'opposant à l'ACP lorsque les descripteurs sont tous quantitatifs, à l'AFDM lorsqu'ils sont mixtes. Nous utilisons les jeux de données décrits dans l'ouvrage consacré à l'analyse factorielle qui a été mise en ligne récemment (Rakotomalala, 2020). Nous exploitons l'implémentation disponible dans la librairie H2O que nous avons explorée déjà à plusieurs reprises (Tutoriels Tanagra – H2O).

Mots-clés : réduction de dimensionnalité, analyse factorielle, acp, analyse en composantes principales, afdm, analyse factorielle des données mixtes
Didacticiel : La méthode GLRM
Code R et données : Autos et Tennis
Références :
H2O Tutorials, "Generalized Low Rank Models".

dimanche 19 juillet 2020

Pratique des Méthodes Factorielles avec Python

Ca faisait un moment que j'avais envie de le faire mais des multiples contraintes m'en avaient toujours empêché. Enfin j'ai pu travailler activement à la rédaction livre d'un consacré à l'analyse factorielle. J'ai fait la synthèse dans un ensemble que j'espère cohérent ce que j'ai pu écrire sur les méthodes factorielles ces quinze dernières années. Le plan est relativement classique. Nous présentons tour à tour les différentes techniques qui font référence dans le domaine (ACP, MDS, AFC, ACM, AFDM).

Par rapport à la très abondante littérature qui existe (tant en ouvrages qu'en supports accessibles en ligne), fidèle à mon habitude, j'ai essayé de me démarquer en évitant déjà d'abreuver le lecteur de succession de formules matricielles arides, en simplifiant la présentation des techniques (ce n'est pas le plus facile), en retraçant dans le détail les aspects calculatoires à l'aide d'exemples illustratifs, en utilisant le langage Python et ses librairies scientifiques standards (numpy, scipy, scikit-learn).

Nous utilisons en particulier la librairie "fanalysis" d'Olivier Garcia (ancien du Master SISE, promotion 2000), accessible sur GitHub, qui fait référence aujourd'hui pour l'analyse factorielle avec Python. Elle est en adéquation avec les pratiques décrites dans les ouvrages phares de l'analyse de données (cf. la bibliographie). Quelques requêtes Google semblent montrer (juin 2020) qu'il y a peu d'outils et de documentation sur ce créneau, qui correspond pourtant à une véritable attente si j'en juge aux accès sur mon site des tutoriels où les documents relatifs aux méthodes factorielles d'une part, à la pratique de la data science sous Python d'autre part, font partie de ceux qui sont le plus téléchargés. A chaque étape, nous calibrerons les résultats en les comparant à ceux de SAS (proc princomp, proc factor, proc corresp), R (factominer, ade4, ca, pcamixdata, psych)  et TANAGRA (avec les composants de l'onglet "Factorial Analysis").

Bien sûr, les programmes (notebooks Jupyter) et les données accompagnent la diffusion de l'ouvrage.

Mots-clés : analyse factorielle, méthodes factorielles, analyse en composantes principales, ACP, positionnement multidimensionnel, mds, multidimensional scaling, analyse factorielle des correspondances, AFC, analyse des correspondances multiples, ACM, AFCM, analyse factorielle des données mixtes, python, jupyter notebook
Ouvrage : Pratique de l'analyse factorielle
Notebooks Jupyter : Notebooks Analyse Factorielle
Données exemples : Data Méthodes Factorielles
Site de référence : Cours Analyse Factorielle

dimanche 10 mai 2020

Pratique de l'Analyse Discriminante Linéaire

Bon, les circonstances font qu'il m'a été possible de consacrer suffisamment de temps à l'écriture d'un livre. J'ai choisi de travailler sur l'analyse discriminante linéaire, une méthode prédictive que je trouve très intéressante, tant par sa mécanique interne que par l'usage que l'on peut en faire.

Curieusement, alors qu'elle est souvent abordée dans les ouvrages de statistique exploratoire (data science dirait-on aujourd'hui), je ne connais pas de référence qui lui est entièrement consacrée en français. Je la trouve pourtant très riche. Il y a vraiment beaucoup de choses à dire sur son compte. J'ai décidé de m'y coller en choisissant délibérément l'axe prédictif, et en essayant de mettre en avant les différents aspects qui en font le sel. Ceux justement que j'essaie de souligner dans les séances que je lui consacre dans mes enseignements. En effet, sa présentation se résume très rapidement à un empilement de formules matricielles si l'on n'y prend garde. Il fallait absolument éviter cet écueil en se focalisant sur sa pratique, en étant toujours autant que possible concret et pragmatique.

Un package pour R, discriminR, réalisé par un groupe d'étudiants du Master SISE (promotion 2017-2018), Tom Alran, Benoît Courbon et Samuel Rasser-Chinta, accompagne cet ouvrage. Il permet de mettre facilement  en application les principales idées qui ont mises en avant, avec des sorties aux standards de SAS Proc Discrim et Proc Stepdisc. Un tutoriel décrit son mode opératoire et la lecture des résultats dans le chapitre consacré aux logiciels. Merci à eux d'avoir bien voulu nous faire profiter de leur travail.

Ça fait plus de 20 ans que j'enseigne l'analyse discriminante prédictive, je ne m'en lasse pas, je lui trouve toujours de beaux atours et j'adore en parler.

Mots-clés : analyse discriminante linéaire, ADL, linear discriminant analysis, LDA, fonctions de classement, évaluation, sélection de variables, stepdisc, variables explicatives qualitatives, disqual, bayésien naïf, régularisation, analyse factorielle discriminante, analyse des correspondances discriminante, proc discrim, proc stepdisc, logiciel R, package discriminR, scikit-learn, python
Ouvrage : Analyse discriminante linéaire
Package R : discriminR 0.1.0
Données exemples : Data ADL
Références :
Page de cours, "Analyse discriminante".

mardi 14 avril 2020

Dépendances des variables qualitatives - Version 2.1

Voilà un item de ma TODO LIST qui vient de resurgir de nulle part. Après 9 ans, j'ai mis à jour mon livre intitulé "Etude de dépendances – Variables qualitatives". Les deux premières versions dataient de 2007 (version 1.0 puis 2.0). Le document a été recompilé en 2011 semble-t-il, mais sans que je n'aie conservé une trace du pourquoi. Il était resté en stand-by depuis.

La période étant propice à l'introspection, j'ai essayé de faire le tour de mes supports en suspens. Et je me suis rendu compte que j'avais noté une série de modifications à faire sur ce document. Je l'ai donc mis à jour en corrigeant déjà les coquilles qui pouvaient l'émailler ici ou là, en modifiant les options de compilation pour qu'une table de matière apparaisse dans les lecteurs de PDF, en rajoutant des références ou en retirant les liens URL devenus obsolètes, et en rajoutant quelques sections qui me paraissaient intéressantes.

Le fichier Excel des exemples illustratifs a été complété en conséquence.

Mots-clés : tableau de contingence, khi-2, mesures PRE (proportional reduction in error), odds et odds-ratio, coefficient de concordance, mesures d'association, associations ordinales
Techniques décrites : statistique du khi-2, test d'indépendance du khi-2, contributions au khi-2, t de Tschuprow, v de Cramer, lambda de Goodman et Kruskal, tau de Goodman et Kruskal, U de Theil, coefficient phi, correction de continuité, Q de Yule, kappa de Cohen, kappa de Fleiss, gamma de Goodman et Kruskal, tau-b de Kendall, tau-c de Kendall, d de Sommers, test de Mc Nemar, coefficient d'incertitude symétrique
Ouvrage : Etude des dépendances - Variables qualitatives - Tableau de contingence et mesures d'association
Exemples illustratifs : Credit.xlsx

jeudi 9 avril 2020

Analyse Discriminante Linéaire sous R

En rédigeant mon précédent tutoriel consacré à l'analyse discriminante sous Python, je me suis rendu compte que je n'avais jamais écrit d'équivalent pour R, où l'on passerait en revue les fonctionnalités de la fonction lda() du package MASS qui fait référence sous cet environnement. C'est étonnant, surtout que je la pratique depuis un bon moment déjà. C'est même une des premières méthodes de R que j'ai explorées avec glm() et rpart(). Nous allons essayer d'y remédier dans ce document.

Nous reprenons la trame de la présentation pour Python, en prenant appui toujours sur notre support de cours dédié, mais en l'adaptant bien sûr aux spécificités de lda(). Notre référence reste SAS, avec les procédures proc discrim et proc candisc. Un des enjeux fort sera de faire le lien entre les parties descriptives et prédictives en dérivant les fonctions de classement à partir des fonctions canoniques discriminantes.

Mots-clés : logiciel R, analyse discriminante linéaire, analyse discriminante prédictive, ADL, linear discriminant analysis, lda, package MASS, sélection de variables, package klaR, stepdisc, logiciel SAS, proc discrim, proc candisc
Didacticiel : ADL sous R
Données et code source R : Kirsch - Mirabelle - Poire
Références :
R. Rakotomalala, "Analyse discriminante linéaire".
Tutoriel Tanagra, "Analyse discriminante linéaire sous Python", avril 2020.

lundi 6 avril 2020

Analyse Discriminante Linéaire sous Python

L'analyse discriminante linéaire est une méthode prédictive où le modèle s'exprime sous la forme d'un système d'équations linéaires des variables explicatives. Je l'affectionne particulièrement. Le temps que je lui consacre dans mes enseignements fait partie de mes séances favorites notamment parce qu'elle se prête à des multiples lectures. Je tiendrai très facilement des heures avec un nombre pourtant réduit de slides.

Dans ce tutoriel, nous étudierons le comportement de la classe de calcul LinearDiscriminantAnalysis du package "scikit-learn" pour Python. En faisant le tour de ses propriétés et méthodes, nous passerons en revue les différents aspects de la technique. Pour mieux situer la teneur des résultats, nous mettrons en parallèle les sorties de la procédure PROC DISCRIM du logiciel SAS qui fait figure de référence dans le domaine.

Mots-clés : python, analyse discriminante linéaire, adl, test manova, lambda de wilks, coefficients des fonctions de classement, package scikit-learn, logiciel sas, prox discrim
Données et code source Python : Kirsch - Mirabelle - Poire
Références :

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.

mercredi 12 février 2020

Tanagra sous Mac OS X

"On peut faire fonctionner Tanagra sous Mac Monsieur ?" est une question que me posent souvent mes étudiants possesseurs de portables Mac durant les travaux dirigés. Je leur répondais invariablement que ça devait être possible avec une machine virtuelle mais, un peu taquin que je suis, j'ajoutais que le plus simple était plutôt d'utiliser nos machines de la salle informatique qui sont sous Windows. Notre université se saigne aux quatre veines pour offrir du matériel de qualité à ses étudiants, ce serait ballot de ne pas en profiter.

Le fait est que je savais la chose possible en théorie, mais je ne l'avais jamais moi-même testé ni vu faire... jusqu'à aujourd'hui. Valentin Amorim, en L3 AES de l'Université Paris 2, m'a transmis le document ci-dessous. Il l'a mis au point sous l'égide d'Antoine Auberger, pour le compte de son cours "Sondages et Techniques quantitatives". Valentin détaille de manière schématique et reproductible les étapes de l'opération : récupérer et installer le logiciel de virtualisation VirtualBox, récupérer et installer l'image de Windows (différentes versions sont possibles), installer enfin Tanagra sur la machine virtuelle. Le tout fonctionne très bien. Il est possible également d'utiliser une machine virtuelle Linux et de passer par Wine comme j'ai pu le tester moi-même par le passé (cf. références).

Un grand Merci Valentin pour ce travail qui profitera à tout le monde !

Mots-clés : macos, mac os x, os x, windows, linux, ubuntu
Didacticiel : Tanagra, installation sur Mac OS X
Références :
Tutoriel Tanagra, "Tanagra sous Linux", janvier 2009.
Tutoriel Tanagra, "Connexion Open Office Calc sous Linux", avril 2009.

mercredi 5 février 2020

Arbres de décision avec Scikit-Learn

Tous les ans, préalablement à chacune de mes séances sur machine avec les étudiants, je fais un travail de mise à jour des instructions et indications de résultats retranscrits dans ma fiche de TD (travaux dirigés). Il faut dire que les packages sous R et Python ne se soucient pas toujours de compatibilités descendantes ou ascendantes. Une instruction valable hier peut ne pas fonctionner aujourd'hui ou, pire, fournir un résultat différent parce que les paramètres par défaut ont été modifiés ou les algorithmes sous-jacents améliorés. La situation est moins critique lorsque des fonctionnalités additionnelles sont proposées. Encore faut-il les connaître. La veille technologique est indissociable de notre activité, et j'y passe vraiment beaucoup de temps.

Concernant ma séance consacrée aux arbres de décision sous Python justement, où nous utilisons la libraire Scikit-Learn (Decision Trees), j'avais pour habitude d'annoncer à mes étudiants qu'il n'était pas possible de disposer – simplement – d'une représentation graphique de l'arbre, à l'instar de ce que nous fournirait le package "rpart.plot" pour les arbres "rpart" sous R par exemple. La nécessité d'installer un outil externe (voir "Random Forest et Boosting avec R et Python", novembre 2015 ; section 4.3.3) rendait la manipulation rédhibitoire dans une séance où nous travaillons en temps (très) restreint avec des machines (très) protégées. Je me suis rendu compte récemment au détour d'une requête Google, assez heureuse je dois l'avouer, que la situation a évolué avec la version 0.21.0 de Scikit-Learn (Mai 2019). Nous allons vérifier cela dans ce tutoriel. Nous en profiterons pour étudier les manipulations à réaliser pour pouvoir appliquer les dits-arbres sur des variables prédictives (explicatives) catégorielles. L'outil ne sait pas les appréhender de manière native... pour l'instant (version 0.22.1, février 2020).

Mots-clés : arbres de décision, indice de gini, importance des variables, représentation graphique des arbres, python, scikit-learn, codage disjonctif complet, règles imbriquées
Didacticiel : Arbres sous Python
Codes sources + données : Breast - Heart - Vote
Références :
R. Rakotomalala, "Introduction aux arbres de décision", décembre 2014.

mercredi 1 janvier 2020

Bonne année 2020 - Bilan 2019

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

Un petit bilan chiffré concernant l'activité organisée autour du projet Tanagra pour l'année écoulée. 48 documents supplémentaires (supports de cours, tutoriels) ont été postés, tous en français.

L'ensemble des sites (logiciels, support de cours, ouvrages, tutoriels) a été visité 214.816 fois en 2019, soit 588 visites par jour. Les visiteurs viennent en majorité de la France (51%), du Maghreb (17%) et de l'Afrique francophone. Les pages de supports de cours ont toujours autant de succès, en particuliers ceux dédiés à la Data Science et à la programmation (R et Python).

Depuis la mise en place du compteur Google Analytics (01 février 2008), le groupe de sites a été visité 2.746.385 fois, soit 631 visites par jour en presque 12 ans.

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 2019