samedi 21 décembre 2013

Classification de variables qualitatives

La classification automatique vise à regrouper les objets en paquets. Les objets similaires sont classés dans un même groupe ; ceux qui sont différents sont classés dans des groupes différents.

Dans ce tutoriel, nous décrivons une technique de classification ascendante hiérarchique (CAH) des modalités de variables qualitatives nominales due à Abdallah et Saporta (1998). Nous montrons sa mise en oeuvre à l’aide du composant CATVARHCA introduit dans la version 1.4.50 de Tanagra. Ce dernier intègre la possibilité d’utiliser des variables illustratives, permettant ainsi d’enrichir l’interprétation des résultats. Dans un second temps, pour bien cerner les tenants et aboutissants de l’approche, nous détaillons les différentes étapes des calculs sous le logiciel R 3.0.1.

Enfin, dans une troisième et dernière partie, nous présenterons des approches alternatives de catégorisation des modalités des variables qualitatives. L’une, implémentée dans le package "Hmisc", s’appuie sur une autre mesure de dissimilarité. L’autre, de type "tandem analysis", procède par une CAH sur les coordonnées factorielles des modalités issues d’une ACM. Nous comparerons les résultats obtenus avec ceux de CATVARHCA. Nous constaterons que ces approches sont tout à fait valables et proposent des résultats exploitables.

Mots clés : classification automatique, typologie, clustering, classification de variables qualitatives, acm, analyse des correspondances multiples, tandem analysis, package clustofvar, hclustvar, package hmisc, varclus, classification ascendante hiérarchique, CAH, indice de dice, détection du nombre de groupes
Composants : CATVARHCA
Lien : fr_Tanagra_Cat_Variable_Clustering.pdf
Données : vote_catvarclus.zip
Références :
H. Abdallah, G. Saporta, « Classification d’un ensemble de variables qualitatives », in Revue de Statistique Appliquée, Tome 46, N°4, pp. 5-26, 1998.
M. Chavent, V. Kuentz, B. Liquet, J. Saracco, « Classification de variables : le package ClustOfVar », in Actes des 43èmes journées de Statistique (SFDS), Tunisie, 2011.
F.E. Harrel Jr., "Hmisc : Harrel Miscellaneous - 3.13-0".
Tutoriel Tanagra, "Classification de variables", Mars 2008.

mercredi 18 décembre 2013

Tanagra - Version 1.4.50

Des améliorations ont été introduites, un nouveau composant est ajouté.

HAC. Classification ascendante hiérarchique. Le temps de calcul a été très fortement amélioré. Nous détaillerons la nouvelle procédure utilisée dans un prochain tutoriel.

CATVARHCA. Classification des modalités des variables qualitatives. Basée sur les travaux d’Abdallah et Saporta (1998), le composant réalise une classification ascendante hiérarchique des modalités de variables qualitatives, la distance utilisée est l’indice de Dice. Plusieurs stratégies d’agrégation sont proposées : saut minimum, saut maximum, lien moyen, méthode de Ward. Un tutoriel viendra décrire la méthode.

Page de téléchargement : setup

samedi 23 novembre 2013

Classification automatique sur données mixtes

La classification automatique ou typologie (clustering en anglais) vise à regrouper les observations en classes : les individus ayant des caractéristiques similaires sont réunis dans la même catégorie ; les individus présentant des caractéristiques dissemblables sont situés dans des catégories distinctes. La notion de proximité est primordiale dans ce processus. Elle est quantifiée différemment selon le type des variables. La distance euclidienne est souvent utilisée (normalisée ou non) lorsqu’elles sont quantitatives, la distance du khi-2 lorsqu’elles sont qualitatives (les individus qui possèdent souvent les mêmes modalités sont réputées proches).

L’affaire se corse lorsque nous sommes en présence d’un mix de variables quantitatives et qualitatives. Certes il est toujours possible de définir une distance prenant en compte simultanément les deux types de variables (ex. la distance HEOM). Mais le problème de la normalisation est posé. Telle ou telle variable ne doit pas avoir une influence exagérée uniquement de par sa nature.

Précédemment, nous avons présenté l’analyse factorielle de données mixtes (AFDM) . Il s’agit de projeter les observations dans un repère factoriel élaboré à partir d’un mélange de variables actives qualitatives et quantitatives. On montre que l’approche est équivalente à l’ACP normée (analyse en composantes principales) lorsque les variables sont toutes quantitatives, à l’ACM (analyse des correspondances multiples) lorsqu’elles sont toutes qualitatives.

Nous proposons dans ce tutoriel de réaliser la classification sur données mixtes en deux étapes : [1] nous procédons tout d’abord à une AFDM pour produire une représentation intermédiaire des données ; [2] puis, nous effectuons une classification ascendante hiérarchique (CAH) à partir des facteurs « représentatifs » de l’AFDM. Cette analyse en deux temps est couramment utilisée même lorsque les variables sont exclusivement quantitatives (on passe par l’ACP) ou qualitatives (ACM). L’idée est de procéder à un nettoyage des données – une sorte de régularisation – en éliminant les derniers facteurs qui correspondent à du bruit spécifique à l’échantillon que nous utilisons c.-à-d. des informations qui correspondent aux fluctuations d’échantillonnage ne reflétant en rien un phénomène réel dans la population. Les résultats sont ainsi plus stables.

Nous utiliserons les logiciels Tanagra 1.4.49 et R (package ade4) dans ce tutoriel.

