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 :
Site officiel : scikit-learn - Machine Learning in Python
Python - Official Site

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

mardi 19 mai 2015

Reconnaissance faciale et détection de l’âge

A cette époque de la saison, je réfléchis aux thèmes des projets big data que je pourrais proposer à mes étudiants du Master SISE (Statistique et Informatique) l’année prochaine. Je dois toujours composer avec deux contraintes opposées : il faut que les sujets soient assez classiques pour que les étudiants puissent consolider leurs acquis ; mais il faut aussi qu’ils soient assez innovants pour titiller leur intérêt,  pour les faire sortir des sentiers battus, rechercher de l’information par eux-mêmes, défricher un terrain inconnu afin d’apprendre à discerner l’essentiel de l’accessoire.

Mon rôle dans cette histoire consiste à cerner suffisamment chaque thème afin de déterminer d’une part son intérêt pédagogique, d’autre part la faisabilité du projet dans le temps qui est imparti, environ 1 mois sachant que les étudiants doivent dans le même temps suivre les cours, travailler sur les projets des autres matières, voire passer les épreuves validant certains UE (Unité d’Enseignement). Il ne s’agit pas de les envoyer au casse-pipe sans filet.

Cette année, entres autres projets potentiels, j’ai décidé de m’intéresser à la reconnaissance faciale. Ce n’est pas très nouveau en soi, mais nous faisons rarement travailler nos étudiants là-dessus, je me dis que le terrain peut s’avérer fertile. En me documentant sérieusement sur la question, je suis tombé sur un article décrivant un nouvel outil - tout bonnement extraordinaire - mis en ligne par Microsoft. Il détermine automatiquement votre âge et votre sexe à partir de votre photo. On va nettement plus loin que la simple reconnaissance dans ce cas. Bien évidemment, j’ai multiplié les tests : photos prises de face, de biais, éclairage fort, faible, pénombre, contre-jour, visage rasé de près ou pas, etc. A force, on devine à peu près les critères qui peuvent jouer. J’avoue surtout avoir passé un moment particulièrement amusant en testant différentes photos et noter l’âge proposé pour chaque configuration. Au passage, Microsoft dit qu’il ne conserve pas les photos soumises. Heureusement car, dans le cas contraire, ils auraient eu là  une occasion unique de se constituer une base de photos d’identité mondiale. Bon, dans le même temps, des plaisantins doivent s’ingénier à tester leurs animaux domestiques, leurs voitures, ou que sais-je encore, je n’ose même pas imaginer.

