dimanche 26 décembre 2021

(Vidéo) Représentation pré-entraînée GloVe avec Keras

Je montre dans cette vidéo comment, avec la librairie bien connue de deep learning Keras, exploiter une représentation pré-entraînée GloVe dans une démarche d'analyse de sentiments, plus généralement dans la catégorisation de textes. L'analyse des grands corpus de documents (ex. Wikipedia  + GigaWord) permet de projeter les termes dans un espace de représentation dont la dimensionnalité est contrôlée (hyperparamètre de l'algorithme). Cette représentation constitue ainsi la première couche "embedding" du réseau de neurones prédictif sous Keras. Sur notre corpus d'apprentissage (analyse des sentiments sur des tweets), l'entraînement du réseau pour le calcul des poids synaptiques reliant cette couche d'entrée avec la sortie se fait alors classiquement à l'aide d'une descente de gradient.

Mots-clés : text mining, catégorisation de textes, word embedding, keras, deep learning, python, glove, perceptron, nlp, natural language processing
Vidéo : Glove Keras
Notebook Python : Twitter Sentiment Analysis
Références :
"(Vidéo) La couche Embedding de Keras en NLP", décembre 2021.
"(Vidéo) Modèle pré-entraîné Word2Vec avec Gensim", décembre 2021.
"Glove : Global Vectors for Word Representation", J. Pennington, R. Socher, C. Manning.

vendredi 24 décembre 2021

(Vidéo) La couche Embedding de Keras en NLP

Nous nous intéressons à la couche Embedding de Keras dans cette vidéo. Il s'agit d'une couche de réseaux de neurones qui permet de représenter les termes dans un espace intermédiaire. Elle fait partie en cela des techniques de "word embedding". Mais, contrairement aux approches basées sur le voisinage telles que "Word2Vec", elle est intégrée dans un processus de modélisation prédictive. Elle ouvre également la porte à des opérateurs que nous trouvons habituellement dans les réseaux de convolutions utilisés en classement d'images. Nous illustrons notre propos par l'analyse de sentiments sur un corpus de tweets (Twitter). Après un premier modèle très basique, nous intégrons la régularisation via des mécanismes telles que le "max pooling" ou encore le "dropout" pour améliorer les performances prédictives.

Mots-clés : text mining, catégorisation de textes, tensorflow, keras, tweet, twitter, python, deep learning, nlp, natural language processing
Vidéo : Keras Embedding
Notebook Python : Twitter Dataset
Références :
"(Vidéo) Perceptron avec Tensorflow / Keras (Python)", juillet 2021.
"(Vidéo) Natural Language Processing avec Keras", décembre 2021.
"(Vidéo) Word2Vec / Doc2Vec avec Gensim – Python", décembre 2021.

mercredi 22 décembre 2021

(Vidéo) Natural Language Processing avec Keras

Dans cette vidéo, nous traitons un problème d'analyse des sentiments à partir d'un corpus de tweets étiquetés. Nous exploitons le tandem de librairies Tensorflow et Keras sous Python. Nous nous plaçons dans le cadre usuel de la catégorisation de documents en nous basant sur une représentation bag-of-words (sac de mots). Le modèle prédictif est un réseau de neurones, plus précisément un perceptron multicouche. Nous nous intéressons alors à la représentation intermédiaire des données induite par la couche cachée. Les résultats nous amènent plusieurs éléments de réflexion concernant le surapprentissage et les pistes pour y remédier dans notre contexte.

Mots-clés : text mining, catégorisation de textes, tensorflow, keras, tweet, twitter, python
Vidéo : Keras Sentiment Analysis
Notebook Python + Données : Twitter Dataset
Références :
"(Vidéo) Perceptron avec Tensorflow / Keras (Python)", juillet 2021.
"Sentiment 140 - For Academics"

lundi 20 décembre 2021

(Vidéo) Modèle pré-entraîné Word2Vec avec Gensim

Je montre dans cette vidéo comment exploiter un modèle pré-entraîné dans une démarche d'analyse de sentiments, plus généralement dans la catégorisation de textes. L'idée est d'utiliser une vectorisation de termes Word2Vec issue de l'analyse de grands corpus (ex. Wikipedia avec Wikipedia2Vec) pour projeter les documents dans un nouvel espace de représentation. Disposant ainsi d'un tableau individus (documents) -variables (features) de dimensionnalité réduite (paramétrable), nous pouvons mettre en œuvre de manière tout à fait classique les algorithmes supervisés de machine learning. Nous avons fait le choix d'un support vector machine (svm) avec un noyau RBF pour notre exemple, nous aurions pu utiliser toute autre solution prédictive.

Mots-clés : text mining, catégorisation de textes, word embedding, word2vec, doc2vec, gensim, python
Vidéo : Wikipedia2Vec
Notebook Python + Données : Imdb Reviews
Références :
"(Vidéo) Word2Vec / Doc2Vec avec Gensim – Python", décembre 2021.

vendredi 17 décembre 2021

(Vidéo) Word2Vec / Doc2Vec avec Gensim - Python

Cette vidéo est consacrée à la mise en œuvre du prolongement lexical, en particulier l'algorithme Word2Vec, à l'aide de la librairie Gensim pour Python. L'idée repose sur une forme de contextualisation des termes. Concrètement, on cherche à les représenter à l'aide de vecteurs numériques, de manière à ce que des termes voisins dans les documents présentent une forte similarité (au sens d'un indice telle que la similarité cosinus par exemple) dans le nouvel espace de représentation. La démarche peut être étendue aux documents (l'algorithme Word2Vec). Ainsi, nous disposons d'une représentation des corpus dans un espace de représentation de dimension réduite, paramétrable, rendant possible la mise en œuvre subséquente des techniques de machine learning (ex. catégorisation de documents).

Mots-clés : text mining, tokenisation, dictionnaire, word embedding, word2vec, doc2vec, gensim
Vidéo : Gensim Word2Vec
Notebook Python + Données : Imdb Reviews
Références :
"Deep Learning : l'algorithme Word2Vec", décembre 2019.
"Word2Vec avec H20 sous Python", décembre 2019.

mercredi 8 décembre 2021

(Vidéo) Topic Modeling avec Gensim / Python

Cette vidéo est consacrée à la mise en oeuvre du "topic modeling" avec le package "Gensim" pour Python. J'avais déjà consacré une vidéo sur ce sujet sous Knime. La trame reste la même. L'objectif est d'extraire des thématiques caractérisées par des termes à partir d'un corpus de documents. La spécificité ici est bien sûr est l'utilisation des packages spécialisés sur Python. Outre Gensim, nous mettons également à contribution NLTK (Natural Language Toolkit) pour la partie pré-traitement.

Mots-clés : text mining, tokenisation, dictionnaire, représentation bow, bag of words, topic model, topic modeling, latent dirichlet allocation, LDA, gensim, nltk, python
Vidéo : Gensim Topic Model
Notebook Python + Données : Imdb Reviews
Références :
"Text mining : Topic Model", décembre 2016.
"(Vidéo) Topic Modeling avec Knime", novembre 2021.

mardi 30 novembre 2021

(Vidéo) Word Embedding – L'algorithme Word2Vec

Cette vidéo montre la mise en oeuvre de l'algorithme Word2Vec en NLP (natural language processing) avec le logiciel Knime. Nous poursuivons un double objectif : représenter les termes par un vecteur de dimension "p" (hyperparamètre de l'algorithme) restituant leurs voisinages ; caractériser les documents en s'appuyant sur cette représentation.