Mots clés : AFDM, analyse factorielle des données mixtes, classification automatique, typologie, cah, classification ascendante hiérarchique, logiciel R, package ade4, dudi.mix, dist, hclust, cutree, logiciel R, description des groupes
Composants : AFDM, HAC, GROUP CHARACTERIZATION, SCATTERPLOT
Lien : fr_Tanagra_Clustering_Mixed_Data.pdf
Données : bank_clustering.zip
Références :
Jérôme Pagès, « Analyse Factorielle de Données Mixtes », Revue de Statistique Appliquée, tome 52, n°4, 2004 ; pages 93-111.
Tutoriel Tanagra, "Analyse factorielle de données mixtes - Diapos", Août 2013.

lundi 11 novembre 2013

Scilab et R - Performances comparées

Nous avons fait connaissance du logiciel Scilab dans un précédent tutoriel . Nous étions arrivés à la conclusion qu’il se positionnait très bien comme une alternative à R dans le domaine du data mining même si, en matière de nombre de bibliothèques de méthodes statistiques et de data mining, il restait largement en retrait.

Dans ce second volet, nous nous intéressons aux performances de Scilab lors du traitement d’un grand fichier avec 500.000 observations et 22 variables. « Grand fichier » étant tout à fait relatif, nous le confrontons à la référence R pour mieux situer son comportement. Deux critères sont utilisés pour effectuer les comparaisons : l’occupation mémoire du logiciel mesurée dans le gestionnaire de tâches Windows, le temps de traitement à chaque étape du processus.

Il serait vain d’espérer obtenir une vision exhaustive. Pour délimiter notre champ d’étude, nous avons établi un scénario ultra-classique de data mining : charger un fichier de données, construire le modèle prédictif avec l’analyse discriminante linéaire, calculer la matrice de confusion et  le taux d’erreur en resubstitution . Bien évidemment, l’étude est forcément parcellaire. Il apparaît que Scilab semble moins à son avantage dans la gestion des données. Il est largement au niveau en revanche en ce qui concerne les traitements, cette dernière appréciation étant toutefois tributaire des packages ou toolbox utilisés.

Mots-clés : scilab, toolbox, nan, analyse discriminante prédictive, analyse discriminante linéaire, logiciel R, analyse prédictive, sipina
Didacticiel : fr_Tanagra_Scilab_R_Comparison.pdf
Données : waveform_scilab_r.zip
Références :
Scilab - https://www.scilab.org/fr
Michaël Baudin, "Introduction à Scilab", Developpez.com.

mardi 5 novembre 2013

Data Mining avec Scilab

Je connais le nom « Scilab  » depuis fort longtemps. Je l’avais catalogué dans la catégorie des logiciels de calcul numérique, au même titre qu’Octave ou, pour parler d’outils commerciaux, de Matlab que j’avais moi-même utilisé du temps où j’étais étudiant. J’y voyais très peu d’intérêt dans le contexte du traitement statistique des données et du data mining.

Récemment un collègue mathématicien m’en a reparlé. Il s’étonnait de la faible visibilité de Scilab au sein de la communauté du data mining, sachant qu’il présente des fonctionnalités tout à fait similaires à celle de R. Ah bon ? Je ne voyais pas les choses ainsi. Curieux comme je suis, je me suis bien évidemment documenté sur la question en fixant un objectif simple : est-ce qu’il est possible de réaliser - simplement, sans contorsions extravagantes – un schéma type d’analyse prédictive avec Scilab ? A savoir : charger un fichier de données (échantillon d’apprentissage), construire un modèle prédictif, en détailler les caractéristiques, charger un échantillon test, appliquer le modèle sur ce second ensemble de données, élaborer la matrice de confusion et calculer le taux d’erreur en test.

Nous verrons dans ce tutoriel que la tâche a été réalisée avec succès, relativement facilement. Scilab est tout à fait armé pour réaliser des traitements statistiques. D’emblée, deux petits bémols me sont clairement apparus lors de la prise en main de Scilab : les librairies de fonctions statistiques existent mais ne sont pas aussi fournies que celles présentes dans R ; leur documentation laisse vraiment à désirer, j’ai du pas mal batailler – et encore, je savais exactement ce que je cherchais – avant de trouver les indications nécessaires sur le web.

Il reste qu’au final, je suis très satisfait de cette première expérience. J’ai découvert un excellent outil gratuit, souple et performant, très facile à prendre en main, qui s’avère être une alternative tout à fait crédible à R dans le domaine du data mining.

Mots-clés : scilab, toolbox, nan, libsvm, analyse discriminante prédictive, analyse discriminante linéaire, logiciel R, analyse prédictive
Didacticiel : fr_Tanagra_Scilab_Data_Mining.pdf
Données : data_mining_scilab.zip
Références :
Scilab - https://www.scilab.org/fr
ATOMS : Homepage - http://atoms.scilab.org/
Wikilivres, "Découvrir Scilab"
Michaël Baudin, "Introduction à Scilab", Developpez.com.

mardi 22 octobre 2013

Programmation à partir d'objets statistiques sous R

R est un langage de programmation, R est aussi un logiciel de statistique. L’outil prend tout son sel lorsque nous dérivons de nouvelles méthodes à partir des résultats fournis par une approche existante.

Dans ce document, nous montrons comment programmer une procédure statistique à partir de l’objet de type lm issue de la régression linéaire multiple. Le rôle de la commande « attributes » qui permet d’en énumérer les propriétés est primordial dans ce cadre. Il permet d’identifier les données intermédiaires que nous pouvons exploiter dans les calculs subséquents. Un petit exemple de recherche de la meilleure régression simple à partir d’un ensemble de variables prédictives candidates permet de mieux situer le potentiel du dispositif.

Nous ne l’abordons pas dans ce support, mais une extension naturelle de la démarche serait d’encapsuler les nouvelles procédures et fonctions dans un package, et de le diffuser à grande échelle sur le web.

