dimanche 29 novembre 2015

Random Forest et Boosting avec R et Python

Ce tutoriel fait suite au support de cours consacré au "Bagging, Random Forest et Boosting" (cf. références). Nous montrons l’implémentation de ces méthodes sur un fichier de données. Nous suivrons à peu près la même trame que dans le support, c.-à-d. nous décrivons tout d’abord la construction d’un arbre de décision, nous mesurons les performances en prédiction, puis nous voyons ce que peuvent apporter les méthodes ensemblistes. Différents aspects de ces méthodes seront mis en lumière : l’importance des variables, l’influence du paramétrage, l’impact des caractéristiques des arbres sous-jacents (base classifier), etc.

Dans un premier temps, nous mettrons l’accent sur R (packages rpart, adabag et randomforest) et Python (package scikit-learn). Disposer d’un langage de programmation permet de multiplier les analyses et donc les commentaires. Evaluer l’influence du paramétrage sur les performances sera notamment très intéressant. Dans un deuxième temps, nous étudierons les fonctionnalités des logiciels qui fournissent des solutions clés en main, très simples à mettre en œuvre, plus accessibles pour les personnes rebutées par la programmation, avec Tanagra et Knime.

Mots clés : logiciel R, programmation R, arbre de décision, adabag package, rpart package, randomforest package, Python, scikit-learn package, bagging, boosting, random forest
Composants : BAGGING, RND TREE, BOOSTING, C4.5, DISCRETE SELECT EXAMPLES
Lien : Baggin, Random Forest et Boosting
Fichier : randomforest_boosting_fr.zip
Références :
R. Rakotomalala, "Bagging, Random Forest, Boosting - Diapos", novembre 2015.

jeudi 19 novembre 2015

Bagging, Random Forest, Boosting - Diapos

Les techniques ensemblistes de type bagging / boosting jouissent d’une forte popularité dans la recherche en machine learning. Les versions fondatrices sont assez anciennes, je me rappelle pour ma part avoir programmé le bagging dans la version 2.5 de Sipina, en 1996, lorsque Breiman avait mis en ligne le brouillon de son article qui sera par la suite publié dans Machine Learning. Leurs performances prédictives justifient amplement cette notoriété. Mais, notamment parce qu’elles ne se prêtent pas à des interprétations fines des relations de cause à effet, elles sont peu utilisées dans les entreprises qui s’appuient sur des processus « classiques » de scoring et d’analyse prédictive (j’encadre énormément de stage d’étudiants en master professionnels).

Du moins jusqu’à présent. En effet, avec l’essor du data science, des entreprises fortement novatrices s’investissent de plus en plus dans cette voie (le nombre d’offres d’emploi où le terme data science apparaît explicitement augmente rapidement sur le site de l’APEC). La recherche appliquée devient source de dynamisme et de productivité, dans de très nombreux domaines. La valorisation des données massives devient cause nationale.  Et je vois arriver une demande patente en faveur des techniques avancées de machine learning.  Je me suis dit qu’il était temps d’introduire ce thème dans mon cours de data mining en Master SISE (Statistique et Informatique) à l’Université Lyon 2.

Mots-clés : bagging, boosting, random forest, forêts aléatoires, arbres de décision, package rpart, package adabag, package randomforest, logiciel R
Lien : Bagging - Random Forest - Boosting
Références :
Breiman L., « Bagging Predictors », Machine Learning, 26, p. 123-140, 1996.
Breiman L., « Random Forests », Machine Learning, 45, p. 5-32, 2001.
Freund Y., Schapire R., « Experiments with the new boosting algorithm », International Conference on Machine Learning, p. 148-156, 1996.
Zhu J., Zou H., Rosset S., Hastie T., « Multi-class AdaBoost », Statistics and Its Interface, 2, p. 349-360, 2009.

samedi 31 octobre 2015

Classification automatique sous R