Mots-clés : word embedding, word2vec, knime, nlp, natural language processing, réduction de dimensionnalité, deep learning, doc2vec
Vidéo : Word2Vec
Workflow Knime + Données : Imdb Reviews
Références :
"Deep Learning : l'algorithme Word2Vec", décembre 2019.
"Word2Vec avec H2O sous Python", décembre 2019.

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".

jeudi 18 novembre 2021

(Vidéo) Topic Modeling avec Knime

Cette vidéo est consacrée à la mise en oeuvre du "topic modeling" avec le logiciel Knime (package Text processing). La méthode consiste à extraire des corpus des "thèmes" (topics), en faible nombre, que l'on caractérise à partir des termes (tokens) qui composent les documents. On peut aussi la voir sous l'angle de la réduction de la dimensionnalité dans la mesure où nous disposons d'une description des documents dans l'espace des topics. Procéder à des analyses subséquentes est ainsi possible. Nous l'illustrons par le regroupement des documents en groupes (clusters) à l'aide d'un algorithme de classification automatique (k-means).

Mots-clés : knime, text mining, tokenisation, dictionnaire, matrice documents-termes, pondération, catégorisation de documents, topic model, topic modeling, latent dirichlet allocation, LDA, clustering,
Vidéo : Knime Topic Model
Workflow + Données : Imdb Reviews
Références :
"Text mining : Topic Model", décembre 2016.
"(Vidéo) Text mining avec Knime", novembre 2021.

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.