Mots clés : programmation r, objets, listes, attributes, summary, logiciel r
Lien : Programmation à partir d'objets statistiques sous R
Références :
Vincent Goulet, " Introduction à la programmation en R ".

dimanche 20 octobre 2013

La classe data frame sous R

La classe « data frame » est primordiale sous R. Elle est dédie à la gestion des ensembles de données de type individus – variables (lignes x colonnes). Ce qui correspond au format le plus répandu en statistique exploratoire et data mining.

Un objet data frame est une liste de vecteurs de même longueur. Ils représentent les variables de la base à traiter. Ils sont le plus souvent numériques (variables quantitatives) ou de type factor (variables qualitatives). Nous pouvons également considérer le data frame sous l’angle d’une matrice de valeurs. A cet égard, R propose de nombreuses fonctionnalités pour réaliser des restrictions et des projections via l’indexation par des vecteurs de booléens, qui peut éventuellement résulter d’une condition. Mettre en place des requêtes complexes devient relativement aisé.

Dans sa dernière partie, notre document présente l’utilisation des outils sapply() et lapply(). Ils sont destinés à appliquer des traitements sur les colonnes successives d’un ensemble de données en appelant des fonctions callback. Ils s’avèrent particulièrement performants par rapport à une programmation usuelle s’appuyant sur des boucles.

Mots clés : programmation r, data.frame, listes, sapply, lapply, importation de fichiers, package xlsx, excel, logiciel r
Lien : Le type data frame sous R
Références :
Vincent Goulet, " Introduction à la programmation en R ".

samedi 19 octobre 2013

Tableaux et matrices sous R

« Tableaux et matrices sous R » est le document de référence pour la 4ème séance du cours de programmation R. Une matrice est un vecteur encapsulé dans une structure particulière possédant l’attribut dim. L’accès indicé (ligne, colonne) devient possible.

Nous pouvons réaliser des extractions de lignes et/ou de colonnes. La manipulation des matrices préfigure ainsi les fonctionnalités applicables sur le type data frame qui représente les ensembles de données (un tableau individus x variables peut être assimilé à une matrice d’une certaine manière).

Enfin, les matrices proposent des opérateurs qui leur sont propres (inversion, produit matriciel, diagonalisation, décomposition en valeurs singulières, etc.). La fonction apply() permet de s’affranchir des boucles en appliquant une fonction callback sur les lignes ou les colonnes d'une matrice.

Mots clés : programmation r, tableau, matrice, apply, logiciel r
Lien : Tableaux et matrices sous R
Références :
Vincent Goulet, " Introduction à la programmation en R ".

jeudi 17 octobre 2013

Manipulation des vecteurs sous R

Le vecteur est l’objet de base dans R. Il sert à stocker une collection de valeurs de même type. Toute donnée est placée dans un vecteur dans R. Un scalaire est en réalité un vecteur de taille 1. R propose toute une panoplie d’outils pour leur manipulation. Nous pouvons extraire une sous-partie des valeurs, les trier, effectuer des opérations sur plusieurs vecteurs, réaliser des calculs récapitulatifs.

Deux principes forts régissent le fonctionnement des vecteurs : sauf utilisation d’opérateurs spécifiques, les opérations s’effectuent toujours élément par élément (element-wise en anglais) ; quand les tailles des vecteurs ne sont pas compatibles, R applique le recyclage c.-à-d. la réplication des valeurs. Ces particularités m’ont beaucoup rebuté quant à l’utilisation du langage R à mes débuts. Elles m’empêchaient d’interpréter correctement les codes sources que je trouvais ici ou là sur le web.

Après coup, une fois ces notions assimilées, une des barrières à l’entrée de la compréhension du langage R est allègrement franchie.

Mots clés : programmation r, vecteur, type factor, concaténation, c(), logiciel r
Lien : Manipulation des vecteurs sous R
Références :
Vincent Goulet, " Introduction à la programmation en R ".

mercredi 16 octobre 2013

Programmation modulaire sous R

« Programmation modulaire sous R » décrit le découpage des programmes en procédures et fonctions dans un premier temps, puis en modules dans un second temps. Comme pour tout langage de programmation, il est possible d’agencer un projet en blocs de manière à réduire (voire éliminer) la redondance et maximiser la réutilisation.

Cette étape est une première étape vers le partage du code avec les autres programmeurs. En effet, il est très facile de distribuer les procédures et fonctions d’un module en diffusant le fichier « .r ». On peut faire mieux encore en l’organisant sous forme de package (cf. référence ci-dessous).

On notera deux petites curiosités concernant le langage R : une fonction –qui correspond à un bloc d’instructions - renvoie quand même une valeur même si on ne le fait pas explicitement ; il est possible de renvoyer plusieurs résultats via le mécanisme des listes, qui se révèle particulièrement souple.

Mots clés : instructions, bloc d'instruction, fonctions, procédures, modules, source(), logiciel r
Lien : Programmation modulaire sous R
Références :
Vincent Goulet, " Introduction à la programmation en R ".
Christophe Genolini, "Construire un Package - Classic et S4".

dimanche 13 octobre 2013

Les bases du langage R