Un collègue à la recherche d’un tutoriel introductif à la classification automatique (typologie, clustering en anglais) avec R m’a contacté récemment. A ma très grande surprise, je me suis rendu compte que je n’en avais pas moi-même écrit. Pourtant, j’ai abordé plusieurs fois le thème, mais sous l’angle de traitements sophistiqués (enchaînement k-means et cah, déploiement, classification sur données mixtes, …).

Voici donc un petit guide montrant les principales commandes sous R, essentiellement la classification ascendante hiérarchique (CAH) et la méthode des centres mobiles (k-means). Pour ajouter un peu de sel à l’affaire, je décris des pistes pour la détermination du nombre de classes pour les k-means, j’aborde également la question de l’interprétation des groupes à l’aide de techniques statistiques univariées (statistiques comparatives) et multivariées (analyse en composantes principales - ACP). La complémentarité de cette dernière avec la classification automatique fait toujours autant de merveilles.

Mots clés : logiciel R, classification ascendante hiérarchique, CAH, méthode des centres mobiles, k-means, package fpc, analyse en composantes principales, ACP
Composants : hclust, kmeans, kmeansruns
Lien : cah et k-means avec R 
Données : cah_kmeans_avec_r.zip
Références :
Marie Chavent, Page Teaching, Université de Bordeaux (consulté oct. 2015).

lundi 28 septembre 2015

Python - Econométrie avec StatsModels

StatsModels est un package dédié à la modélisation statistique. Il incorpore un grand nombre de techniques économétriques telles que la régression linéaire, le modèle linéaire généralisé, le traitement des séries temporelles (ARIMA, etc.).

Dans ce tutoriel, nous essaierons de cerner les potentialités de StatsModels en déroulant  une étude de cas en régression linéaire multiple. Nous aborderons tour à tour : l’estimation des paramètres du modèle à l’aide de la méthode des moindres carrés ordinaires, la mise en œuvre de quelques tests statistiques, la vérification de la compatibilité de la distribution des résidus avec l’hypothèse de normalité, la détection des points atypiques et influents, l’analyse de la colinéarité, la prédiction ponctuelle et par intervalle.

Mots clés : programmation python, économétrie, statsmodels, moindres carrés ordinaires, mco
Lien : fr_Tanagra_Python_StatsModels.pdf
Fichier : fr_python_statsmodels.zip
Références :
StatsModels: Statistics in Python
Python Package Index: StatsModels

mardi 22 septembre 2015

R en ligne avec R-Fiddle

R-Fiddle est un environnement de programmation R accessible en ligne. Il permet de coder et de faire exécuter un programme R.

Ce type de solution est adapté à un utilisateur nomade qui change fréquemment de machine. Sous condition de disposer d’une connexion internet, il peut travailler sur un projet sans avoir à se préoccuper de l’installation de R sur des PC dont il ne dispose pas de droits administrateurs de toute façon. Le travail collaboratif est un autre contexte où ce dispositif peut se révéler particulièrement avantageux. Il nous permet de nous affranchir des échanges de fichiers toujours hasardeux (j’ai pas reçu ton e-mail ! qui n’a pas été confronté à cette dénégation péremptoire…) avec une gestion des versions aléatoire. Enfin, la solution nous permet de travailler sur un front-end léger, un ordinateur portable par exemple, et de déporter les calculs sur un serveur distant taillé en conséquence (dans le cloud dirait-on aujourd’hui pour faire poétique).

Dans ce tutoriel, nous étudions succinctement les fonctionnalités de R-Fiddle.

Mots clés : logiciel R, programmation R, cloud computing, analyse discriminante, régression logistique, arbre de décision, klaR package, rpart package, sélection de variables
Lien : fr_Tanagra_R_Fiddle.pdf
Fichier : fr_r_fiddle.zip
Références :
R-Fiddle - http://www.r-fiddle.org/#/

mercredi 16 septembre 2015

Python - Machine learning avec scikit-learn

Honnêtement, mon intérêt pour Python doit beaucoup à la découverte des packages de statistique et de data mining qui l’accompagnent. « scikit-learn » en fait partie. Il se revendique comme une librairie de « machine learning ».

