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

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.