Régulièrement à la mi-août, je me demande ce que je peux améliorer dans mes enseignements pour l’année universitaire à venir. Cette fois-ci, j’ai décidé de mettre sous forme de slides mon cours de R. Je n’ai jamais souhaité le faire jusqu’à présent. Il y a suffisamment de supports en ligne. Je me contentais donc de donner aux étudiants les principaux repères au tableau (écrire au tableau était aussi une manière de canaliser mon enthousiasme), en les redirigeant sur les documents les plus intéressants que j’ai pu trouver ici ou là. Au fil du temps, j’ai réussi (j'espère) à affiner la présentation pour faire passer les bons messages dans chaque séance. Je me suis rendu compte que je disais les choses à peu près de la même manière ces dernières années. Il était temps de coucher tout cela sur papier (enfin… sur PDF).

« Introduction à la programmation R » correspond à ma première séance sur R en Master 2 IDS-SISE (Informatique et Statistique, Data Mining). Il s’agit d’introduire R en tant que langage de programmation dans un premier temps. De fait, j’occulte sciemment les fonctionnalités statistiques en adoptant une présentation ultra-classique d’un cours de programmation quelconque (ex. Pascal, C, etc.). Sont ainsi décrits les types de données (sous leur forme scalaire), les entrées et sorties à la console, les structures algorithmiques (branchements conditionnels, boucles indicées, boucles conditionnelles). La séance est complétée par une série d’exercices d’algorithmie directement appliqués sur machines.

Mots clés : programmation r, types de données, branchements conditionnels, boucles, séquences, logiciel r
Lien : Introduction à R
Références :
Vincent Goulet, " Introduction à la programmation en R ".

dimanche 15 septembre 2013

Tanagra - Version 1.4.49

Quelques perfectionnements concernant les techniques d’analyse factorielle (ACP – analyse en composantes principales, ACM – analyse des correspondances multiples, AFC – analyse factorielle des correspondances, AFDM – analyse factorielle des données mixtes) ont été introduites. Les sorties en particulier ont été complétées, suite à l’écriture de supports de cours relatives à ces méthodes durant cet été 2013.

La rotation VARIMAX a été améliorée. Merci à Frédéric Glausinger d’avoir proposé un code optimisé.

La correction de Benzecri a été ajoutée dans l’affichage des résultats de l’ACM. Merci à Bernard Choffat pour cette suggestion.

Page de téléchargement : setup

samedi 24 août 2013

Analyse Factorielle de Données Mixtes - Diapos

Voici le dernier opus de l’été 2013 consacré aux supports de cours sur les techniques factorielles. Nous détaillons l’analyse factorielle de données mixtes (AFDM) c.-à-d. capable de traiter simultanément les variables actives quantitatives et qualitatives. Curieusement, contrairement aux autres méthodes pour lesquelles il existe pléthore d’écrits, on trouve peu de documents dédiés à l’AFDM sur le net. Pourtant elle couvre une situation que l’on rencontre fréquemment dans les problèmes réels. Et, de plus, elle généralise de manière élégante l’analyse en composantes principales et l’analyse des correspondances multiples que l’on retrouve lorsque les variables sont exclusivement quantitatives ou qualitatives.

Ce document repose sur l’article de Pagès (2004) que j’ai découvert par hasard lors de mes pérégrinations sur le site NUMDAM (extraordinaire portail que je conseille à tout le monde, vous y trouverez des vraies pépites !). L’approche présentée est programmée dans le package FactoMineR pour le logiciel R. Je l’ai également développée dans Tanagra, comme je le fais habituellement lorsque je cherche à appréhender précisément les contours d’une méthode.

En préparant ce support, j’ai creusé un peu plus le domaine. Je me suis rendu compte que l’AFDM, sous différentes appellations, était présente dans d’autres packages pour R (ade4, pcamixdata), qui font état d’autres références bibliographiques. Bien évidemment, je me suis précipité pour comparer les implémentations. Elles produisent des résultats identiques. Le fondement et l’expression des techniques sont bien les mêmes. Le contraire eut été passablement ennuyeux. Des approches censées traiter le même problème proposant des résultats divergents est toujours déroutant pour les praticiens de l’analyse de données.

Ce support est accompagné du fichier utilisé pour illustrer la méthode. Le programme R permettant d’obtenir tous les résultats intermédiaires est également fourni.

Mots clés : analyse factorielle de données mixtes, AFDM, logiciel R, package ade4, package factominer, package pcamixdata
Composants : AFDM
Lien : AFDM.pdf
Données : AFDMMaterial.zip
Références :
Pagès, J., "Analyse factorielle de données mixtes", Revue de Statistique Appliquée, vol. 52, no. 4, pp. 93-111, 2004.
Tutoriel Tanagra, "Analyse factorielle de données mixtes".

lundi 12 août 2013

Analyse des correspondances multiples - Diapos

L’analyse des correspondances multiples (ACM) ou analyse factorielle des correspondances multiples (AFCM) est le pendant de l’analyse en composantes principales lorsque toutes les variables actives sont qualitatives. Elle répond donc à la même problématique mais en se plaçant dans un cadre différent : elle substitue la distance du KHI-2 à la distance euclidienne pour mesurer les proximités entre les individus ; elle utilise le PHI-2 à la place de la corrélation pour quantifier les liaisons entre les variables.

L’approche est séduisante parce que, peut être plus que les autres méthodes factorielles, elle se prête à une multitude de points de vue. Il est possible de la mettre en œuvre avec un programme d’analyse des correspondances simples ou d’analyse en composantes principales. Le tout est de préparer les données à bon escient, préparations qui constituent d’autant de prismes sur les mêmes données.

Ce support de cours décrit les tenants et aboutissants de l’ACM. Il met l’accent sur la lecture des résultats. Les sorties des principaux logiciels d’analyse de données (SPAD, SAS, R et Tanagra) sont mis en parallèle. Bien évidemment, on retrouve exactement les mêmes résultats. Seule la présentation diffère.

Mots clés : analyse factorielle des correspondances multiples, AFCM, analyse des correspondances multiples, ACM, logiciel R, package ade4, SAS, proc corresp, SPAD
Composants : MULTIPLE CORRESPONDENCE ANALYSIS
Lien : ACM.pdf
Données : ACMMaterial.zip
Références :
Tanagra, "Analyse des correspondances multiples - Outils".

lundi 29 juillet 2013

Analyse en composantes principales - Diapos

Mon premier contact avec l’analyse en composantes principales, technique populaire s’il en est, a été l’excellent ouvrage (pour l'économétrie) de Christian Labrousse (« Introduction à l’économétrie », édition de 1983, chapitre 7). J’avoue que ça a été un vrai désastre. Le féru d’économétrie que j’étais, qui ne carburait qu’à la somme des carrés des résidus et au maximum de vraisemblance,  a été complètement dérouté par cette histoire de régression sans variable endogène, où les erreurs seraient comptées orthogonalement. Il faut dire aussi que l’auteur n’a pas été très tendre en présentant l’ACP sans aucun exemple illustratif, et en expliquant en conclusion du chapitre qu’elle s’avérait souvent décevante car : soit elle ne proposait que des solutions évidentes ; soit la lecture des résultats reposait quasi entièrement sur les connaissances du domaine, exogènes aux données.

J’en étais resté à ces idées plutôt négatives lorsque j’ai fait une double découverte qui m’a ouvert les yeux, et m’a emmené à considérer sous un tout autre angle les techniques factorielles en général. J’ai eu accès à la bibliothèque aux extraordinaires ouvrages d’Escofier - Pagès (1988) et de Volle (1985) qui présentent l’ACP sous un angle autrement plus sympathique. Et, dans le même temps, j’ai découvert les logiciels SPAD.N, CHADOC, et STATITCF dans les salles de libre accès de l’Université. Enfin, je pouvais toucher du doigt ce qu’on pouvait obtenir de l’analyse en composantes principales en la mettant en œuvre sur des vrais fichiers de données. Et ça a été une vraie révélation. Depuis, je n’ai eu cesse d’explorer le domaine, en lisant d’autres ouvrages (pour changer, les meilleurs sont en français, voir la bibliographie), en testant d’autres logiciels, en écrivant mes propres implémentations. Par exemple, je me suis ainsi rendu compte qu’il y avait plusieurs manières de programmer l’ACP en étudiant les différences entre princomp() et prcomp() de R. Je trouve tout ça passionnant, aujourd’hui et pour longtemps encore j’imagine.

Il fallait bien que je me lance à un moment ou un autre. J’ai décidé d’écrire un support sur l’ACP bien qu’elle ne fasse pas partie de mes cours attitrés. Un support de plus serait-on tenté de dire, faites « analyse en composantes principales » dans Google pour voir.  Ce document essaie surtout de faire la synthèse des nombreux tutoriels que j’ai écrits sur les différents aspects de l’ACP, disponibles sur ce site. Il est un peu verbeux pour des diapos car, à terme, il servira de base pour l’écriture d’un fascicule de cours dédié à la pratique de l’analyse factorielle.

Mots clés : analyse en composantes principales, ACP, logiciel R, package ade4, package ca, package factominer, package psych, princomp, prcomp, sas, proc factor, spad, analyse en facteurs principaux, analyse de harris, rotation varimax
Composants : PRINCIPAL COMPONENT ANALYSIS, FACTOR ROTATION, PRINCIPAL FACTOR ANALYSIS
Lien : ACP.pdf
Données : autos-acp-diapos.xls
Références :
B. Escofier, J. Pagès, "Analyses factorielles simples et multiples. Objectifs, méthodes et interprétation", Dunod, 1988.
M. Volle, "Analyse des données", Economica, 1985.

samedi 13 juillet 2013

Analyse des correspondances discriminante - Diapos

L’analyse des correspondances discriminante (ACD) est le pendant de l’analyse factorielle discriminante pour les variables descriptives qualitatives. Les observations sont regroupées en classes, et sont décrites par un ensemble de descripteurs.  L’objectif est de construire des facteurs, combinaisons linéaires des indicatrices de ces descripteurs, qui permettent de discerner au mieux les classes.

Dans ce diaporama, nous explicitons les fondements de la méthode. Nous montrons sa mise en œuvre et la lecture des résultats. Le tutoriel dédié à l’ACD (cf. références) est un bon complément à ce diaporama. Les données exemples sont traitées avec Tanagra et R.

Mots clés : analyse factorielle discriminante, ACD, discriminant correspondence analysis, DCA, analyse discriminante descriptive, analyse des correspondances, logiciel R, package ca
Composants : DISCRIMINANT CORRESPONDENCE ANALYSIS
Lien : ACD.pdf
Données : ACDMaterial.zip
Références :
H. Abdi, « Discriminant correspondence analysis », In N.J. Salkind (Ed.): Encyclopedia of Measurement and Statistics. Thousand Oaks (CA): Sage. pp. 270-275, 2007.
Tanagra, "Analyse des correspondances discriminante - Tutoriel".

lundi 1 juillet 2013

Analyse factorielle des correspondances - Diapos

L’analyse des correspondances simples (AFC pour analyse factorielle des correspondances) est une technique factorielle qui vise à présenter de manière synthétique et graphiquement les informations contenues dans les grands tableaux croisés. L’objectif est d’une part d’identifier les similitudes et différences entre les profils lignes (entre les profils colonnes), d’autre part de mettre en évidence les attractions / répulsions entre les modalités lignes et colonnes. Elle s’applique principalement aux tableaux de contingence. Mais elle peut également s’étendre à tous tableaux croisés de valeurs positives, pourvu que les notions de marges et de profils soient licites.

Dans ce support de cours (sous forme de diaporama), nous présentons l’AFC en plusieurs étapes. Nous partons tout d’abord de la notion de distance entre profils (lignes et colonnes), puis nous montrons comment calculer l’association les modalités lignes et colonnes via la statistique du test du KHI-2 d’indépendance. Nous constatons que ces analyses sont autant des points de vue différents de l’information contenue dans le tableau de données. Nous présentons alors l’AFC à travers la décomposition en valeurs singulières du tableau des résidus standardisés. Par rapport à l’école française qui montre plutôt l’AFC comme une double analyse en composante principale (ACP), ce mode de présentation - que l’on retrouve dans les ouvrages en langue anglaise  - a l’avantage de mettre en évidence la simultanéité de l’analyse en ligne et en colonne du tableau.

Un exemple est traité à l’aide des logiciels SPAD, SAS, TANAGRA et R. Les données et codes sources associés sont accessible via le lien ci-dessous. Nous mettons également en référence plusieurs tutoriels où nous avions montré la mise en œuvre de la méthode sur d’autres jeux de données, à l’aide d’autres logiciels.

Mots clés : analyse factorielle des corresponsances, AFC, analyse des correspondances simples, logiciel R, package ade4, package ca, package FactoMineR
Composants : CANONICAL DISCRIMINANT ANALYSIS
Lien : AFC.pdf
Données : AFCMaterial.zip
Références :
Tanagra, "AFC - Association médias et professions".
Tanagra, "Analyse des correspondances - Comparaisons".
Tanagra, "Analyse factorielle des correspondances avec R".

lundi 17 juin 2013

Programmation parallèle sous R

Les ordinateurs personnels sont de plus en plus performants. Ils sont maintenant pour la plupart dotés de processeurs multi-cœurs. Dans le même temps, les logiciels grands publics de Data Mining, libres ou non, restent souvent monothread. Un seul cœur est sollicité durant les calculs, tandis que les autres restent inactifs. Ca fait un peu gaspillage.

Récemment, nous avons introduit deux variantes multithread de l’analyse discriminante linéaire dans Sipina 3.10 et 3.11. Après une analyse succincte de l’algorithme, nous nous sommes concentrés sur la construction de la matrice de variance covariance intra-classes qui semblait constituer le principal goulot d’étranglement du processus. Deux types  de décomposition des calculs ont été proposés, que nous avons exploité en nous appuyant sur la programmation multithread sous Delphi (langage de développement de Sipina). Nous avons constaté que l’amélioration des performances par rapport à la version séquentielle est spectaculaire lorsque l’ensemble des cœurs disponibles sur la machine sont pleinement utilisés.

Durant le travail d’analyse qui m’a permis de mettre au point les solutions introduites dans Sipina, j’avais beaucoup étudié les mécanismes de parallélisation disponibles dans d’autres outils de Data Mining. Ils sont plutôt rares en réalité. J’avais quand même noté que des stratégies très perfectionnées sont proposées pour le logiciel R. Il s’agit souvent d’environnements qui permettent d’élaborer des programmes tirant parti des capacités étendues des machines à processeurs multi-cœurs, multiprocesseurs, et même d’un cluster de machines. Je me suis intéressé en particulier au package « parallel »  qui est lui-même une émanation des package « snow »  et « multicore » . Entendons-nous bien, la librairie ne permet pas d’accélérer miraculeusement une procédure existante. En revanche, elle nous donne l’opportunité d’exploiter efficacement les ressources machines à condition de reprogrammer la procédure en réorganisant judicieusement les calculs. L’idée maîtresse est de pouvoir décomposer le processus en tâches que l’on peut exécuter en parallèle, charge à nous par la suite d’effectuer la consolidation.

Dans ce tutoriel, nous détaillons la parallélisation d’un algorithme de calcul d’une matrice de variance covariance intra-classes sous R 3.0.0. Dans un premier temps, nous décrivons un programme séquentiel, mais facilement transformable. Dans un deuxième temps, nous utilisons les outils des packages « parallel » et « doParallel » pour lancer les tâches élémentaires sur les cœurs disponibles. Nous comparerons alors les temps de traitement. Disons-le d’emblée, contrairement aux exemples jouets que l’on peut consulter ici ou là sur le web, le bilan est passablement mitigé quand il s’agit de traiter des bases volumineuses réalistes. Les solutions achoppent sur la gestion des données.

Mots-clés :  analyse discriminante linéaire, logiciel R, package parallel, package doparallel, parLapply, mclapply, foreach
Didacticiel : fr_Tanagra_Parallel_Programming_R.pdf
Fichiersparallel.R, multithreaded_lda.zip
Références :
R-core, Package 'parallel', April 18, 2013.

mardi 4 juin 2013

Multithreading équilibré pour la discriminante

Dans le document « Multithreading pour l’analyse discriminante », nous présentions une implémentation multithread de l’analyse discriminante à destination des machines à processeurs multi-coeurs ou multiprocesseurs. A occupation mémoire égale par rapport à la version séquentielle, elle permettait de réduire les temps de calculs dans des proportions considérables en fonction des caractéristiques des données. La solution présentait néanmoins deux faiblesses : le nombre de coeurs utilisé était tributaire du nombre de classes K dans la base à traiter ; l’équilibrage des charges entre les cœurs dépendait de leur fréquence. Ainsi, sur une des bases d’expérimentation avec K = 2 classes très fortement déséquilibrées, le gain était quasi-nul par rapport à la version monothread.

Dans ce tutoriel nous présentons une nouvelle solution implémentée dans Sipina 3.11. Au prix d’une occupation mémoire accrue, que nous préciserons, elle permet de surmonter les deux goulots d’étranglement pointés sur la version précédente. Les capacités de la machine sont pleinement utilisées. Plus intéressant même, le nombre de threads devient paramétrable, permettant à l’utilisateur d’adapter les ressources machines à exploiter pour le traitement des données.

Pour mieux situer les améliorations induites par notre stratégie, nous comparons nos temps d’exécution avec la version multithread parcimonieuse en mémoire développée précédemment, la version séquentielle, et la référence SAS 9.3 (proc discrim).

Mots-clés : sipina, multithreading, thread, multithreaded data mining, multithread processing, analyse discriminante prédictive, analyse discriminante linéaire, sas, proc discrim
Didacticiel : fr_Tanagra_Sipina_LDA_Threads_Bis.pdf
Données : multithreaded_lda.zip
Références :
Tanagra, "Multithreading pour les arbres de décision".
Tanagra, "Analyse discriminante linéaire - Comparaisons".
Wikipédia, "Analyse discriminante linéaire".

jeudi 30 mai 2013

Sipina - Version 3.11

Une nouvelle version multithread de l’analyse discriminante linéaire est ajoutée dans Sipina 3.11. Par rapport à la précédente, elle présente le double avantage (1) de pouvoir utiliser tous les ressources disponibles sur les machines à processeurs multi-cœurs ou multiprocesseur ; (2) de mieux équilibrer la répartition des charges. Elle est en revanche plus gloutonne en espace mémoire, les structures internes de calcul sont dupliquées M fois (M est le nombre de threads).

Un tutoriel  viendra comparer le comportement de cette nouvelle approche avec la version précédente et l’implémentation monothread.

Site web : Sipina
Chargement : Fichier setup

samedi 25 mai 2013

Multithreading pour l'analyse discriminante

Le volume des données à traiter ne cesse d’augmenter dans le Data Mining. Avec le phénomène « Big Data », la gestion de la volumétrie devient un critère clé. Dans le même temps, nos machines personnelles sont de plus en plus puissantes, intégrant pour la très grande majorité d’entre eux plusieurs cœurs de calcul, si ce n’est plusieurs processeurs. Et pourtant, rares sont les logiciels généralistes qui exploitent pleinement les possibilités des machines modernes.

A l’instar d’un précédent document où nous détaillons une solution basée sur les threads pour l’induction des arbres de décision , nous proposons une nouvelle stratégie multithread pour l’analyse discriminante linéaire (prédictive) dans SIPINA 3.10. Cette méthode, très favorablement connue des statisticiens, est curieusement peu implémentée dans les logiciels d’obédience informatique. Alors que, sauf cas pathologiques que l’on sait identifier , elle présente des performances en prédiction comparables aux autres techniques linéaires sur la majorité des données, je pense notamment à la très populaire régression logistique (Saporta, 2006 – page 480 ; Hastie et al., janv. 2013 – page 128). Et, en termes de rapidité de traitements sur les grandes bases, elle est incomparablement plus rapide, plus encore lorsque nous exploitons l’architecture multi-coeur (ou multiprocesseur) des machines comme nous le constaterons durant nos expérimentations.

Pour mieux situer les améliorations induites par notre stratégie, nous comparons nos temps d’exécution avec des logiciels reconnus tels que SAS 9.3 (proc discrim), R (lda du package MASS) et Revolution R Community (une version « optimisée » de R).

Mots-clés : sipina, multithreading, thread, multithreaded data mining, multithread processing, analyse discriminante prédictive, analyse discriminante linéaire, sas, proc discrim, logiciel R, lda, package MASS
Composants :  LINEAR DISCRIMINANT ANALYSIS
Didacticiel : fr_Tanagra_Sipina_LDA_Threads.pdf
Données : multithreaded_lda.zip
Références :
Tanagra, "Multithreading pour les arbres de décision".
Tanagra, "Analyse discriminante linéaire - Comparaisons".
Wikipédia, "Analyse discriminante linéaire".

jeudi 23 mai 2013

Sipina - Version 3.10

L’analyse discriminante linéaire a été améliorée. Toutes les opérations sont réalisées en une seule passe sur les données.

Une version multithreadée de l’analyse discriminante linéaire a été ajoutée. Elle améliore la rapidité d’exécution en répartissant les calculs sur les éventuels coeurs (ordinateur avec un processeur multicoeur) ou processeurs (ordinateur multiprocesseur) présents sur la machine.

Un tutoriel à venir décrira le comportement de ces nouvelles implémentations sur quelques grandes bases de données.

Site web : Sipina
Chargement : Fichier setup

samedi 11 mai 2013

Classifieurs linéaires

L’apprentissage supervisé a pour objectif de mettre au jour une liaison fonctionnelle f(.) entre une variable cible Y (variable à prédire, variable expliquée, etc.) que l’on cherche à prédire et une ou plusieurs variables prédictives (les descripteurs, les variables explicatives, etc.) (X1, X2, ..., Xp). La fonction est paramétrée.

Dans ce tutoriel, nous étudions le comportement de 5 classifieurs linéaires sur des données artificielles. Les modèles linéaires sont des outils privilégiés de l’apprentissage supervisé. En effet, s’appuyant sur une simple combinaison linéaire des variables prédictives, ils présentent l’avantage de la simplicité : la lecture de l’influence de chaque descripteur est relativement facile (signes et valeurs des coefficients) ; les techniques d’apprentissage sont souvent rapides, même sur de très grandes bases de données. Nous nous intéresserons plus particulièrement à : (1) le modèle bayésien naïf (modèle d’indépendance conditionnelle), (2) l’analyse discriminante linéaire, (3) la régression logistique, (4) le perceptron simple, et (5) les machines à vaste marge (SVM, support vector machine).

L’expérimentation a été entièrement menée sous le logiciel R. Nous montrons également la mise en oeuvre de ces différentes techniques avec les logiciels Tanagra, Knime, Orange, RapidMiner et Weka.

Mots clés : modèles linéaires, bayésien naïf, modèle d'indépendance conditionnelle, analyse discriminante prédictive, régression logistique, perceptron, réseaux de neurones, svm linéaire, arbres de décision, rpart, random forest, forêts aléatoires, k-nn, k-ppv, plus proches voisins, package e1071, package MASS, package nnet, package lattice, package rpart, package rf, package class
Composants : NAIVE BAYES CONTINUOUS, LINEAR DISCRIMINANT ANALYSIS, BINARY LOGISTIC REGRESSION, MULTILAYER PERCEPTRON, SVM
Lien : fr_Tanagra_Linear_Classifier.pdf
Données : linear_classifier.zip
Références :
Wikipedia, "Linear Classifier".

mardi 23 avril 2013

Associations dans la distribution SIPINA

SIPINA est surtout connu pour ses algorithmes d’induction d’arbres de décision. En réalité, la distribution inclut deux autres outils peu connus du grand public : REGRESS, spécialisé dans la régression linéaire multiple, nous l’avions décrit dans un de nos anciens tutoriels  ; et un logiciel d’extraction de règles d’association, appelé prosaïquement « Association Rule Software » (ARS).

Depuis TANAGRA, qui intègre plusieurs composants pour l’extraction des règles d’association, ARS est très peu utilisé. J’en parle très peu moi-même. Mais comme l’outil apparaît dans le menu intégré dans Excel via la macro complémentaire « sipina.xla », plusieurs internautes m’ont demandé plus de précisions quant à son utilisation et ses spécificités.

Dans ce tutoriel, je décris la mise en œuvre du logiciel ARS lorsqu’on le lance à partir d’Excel.  Comme nous le verrons par la suite, l’interaction avec le tableur introduit des opportunités très précieuses en matière d’exploration des résultats. C’est un aspect très important tant la profusion des règles peut rapidement déconcerter. Pourvoir les filtrer et les trier de différentes manières est un atout fort dans la détection des règles les plus « intéressantes » au regard des objectifs de l’utilisateur. Les outils d’Excel nous seront d’un très grand secours à cet égard.

Mots clés : règles d'association, tableur, excel, mesures d'intérêt des règles
Composants : ASSOCIATION RULE SOFTWARE
Lien : fr_Tanagra_Association_Sipina.pdf
Données : market_basket.zip
Références :
R. Rakotomalala, « Règles d’association »
Tanagra, "Règles d'association - Comparaison de logiciels"

lundi 15 avril 2013

Paramétrer le perceptron multicouche

Au premier abord, les réseaux de neurones artificiels semblent toujours un peu énigmatiques. Justement parce qu’il est question de « neurones », et que la plupart des références qui les présentent commencent quasiment toujours par des grandes envolées sur les métaphores biologiques, faisant miroiter la perspective de doter les machines d’une intelligence. Pour l’étudiant que j’étais, tout ça me paraissait bien inaccessible… et surtout ça ne répondait pas du tout aux questions simples – mais bon on est là pour réaliser des traitements après tout – que je me posais : Est-ce que la de méthode est applicable à l’analyse prédictive ? Pour quelles configurations de données et classes de problèmes est-elle la plus performante ? Comment fixer les valeurs des paramètres – s’ils existent – associés à la méthode pour la rendre plus efficace sur mes données ?

Avec le temps, et une lecture assidue de la documentation y afférente, j’ai fini par comprendre que le perceptron multicouche  était l’approche la plus populaire en apprentissage supervisée, qu’elle était très performante pourvu que l’on sache définir correctement le nombre de neurones dans les couches cachées. Deux extrêmes tout aussi funestes sont à éviter : si on n’en met pas assez, le modèle est peu compétitif, incapable de retranscrire la relation (le concept) entre la variable cible et les prédicteurs ; si on en met trop, le modèle devient trop performant sur l’échantillon d’apprentissage, ingérant les particularités de ce dernier, non transposables dans la population.

Ceci étant posé, on vient alors nous annoncer qu’il n’y a pas de méthode universelle pour définir le bon paramétrage et qu’il faut en réalité tâtonner en s’appuyant sur des heuristiques plus ou moins heureuses. Tout ça paraît assez obscur. L’incompréhension vient souvent du fait que, d’une part,  on a du mal à appréhender le rôle des neurones de la couche intermédiaire – si l’on s’en tient à une seule couche cachée - dans la modélisation ; d’autre part, on perçoit mal également l’impact de l’augmentation ou la diminution de leur nombre.

Dans ce tutoriel, nous allons essayer d’expliciter le rôle des neurones de la couche cachée du perceptron. Nous utiliserons des données générées artificiellement pour étayer notre propos. Nous nous en tenons à 2 variables explicatives afin de pouvoir projeter les données dans le plan et ainsi décrire concrètement le comportement de l’approche. Nous travaillons avec Tanagra 1.4.48 dans un premier temps puis, dans un second temps, nous proposerons une petite routine de détection automatique du nombre optimal de neurones pour R 2.15.2 (package nnet).

Mots clés : apprentissage supervisé, réseau d neurones, perceptron simple, perceptron multicouche, sélection de variables
Composants : MULTILAYER PERCEPTRON, FORMULA
Lien : fr_Tanagra_Optimal_Neurons_Perceptron.pdf
Données : artificial2d.zip
Références :
Tanagra, "Réseaux de neurones avec SIPINA, TANAGAR et WEKA".
 Wikipedia, "Multilayer perceptron".

.