Machine learning (apprentissage automatique en français, c’est moins sexy d’un coup) est un champ d’étude de l’intelligence artificielle, qui est une branche de l’informatique. Quand on s’intéresse de plus près aux démarches  et aux techniques, on se rend vite compte que nous sommes très proches de ce qu’on appelle par ailleurs modélisation statistique, analyse exploratoire des données, ou encore techniques de data mining. Je le dis souvent à mes étudiants, plutôt que de s’intéresser aux origines ou aux communautés, il est plus profitable de s’intéresser aux finalités. Et scikit-learn propose une panoplie d’outils assez large, couvrant en grande partie l’activité typique du data analyst : l’apprentissage supervisé avec le classement et la régression, l’apprentissage non supervisé (clustering), la réduction de dimension (comprenant les méthodes factorielles), la sélection de modèles, et le preprocessing des données (transformation de variables).

Ce support détaille quelques fonctionnalités de scikit-learn à travers le prisme de l’analyse prédictive. Plusieurs thèmes sont abordés : la construction des modèles, leur évaluation sur un échantillon test, l’utilisation de la validation croisée lors du traitement des petits échantillons, la recherche des paramètres optimaux des algorithmes d’apprentissage, la sélection de variables. Nous nous appuyons sur le fameux fichier PIMA que j’utilise beaucoup dans mes enseignements en raison de ses vertus pédagogiques.

Mots clés : langage python, numpy, scikit-learn, machine learning, data mining, modélisation statistique, validation croisée, matrice de confusion, taux d'erreur, taux de succès, sensibilité, rappel, précision, courbe de gain, courbe lift cumulée
Lien : Machine learning avec scikit-learn
Fichiers : Exemples illustratifs
Références :
Vidéo : Régression Logistique avec Python / Scikit-Learn, juillet 2021
Site officiel : scikit-learn - Machine Learning in Python

dimanche 30 août 2015

Python - Statistiques avec SciPy

SciPy est une bilbilothèque de calcul scientifique pour Python. Elle couvre de nombreux domaines (intégration numérique, interpolation, optimisation, traitement d’images,  etc.). Dans ce support, nous nous intéressons plus particulièrement aux routines de statistique et de classification automatique (clustering).

SciPy s’appuie sur les structures de données de NumPy (vecteurs, matrices).

Mots clés : langage python, numpy, matrice, array, scipy, statistique, classification automatique, apprentissage non-supervisé, clustering
Lien : Statistiques avec SciPy
Fichiers : Exemples illustratifs
Références :
SciPy Reference sur SciPy.org
The Glowing Python, "K-Means clustering with SciPy", 2012.
Emergence Wiki, "Introduction aux tests de normalité avec Python", 2015.
Python - Official Site

vendredi 14 août 2015

Python - Les matrices avec NumPy

Ce support présente la manipulation des matrices via NumPy. Le type array est commun aux vecteurs et matrices, la spécificité tient à l’adjonction d’une seconde dimension pour disposer les valeurs au sein d’une structure lignes x colonnes.

Les matrices ouvrent la porte à des opérateurs qui jouent un rôle fondamental en modélisation statistique et en statistique exploratoire (ex. inversion de matrice, résolution d’équations, calcul des valeurs et des vecteurs propres, décomposition en valeurs singulières, etc.).

Mots clés : langage python, numpy, matrice, array, création, extraction
Lien : Les matrices avec NumPy
Fichiers : Exemples illustratifs
Références :
NumPy Reference sur SciPy.org
Pucheu, Corsellis, Bansard, "Python et le module NumPy", 2001.
Haenel, Gouillart, Varoquaux, "Python Scientific Lecture Notes", lu en août 2015.
Python - Official Site

mardi 11 août 2015

Python - Les vecteurs avec NumPy

