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.