vendredi 5 novembre 2021

(Vidéo) Text mining avec quanteda sous R

Je montre dans cette vidéo les principales fonctionnalités du package de text mining "quanteda" pour R. Nous abordons tour à tour : le pré-traitement du corpus (suppression des ponctuations, des mots-vides, de chiffres, l'harmonisation de la casse), la tokenisation, la représentation des documents en sac de mots, les pondérations "term frequency" et binaires, la constitution du dictionnaire, l'analyse du voisinage des termes, le calcul des associations entre termes et variables supplémentaires. Nous donnons une tournure opérationnelle à la présentation en décrivant de manière approfondie un processus de catégorisation automatique de documents à l'aide d'un algorithme de machine learning – un SVM, support vector machine – de la librairie "e1071".

Mots-clés : logiciel R, package quanteda, tokenisation, dictionnaire, matrice documents-termes, pondération, catégorisation de documents, svm linéaire
Vidéo : Quanteda
Notebook R + Données : Imdb Reviews
Références :
"quanteda : Quantitative Analysis of Textual Data".

jeudi 4 novembre 2021

(Vidéo) Text mining avec tidytext sous R

Je montre dans cette vidéo les principales fonctionnalités du package de text mining "tidytext" pour R. Nous abordons tour à tour : le pré-traitement du corpus (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 pondération "term frequency", la constitution du dictionnaire, l'analyse des sentiments associés aux documents à partir de la polarité des termes recensés dans un lexique dédié.

Mots-clés : logiciel R, package tidytext, tidyverse, tokenisation, dictionnaire, matrice documents-termes, pondération, analyse des sentiments
Vidéo : Tidytext
Notebook R + Données : Imdb Reviews
Références :
"Text mining with R", J. Silge & D. Robinson.

lundi 1 novembre 2021

(Vidéo) Subdivision train-test avec scikit-learn

Cette vidéo montre comment subdiviser aléatoirement un jeu de données en échantillons d'apprentissage et de test à l'aide de la fonction train_test_split(.) de la librairie "scikit-learn". J'essaie de mettre l'accent sur plusieurs aspects qui me paraissent important : l'organisation des données à présenter au module, le rôle des paramètres (train_size, random_state, stratify), les structures de données obtenues en sortie. Quelques statistiques descriptives simples permettent de s'assurer de la régularité du partitionnement.

Mots-clés : python, scikit-learn, train_test_split
Vidéo : Train test split
Code Python + Données : Breast Dataset
Références :
"Python - Machine learning avec scikit-learn", septembre 2015.

samedi 30 octobre 2021

(Vidéo) Machine learning avec PyCaret

"PyCaret" est la version Python du fameux package "caret" pour R. Il s'agit toujours d'un meta-package dans le sens où il ne programme pas directement les algorithmes de machine learning. Il s'appuie sur d'autres librairies pour cela, en particulier sur "scikit-learn". Il ajoute plutôt une surcouche destinée à nous faciliter la vie en prenant en charge une grande partie des tâches répétitives et fastidieuses de la pratique de la data science (élaboration d'un pipeline, préparation des données, détermination des meilleurs algorithmes, optimisation des hyperparamètres, déploiement, etc.). 

Cette vidéo montre comment mettre à profit "PyCaret" dans un schéma d'analyse prédictive, s'inspirant assez fortement du travail que je demande à mes étudiants lorsque j'évalue leur capacité à mener à bien un projet complet de machine learning dans un temps réduit.

Mots-clés : python, pycaret, extra trees, gradient boosting, random forest
Vidéo : Machine learning PyCaret
Notebook + Données : Spam Dataset
Références :
"Machine learning avec caret – Package R", avril 2018.

(Vidéo) Arbres de décision avec scikit-learn

Cette vidéo montre comment construire un arbre de décision avec la librairie "scikit-learn" pour Python. Nous utilisons la fameuse base iris. Les principales étapes abordées sont : l'entraînement de l'arbre sur l'échantillon d'apprentissage, les différents modes d'affichage de l'arbre, la prédiction et l'évaluation sur l'échantillon test, la modification des hyperparamètres et ses conséquences sur les performances du classifieur.

Mots-clés : python, scikit-learn, arbres de décision, decision tree
Vidéo : Arbres scikit-learn
Notebook + Données : Iris Dataset
Références :
"Python - Machine Learning avec scikit-learn", septembre 2015.
"Arbres de décision avec Scikit-Learn", février 2020.

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.

samedi 25 septembre 2021

(Vidéo) Excel – Filtres, tableaux croisés

Cette vidéo présente rapidement quelques outils pour la manipulation des tables de données dans le tableur Excel. Nous voyons tour à tour : les filtres automatiques et avancés, puis les tableaux croisés dynamiques. Une illustration de l'utilisation de la fonction SI(…) d'Excel est également proposée.

Mots-clés : tableur, excel, listes de données, filtres, TCD, tableaux croisés dynamiques
Vidéo : Filtres & TCD Excel
Fichier : Produits
Références :
Filtres automatiques, avancés, tableaux croisés dynamiques.

jeudi 16 septembre 2021

(Vidéo) Cross-validation, leave-one-out

Cette vidéo s'attache à montrer l'intérêt et le mode opératoire de deux techniques de rééchantillonnage dans l'évaluation des performances des classifieurs : la validation croisée (cross-validation) et le leave-one-out. Je les positionne en particulier par rapport aux techniques usuelles d'évaluation en resubstitution et en schéma holdout (apprentissage-test). Une démonstration sous Tanagra montre les écarts que l'on peut observer entre les taux d'erreurs estimés selon les approches adoptées avec une base (200 observations vs. 60 variables prédictives candidates) et un algorithme (arbres de décision avec C4.5) propices au sur-apprentissage. Ils sont très révélateurs de leurs comportements respectifs.

Mots-clés : cross-validation, leave-one-out, holdout, resubstitution, taux d'erreur, arbres de décision, c4.5
Vidéo : Cross-validation
Slides : Schéma validation croisée
Données : Sonar
Références :
"Validation croisée, Boostrap (Diapos)", février 2015.

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".

samedi 24 juillet 2021

(Vidéo) Extension Intel(R) pour scikit-learn

L'extension Intel pour Scikit-learn est un package de machine learning pour Python. Il reproduit les signatures de fonctions et les fonctionnalités de Scikit-learn, mais s'appuie en sous-main sur la librairie oneAPI Data Analytics Library (oneDAL) d'Intel. Il se présente comme un patch que l'on peut appliquer à des projets de machine learning développés (ou que nous sommes en train de développer) à l'aide de scikit-learn, sans voir à introduire d'autres modifications dans le code source. L'intérêt est de bénéficier des capacités de calcul accrues de la librairie d'Intel, en particulier en termes de temps de traitement.

Dans cette vidéo, nous appliquons les SVM (SVC de Scikit-learn) sur la base "segmentation" dupliquée 8 fois (18480 observations, 19 descripteurs). Par rapport à Scikit-learn, le temps d'exécution a été réduit d'un facteur de 1.43 dans la phase d'apprentissage, et de 100 fois (!) durant la prédiction en resubstitution.

Les tutoriels accessibles sur la page web du package montrent qu'il est possible d'obtenir des gains plus spectaculaires encore lorsque l'on exploite des machines autrement mieux charpentées que la mienne.

Mots-clés : svm, support vector machine, scikit-learn, oneDAL
Vidéo : Extension Scikit-learn - Python
Données et notebook : SVM Segmentation
Références :
"Intel(R) extension for Scikit-learn".
"oneAPI Data Analytics Library".

dimanche 18 juillet 2021

(Vidéo) Perceptron avec TensorFlow / Keras (Python)

Dans cette vidéo, nous implémentons des perceptrons simples et multicouches sous Python. Ce type de réseau de neurones est bien connu aujourd'hui. L'intérêt ici est d'étudier leur mise en œuvre et l'inspection des résultats avec l'utilisation du tandem de librairies TensorFlow et Keras qui font référence dans la pratique du deep learning.

Un précédent document rédigé (avril 2018) étudiait le même sujet, en traitant d'autres bases de données. Mis à part une commande spécifique pour la prédiction, nous constatons que les fonctionnalités spécifiques à notre étude (analyse prédictive) sont restées stables. Cet aspect est toujours rassurant pour la maintenance évolutive de nos projets de machine learning.

Mots-clés : réseau de neurones, perceptron simple, perceptron multicouches, deep learning, tensorflow, keras
Vidéo : TensorFlow / Keras - Python
Données et notebook : Segmentation dataset
Références :
"Deep Learning avec TensorFlow et Keras (Python)", avril 2018.

vendredi 16 juillet 2021

(Vidéo) Anaconda Python - Environnements

La gestion des packages peut se révéler délicate sous Anaconda Python. Certains projets nécessitent un pool de librairies avec des versions spécifiques, parfois même avec une version dédiée de l'interpréteur Python. Modifier en conséquence la configuration de base de la distribution n'est pas adaptée. Des problèmes d'incompatibilités peuvent apparaître. On risque même de compromettre le bon fonctionnement d'autres projets existants.

Le mécanisme des environnements permet de dépasser ces potentiels problèmes. L'idée est de créer un espace dédié pour chaque projet, au sein duquel nous installons la version de Python et les packages idoines. Ainsi, au fil du temps, nous avons l'assurance de retrouver à chaque démarrage de notre projet la configuration adéquate. Pour illustrer notre propos, nous montrons dans cette vidéo la création d'un environnement à l'aide du gestionnaire "conda". Nous installons alors les dernières versions (à ce jour) des librairies fameuses de deep learning, tensorflow et keras. Nous démarrons enfin le notebook Jupyter (qu'il faut également installer dans l'environnement) pour vérifier leur disponibilité. 

Mots-clés : anaconda python, conda, environnements, tensorflow, keras
Vidéo : Conda Environnement
Références :
Conda, Managing Environments.

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".

vendredi 4 juin 2021

(Vidéo) Régression avec la "proc reg" de SAS

 Dans cette vidéo, nous présentons l'utilisation de la PROC REG de SAS dans un exercice de régression linéaire multiple. Nous avons accès à SAS Studio en ligne via le programme SAS OnDemand for Academics. Nous effectuons un tour rapide des fonctionnalités de l'outil : la régression, l'inspection des résultats, les graphiques des résidus, la détection des points atypiques, la sélection de variables.

Mots-clés : économétrie, modèle linéaire, régression linéaire multiple
Vidéo : Régression multiple avec SAS
Données et code SAS : Consommation voitures
Références :
Documentation "PROC REG" de SAS.

(Vidéo) Régression linéaire avec Excel + Tanagra

Dans cette vidéo, nous présentons l'utilisation du tandem Excel (Tableur) – Tanagra dans un exercice de régression linéaire multiple. L'idée est d'exploiter les particularités des outils : le tableur pour la préparation des données et le post-traitement des résultats ; le logiciel spécialisé (Tanagra) pour la mise en œuvre des algorithmes de machine learning. Les thèmes abordés dans ce tutoriel sont : la régression, l'inspection des résultats, les graphiques des résidus, la détection des points atypiques, la sélection de variables et l'étude des colinéarités entre les exogènes.

Mots-clés : économétrie, modèle linéaire, régression linéaire multiple
Vidéo : Régression multiple avec Tanagra
Données : Consommation véhicules
Références :
Page de cours "Économétrie".

samedi 15 mai 2021

(Vidéo) Programmation parallèle sous R

Cette vidéo présente la programmation parallèle sous R via l'utilisation des packages "parallel"  et "foreach / doparallel". Nous reprenons l'idée du calcul du minimum d'un vecteur (déjà vu dans les vidéos précédentes : Dask / Python, Mapreduce sous R), mais avec un algorithme dégradé, en temps quadratique, pour mieux percevoir l'intérêt de la parallélisation des tâches lorsque les calculs deviennent complexes. Dès que la volumétrie est un tant soit peu conséquente, une meilleure utilisation des ressources des processeurs multicœurs s'avère décisive. Nous observerons aussi que les solutions proposées ("parallel" vs. "foreach / doparallel") ne présentent pas le même niveau de performances.

Mots-clés : logiciel r, programmation parallèle, parallel, foreach, doparallel
Vidéo : Parallel Programming with R
Programme : Calcul du minimum
Références :
"Programmation parallèle sous R", juin 2013.

mercredi 12 mai 2021

(Vidéo) Programmation MapReduce sous R

Cette vidéo présente la programmation MapReduce sous R via l'utilisation des packages de RHadoop. Elle s'attache en particulier à détailler les installations nécessaires au bon fonctionnement de la librairie "rmr2". Cette dernière n'est plus opérante avec les versions récentes de R (depuis les versions 3.5 et plus récentes en réalité). La solution préconisée passe par un downgrade (rétrogradage) de la version de R sous-jacente à RStudio, puis l'installation des librairies contemporaines. Un exemple de calcul du minimum d'un vecteur permet de vérifier la viabilité du dispositif.

Mots-clés : logiciel r, programmation parallèle, mapreduce, rmr, rhadoop
Vidéo : MapReduce R
Guide et programme : Calcul du minimum
Références :
"RHadoop".
"Programmation MapReduce sous R - Diapos", juillet 2015.
"MapReduce avec R", février 2015.
"Programmation R sous Hadoop", avril 2015.

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.

vendredi 7 mai 2021

(Vidéo) Gestion des DataFrame avec Dask (Python)

Nous continuons l'exploration de la librairie "dask" pour Python dans cette vidéo. Nous traitons de la gestion des données. "dask" met à notre disposition un équivalent du DataFrame de Pandas, mais avec des capacités spécifiques pour le traitement des données massives : un chargement en blocs (chunks) des gros fichiers, l'accès à des systèmes de fichiers distribuées (HDFS de Hadoop par ex.), le traitement différé, la parallélisation des calculs. Avantage incommensurable par rapport à Pandas, le dispositif est fonctionnel même lorsque les données ne tiennent pas en mémoire centrale.

Mots-clés : python dask, dataframe, pandas
Vidéo : DataFrame avec Dask
Données et programme : CovType
Références :
"Dask: a flexible library for parallel computing in Python".
"R et Python, performances comparées", février 2019.

mardi 4 mai 2021

(Vidéo) Programmation parallèle avec Dask

Nous discutons de la programmation parallèle sous Python dans cette vidéo. Nous utilisons la librairie "dask". L'objectif est d'exploiter au mieux les capacités multicœurs du processeur de ma machine de test. Les exemples montrent que la parallélisation des tâches ne devient décisive que lorsque nous traitons un certain volume de données. En deçà, les gains issus de la parallélisation ne compensent pas le temps consommé par les opérations supplémentaires que nécessitent la préparation des données et l'organisation des structures de calculs.

Mots-clés : python, dask
Vidéo : Parallel programming with Dask
Programme : Min et Mean sous Python
Références :
"Dask: a flexible library for parallel computing in Python".
"Programmation MapReduce sous R", juillet 2015.
"Programmation parallèle sous R", juin 2013.

vendredi 30 avril 2021

(Vidéo) Cost-sensitive learning

Dans cette vidéo, il est question de la prise en compte des coûts de mauvais classement en analyse prédictive. Les erreurs de prédiction ne sont pas toutes équivalentes. Classer en bonne santé une personne malade n'induit pas les mêmes conséquences que l'inverse par exemple. Cette information additionnelle est portée par une matrice dite de "coûts de mauvais classement". Elle traduit en valeurs numériques les répercussions des erreurs. Notre rôle consiste à utiliser à bon escient cette matrice pour guider la modélisation, mais aussi pour évaluer et comparer les performances des classifieurs.

Mots-clés : logiciel R, package rpart, MASS, lda, matrice de coûts de mauvais classement
Vidéo : Cost-sensitive learning
Données, slides, notebook : Breast cancer
Références :
Documentation MLR, "Cost-Sensitive Classification".
"Pratique de la régression logistique", version 2.0, septembre 2009.
"Coûts de mauvais classement en apprentissage supervisé", janvier 2009.

mercredi 14 avril 2021

Econométrie par Régis Bourbonnais

Cette fiche de lecture concerne la 10ème édition de l'ouvrage "Économétrie" de Régis Bourbonnais, une véritable institution qui a marqué et continue à marquer plusieurs générations de férus de régression et de traitement des séries temporelles. Le livre s'adresse aux étudiants de niveau licence et master en filière économétrie. En réalité, il est susceptible d'intéresser tous les étudiants des composantes à fort contenu mathématique et statistique (MIASHS, BUT STID, etc.).

En son temps, la 2nde édition du même ouvrage, celle de 1998, m'avait inspiré lorsque j'ai eu à élaborer mon cours d'économétrie pour notre licence il y a une quinzaine d'années (corrélation, régression simple et multiple, aspects pratiques de la régression).

Fiche de lecture : "Econométrie" - 10ème édition - Dunod - 2018
Site web de l'auteur : https://regisbourbonnais.dauphine.fr/

vendredi 9 avril 2021

(Vidéo) Model Explainability par H2O

Dans cette vidéo, je reprends l'idée de l'interprétation des modèles exposée précédemment (voir "Outils pour l'interprétation des modèles", avril 2021). Nous explorons les fonctionnalités de la librairie "H2O" cette fois-ci. Elle propose les instruments usuels dans un cadre simplifié (importance des variables, partial dependence plot, shapley values). Je mets surtout un focus particulier sur le graphique "individual conditional expectation plot (ICE)" qui permet de caractériser l'effet marginal d'une variable explicative sur la variable cible lors du classement d'un individu supplémentaire. En d'autres termes, il enrichit la lecture d'une prédiction en mettant en exergue l'évolution de la conclusion (la probabilité d'appartenance à la modalité cible) en fonction de la variation de la variable explicative.

Mots-clés : python, h2o, partial dependence plot, shapley additive explanations, individual conditional expectation
Vidéo : Model Explainability
Données et Notebook Python : Pima H2O Interpretation
Références :
Documentation H2O, "Model Explainability", version 3.32.1.1.
"Machine Learning avec H2O (Python)", Janvier 2019.
"(Vidéo) Outils pour l'interprétation des modèles", avril 2021.

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.

vendredi 2 avril 2021

(Vidéo) Python – AutoML de Scikit-Learn

Nous explorons la solution AutoML basée sur la librairie "scikit-learn" dans cette vidéo. Le package "auto-sklearn" explore l'espace des solutions en croisant les algorithmes d'apprentissage automatique, les hyperparamètres associés, et les techniques de préparation des données. Il s'appuie sur un mécanisme de recherche sophistiqué plutôt qu'un simple brute force. Particularité très intéressante, il utilise également l'expérience acquise durant le traitement d'autres bases benchmark. Un rapprochement à partir des méta-informations extraites des jeux de données permet de situer le problème en cours de traitement.

Nous reprenons dans ce tutoriel le même schéma d'évaluation mis en place durant l'étude de la solution AutoML de la librairie H2O.

Mots-clés : python, automl, scikit-learn, auto-sklearn
Vidéo : Auto-Sklearn
Données : Spam auto-sklearn
Références :
Auto-sklearn – Efficient and Robust Automated Machine Learning (2015, 2020).
"Python – Machine Learning avec scikit-learn", septembre 2015.

dimanche 28 mars 2021

(Vidéo) Python – AutoML de H2O

Il est question de la fonction AutoML de la librairie H2O dans cette vidéo. Pour un temps de calcul défini à l'avance, elle se charge d'expérimenter des scénarios de modélisation prédictive en testant différents algorithmes, et en jouant sur les valeurs de leurs paramètres. Au-delà de l'identification de la configuration la plus performante, elle propose également une solution additionnelle composée par la combinaison de tous les modèles essayés ou des meilleurs modèles pour chaque famille d'algorithmes (linéaires, deep learning, gradient boosting machine, random forest, etc.). Le principal intérêt d'AutoML est de nous fournir une approche clé en main qui permet de se donner une idée sur les performances atteignables sur un jeu de données quelconque, avec un temps d'exécution maîtrisé. Charge à nous par la suite de développer une solution circonstanciée en rapport avec les données étudiées et de nous comparer à la référence que représenterait AutoML.

Mots-clés : python, h2o, automl, scikit-learn
Vidéo : AutoML
Données : Spam H2O
Références :
H2O AutoML – Automatic Machine Learning
"Machine learning avec H2O (Python)", janvier 2019.
"Python – Machine Learning avec scikit-learn", septembre 2015.

dimanche 21 mars 2021

(Vidéo) Python - Le package Yellowbrick

Il est question de la librairie "Yellowbrick" dans cette vidéo. Elle propose des outils pour visualiser graphiquement les process ou les résultats des algorithmes de machine learning. Elle est adossée à "scikit-learn", incontournable dans la pratique de la data science sous Python. Nous explorons tour à tour les fonctionnalités graphiques de Yellowbrick dans le cadre de l'analyse prédictive : l'étude de la redondance et de la pertinence des variables prédictives, leur importance dans la modélisation, la sélection de variables par l'élimination récursive (RFE, recursive feature elimination), les représentations des performances des modèles (matrice de confusion, rapport de performance, courbe ROC), la modulation du seuil d'affectation, le choix des valeurs des paramètres des algorithmes de machine learning, l'identification de la taille nécessaire des données (en nombre d'observations) pour modéliser les "pattern" qu'elles recèlent.

Mots-clés : python, yellowbrick, scikit-learn
Vidéo : Yellowbrick
Données et Notebook Python : Spam Yellowbrick
Références :
Yellowbrick : Machine Learning Visualization
"Python – Machine Learning avec scikit-learn", septembre 2015.

lundi 8 mars 2021

(Vidéo) Stratégies pour classes déséquilibrées

Dans cette vidéo, j'aborde le problème des classes déséquilibrées en classement binaire. J'ai essayé de mettre en évidence plusieurs résultats importants.

Modéliser à partir d'un échantillon d'apprentissage fortement déséquilibré n'est pas vain. C'est ce que nous montrent la courbe ROC et le critère AUC calculés sur un échantillon test représentatif. Le mécanisme d'affectation est en revanche défectueux. C'est ce que nous dit la matrice de confusion et les indicateurs associées (taux de reconnaissance, rappel, précision, F-Score).

La solution populaire qui consiste à rééquilibrer artificiellement les données d'apprentissage par sous ou sur échantillonnage revient en réalité à recalibrer les probabilités d'affectation fournies par le modèle. Elle ne modifie pas les propriétés intrinsèques de ce dernier. Elle pèse en revanche sur le mécanisme d'affectation des classes.

Une solution alternative préconisée dans ce tutoriel serait de manipuler directement le seuil d'affectation dans le classement binaire. Je montre une procédure d'optimisation basée sur l'échantillon d'apprentissage pour obtenir de meilleures performances en classement, mesurée à l'aide du F1-Score sur l'échantillon test. Cette stratégie permet de dépasser le problème délicat de la détermination de la proportion des classes des approches basées sur l'échantillonnage.

Mots-clés : logiciel R, régression logistique, glm, courbe roc, auc, F1-Score, F-Measure
Vidéo : Classes déséquilibrées
Données et programme R : Imbalanced dataset
Références :
"Imbalanced Classification Problems", mlr documentation.
"F-Score", Wikipédia.
"Traitement des classes déséquilibrées", mai 2010.
"Coûts de mauvais classement en apprentissage supervisé", janvier 2009.

samedi 6 mars 2021

(Vidéo) Google Colab

Dans cette vidéo, je présente Google Colab (Google Colaboratory). Il s'agit d'un outil que met à notre disposition Google pour développer des applications de machine learning (ipynb). Google Colab permet d'écrire et exécuter du code Python dans un navigateur, à la manière de Jupyter Notebook, sauf que nous travaillons directement dans le cloud. Il présente plusieurs avantages : il nous affranchit d'une installation locale ; les librairies de machine learning le plus populaires sont déjà installées et constamment mises à jour ; nous avons la possibilité d'installer facilement les packages spécifiques (!pip install …) ; nous bénéficions de la puissance de calcul de Google, avec des accès aux GPU et TPU, les gains en temps de traitement sont parfois faramineux par rapport au fonctionnement sur des machines locales aussi puissantes soient-elles ; nous disposons d'un espace de stockage pour nos données et nos projets ; nous avons la garantie de toujours disposer du même environnement de travail quelle que soit la machine que nous utilisons pour nous connecter ; enfin, une adresse Gmail suffit pour disposer de l'outil.

Je profite de cette présentation pour décrire la construction de la courbe ROC (receiving operating characteristics) dans un problème de classement binaire. J'explique pourquoi ce dispositif d'évaluation des classifieurs est plus générique que la matrice de confusion et ses indicateurs associés. Je parle aussi du critère AUC (area under curve) qui lui est associé. Nous utilisons les données "mushroom", où l'objectif est de déterminer la comestibilité des champignons à partir de leurs caractéristiques, pour illustrer notre propos.

Mots-clés : google colab, courbe roc, roc curve, auc, aire sous la courbe, régression logistique, scikit-learn
Vidéo : Google Colab
Données et programme : Mushroom
Références :
"Courbe ROC", Support de cours.
"Evaluation des classifieurs – Quelques courbes", octobre 2009.
"TD de Régression Logistique – TD 4.b", mars 2020.
"Courbe ROC pur la comparaison de classifieurs", mars 2008.

vendredi 26 février 2021

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

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

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

mercredi 17 février 2021

(Vidéo) AMADO-online

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

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

dimanche 14 février 2021

(Vidéo) One hot encoding

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

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

mardi 9 février 2021

(Vidéo) Subdivision apprentissage-test avec R

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

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

lundi 25 janvier 2021

(Vidéo) Sélection forward en ADL

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

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

dimanche 24 janvier 2021

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

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

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

jeudi 21 janvier 2021

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

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

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

mercredi 20 janvier 2021

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

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

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

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

jeudi 14 janvier 2021

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

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

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

lundi 4 janvier 2021

(Vidéo) Déploiement de Pipeline Python

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

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

samedi 2 janvier 2021

Bonne Année 2021 - Bilan 2020

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

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

Il y a quand même des points positifs.

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

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

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

Ricco.

Diaporama : Tanagra – Bilan 2020