Le module « NumPy » (Numeric Python) est particulièrement populaire sous Python parce qu’il propose un ensemble de structures et de routines permettant de gérer efficacement les grands tableaux. Il est de fait sous jacent à de très nombreux modules de calcul scientifique et de manipulation de fichiers numériques (ex. image). Les modules de statistique et de data science ne font pas exception. La très grande majorité d’entre eux utilisent Numpy. Il est donc très important pour nous de cerner au mieux les principales fonctionnalités de cet outil.

Dans ce support, je présente le traitement des vecteurs avec les outils de Numpy. Je le présente comme un cas à part en veillant à ne pas déborder sur la gestion des matrices car ce dernier thème fera l’objet d’un autre document.

Mots clés : langage python, numpy, vecteur, array, création, extraction
Lien : Les vecteurs avec NumPy
Fichiers : Exemples illustratifs
Références :
NumPy Reference sur SciPy.org
Pucheu, Corsellis, Bansard, "Python et le module NumPy", 2001.
Haenel, Gouillart, Varoquaux, "Python Scientific Lecture Notes", lu en août 2015.
Python - Official Site

vendredi 7 août 2015

Python - La distribution Anaconda

Arrivé à ce stade de mon cours (cf. les séances précédentes), je souhaitais l’orienter vers le calcul scientifique, en particulier la programmation statistique. J’avais identifié quelques packages comme les incontournables numpy et scipy, d’autres également avaient attiré mon attention, pandas, statsmodels, ou encore scikit-learn par exemple.

A priori, la démarche est simple. Il suffit d’installer ces packages pour pouvoir les exploiter. Et là j’ai compris ma douleur. Non pas que l’opération soit compliquée en définitive, mais parce que trouver une documentation simple et directement reproductible sous Windows est apparemment très difficile (en août 2015). Je suis finalement tombé sur une excellente page qui détaille très bien la démarche. Mais ça m’a posé question. Je voyais mal mes étudiants jongler avec ce type de manipulations sur les machines hyper protégées de nos salles informatiques. Les problèmes de configurations qui bouffent une séance TP, où tout le monde reste les bras ballants en attendant que les machines fonctionnent correctement, j’en ai suffisamment vécu comme cela. Il m’est apparu préférable d’opter pour une solution plus avenante.

Et je l’ai trouvée en Anaconda. Il s’agit d’une distribution alternative de Python. Elle intègre de manière standard un grand nombre de packages, notamment ceux dédiés au calcul scientifique. Ils sont par conséquent disponibles dès l’installation de la distribution. Et pour ceux qui souhaitent aller plus loin, pour une mise à jour ou pour l’intégration d’un package non initialement prévu par exemple, elle propose le gestionnaire de package Conda qui semble simplifier grandement les opérations. Enfin, Anaconda propose l’environnement de développement Spyder, plus sympathique que l’usuel IDLE, et la console IPython, là également avec des fonctionnalités supplémentaires.

Ce tutoriel décrit brièvement l’installation et l’utilisation de la distribution Anaconda.

Mots clés : langage python, anaconda, EDI, environnement de développement intégré, spyder, ipython
Lien : La distribution Anaconda
Références :
Anaconda - Scientific Python Distribution
Python - Official Site

mardi 4 août 2015

Les fichiers sous Python - Diapos

Construire des applications un tant soit peu évoluées nécessite de savoir stocker les informations sur un support non volatile. C’est le rôle des fichiers. Ils permettent  de pérenniser les données, ils peuvent également servir de support pour les communications inter-applications.

Ce support est consacré aux fichiers sous Python. Nous nous focalisons sur les fichiers texte non-structuré ou structuré. Dans ce dernier cas, nous traiterons des formats json (javascript objet notation) et xml (extensible markup language), largement utilisés pour l’échange de contenus complexes.

Mots clés : langage python, fichier texte, json, xml
Lien : Les fichiers sous Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

vendredi 31 juillet 2015

Les classes sous Python - Diapos