Peut-être qu’on n’ira pas jusqu’à ce stade dans les projets  - détection de l’âge et du sexe à partir de photos d’identité - avec mes étudiants. Mais il y a clairement matière à travailler dans le domaine. J’ai même lu récemment qu’on pouvait effectuer la reconnaissance faciale… de dos (ce n'est pas vraiment ça quand on lit l'article, mais l'idée est amusante). On n’arrête pas le progrès, on n’arrête pas l’imagination des ingénieurs surtout.

Testez-vous : quel est votre âge ?
Mots-clés : reconnaissance faciale, traitement d’images, image mining, big data analytics, fouille de données complexes

mercredi 29 avril 2015

Prédicteurs catégoriels en Rég. Logistique

La régression logistique vise à construire un modèle permettant de prédire une variable cible binaire à partir d’un ensemble de variables explicatives (descripteurs, prédicteurs, variables indépendantes) numériques et/ou catégorielles. Elles sont traitées telles quelles lorsque ces dernières sont numériques. Elles doivent être recodées lorsqu’elles sont catégorielles. Le codage en indicatrices 0/1 (dummy coding) est certainement la méthode la plus utilisée.

La situation se complique lorsque l’on procède à une sélection de variables. L’idée est de déterminer les prédicteurs qui contribuent significativement à l’explication de la variable cible. Il n’y a aucun problème quand nous considérons une variable numérique, elle est soit exclue soit conservée dans le modèle. Mais comment procéder lorsqu’on manipule une explicative catégorielle ? Devons-nous traiter les indicatrices associées à une variable comme un bloc indissociable ? Ou bien pouvons-nous les dissocier, en ne conservant que certaines d’entre elles ? Est-ce que cette stratégie est légitime ? Comment lire les coefficients dans ce cas.

Dans ce tutoriel, nous étudions les solutions proposées par les logiciels R 3.1.2, SAS 9.3, Tanagra 1.4.50 et SPAD 8.0. Nous verrons que les algorithmes de sélection de variables s’appuient sur des critères spécifiques selon les logiciels. Nous constaterons surtout qu’ils proposent des approches différentes lorsque nous sommes en présence des explicatives catégorielles. Cela n’est pas sans conséquence sur la qualité prédictive des modèles.

Mots-clés : régression logistique, sélection de variables, variables explicatives catégorielles, codage disjonctif complet, sas, proc logistic, logiciel R, stepaic, spad
Composants : BINARY LOGISTIC REGRESSION
Lien : fr_Tanagra_Categorical_Selection_Log_Reg.pdf
Fichier : heart-c.xlsx
Références :
R. Rakotomalala, "Pratique de la régression logistique - Régression logistique binaire et polytomique", Version 2.0, Juin 2011.
Tutoriel Tanagra, "Codage disjonctif complet", mars 2008.

lundi 6 avril 2015

Programmation R sous Hadoop

L’objectif de ce tutoriel est de montrer, in fine, la programmation sous R de l’algorithme de comptage de mots – le fameux « wordcount » – à partir d’un ensemble de fichiers stockés sur HDFS.

L’exemple « wordcount » fait référence. Il est décrit partout sur le web. Mais, à bien y regarder, les tutoriels qui le reprennent sont (très) rarement reproductibles. Les fichiers de travail ne sont pas disponibles. On ne voit pas vraiment comment on y accède avec R lorsqu’ils sont stockés sur le système de fichier HDFS. Bref, on ne peut pas faire tourner les programmes et se rendre compte réellement de leur mode de fonctionnement.

Nous allons reprendre tout cela étape par étape. Nous décrirons avec force détails chaque stade de processus, en partant de l’installation d’ un cluster hadoop mono-nœud sur une machine virtuelle jusqu’à la programmation sous R, en passant par l’installation de R et de l’environnement de programmation client – serveur RStudio Server.

Les étapes et, par conséquent les sources d’erreurs, sont nombreuses. Nous utiliserons moults copies d’écran pour appréhender concrètement chaque opération. D’où ce format de présentation inhabituel pour un tutoriel.

Mots-clés :  big data, big data analytics, mapreduce, package rmr2, package rhdfs, hadoop, rhadoop, logiciel R, rstudio, rstudio server, cloudera, langage R
Didacticiel : fr_Tanagra_Hadoop_with_R.pdf
Fichiershadoop_with_r.zip
Références :
Hugh Devlin, "Mapreduce in R", Jan. 2014.
Tutoriel Tanagra, "MapReduce avec R", février 2015.
Tutoriel Tanagra, "Programmation R sous Spark avec SparkR", mai 2016.

mercredi 1 avril 2015

Classeur économétrie

Un contact internet très récent m’a rappelé un outil que j’avais mis en ligne il y a une dizaine d’années et qui n’était pas référencée sur ce blog. Je l’avais quelque peu oublié j’avoue. A force de faire tellement de choses, je ne sais plus parfois si j’ai déjà abordé tel ou tel thème dans mes tutoriels. Heureusement, la recherche par mots-clés sur ce site me permet de me repérer rapidement.

L’outil en question est un classeur Excel dédié à la régression linéaire multiple. Il a été programmé par Mlle NGUYEN LAO Bao Truc, étudiante de notre département informatique et statistique, alors en stage à l’été 2005. Il reprend dans les grandes lignes le contenu de mon cours d’économétrie de Licence L3 Informatique décisionnelle et statistique.

Ainsi, les principaux résultats que la macro produit à partir d’un tableau individus - variables sont : calcul des statistiques descriptives, estimation des coefficients, élaboration du tableau d'analyse de variance, test de significativité globale du modèles, test de significativité individuelle des coefficients, analyse des résidus, détection des points atypiques et influents, détection de la colinéarité.

L’outil n’est pas une macro complémentaire à proprement parler. Il faut copier et coller vos données dans la feuille principale du classeur. Le transformer en add-in générique est d’ailleurs une extension qui peut s’avérer intéressante. Il faudrait le compléter avec un dispositif - boîte de dialogue de paramétrage par exemple - permettant de sélectionner les données, où qu’elles soient situées dans un classeur quelconque, de spécifier les paramètres de l’analyse (niveau de confiance), etc. Avis aux férus de programmation VBA.

Mots-clés : régression linéaire simple, régression linéaire multiple, économétrie, classeur excel, macro-complémentaire, add-in
Didacticiel : Classeur régression - Manuel de l'utilisateur
Classeur Excel : Regression_L3_IDS.xls
Référence :
Ricco Rakotomalala, "Cours économétrie - L3 IDS", Département Informatique et Statistique, Université Lyon 2.

dimanche 15 mars 2015

Hyper-threading et disque SSD

Après plus de 6 années de bons et loyaux services, j'ai décidé de changer ma machine de développement. Il faut dire que l'ancienne (Intel Core 2 Quad Q9400 2,66 Ghz tournant sous Windows 7 64 bits) commençait à émettre des bruits inquiétants. Les ventilateurs soufflaient au maximum quasiment en permanence. J'étais obligé de mettre de la musique pour couvrir les borborygmes de la bête et pouvoir travailler en toute quiétude.

Bon, le choix de la nouvelle machine était une autre affaire. J'ai passé l'âge de la course à la puissance - qui est forcément vaine de toute manière, vu l'évolution fulgurante de l'informatique. J'étais néanmoins sensible à deux aspects que je ne pouvais pas évaluer auparavant : est-ce que la technologie hyper-threading  est efficace dans la programmation multithread des algorithmes de data mining ? Est-ce qu'utiliser des fichiers temporaires pour soulager l'occupation mémoire prend une autre tournure lorsqu'on s'appuie sur un disque SSD.

La nouvelle bête est ainsi équipée d'un processeur Core I7 4770S cadencé à 3,1 Ghz (4 cœurs physiques mais 8 threads logiques avec la technologie hyper-threading) et d'un disque système SSD. Ce n'est pas la gloire mais ça me permet d'évaluer les deux thèmes ci-dessus en reprenant les calculs décrits dans d'anciens tutoriels que j'avais mis en ligne il y a un certain temps déjà : "Multithreading équilibré pour la discriminante" (juin 2013), où il est question d'une implémentation multithread, le nombre de threads est paramétrable, de l'analyse discriminante ; "Sipina - Traitement des très grands fichiers" (octobre 2009), où je présentais une solution qui consistait à copier les données organisées en colonnes sur disque (bien avant l'heure - la solution date de 1998, du temps où disposer de 64 Mo de RAM était éminent - une version très fruste des bases de données orientées colonnes), tous les accès lors de la construction des arbres se fait sur disque, un système de cache vient accélérer la lecture.

Nous reproduisons dans ce tutoriel les deux études précitées utilisant le logiciel SIPINA. Notre objectif est d'évaluer le comportement de ces solutions (implémentation multithread, copie des données sur disque pour alléger l'occupation mémoire) sur notre nouvelle machine qui, de par ses caractéristiques, devrait en tirer expressément avantage.

Mots-clés :  hyper-threading, disque ssd, solid-state drive, multithread, multithreading, traitement des très grands fichiers, core i7, sipina, arbres de décision, analyse discriminante linéaire
Didacticiel : fr_Tanagra_Hyperthreading.pdf
Références :
Tutoriel Tanagra, "Multithreading équilibré pour la discriminante", juin 2013.
Tutoriel Tanagra, "Multithreading pour les arbres de décision", novembre 2010.
Tutoriel Tanagra, "Sipina - Traitement des très grands fichiers", octobre 2009.

dimanche 8 mars 2015

Analyse de corrélation - Version 1.1

La corrélation est souvent présentée vite fait comme un préambule à la régression simple dans les ouvrages d'économétrie. Pourtant, elle ouvre la porte à des analyses très riches sur les relations entre les variables. De nombreuses méthodes exploratoires reposent sur la notion de corrélation entre les variables.

La première version de cet ouvrage (version 1.0, mai 2008) essayait d'aller un peu plus loin qu'un simple exposé de principe sur la corrélation et les calculs y afférents.  Je me suis appuyé sur de nombreuses sources. Mais j'avoue surtout avoir été influencé par la lecture de la monographie de Chen et Popovich (2002). Rarement j'ai vu une telle qualité de rédaction autour de la notion de corrélation. Je n'aurais jamais pensé non plus qu'on pouvait en écrire autant sur la corrélation.

Dans cette nouvelle version (1.1), j'ai (re)découvert le package "psych" de Revelle (version 1.5.1 - janvier 2015) pour R en accédant à l'ouvrage de statistique sous R qu'il a mis en ligne (cf. références ci-dessous). J'ai constaté que le package intégrait plusieurs procédures dédiées à la corrélation. J'ai ainsi pu valider tous les calculs que j'ai pu faire sur tableur dans la version précédente de mon propre ouvrage (obtenir des résultats concordants avec d'autres chercheurs est toujours rassurant), j'ai aussi découvert de nouveaux outils traitant des matrices des corrélations.

Une section consacrée aux traitements sous R - utilisant le package "psych" - a été rajoutée en annexes.

Bien évidemment, le fichier Excel retraçant tous les exemples illustratifs accompagne ce document.

Mots-clés: corrélation, comparaison de corrélations, corrélation partielle, corrélation semi-partielle, rho de spearman, tau de kendall, transformation de fisher, package psych
Ouvrage : Analyse de corrélation - Étude des dépendances - Variables quantitatives (Version 1.1)
Données : Dataset - Analyse de corrélation
Autres références :
Chen P., Popovich P., "Correlation: Parametric and Nonparametric Measures", Sage University Papers Series on Quantitative Applications in the Social Sciences, no. 07-139, 2002.
Revelle W., "An introduction to psychometric theory with applications in R", consulté en Mars 2015.

dimanche 15 février 2015

MapReduce avec R

« Big Data » (« mégadonnées » ou « données massives » en français), en veux-tu en voilà. Tout le monde en parle, c’est le sujet à la mode. Il suffit de voir l’évolution des requêtes associées sur Google Trends pour s’en rendre compte. Leur valorisation est un enjeu fort, on parle de « big data analytics ». Dans les faits, il s’agit d’étendre le champ d’application des techniques de statistique exploratoire et de data mining à de nouvelles sources de données dont les principales caractéristiques sont la volumétrie, la variété et la vélocité.

L’informatique distribuée est un pilier essentiel du big data. Il est illusoire de vouloir augmenter à l’infini la puissance des serveurs pour suivre la croissance exponentielle des informations à traiter. La solution passe par une coopération efficace d’une myriade de machines connectées en réseau, assurant à la fois la gestion de la volumétrie et une puissance de calcul décuplée. « Hadoop » s’inscrit dans ce contexte. Il s’agit d’un framework Java libre de la fondation Apache destiné à faciliter la création d’applications distribuées et échelonnables . « Distribuées » signifie que le stockage et les calculs sont réalisés à distance sur un cluster (groupe) de nœuds (de machines). « Echelonnables » dans le sens où si l’on a besoin d’une puissance supplémentaire, il suffit d’augmenter le nombre de nœuds sans avoir à remettre en cause les programmes et les architectures. Dans cette optique, MapReduce  de Hadoop joue un rôle important. C’est un modèle de programmation qui permet de distribuer les opérations sur des nœuds d’un cluster. L’idée maîtresse est la subdivision des tâches que l’on peut dispatcher sur des machines distantes, ouvrant ainsi la porte au traitement de très grosses volumétries. Une série de dispositifs sont mis en place pour assurer la fiabilité du système (ex. en cas de panne d’un des nœuds).

Dans ce tutoriel, nous nous intéressons à la programmation MapReduce sous R. Nous nous appuierons sur la technologie RHadoop  de la société Revolution Analytics. Le package « rmr2 » en particulier permet de s’initier à la programmation MapReduce sans avoir à installer tout l’environnement, tâche qui, en soi, est déjà suffisamment compliquée comme cela. Il existe des tutoriels consacrés à ce thème sur le net. Celui Hugh Devlin (janvier 2014) en est une illustration . Mais il s’adresse à un public connaisseur des statistiques et de la programmation R, en commençant notamment par faire le parallèle (c’est de circonstance) avec la fonction lapply() que les apprentis du langage R ont souvent bien du mal à appréhender. Au final, il m’a fallu beaucoup de temps pour réellement saisir la teneur des fonctions étudiées. J’ai donc décidé de reprendre les choses à zéro en commençant par des exemples très simples dans un premier temps, avant de progresser jusqu’à la programmation d’algorithmes de data mining, la régression linéaire multiple en l’occurrence.

Mots-clés :  big data, big data analytics, mapreduce, package rmr2, anova, régression linéaire, hadoop, rhadoop, logiciel R, langage R
Didacticiel : fr_Tanagra_MapReduce.pdf
Fichiersfr_mapreduce_with_r.zip
Références :
Hugh Devlin, "Mapreduce in R", Jan. 2014.
Tutoriel Tanagra, "Programmation parallèle sous R", juin 2013.
Tutoriel Tanagra, "Programmation R sous Hadoop", avril 2015.

jeudi 12 février 2015

Validation croisée, Bootstrap - Diapos

En apprentissage supervisé, Il est couramment admis qu’il ne faut pas utiliser les mêmes données pour construire un modèle prédictif et estimer son taux d’erreur. L’erreur obtenue dans ces conditions est (très souvent) trop optimiste, laissant à croire que le modèle présentera d’excellentes performances en prédiction.

Un schéma type consiste  à subdiviser les données en 2 parties (holdout approach) : un premier échantillon, dit d’apprentissage sert à élaborer le modèle ; en second échantillon, dit de test, sert à en mesurer les performances. Les indicateurs reflètent alors honnêtement le comportement du modèle en déploiement. Hélas, sur des petites bases, cette approche pose problème. En réduisant le volume de données présenté à l’algorithme d’apprentissage, nous prenons le risque de ne pas saisir toutes les subtilités de la relation entre la variable cible et les prédictives. Dans le même temps, la partie dévolue au test reste réduite, l’estimation de l’erreur est empreint d’une forte variabilité.

Dans ce support, je présente les techniques de ré-echantillonnage (validation croisée, leave-one-out et bootstrap) destinées à estimer l’erreur du modèle élaboré à partir de la totalité des données disponibles. Une étude sur données simulées (les «ondes» de Breiman et al., 1984) permet d'analyser le comportement des approches en les croisant avec différents algorithmes d’apprentissage (arbres de décision, analyse discriminante linéaire, réseaux de neurones [perceptron multi-couches]).

Mots clés : méthodes de ré-échantillonnage, évaluation de l’erreur, validation croisée, bootstrap, leave one out, resampling error estimate, holdoutn schéma apprentissage-test
Composants : CROSS-VALIDATION, BOOTSTRAP, TEST, LEAVE-ONE-OUT
Lien : resampling_evaluation.pdf
Références :
A. Molinaro, R. Simon, R. Pfeiffer, « Prediction error estimation: a comparison of resampling methods », in Bioinformatics, 21(15), pages 3301-3307, 2005.
Tutoriel Tanagra, "Validation croisée, bootstrap, leave-one-out", mars 2008.

mercredi 11 février 2015

Arbres de classification - Théorie et pratique

La classification automatique ou analyse typologique (« clustering » en anglais) vise les regrouper les individus en paquets homogènes. Les individus qui ont des caractéristiques similaires (proches) sont réunis dans un même groupe (cluster, classe) ; les individus présentant des caractéristiques dissemblables (éloignées) sont associés à des groupes différents.

Nous présentons dans ce tutoriel les arbres de classification. La démarche s’intègre dans un cadre cohérent par rapport aux arbres de décision et régression, bien connus en data mining. La différence réside dans la mise en place d’un critère multivarié pour quantifier la pertinence des segmentations durant la construction de l’arbre. Nous avions déjà présenté succinctement la méthode dans un précédent didacticiel (avril 2008). Mais nous nous étions focalisés sur les aspects opérationnels (manipulations dans Tanagra et lecture des résultats). Dans ce nouveau document, nous nous attardons sur les fondements théoriques de l’approche. Nous montrons que nous pouvons appréhender de manière indifférenciée les bases comportant des variables actives quantitatives ou qualitatives, ou un mix des deux.

Par la suite, nous détaillons la mise en œuvre de la méthode à l’aide de plusieurs logiciels dont SPAD qui, à ma connaissance, est le seul à proposer une interface graphique interactive pour la construction des arbres de classification.

Mots clés : classification automatique, clustering, arbres de classification, interprétation des classes, clustering tree, valeur test, spad, ict, logiciel R, package party
Composants : MULTIPLE CORRESPONDENCE ANALYSIS, CTP, CT, GROUP CHARACTERIZATION
Lien : fr_Tanagra_Clustering_Tree.pdf
Données : tutorial_clustering_tree.zip
Références :
R. Rakotomalala, « Arbres de classification ».
Tutoriel Tanagra, "Arbres de classification",  avril 2008.

vendredi 16 janvier 2015

Decision Trees for Analytics...

... Using SAS Enterprise Miner.

Cet ouvrage de Barry de Ville et Padraic Neville effectue un large tour d’horizon des arbres décision et de leur implémentation dans SAS Enterprise Miner (SAS EM). Il s’intéresse à la fois aux aspects historiques, théoriques et pratiques.

Il a attiré mon attention parce qu’il s’agit des arbres de décision, une méthode dont la popularité n’est plus à démontrer ; parce qu’on nous parle de SAS EM qui, quoiqu’on en dise, est un outil connu et reconnu ; enfin, parce que les auteurs sont des personnalités à qui on n’apprend pas grand-chose s’agissant de l’implémentation des arbres de décision dans les logiciels.

J’essaie de retracer dans le résumé ci-dessous les grandes lignes de l’ouvrage.

Mots clés : arbres de décision, arbres de segmentation, sas, sas em, enterprise miner
Composants Tanagra : C4.5, C-RT, CS-CRT, CS-MC4, ID3
Lien : Résumé
Références :
Barry de Ville and Padraic Neville, "Decision Trees for Analytics Using SAS Enterprise Miner", SAS Institute, June 2013.