Ce support décrit la déclaration, la définition, l’implémentation et l’instanciation des classes sous Python. La présentation est conventionnelle pour que la transposition aux autres langages ne soit pas déroutante. Python en effet intègre des particularités qui sont étonnantes je trouve. Les détailler amènerait des fausses idées qui pourraient être préjudiciables aux étudiants lorsqu’ils étudieront d’autres langages objets. J’ai donc préféré les passer sous silence.

Les mécanismes de classes telles que l’héritage et le polymorphisme sont abordés, que même que les collections d’objets.

Mots clés : langage python, classe, instance, programmation objet, champs, méthodes, héritage, polymorphisme, liste polymorphe, variable de classe
Lien : Les classes sous Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

mardi 28 juillet 2015

Collection d'objets sous Python - Diapos

Ce support traite des collections d’objets. Python fournit des outils souples et faciles à utiliser. Les tableaux peuvent être de taille fixe ou variable, modifiables ou non, l’accès peut être réalisé avec un indice ou des plages d’indices. L’utilisation des indices négatifs n’est pas commun et semble, à ma connaissance, être spécifique à Python.

Le type dictionnaire permettant de s’affranchir des indices mérite une mention spéciale.

Un aparté à propos des chaînes de caractères qui constituent un cas particulier des listes est également proposé. Des méthodes qui leur sont propres ouvre la porte à des traitements très puissants (ex. recherche, comptage de séquences, etc.).

Mots clés : langage python, tuple, liste, dictionnaire, chaîne de caractères
Lien : Collections d'objets sous Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

vendredi 24 juillet 2015

Fonctions et modules sous Python - Diapos

Ce support décrit l’élaboration et l’utilisation des fonctions sous Python. Les fonctions sous Python rappellent celles de R, entres autres : les paramètres ne sont pas typés, il est possible de leur attribuer des valeurs par défaut, il est possible de spécifier leur nom lors de l’appel. Le mécanisme des variables globales est un peu particulier en revanche.

Les modules permet d’améliorer la modularité des applications. Leur création et leur usage est réellement facile sous Python. Des modules standards directement utilisables sont disponibles (math, random, etc.).

L'installation et la mise en oeuvre des modules spécialisés (statistique, etc.) seront décrits dans un autre support.

Mots clés : langage python, fonctions, procédures, modules, passage de paramètres, portée des variables
Lien : Programmation modulaire sous Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

mercredi 22 juillet 2015

Introduction à Python - Diapos

Mon premier contact avec Python date du début des années 2000. Un langage de programmation inconnu - pour moi - m’intéresse toujours. J’avoue que l’intérêt ne m’a pas forcément sauté aux yeux après avoir effectué quelques essais. Un langage objet de plus, interprété de surcroît (et l’interpréteur ne brillait pas par ses performances à cette époque), ne me semblait pas follement enthousiasmant par rapport à l’existant.

Ma curiosité a de nouveau été attisée au milieu des années 2000 lorsque je me suis intéressé au logiciel de data mining Orange. En effet, ce dernier proposait une librairie pour Python, donnant à l’utilisateur de définir des séquences de traitement évoluées permettant de mener des études complètes, en partant de la préparation des données, en passant par la construction de modèles prédictifs et leur évaluation, pour aboutir à leur déploiement.

C’était un moment crucial parce qu’à la même période, je m’interrogeais sur l’opportunité d’enseigner R en tant que langage de programmation - et non pas en tant que simple logiciel de statistique, la nuance mérite d’être soulignée - à l’Université. Finalement, j’avais fait le pari de R. Bien m’en a pris, c’est un cours qui est apprécié, et la page web dédiée est la plus visitée de mon site.

Ces dernières années, j’ai vu Python arriver (revenir) en force, avec deux caractéristiques qui m’interpellent forcément : il est devenu un des langages privilégiés pour l’enseignement de la programmation ; il est très populaire dans le domaine du data science, au point d’être positionné comme un concurrent sérieux pouvant mettre à mal la suprématie de R. Hé ben dis donc, manifestement, il est temps de reconsidérer la question attentivement.

Pourquoi cette percée de Python ? La question est vaste. Pour ma part, j’ai identifié plusieurs aspects qui m’intéressent particulièrement. (1) Il possède toutes les fonctionnalités d’un langage de programmation évolué, et il est pourtant simple à appréhender. Pour préparer mon cours et me familiariser avec le langage, je me suis échiné à refaire tous les TP de mes cours de programmation. Je les ai réalisés en un temps record alors que je ne connaissais pas du tout le langage. Ça ne trompe pas ce genre de choses. (2) Il propose aujourd’hui des bibliothèques de calcul performantes pour le traitement et l’analyse de données, en particulier pour le machine learning. Celui d’Orange que j’avais cité plus haut, mais aussi scikit-learn que je dois absolument tester dans un prochain tutoriel. Et il y en a d’autres. (3) Un élément clé dans le contexte actuel où le big data provoque la frénésie, voire l’hystérie, de tous les acteurs de la société, il permet d’implémenter des applications dans des nouveaux environnements tels que Hadoop (programmation map reduce) ou Spark (en utilisant les API de MLlib). Ouh là là, là aussi je sens que des tutoriels vont venir. (4) Enfin, par rapport à R, il présente l’avantage d’être plus généraliste, plus adapté à un cours générique d’initiation à la programmation. R en revanche me semble plus approprié lorsqu’il s’agit d’approfondir la programmation statistique.

J’ai donc décidé de passer à Python mon cours de programmation en L3 IDS. Ce premier post me donne l’opportunité de partager mes diapos pour la première séance où j’introduis les principales notions du langage, avant de lancer les étudiants sur une série d’exercices sur machine. Les étudiants sont assez hétérogènes, certains ont déjà programmé dans d’autres langages, d’autres ont eu à peine 6 heures d’algorithmie dans les jambes. Je dois schématiser autant que possible, voire simplifier, pour ne laisser personne en chemin.

D’autres diapos suivront, abordant les différents thèmes de la programmation Python.

Mots clés : langage python, types de données, affectation, calculs, structures algorithmiques, branchements conditionnels, boucles
Lien : Introduction à Python
Fichiers : Exemples illustratifs
Références :
Python - Official Site

mardi 14 juillet 2015

Programmation MapReduce sous R - Diapos

Tous les étés, j’essaie de faire le bilan de mes cours et je regarde ceux que je pourrais faire évoluer. Introduire le principe MapReduce dans mon cours de programmation R en Master SISE me titillait depuis un moment déjà. J’avais écrit plusieurs documents à cet effet (qui sont parmi les plus consultés sur ce site d’ailleurs). Mais convertir un tutoriel en cours n’est pas aussi simple qu’on pourrait le penser. Une séance se construit et doit suivre une certaine progression. La pire des configurations qui puisse arriver, c’est l’étudiant les bras ballants devant le PC qui me sort « je ne comprends pas du tout ce qu’on doit faire ». Ouh là là, c’est généralement très mauvais signe ce genre de choses. Un thème supplémentaire veut dire aussi qu’il faudra au mieux tasser les autres chapitres sur les séances restantes. Il faut être prudent, à vouloir tout faire, on ne fait pas grand chose souvent.

Tout cela longuement soupesé, voici les diapos que j’utiliserai pour la 7ème séance de mon cours de programmation R. Il ne me reste plus qu’à élaborer les exercices pratiques qui complètent le créneau horaire. L’idée comme d’habitude est de commencer avec des questions simples avant d’embrayer avec des sujets nettement compliqués qui devraient - sans avoir à le demander explicitement, toute l’astuce est là - emmener les étudiants à les finir en travail personnel.

Mots-clés :  big data, big data analytics, mapreduce, package rmr2, hadoop, rhadoop, logiciel R, langage R
Lien : Programmation MapReduce sous R
Références :
Tutoriel Tanagra, "MapReduce avec R", février 2015.
Tutoriel Tanagra, "Programmation R sous Hadoop", avril 2015.

dimanche 5 juillet 2015

Big Data et Machine Learning...

... Manuel du data scientist

« Big data », « data science » sont des termes dont la popularité est croissante dixit Google Trends. « Machine learning » revient à la mode. Regroupant ces trois appellations, cet ouvrage s’inscrit à l’évidence dans l’air du temps. Son objectif est de clarifier les différentes notions qui gravitent dans la sphère « big data », un domaine que tout le monde identifie comme porteur de perspectives majeures pour les années à venir.

Il se propose de nous guider dans la compréhension des enjeux des projets de data science, en traitant des concepts théoriques (nouvelles approches de stockage des données, méthodes d’apprentissage automatique), et en décrivant les technologies et les outils. Il s’adresse aux décideurs informatiques, aux professionnels du décisionnel et des statistiques, aux architectes informatiques, aux responsables métiers.

Mots clés : big data, data science, data scientist, machine learning, statistical learning
Lien : Résumé
Références :
P. Lemberger, M. Batty, M. Morel, J.L. Rafaëlli, "Big Data et Machine Learning - Manuel du data scientist", Dunod, 2015.

vendredi 19 juin 2015

Data Science Studio

L’évolution du métier de statisticien s’accompagne de l’arrivée de logiciels de nouvelle génération. Mon attention a été attirée récemment par le logiciel Data Science Studio (DSS) de la société Dataiku. Un logiciel de plus me direz-vous. Oui et non. Certes, la trame du processus d’analyse reste la même : accéder aux données, les préparer, créer des modèles statistiques, valider ces derniers. Mettre au point des méthodes et des implémentations performantes reste d’actualité. C’est le mode opératoire proposé qui est nouveau. L’outil fonctionne de manière comparable à Azure Machine Learning Studio de Microsoft que j’avais présenté sur ce blog bien que, fondamentalement, il soit différent parce que ne repose pas exclusivement sur le paradigme SaaS (logiciel en tant que service) .

Les traits communs de ces outils de nouvelle génération peuvent se résumer de la manière suivante (de manière non exhaustive) : architecture client-serveur, travail en ligne et pilotage via une interface web, possibilité de mettre en place un travail collaboratif, simplification à l’extrême des process, centré sur les aspects opérationnels.

Dans ce tutoriel, je présente la version Community Edition du logiciel DSS. Je me situe sur un processus « Machine Learning » d’analyse prédictive c.-à-d. développer un modèle statistique de scoring. J’explore de manière relativement sommaire les possibilités de l’outil. D’une part, parce que dans une première approche, il convient de rester schématique pour bien discerner ses principales caractéristiques. D’autre part, parce qu’il serait vain de vouloir tout résumer dans un document de quelques pages toutes ses fonctionnalités. Le lecteur curieux pourra se référer au site de documentation de l’éditeur ou aux tutoriels accessibles sur youtube.

Mots-clés : régression logistique, analyse prédictive, machine learning, arbre de décision
Lien : fr_Tanagra_DSS_dataiku.pdf
Fichier : spambase.txt
Références :
Dataiku - Data Science Studio - http://www.dataiku.com/
Tutoriel Tanagra, "Azure Machine Learning", novembre 2014.

jeudi 4 juin 2015

Extraction des règles d'association - Diapos

L’extraction des règles d’association a connu une popularité fulgurante dès leur publication par Agrawal et al. (1993). Notamment parce que la méthode répond à un réel besoin (rechercher les relations pertinentes entre les variables est la base même de la statistique exploratoire), parce qu’elle produit une connaissance facile à interpréter et, reconnaissons-le, parce qu’elle a ouvert un champ d’étude où les chercheurs ont pu s’exprimer à loisir (développement d’algorithmes efficaces pour le traitement des très gros volumes, développement des mesures pour identifier les règles les plus « intéressantes », etc.).

Dans ces diapos que j’utilise pour mes enseignements, je m’attache surtout à décrire les finalités et la démarche. L’exposé en lui-même prend peu de temps durant la séance. La suite est consacrée à la mise en œuvre sur plusieurs outils. Je présente quelques logiciels (SIPINA avec le module d’extraction de règles, TANAGRA, R avec le package « arules », SPAD), mais j’aurais tout aussi bien pu parler de KNIME, RAPIDMINER, ORANGE ou WEKA. Les logiciels diffèrent essentiellement par le format de données accepté en entrée, le paramétrage par défaut, et le mode de présentation des sorties. Un des enjeux de la séance justement est de faire travailler les étudiants sur différents outils et de comparer les règles produites. L’algorithme étant déterministe, on devrait obtenir les mêmes résultats à paramétrage égal. Les étudiants peuvent le vérifier.

Mots clés : règles d'association, itemset, itemset fréquent, itemset fréquent fermé, itemset fréquent maximal, eclat, apriori, fp-growth, support, confiance, lift, mesures d'intérêt des règles
Composants Tanagra : A PRIORI, A PRIORI MR, A PRIORI PT, FREQUENT ITEMSETS, SPV ASSOC RULE, SPV ASSOC TREE
Lien : Règles d'association
Références :
Tutoriel Tanagra, "Règles d'association - Comparaison de logiciels", novembre 2008.

samedi 23 mai 2015

Pratique de la régression - Version 2.1

Miraculeusement, je vais disposer de plus d’heures pour le cours d’Économétrie - Modélisation statistique en L3 IDS. Les bonnes nouvelles vous donnent toujours du cœur à l’ouvrage. Je me suis demandé comment je pouvais faire évoluer ce cours pour tirer parti de cette nouvelle configuration.

La première piste est d’étoffer les TD où nous avancions un peu à marche forcée, je le reconnais. Avec des séances supplémentaires, nous pourrons aborder plus de sujets, mais aussi élargir la panoplie des logiciels utilisés. Je suis persuadé que faire travailler les étudiants sur différents outils est une très bonne manière… de les détacher des outils justement, de prendre de la hauteur pour s’attacher à l’essentiel. Quand on sait vraiment conduire, que ce soit une 2 CV ou une Lamborghini, on saura faire. Après, il y a des spécificités qu’il faut savoir exploiter, mais c’est après, lorsqu’on veut approfondir. On sait très bien qu’il y a des choses qu’on pourra faire avec une 2 CV mais pas avec une Lamborghini, et inversement.

La seconde piste est de compléter le cours en abordant /approfondissant certains thèmes. La question de la direction à prendre se pose. Beaucoup de domaines sont déjà abordés, comment élargir sans semer en route les étudiants ? Après réflexion, les pistes de l’ANOVA et ANCOVA me paraissent les plus intéressantes - et les moins déroutantes - en utilisant le prisme de la régression sur variables qualitatives, nominales et ordinales. Les étudiants verront ces sujets (ANOVA, etc.) dans la suite de leur cursus. En adoptant délibérément l’éclairage de la régression, on évite la redondance, tout en leur permettant de consolider leurs compétences en terme d’analyse.

Dans cette nouvelle version 2.1 du fascicule consacré à la « Pratique de la Régression Linéaire Multiple », je me suis donc attelé à compléter le chapitre 4 consacré à la régression sur variables exogènes qualitatives, qui passe à 57 pages maintenant. J’ai bénéficié de l’éclairage additionnel de la page Régression de l’IDRE (Institute for Digital Research and Education - UCLA) où la question de la régression sur exogènes qualitatives est brillamment exploré avec des exemples traités sous les logiciels SAS et R. C’est Byzance. J’ai intégré les thèmes les plus intéressants dans le chapitre existant (qui a été un peu réorganisé en conséquence), en reproduisant les calculs - sur les données du fascicule - sous Excel.

Mots-clés : régression sur exogènes qualitatives, anova, ancova, comparaison de moyennes, analyse des interactions, analyse de contrastes
Ouvrage : Ricco Rakotomalala, « Pratique de la Régression Multiple - Diagnostic et sélection de variables - Version 2.1 », Mai 2015.
Données : Dataset - Pratique de la régression
Références : Ma page de cours « Économétrie ».