samedi 31 décembre 2016

Text mining : catégorisation de SMS sous Python


L’objectif de la catégorisation de textes est d’associer aussi précisément que possible des documents à des classes prédéfinies. Nous nous situons dans le cadre de l’apprentissage supervisé, avec une variable cible catégorielle, souvent binaire. La particularité réside dans la nature de la variable prédictive qui est un document textuel. Mettre en œuvre directement les techniques prédictives n’est pas possible, il faut passer obligatoirement par une phase de préparation des données.

La représentation par sac de mots (bag of words) est souvent privilégiée pour ramener la description du corpus de textes en tableau individus (documents) – variables (termes) : on parle de matrice documents termes. Elle est accolée à la variable cible pour former l’ensemble de données. L’affaire est censée être réglée à ce stade puisque nous retrouvons la conformation habituelle des données propice à l’analyse prédictive. Elle ne fait que commencer en réalité car la matrice a pour singularité d’avoir une dimensionnalité élevée (plusieurs milliers de descripteurs) et d’être creuse (beaucoup de valeurs sont nulles). Certaines techniques de machine learning sont plus adaptées que d’autres. La réduction de la dimensionnalité notamment revêt une importance considérable, d’une part pour améliorer les performances, d’autre part pour rendre interprétables les résultats car, au final, au-delà de la prédiction pure, il s’agit aussi de comprendre la nature de la relation entre les documents et les classes.

Dans ce tutoriel, nous décrirons le processus de catégorisation de textes sous Python en exploitant essentiellement les capacités de text mining du package scikit-learn, lequel fournira également les méthodes de data mining (régression logistique). Nous traiterons des SMS à classer en messages « spam » (courrier indésirable, délictueux) ou « ham » (légitime). Le corpus provient de la « SMS Spam Collection v.1 » (Almeida et al., 2011).

Mots clés : text mining, fouille de textes, corpus, bag of words, sac de mots, f1-score, rappel, précision, sélection de variables, logistic regression, scikit learn, python
Document : Identification des spams dans les SMS
Données : Données et programme Python
Références :
Almeida, T.A., Gómez Hidalgo, J.M., Yamakami, « A. Contributions to the Study of SMS Spam Filtering: New Collection and Results », in Proceedings of the 2011 ACM Symposium on Document Engineering (DOCENG'11), Mountain View, CA, USA, 2011.

vendredi 23 décembre 2016

Excel avancé - Cours et exercices corrigés

J’ai dû arrêter mon cours d’Excel avancé (outils d'analyse et programmation VBA - Visual Basic pour Applications) cette année. Avec un petit pincement au cœur quand même. C’était un de mes derniers enseignements devant un public non informaticien. Il me fallait développer des trésors d’ingéniosité et de patience pour persuader les étudiants que c’était intéressant pour eux (au cas où ils en douteraient) et qu’ils étaient capables de le faire (ils en doutaient vraiment beaucoup, surtout durant les premières séances). C’était d’ailleurs le dernier enseignement que je faisais de tête en m’astreignant à écrire les principales notions au tableau pour éviter d’aller trop vite (tout le monde connaît mon débit de parole cataclysmique, sans compter mon incapacité à faire cours sans pousser des beuglements avec conviction [tout le bâtiment profitait de mes séances] tant je suis submergé par ce que je fais...).

Maintenant que j’arrête le cours, je sens que je vais tout oublier. J’ai donc décidé de rédiger proprement au moins la partie VBA, et de mettre de l’ordre dans mes TD en explicitant les exercices. Je les mets en ligne avec leurs corrigés pour que tout le monde puisse en profiter.

Il faut connaître un peu Excel avant de pouvoir tirer profit de ces exercices. Le TD n°1 vous permettra de vous situer par rapport au niveau attendu pour la suite des séances.

Exercices corrigés - Excel avancé et Programmation VBA
ThèmeSujetCorrigé
TD n°1. Construction d’une feuille de calcul. Références absolues et relatives. Elaboration de graphiques.
TD n°2. Introduction à la programmation VBA. Branchements conditionnels. Ecriture et utilisation des fonctions personnalisées.
TD n°3. Simulations et scénarios. Table de simulation à 1 et 2 entrées. Gestionnaire de scénarios. Programmation VBA des fonctions personnalisées avec branchement conditionnels et branchements multiples.
TD n°4. Les boucles en programmation VBA. Exploitation du type Range (plage de cellules) dans les fonctions personnalisées.
TD n°5. Résolution des problèmes et optimisation. Valeur cible et solveur.
TD n°6. Programmation VBA des fonctions personnalisées. Les boucles while et for each. Le type Variant.
TD n°7. Programmation des macros VBA. Exploitation directe des classeurs et feuilles. Programmation des simulations.
TD n°8. Programmation des macros VBA sur les sélections. Sélection simples (une seule zone) et multiple (plusieurs zones).

Références :
Rakotomalala R., "Excel - Programmation VBA", Dec. 2016.
Rakotomalala R., "Page de cours - Excel avancé".

dimanche 11 décembre 2016

Text mining : topic model - Diapos

Le « topic modeling » est un processus de réduction de la dimensionnalité en fouille de textes. Il cherche à mettre en exergue les « topics » (thèmes) sous-jacents aux documents d’un corpus.

D’une part, les topics s’expriment dans l’espace des termes, ce qui permet de les interpréter. D’autre part, ils définissent un nouvel espace permettant de décrire les documents. Ce qui permet de mieux comprendre leur nature et les informations qu’ils (les documents) véhiculent. Les algorithmes de machine learning (supervisé ou non-supervisé) peuvent tirer parti du nouveau système de représentation, plus compact, pour réaliser des analyses plus pertinentes.

Ce support décrit deux approches particulièrement populaires dans le domaine : (1) l’approche LSI, latent semantic indexing (ou LSA – latent semantic analysis) ; (2) la LDA, latent dirichlet allocation. Nous mettrons surtout l’accent sur les idées qui les guident et la lecture des résultats.

Mais nous aborderons également une approche basée sur l’analyse factorielle des correspondances (AFC), très peu citée dans la documentation en langue anglaise. Pourtant, comme la LSI, elle s’appuie sur un mécanisme de décomposition en valeur singulière (SVD – singular value decomposition), sauf qu’elle exploite en entrée une matrice de documents termes présentant les informations sous un angle différent.

Mots clés : text mining, fouille de textes, corpus, bag of words, sac de mots, lsi, latent semantic indexing, lsa, latent semantic analysis, afc, analyse factorielle des correspondances, lda, latent dirichlet analysis, svd, singular value decomposition
Document : Topic model
Références :
Aggarwal C., Zhai C., "Mining Text Data", Springer, 2012.
Grossman D., Frieder O., "Information retrieval - Algorithms and heuristics",  Second Edition, Springer, 2004.

lundi 28 novembre 2016

Text mining : la catégorisation de textes - Diapos

Ce troisième volet consacré à la fouille de textes concerne la catégorisation de documents (document classification en anglais).

L’affaire semble simple une fois la matrice documents termes constituée. Nous disposons d’un tableau individus variables avec comme colonne supplémentaire la classe d’appartenance de chaque document. Il s’agit d’un problème très classique d’analyse prédictive. C’est pourtant à ce stade que le vrai travail commence. En effet, nous devons faire face à quelques spécificités : nous cherchons souvent à avant tout identifier une classe contre les autres, la matrice de données est creuse et de forte dimensionnalité. Ces éléments nous amènent à approfondir plusieurs aspects particuliers de l’apprentissage supervisé.

Dans ce support, nous nous attardons sur la mesure d’évaluation des performances avec la F-Mesure (f-measure, f-score) qui permet d’arbitrer entre le rappel et la précision. Nous parlerons également des techniques supervisées rapides et agressives de sélection de variables visant à réduire la dimensionnalité. Enfin, nous étudierons plusieurs techniques prédictives populaires dans la catégorisation de textes car apportent des réponses adaptées aux singularités du domaine.

Mots clés : text mining, fouille de textes, corpus, bag of words, sac de mots, f-mesure, f-measure, rappel, précision, courbe précision rappel, micro average, macro average, sélection de variables, méthode filtre, k-ppv, k plus proches voisins, k-nn, nearest neighbor, bayésien naïf, naive bayes, modèle d'indépendance conditionnelle, méthode rocchio
Document : Catégorisation de textes
Références :
Weiss S., Indurkhya N., Zhang T., Damerau F., « Text Mining – Predictive methods for analyzing unstructured information », Springer, 2005.
Aggarwal C., Zhai C., « Mining Text Data », Springer, 2012.

samedi 19 novembre 2016

Text mining : la matrice documents termes - Diapos

Ce second volet consacré au text mining aborde la construction de la matrice documents termes. Elle est centrale dans le processus de fouille de texte. L’efficacité des techniques data mining subséquentes dépend essentiellement de sa qualité, de sa capacité à reproduire l’information pertinente contenue dans les documents textuels.

Plusieurs volets sont détaillés : l’extraction des termes, la réduction de la dimensionnalité, la question de la pondération, et enfin les mesures de similarité et de distances adaptées aux spécificités du domaine.

Des traitements exemples sur un corpus jouet et sur les données « acq » de Reuters (disponibles avec le package ‘tm’ pour le logiciel R) permettent d’illustrer le propos.

Mots clés : text mining, fouille de textes, corpus, mots vides, stop words, lemmatisation, lemmatization, racinisation, stemming, term frequency, TF, inverse document frequency, IDF, TF-IDF, distance euclidienne, indice de jaccard, similarité cosinus, n-grams, n-grammes, shingles
Document : Matrice documents termes
Références :
Weiss S., Indurkhya N., Zhang T., Damerau F., « Text Mining – Predictive methods for analyzing unstructured information », Springer, 2005.
Aggarwal C., Zhai C., « Mining Text Data », Springer, 2012.

lundi 14 novembre 2016

Introduction au text mining - Diapos

J’entame cette semaine mon nouveau cours de Text Mining en Master SISE. Je l’assurai avec un binôme depuis plusieurs années déjà. Cette année j’ai décidé de le prendre en main seul afin de le coupler avec le cours de web mining et d’analyse des réseaux sociaux qui aura lieu au second semestre.

Ce premier support introductif essaie de cerner la fouille de textes (text mining) en le cadrant par rapport à la démarche générique du data mining. Les principales applications sont détaillées. Une première approche avec la représentation des corpus (collection de documents) à l’aide des sacs de mots (bag of words) est initiée. Ce thème sera largement approfondi dans un second support qui sera en ligne tantôt.

Mots-clés : text mining, fouille de textes, recherche d'information, catégorisation de textes, information retrieval, document classification, clustering de textes, bag of words, sac de mots
Document : Introduction au text mining
Références :
Weiss S., Indurkhya N., Zhang T., Damerau F., « Text Mining – Predictive methods for analyzing unstructured information », Springer, 2005.
Feldman R., Sanger J., « The text mining handbook – Advanced approcahes in analyzing unstructuerd data », Cambridge University Press, 2008.
Aggarwal C., Zhai C., « Mining Text Data », Springer, 2012.

lundi 31 octobre 2016

Etude des logiciels de data science

Le logiciel est une composante clé de l’activité du data scientist. S’extasier sur la formule mathématique de la marge dans les SVM est une chose, savoir mettre en œuvre la méthode à bon escient sur une étude réelle avec des vraies données en est une autre. Et cela passe forcément par les outils.

Dans le cadre de mes enseignements en Master SISE, j’ai demandé aux étudiants d’effectuer une étude exploratoire de plusieurs logiciels de data science. J’ai imposé la liste des logiciels à analyser de manière à ce que les étudiants puissent faire preuve d’adaptabilité. Mon objectif était leur faire découvrir des outils d’horizons et avec des modes opératoires différents. Ils disposaient de trois semaines, sachant qu’ils avaient des cours en parallèle, pour : prendre en main l’outil, en évaluer les contours, l’installer dans notre salle informatique, monter des études de cas (on parle de « lab » de nos jours) sous forme de travaux dirigés qu’ils devaient assurer auprès de leurs collègues, élaborer un corrigé sous forme de tutoriel animé à publier sur un site de partage de vidéo.

Les étudiants ont si bien travaillé que je me suis dit qu’il était intéressant de partager leur production avec vous. Sont recensés dans le tableau suivant : la présentation succincte de l’outil, la fiche du lab, les données associées, le corrigé accessible sur Youtube. Les logiciels ont pour point commun d’être libres ou de proposer une version d’essai gratuite suffisamment opérationnelle. D’autres outils existent bien sûr, ils seront vraisemblablement étudiés dans le futur. Et R, Python et Knime ont été laissés sciemment de côté parce qu’ils font l’objet de cours et TD par ailleurs dans le master.

Enfin, tout est perfectible bien sûr. Il s’agit là d’un certain point de vue sur les outils étudiés. Prétendre à l’exhaustivité est impossible, surtout avec des contraintes de temps fortes (préparation, présentation, durée des labs). Les présentations et les exercices constituent avant tout des points d’entrées qui nous permettent de nous initier à l’utilisation de ces logiciels. C’était l’objectif premier du projet.

Étude des logiciels de Data Science
LogicielPrésentationExercicesDonnéesTutoriel
Azure Machine Learning
RapidMiner
Weka
Orange
Rattle
Dataiku DSS

Références :
Piatetsky G., « Gartner 2016 Magic Quadrant for Advanced Analytics Platforms: gainers and losers », KDnuggets, Feb. 2016.

dimanche 23 octobre 2016

Clustering : la méthode TwoStep Cluster

Au gré de mes pérégrinations sur le web, mon attention a été attirée par l’algorithme de classification automatique (clustering, apprentissage non supervisé) TwoStep Cluster décrit sur le site de SPSS. Il présente des caractéristiques très intéressantes de prime abord : il sait traiter les variables actives quantitatives et qualitatives, il peut appréhender des très grandes bases de données avec des temps de traitements ébouriffants, il sait détecter automatiquement le nombre adéquat de classes. La méthode répond à bien des préoccupations pratiques des data scientist dans ce type de démarche. Pourtant, très étrangement, elle est peu connue, et il n’existe pas de package pour R ou pour Python qui ait essayé de l’implémenter.

En y regardant de plus près, je me suis rendu compte qu’il s’agissait d’une approche mixte (ou approche combinée) (Lebart et al., 1995 ; section 2.3) popularisée par le logiciel SPAD. Dans une première étape, des pre-clusters sont construits à l'aide d'un algorithme de partitionnement rapide. Dans une deuxième étape, ces pre-clusters sont fusionnés itérativement à l'aide d'un algorithme hiérarchique.

En réalité, la vraie originalité de la solution SPSS réside dans la stratégie de détection des classes dans la structure hiérarchique. Ce tutoriel s’attachera surtout dans un premier temps à décrypter le mécanisme d’identification du nombre "optimal" de classes. Dans un second temps, nous comparerons sur une base de taille relativement importante l’efficacité (identification du bon nombre de classes) et les temps de calcul de l’algorithme par rapport à des implémentations classiques de l’approche mixte combinant méthode des centres mobiles et classification ascendante hiérarchique, sous SPAD, Tanagra et R.

Mots clés : clustering, classification automatique, typologie, apprentissage non-supervisé, CAH, k-means, birch, ACP, classification sur facteurs, logiciel R, kmeans, hclust, bic, aic
Composants : K-MEANS, HAC
Document : TwoStep Cluster
Données : Données et programme R
Références :
IBM SPSS, "TwoStep Cluster Analysis", version 21.0.0.
Tutoriel Tanagra, "Traitement des gros volumes - CAH Mixte", octobre 2008.
L. Lebart, A. Morineau, M. Piron, « Statistique Exploratoire Multidimensionnelle », Dunod, 1995.

mercredi 19 octobre 2016

Clustering : algorithme des k-médoïdes - Diapos

La méthode des k-médoïdes est une technique de classification automatique par réallocations. Sa particularité repose essentiellement sur la notion de médoïde, qui correspond au point représentatif d’un ensemble d’observations associées à un groupe. Si les classes sont relativement convexes, sa position dans l’espace de représentation est très proche du barycentre. En revanche, pour les classes non convexes, ou en présence de points atypiques, il se révèle autrement plus robuste en dépassant le caractère artificiel du barycentre.

Ce support présente les idées sous-jacentes à la méthode. L’algorithme PAM (partitioning around medoids) – qui est une des implémentations les plus connues de l’approche - est détaillé, ainsi que CLARA (clustering large applications) qui se révèle plus adapté au traitement des grandes bases de données. Le critère silhouette est mis en avant pour identifier le nombre adéquat de classes, vieux serpent de mer de la classification automatique.

Mots-clés : classification automatique, typologie, clustering, apprentissage non supervisé, classification par partition, méthodes de réallocation, médoïde, PAM, partitioning aroung medoids, CLARA, clsutering large applications, critère silhouette, graphique silhouette
Document : Classification - Algorithme des k-médoïdes
Références :
Tutoriel Tanagra, "Clustering : méthode des centres mobiles", octobre 2016.
Tutoriel Tanagra, "Clustering : caractérisation des classes", septembre 2016.
Tutoriel Tanagra, "Classification ascendante hiérarchique - Diapos", juillet 2016.
Tutoriel Tanagra, "Classification automatique sous R", octobre 2015.
Tutoriel Tanagra, "Classification automatique sous Python", mars 2016.

mercredi 12 octobre 2016

Clustering : méthode des centres mobiles - Diapos

La méthode des centres mobiles - méthode des K-Means - est une technique de classification automatique populaire, d’une part parce qu’elle est très simple, d’autre part parce que son implémentation ne nécessite pas de conserver en mémoire vive la totalité des données, permettant ainsi de traiter des très grandes bases. Même si par ailleurs l’algorithme est relativement lent car il nécessite le passage répété des observations.

Ce support décrit l’algorithme dans les grandes lignes. Nous nous intéressons ensuite aux différentes extensions telles que le traitement des variables actives qualitatives ou mixtes (qualitatives et quantitatives), la classification floue (fuzzy c-means), et la classification de variables (classification autour des variables latentes). On se rend compte à cet égard que la méthode des centres mobiles est relativement souple et s’applique à une large palette de problèmes.

Mots-clés : classification automatique, typologie, clustering, apprentissage non supervisé, inertie inter-classes, inertie intra-classes, inertie expliquée, théorème d’huygens, classification par partition, méthodes de réallocation
Document : Classification - Méthode des centres mobiles
Références :
Tutoriel Tanagra, "Clustering : caractérisation des classes", septembre 2016.
Tutoriel Tanagra, "Classification ascendante hiérarchique - Diapos", juillet 2016.
Tutoriel Tanagra, "Classification automatique sous R", octobre 2015.
Tutoriel Tanagra, "Classification automatique sous Python", mars 2016.

mercredi 28 septembre 2016

Clustering : caractérisation des classes - Diapos

L’interprétation des classes est une étape essentielle de la classification automatique. En effet, une fois les groupes constitués, il faut comprendre les mécanismes qui en sont à l’origine. Identifier les caractéristiques qui sous-tendent les différenciations entre les groupes est primordial pour s’assurer de leur crédibilité.

Dans ce support de cours, nous explorons les techniques simples univariées et multivariées. Les premières ont le mérite de la facilité de calcul et de lecture, mais ne tiennent pas compte de l’effet conjoint des variables. Les secondes sont a priori plus performantes, mais nécessitent une expertise supplémentaire pour appréhender pleinement les résultats.

Mots-clés : classification automatique, typologie, clustering, apprentissage non supervisé, inertie inter-classes, inertie intra-classes, inertie expliquée, théorème d’huygens, valeur test, distance entre centres de classes, rapport de corrélation
Document : Caractérisation des classes
Dataset : Voitures
Références :
Tutoriel Tanagra, "Interpréter la valeur test", avril 2008.
Tutoriel Tanagra, "Comprendre la taille d'effet (effect size)",  mai 2017.
Tutoriel Tanagra, "Classification ascendante hiérarchique - Diapos", juillet 2016.
Tutoriel Tanagra, "Classification automatique sous R", octobre 2015.
Tutoriel Tanagra, "Classification automatique sous Python", mars 2016.

jeudi 18 août 2016

Master SISE - Remise à niveau - Clustering

Le clustering (classification automatique, typologie, apprentissage non supervisé) consiste à catégoriser des objets à partir de leurs propriétés de similarité. Ce programme de remise à niveau pour le Master SISE est consacré à la classification ascendante hiérarchique (CAH) et la méthode des centres mobiles (K-Means), techniques que l’on retrouve quasi-systématiquement dans les cours d’initiation au clustering. D’autres méthodes avancées seront étudiées en Master (méthodes adaptées aux grandes dimensions, dbscan, birch, cartes de Kohonen, etc.).

Les exercices de ce thème font la part belle à l’interprétation des résultats, en particulier la caractérisation des groupes à l’aide des variables actives et illustratives. Les outils utilisés sont Excel, Tanagra et R.

Document principal : Principes de la classification automatique
Outils : Excel, Tanagra, R (RStudio), Python (Anaconda)
Exercice 1 : Classification ascendante hiérarchique, données.
Exercice 2 : Centres mobiles, données.
Exercice 3 : Étude de cas.

mardi 16 août 2016

Master SISE - Remise à niveau - Analyse prédictive

L’analyse prédictive a énormément contribué à la popularité du data mining et du machine learning. Dans ce programme de remise à niveau pour le master SISE, nous nous concentrons sur les techniques d’apprentissage supervisé où la variable cible est catégorielle. C’est un parti pris pédagogique sachant que la régression fait également partie de l’analyse prédictive mais, dans sa perception commune, elle est plutôt associée à la démarche économétrique et aux statistiques.

Dans une première approche, nous nous focaliserons sur l’analyse discriminante linéaire et les arbres de décision. Les méthodes avancées (ex. SVM, méthodes ensemblistes [random forest, boosting, gradient boosting], réseaux de neurones, etc.) sont enseignées en Master.

Nous multiplions les outils dans ce thème : nous utilisons Excel en tandem avec Tanagra et Sipina d’une part ; R (RStudio) d’autre part. Pouvoir jongler entre les outils permet de ne pas en être dépendants.

Document principal : Principes de l’apprentissage supervisé
Outils : Excel, Tanagra, Sipina, R (RStudio), Python (Anaconda)
Exercice 1 : Analyse discriminante prédictive, données.
Exercice 2 : Analyse discriminante et sélection de variables, données.
Exercice 3 : Arbres de décision, données.
Exercice 4 : Arbres de décision – Frontières induites.
Exercice 5 : Comparaison de méthodes, données.

jeudi 11 août 2016

Master SISE - Remise à niveau - Inférence statistique

L’inférence statistique constitue la base même de la découverte de connaissances à partir des données. Il s’agit de délimiter jusqu’à quel point un constat ou une mesure effectuée sur un échantillon (un ensemble d’observations) peut être généralisé sur l’ensemble de la population. L’approche est d’autant plus crédible que nous pouvons associer une probabilité d’erreur aux décisions que nous prenons.

Le domaine est vaste et complexe. Il prend ses racines dans les calculs probabilistes. Nous simplifions un peu beaucoup dans ce programme de remise à niveau pour le master SISE en nous focalisant sur les aspects opérationnels de la pratique des statistiques : les estimations ponctuelles et par intervalle, les tests d’hypothèses.

Tous les calculs doivent être effectués sur machine à partir de fichiers de données réalistes, sous Excel et sous R.

Document principal : Inférence statistique
Outils : Excel + R (RStudio)
Exercice 1 : Lecture des tables statistiques.
Exercice 2 : Estimation et test, données.
Exercice 3 : Comparaison de populations, données.
Exercice 4 : Corrélation et régression, données.

vendredi 5 août 2016

Les cartes de Kohonen avec R

Ce tutoriel vient compléter le support de cours consacré aux "Cartes auto-organisatrices de Kohonen". Le premier objectif est de mettre en lumière deux aspects importants de l’approche : sa capacité à résumer l’information disponible dans un espace à deux dimensions ; son couplage avec une méthode de classification automatique permettant d’associer la représentation topologique (et la lecture que l’on peut en faire) à l’interprétation des groupes issus de la typologie. Nous utiliserons le logiciel R et le package « kohonen ».

Dans un deuxième temps, nous effectuerons une étude comparée de la qualité de la segmentation avec les K-Means, qui fait figure de référence, en procédant à une validation externe c.-à-d. en confrontant les regroupements proposés par les approches avec une classification préétablie. Cette procédure est souvent utilisée en recherche pour évaluer les performances des méthodes de clustering. Elle prend tout son sens lorsqu’on l’applique sur des données artificielles où l’on connait – parce que générée sciemment – la bonne typologie. Nous utiliserons les composants K-Means et Kohonen-Som de Tanagra.

Rendons à César ce qui lui appartient, ce tutoriel est en partie inspiré de l’article de Shane Lynn, accessible sur le site R-bloggers. Je me suis évertué à le compléter en introduisant les calculs intermédiaires permettant de mieux saisir le sens des graphiques, et en effectuant l’étude comparative.

Mots-clés : som, self organizing maps, kohonen, technique de visualisation, réduction de dimensionnalité, classification automatique, clustering, cah, classification mixte, logiciel R, package kohonen
Composants : KOHONEN-SOM, HAC, K-MEANS
Lien : Les cartes de Kohonen avec R
Fichier : waveform - som
Références :
Tutoriel Tanagra, "Les cartes auto-organisatrices de Kohonen - Diapos", Juillet 2016.
Tutoriel Tanagra, "Les cartes de Kohonen", Juillet 2008.
Lynn S., "Self-Organising Maps for Customer Segmentation using R", R-bloggers, February 2014.

jeudi 4 août 2016

Master SISE - Remise à niveau - Analyses factorielles

Les techniques d’analyses factorielles sont très populaires, notamment dans le monde francophone. D’une part, parce que l’école d’analyse factorielle française a été, et est toujours, particulièrement prolifique, nous délivrant des ouvrages exceptionnels donnant tout le sel à ces techniques ; d’autre part, parce que les méthodes sont intrinsèquement performantes, nous offrant des possibilités multiples d’inspection des données.

Ce programme de remise à niveau pour le Master SISE concerne l’analyse en composantes principales (ACP), l’analyse des correspondances multiples (ACM) et l’analyse factorielle des correspondances (AFC). A chaque thème est associé deux séries d’exercices : la première se présente comme un guide permettant d’assimiler les principaux repères d’une analyse ; la seconde est une étude de cas où l’étudiant doit architecturer lui-même sa démarche, en fonction des objectifs de l’étude et des caractéristiques des données.

Les supports de qualité pouvant servir de référence sont très nombreux sur internet. J’ai fait une petite sélection dans le document principal. Il est très facile d’enrichir son apprentissage en faisant quelques recherches sur Google. Le tout est de ne pas se perdre.

Document principal : Analyses factorielles
Voir aussi : Pages ACP et AFC/ACM de ce site des tutoriels
Outils : R + RStudio, Python (Anaconda)
Exercice 1 : Apprentissage ACP, données (Autos 2005).
Exercice 2 : Etude de cas ACP (Crime).
Exercice 3 : Apprentissage ACM, données (Races canines).
Exercice 4 : Etude de cas ACM (Cars preference).
Exercice 5 : Apprentissage AFC, données (Médias professions).
Exercice 6 : Etude de cas AFC (Régionales 2004).

dimanche 31 juillet 2016

Les cartes auto-organisatrices de Kohonen - Diapos

Les cartes de Kohonen (en anglais, SOM : self organizing maps) sont des réseaux de neurones orientés à deux couches : l’entrée correspond à la description des données, la sortie est organisée sous forme de grille (le plus souvent) et symbolise une organisation des données. Les cartes servent à la fois pour la réduction de dimensionnalité (d’un espace à p dimensions, nous nous projetons dans un espace 2D), pour la visualisation (les proximités sur la grille correspondent à une proximité dans l’espace initial), et la classification automatique (on peut procéder à des regroupements des neurones de la couche de sortie).

Ce support de cours décrit dans les grandes lignes les mécanismes sous-jacents aux cartes de Kohonen. L’accent est mis sur la visualisation qui est un de ses atouts forts.  La mise en œuvre sous R (package kohonen) et Tanagra (KOHONEN-SOM) est également présentée. J’ai déjà écrit un tutoriel sur le sujet il y a fort longtemps (2008), un autre viendra incessamment où j’essaierai de mettre l’accent sur la visualisation et la robustesse de la méthode.

Mots-clés : som, self organizing maps, kohonen, technique de visualisation, réduction de dimensionnalité, classification automatique, clustering, cah, classification mixte, logiciel R, package kohonen
Composants : KOHONEN-SOM
Document : Kohonen SOM - Diapos
Références :
Tutoriel Tanagra, "Les cartes de Kohonen", Juillet 2008.
Tutoriel Tanagra, "Les cartes de Kohonen avec R", Août 2016.

jeudi 28 juillet 2016

Master SISE - Remise à niveau - Introduction à R

R est multiple : il représente un langage de programmation doté des attributs principaux d’un langage (type de données, structures algorithmiques, organisation des programmes en fonctions et modules) ; il correspond à un logiciel de statistique et de data mining, doté d’une bibliothèque de fonctions extensibles à l’infini grâce au système des packages, particulièrement ingénieux je trouve, qui contribue largement à son succès ; il propose enfin des outils performants de management des données.

Mon cours en Master se focalise sur le premier aspect. Le second viendra au fur et à mesure de l’étude des techniques de data mining et machine learning. Ce programme de remise à niveau pour le Master SISE est donc principalement consacré au troisième thème, celui de la manipulation des données, de l’exploration des opérations de calculs intermédiaires (transformation de variables, recodage, statistiques récapitulatives, etc.), et des représentations graphiques.

Document principal : Introduction au logiciel R
Outils : R + RStudio (conseillé, non obligatoire)
Exercice 1 : Manipulation des data frame, données.
Exercice 2 : Calculs statistiques sur vecteurs, données.
Exercice 3 : Corrélation et régression avec R, données.

lundi 25 juillet 2016

Classification ascendante hiérarchique - Diapos

La CAH (classification ascendante hiérarchique) est une technique de classification (typologie, clustering, apprentissage non supervisé) très populaire. Son succès repose – entres autres – sur la nature de la solution qu’elle propose : nous disposons à l’issue des traitements d’une série de partitions emboîtées représentées graphiquement à l’aide d’un dendrogramme. Ainsi, au lieu d’une réponse unique, très possiblement arbitraire surtout s’agissant de regroupements sans a priori d’ensembles d’observations, nous disposons de scénarios de solutions qui nous permettent d’enrichir l’analyse que nous menons sur nos données.

Ce support de cours décrit dans les grandes lignes les mécanismes sous-jacents à l’algorithme d’apprentissage. La mise en œuvre sous R (hclust), Python (package scipy) et Tanagra (HAC) est également détaillée. Les nombreux tutoriels cités en bibliographie permettront aux lecteurs d’aller plus loin dans la pratique de la technique dans des problèmes réels.

Mots-clés : cah, classification ascendante hiérarchique, classification automatique, typologie, clustering, apprentissage non supervisé, tandem analysis, classification sur composantes principales, cah mixte, logiciel R, hclust, python, package scipy, distance euclidienne, stratégie d’agrégation, méthode ward, saut minimum, saut maximum, single linkage, complete linkage, classement d’un individu supplémentaire, inertie, inertie inter-classes, inertie intra-classes, théorème d’huygens
Composants : HAC, K-MEANS
Document : cah.pdf
Références :
Tutoriel Tanagra, "Classification automatique sous R", octobre 2015.
Tutoriel Tanagra, "Classification automatique sous Python", mars 2016.

lundi 18 juillet 2016

ANOVA à un et deux facteurs - Diapos

Je m’intéresse un peu à l’ANOVA (analyse de la variance ou analyse de variance) en ce moment. Ça m’a rappelé mes débuts dans l’enseignement. A l’époque, 2e moitié des années 90, on me proposait souvent des remplacements (ben oui, on est novice, on n’a pas trop le choix). Cela m’a amené à faire des grands écarts entre des cours de séries temporelles, d’ANOVA, …, de bases de données sous Paradox (qui s’en rappelle aujourd’hui ?), de programmation SQL sous Interbase (itou ?), etc. Avec le recul, je me rends compte que ces aventures auront été très formatrices.

A propos de l’ANOVA donc, j’ai jeté un coup d’œil sans trop y croire dans mes archives. J’étais moins organisé que maintenant il faut dire. Grande fut ma surprise de tomber sur un support relativement construit. Du coup, j’ai décidé de le mettre en ligne en le vérifiant entièrement, en le relookant très légèrement (j’ai ajouté des couleurs, le document initial était particulièrement austère), et en introduisant les traitements sous R.

Pour rappel, l’ANOVA consiste à vérifier que plusieurs échantillons proviennent de la même population en se basant sur la comparaison des moyennes. On peut également la considérer sous le prisme de l’étude de l’influence d’une ou plusieurs variables qualitatives sur une variable d’intérêt quantitative (Wikipédia).

Mots clés : anova, analyse de variance, tests post hoc, comparaisons multiples, logiciel R, aov, pairwise.t.test, correction de bonferroni, sidak, mesures répétées
Lien : ANOVA.pdf
Données : autos_anova.xlsx
Références :
Dagnelie P., "Statistique théorique et appliquée - Tome 2. Inférence statistique à une et à deux dimensions", De Boeck, 2011.
Guenther W., "Analysis of variance", Prentice-Hall, 1964.

mardi 12 juillet 2016

Master SISE - Remise à niveau - Statistique Descriptive

Voici le second opus (live is life, lalaa… lalala, toute ma jeunesse ça...) du programme de remise à niveau. Il concerne les statistiques descriptives sur tableur.

Pour les initiés, il n’y a aucune difficulté. Le principal enjeu est la réalisation des différentes tâches sous Excel. Il faut une certaine connaissance du tableur, d’où la nécessité du thème précédent.

Pour les non-initiés aux statistiques, il faut un peu de lecture pour comprendre les principaux concepts de la description des données. Certains sont relativement simples (caractéristiques de tendance centrale, fréquences absolues et relatives, …), d’autres demandent un peu plus d’attention (liaison statistique, …).

Des supports de qualité sont accessibles en ligne. Ils sont référencés dans le document principal.

Document principal
: Statistique descriptive
Outil : Excel (Libre ou Open Office Calc peuvent faire l’affaire)
Exercice 1 : Statistiques univariées et bivariées, données.
Exercice 2 : Choix des outils, données.
Exercice 3 : Corrélation et régression, données.

vendredi 8 juillet 2016

Master SISE - Programme de remise à niveau - Excel

Ce premier thème du programme de remise à niveau pour le master SISE concerne Excel. Je sais ce qu’en pensent certains de mes congénères. Il n’en reste pas moins qu’il arrive en bonne place dans le sondage annuel des KDnuggets (ex. en 2016). Il en est de même dans les offres d’emploi. Personne ne peut négliger cela. En réalité, il ne faut pas demander à Excel ce qu’il ne sait pas faire. Nativement, les fonctions statistiques sont un peu limitées, les fonctions de data mining sont inexistantes, dire le contraire serait mentir. Mais, d'un autre côté, Excel se révèle simple mais puissant pour le management de données, tant que la volumétrie reste modérée. Dans les faits, les utilisateurs tirent pleinement profit de ses capacités en le couplant avec un outil spécialisé de data mining, via le mécanisme des add-ins (macros complémentaires) par exemple.

Ce programme est consacré au traitement des listes sous Excel (réaliser les exercices à l'identique est possible sous Libre ou Open Office). Nous verrons ainsi tour à tour le filtre automatique, la mise en forme conditionnelle, le filtre avancé et l’outil tableau croisé dynamique.

Supports de référence : Excel - Traitement des listes.
Exercice 1 : Filtre automatique, données.
Exercice 2 : Mise en forme conditionnelle, données.
Exercice 3 : Filtre avancé, données.
Exercice 4 : Tableau croisé dynamique, données.

samedi 11 juin 2016

Les add-ins Tanagra et Sipina pour Excel 2016

Les macros complémentaires (« add-in » en anglais) « tanagra.xla » et « sipina.xla » participent grandement à la diffusion des logiciels Tanagra et Sipina. Il s’agit d’intégrer des menus dédiés au data mining dans Excel, ils mettent en place une passerelle simple entre le tableur et les outils spécialisés.

J’avais développé et testé les dernières versions des macros complémentaires pour Excel 2007 et 2010. Ayant pu accéder récemment à Excel 2016, vous pensez bien que j’ai tout de suite vérifié le dispositif. La conclusion est que le système fonctionne sans anicroche.

Mots-clés : importation des données, fichier excel, macro complémentaire, add-in, add-on, xls, xlsx
Lien : fr_Tanagra_Add_In_Excel_2016.pdf
Références:
Tutoriel Tanagra, "L'add-in Tanagra pour Excel 2007 et 2010", août 2010.
Tutoriel Tanagra, "L'add-in Sipina pour Excel 2007 et 2010", août 2014.

mardi 7 juin 2016

Image mining avec Knime

La fouille d’images ou image mining est une discipline assez ancienne. Schématiquement, il s’agit d’appliquer des techniques de machine learning au contenu des images c.-à-d. à partir de leurs caractéristiques visuelles. Sa démocratisation est plus récente en revanche. J’y vois plusieurs raisons : la profusion des données images avec le web (big data, etc., etc.) nécessite un savoir faire supplémentaire, on observe d’ailleurs que le traitement d’images est de plus en plus présent dans les challenges ; l’apparition d’outils faciles à appréhender pour les férus de data mining.

Le module "Image Processing" de Knime est assez symbolique de cette évolution. Il n’est même pas nécessaire de faire l’apprentissage langage de programmation. On peut réaliser une analyse complète sans avoir à écrire une seule ligne de code. Le plus important est d’avoir une vision globale de la trame de l’étude. Il nous suffit alors de définir dans le bon ordre la séquence des traitements pour obtenir des résultats qui tiennent la route.

Ce tutoriel a pour objet un problème de classement. On souhaite discerner automatiquement les photos contenant un véhicule de celles contenant tout autre type d’objet. La principale information est que, malgré des connaissances relativement succinctes en traitement d’images, j’ai pu mener à son terme l’étude avec une aisance qui en dit long sur l’utilisabilité du logiciel. Le plus difficile aura été d’identifier le composant le plus adapté à chaque étape, les tutoriels didactiques sont rares, en français n’en parlons même pas, il faut prendre un peu de temps pour lire attentivement la documentation.

Mots clés : image mining, fouille d'images, catégorisation d'images, arbres de décision, random forest
Lien : fr_Tanagra_Image_Mining_Knime.pdf
Données et programme (archive Knime) : image mining tutorial
Références :
Knime Image Processing, https://tech.knime.org/community/image-processing
S. Agarwal, A. Awan, D. Roth, « UIUC Image Database for Car Detection » ; https://cogcomp.cs.illinois.edu/Data/Car/

mardi 31 mai 2016

Programmation Python sous Spark avec PySpark

Dans la série « je découvre Spark », voici un tutoriel consacré à la librairie PySpark pour la programmation Python sous Spark. Il vient en contrepoint à celui consacré à SparkR (pour R). La trame est exactement la même.

La première partie est donc commune (installation et configuration de Spark) ; la seconde partie consacré à l’exploitation des méthodes de PySpark est originale.

La principale information est que nous avons pu réaliser exactement les mêmes traitements sous R et Python, à savoir : l’importation des données, leur partition en échantillon d’apprentissage et de test, la modélisation sur la première, la prédiction sur la seconde, l’élaboration de la matrice de confusion et le calcul des indicateurs de performances.

Tout comme pour SparkR, ce tutoriel a bénéficié du travail exploratoire des étudiants du Master SISE de cette année pour leurs projets « Big Data ». Je les remercie encore une fois.

Mots-clés : langage python, package pyspark, big data, hadoop, spark, big data analytics, anaconda, spyder, régression logistique
Lien : Python sous Spark avec PySpark
Fichiers : Données et programme Python
Références :
Spark, "Welcome to Spark Python API Docs!".
Tutoriel Tanagra, "Programmation R sous Spark avec SparkR", mai 2016.

jeudi 19 mai 2016

Programmation R sous Spark avec SparkR

Apache Spark est un framework open source de calcul distribué dédié au Big Data. Sa particularité est qu’il est capable de travailler en mémoire vive. Il est très performant pour les opérations nécessitant plusieurs itérations sur les mêmes données, exactement ce dont ont besoin les algorithmes de machine learning.

Au-delà des API (modules de classes et fonctions) standards, Spark intègre des librairies additionnelles : Streaming, traitement des données en flux ; SQL, accès aux données Spark avec des requêtes SQL ; GraphX, traitement des graphes ; et, c’est ce qui nous intéresse au premier chef, MLlib, types de données et algorithmes pour le machine learning.

SparkR est un package R qui permet de manipuler les types de données et méthodes de MLlib (pas toutes, le portage est en cours) en programmation R, et de bénéficier  directement des avantages de Spark (gestion de la volumétrie, calcul distribué). Ce tutoriel a pour objectif de s’initier à l’utilisation de SparkR en traitant un exemple typique d’analyse prédictive.

Enfin, et ça me fait très plaisir de pouvoir le dire, ce document doit beaucoup au travail de deux groupes d’étudiants du Master SISE pour leurs projets "Big Data", l’un avait travaillé sur "SparkR", l’autre sur "PySpark" (programmation Python, qui fera l’objet d’un autre tutoriel). Ils ont largement défriché le terrain, qu’ils en soient chaleureusement remerciés.

Mots-clés : logiciel R, package SparkR, big data, hadoop, spark, big data analytics, rstudio, régression logistique
Lien : R sous Spark avec SparkR
Fichiers : Données et programme R
Références :
Phelip A., "Découvrez SparkR, la nouvelle API de Spark", Blog Xebia, Sept. 2015.
Emaasit D., "Installing and starting SparkR locally on Windows OS and RStudio", R-bloggers, July 2015.
Tutoriel Tanagra, "Programmation Python sous Spark avec PySpark", mai 2016.
Tutoriel Tanagra, "Programmation R sous Hadoop", avril 2015.

lundi 16 mai 2016

SVM : Support Vector Machine avec R et Python

Ce tutoriel vient compléter le support de cours consacré au « Support Vector Machine » auquel nous nous référerons constamment [SVM - Diapos] . Il met en lumière deux éléments importants de la méthode : la position des points supports et le tracé des frontières dans l’espace de représentation lorsque nous construisons un séparateur linéaire ; la complexité du paramétrage dans le recherche de la solution adéquate pour un problème artificiel dont nous maîtrisons pourtant les caractéristiques. Nous utiliserons tour à tour les logiciels R (package ‘’e1071’’) et Python (package ‘’scikit-learn’’).

Nous nous concentrons sur les aspects didactiques. Pour le lecteur intéressé par les aspects opérationnels de la pratique des SVM (schéma apprentissage-test pour l’évaluation des classifieurs, identification des paramètres optimaux à l’aide des grilles de recherche), je conseille la lecture de notre support repère. Je préconiserais également la lecture des tutoriels consacrés à la comparaison des logiciels proposant les SVM et à l’étude du comportement des différents classifieurs linéaires (voir références).

Mots-clés : svm, machines à vecteurs de support, séparateurs à vaste marge, package e1071, logiciel R, logiciel Python, package scikit-learn, sklearn
Lien : SVM - Support Vector Machine
Fichier : svm_r_python.zip
Références :
R. Rakotomalala, "Support Vector Machine - Diapos", mai 2016.
Tutoriel Tanagra, "SVM - Comparaison de logiciels", oct. 2008.
Tutoriel Tanagra, "Classifieurs linéaires", mai 2013.

jeudi 12 mai 2016

SVM : Support Vector Machine - Diapos

L’approche SVM (support vector machine) est une technique de data mining / machine learning très populaire dans les domaines proches de la recherche. Je l’avais directement implémentée dans Tanagra en son temps (en m’inspirant du code de Weka). J’avais ensuite intégré la librairie LIBSVM (une des très rares bibliothèques externes de Tanagra) lorsque je me suis rendu compte des performances de cette dernière.

Faire un cours dessus était une autre histoire. Comment présenter les SVM en allant à l’essence des choses sans assommer les étudiants à coups de formules mathématiques plus ou moins abstraites ? J’avais demandé à un groupe d’étudiants du Master SISE de faire le cours à ma place cette année dans le cadre de l’unité d’enseignement « Travail en groupe ». L'exercice m’a surtout permis de voir les réactions des autres étudiants qui assistaient à la séance, et mettre le doigt sur les ressorts de compréhension. L’idée est de prendre le temps de détailler avec des exemples simples traités sous Excel (vraiment simples !) la résolution des problèmes d’optimisations sous-jacents à la technique. Le fichier accompagne ce support.

La présentation est complétée par la mise en œuvre de l’approche sous les logiciels libres Python (scikit-learn), R (e1071) et Tanagra (SVM et C-SVC).

Je remercie le groupe d’étudiants qui a travaillé sur ce thème. Ils s’en sont vus, mais je pense que l’essentiel du message est passé auprès de leurs camarades.

Mots-clés : svm, machines à vecteurs de support, séparateurs à vaste marge, package e1071, logiciel R, logiciel Python, package scikit-learn, sklearn
Composants : SVM, C-SVC
Lien : Support Vector Machine (SVM)
Fichier exemple : svm exemples.xlsx
Références :
Tutoriel Tanagra, "SVM - Comparaison de logiciels", oct. 2008.
Tutoriel Tanagra, "Classifieurs linéaires", mai 2013.
Tutoriel Tanagra, "Support Vector Machine avec R et Python", mai 2016.

mercredi 4 mai 2016

Gradient boosting avec R et Python

Ce tutoriel fait suite au support de cours consacré au « Gradient Boosting ». Il vient également en complément des supports et tutoriels pour les techniques de bagging, random forest et boosting mis en ligne précédemment (novembre 2015).

La trame sera très classique : après avoir importé les données préalablement scindées en deux fichiers (apprentissage et test), nous construisons les modèles prédictifs et nous les évaluons. Le critère taux d’erreur en test est privilégié pour comparer les performances.

La question du paramétrage, particulièrement délicate dans le cadre du gradient boosting, est étudiée. En effet, ils sont nombreux, et leur influence est considérable. Malheureusement, si l’on devine à peu près les pistes à explorer pour améliorer la qualité des modèles (plus ou moins "coller" à l’échantillon d’apprentissage c.-à-d. plus ou moins régulariser), identifier avec exactitude les paramètres à manipuler et fixer les bonnes valeurs relèvent un peu de la boule de cristal, surtout lorsqu’ils interagissent entre eux. Ici, plus que pour d’autres méthodes de machine learning, la stratégie essai-erreur prend beaucoup d'importance.

Nous utiliserons R et Python, avec les packages dédiés, dans ce tutoriel.

Mots clés : logiciel R, programmation R, arbre de décision, adabag package, rpart package, Python, scikit-learn package, boosting, random forest
Lien : Gradient boosting
Fichier : gradient_boosting.zip
Références :
R. Rakotomalala, "Gradient boosting - Diapos", avril 2016.
R. Rakotomalala, "Bagging, Random Forest, Boosting - Diapos", novembre 2015.

samedi 30 avril 2016

Gradient boosting - Diapos

Le gradient boosting est une technique ensembliste qui généralise le boosting en introduisant la possibilité d’utiliser explicitement des fonctions de coûts (le boosting classique utilise implicitement une fonction de coût exponentielle).

Ces diapos montrent les tenants et aboutissants de la méthode. La régression est développée dans un premier temps. Le problème du classement est analysé par la suite.

Les solutions implémentées dans les packages pour R et Python sont étudiées.

Mots-clés : boosting, arbres de régression, package gbm, package mboost, package xgboost, logiciel R, logiciel Python, package scikit-learn, sklearn
Lien : Gradient boosting
Références :
R. Rakotomalala, "Bagging, Random Forest, Boosting - Diapos", novembre 2015.
Natekin A., Knoll A., "Gradient boosting machines, a tutorial", in Frontiers in Neurorobotics, décembre 2013.

jeudi 14 avril 2016

Mining of Massive Datasets (2nd Edition)

L'ouvrage « Mining of Massive Datasets », littéralement « Fouille de données massives », s’inscrit dans l’air du temps. Le contexte, maintes fois évoqué, est bien connu aujourd'hui : la profusion des données et la multiplication des sources, exacerbées par les outils de communication et notre mode de vie, induisent de nouveaux défis et opportunités pour le Data Mining.

Par rapport aux très nombreuses références qui existent, le livre de Leskovec, Rajaraman et Ullman présente une double particularité : il est basé sur des enseignements dispensés à l’Université de Stanford, c'est dire s'il a fait ses preuves ; le livre au format PDF ainsi que tout le matériel pédagogique associé (les diaporamas relatifs à chaque chapitre en Powerpoint et PDF) sont librement accessibles sur le web. C’est Byzance ! Sachant par ailleurs que l’ouvrage imprimé est disponible dans les librairies (mais pas gratuitement).

Cette fiche de lecture retrace les principales notions présentées dans cet ouvrage.

Mots clés : big data, data science, data scientist, machine learning, statistical learning
Lien : Résumé
Références :
J. Leskovec, A. Rajaraman, J.D. Ullman, "Mining of Massive Datasets" (2nd Edition), Cambridge University Press, November 2014.

jeudi 24 mars 2016

Classification automatique sous Python

J'explore Python chaque jour, chaque semaine. Mon objectif est de pouvoir l'utiliser de manière indifférenciée avec R dans mes cours de machine learning (data mining) à l'Université.

Dans cette veine, je reprends étape par étape un précédent tutoriel consacré à la classification automatique sous R. Nous constatons, pour ce qui est du clustering avec la CAH et les K-Means en tous les cas, que les deux logiciels sont équivalents. Les commandes sont similaires, non pas dans leur syntaxe, mais dans leur mode opératoire. Et les résultats sont identiques, mis à part les k-means qui sont heuristiques par nature.

Nous utilisons les packages SciPy et Scikit-learn.

Mots clés : logiciel R, classification ascendante hiérarchique, CAH, méthode des centres mobiles, k-means, package scipy, package scikit-learn, analyse en composantes principales, ACP
Composants : linkage, dendrogram, fcluster, kmeans
Lien : cah et k-means avec Python 
Données : cah_kmeans_avec_python.zip
Références :
Tutoriel Tanagra, "Classification automatique sous R", octobre 2015.

jeudi 25 février 2016

Analyse prédictive sous Knime

Knime est un logiciel de data mining librement téléchargeable en ligne (Knime Analytics Platform). Je l’étudie depuis longtemps. Mon premier tutoriel à son propos date de 2008. Je me suis rendu compte récemment que je n’avais jamais écrit un guide « simple » montrant une démarche d’analyse prédictive basique sous cet outil, à savoir : (1) importer les données ; (2) les partitionner en échantillons d’apprentissage et test ; (3) construire le modèle à partir de l’ensemble d’apprentissage ; (4) l’appliquer sur l’ensemble de test pour obtenir la prédiction du modèle ; (5) confronter les valeurs observées et prédites de la variable à prédire à travers la matrice de confusion ; (6) en déduire les indicateurs (mesures) de performances des modèles (taux d’erreur, etc.).

Dans un processus de « scoring », une variante est apportée à partir du point n°4 : (4’) appliquer le modèle sur l’échantillon test pour obtenir le score des individus ; (5’) construire la courbe lift cumulée ou courbe de gain à partir des valeurs observées de la variable cible et les scores.

Ce tutoriel retrace toutes ces étapes avec force copies d’écrans comme toujours. La régression logistique est mise à contribution mais le processus est transposable à toute méthode de machine learning. Nous introduirons très brièvement la sélection de variables - à la sauce Knime - dans la dernière partie.

Mots clés : régression logistique, knime, sélection de variables, échantillons d'apprentissage et de test
Lien : Analyse prédictive.pdf
Fichier : pima.xls
Références :
Knime -  https://www.knime.org/

samedi 20 février 2016

Building Machine Learning Systems

.. with Python (2nd Edition).

J’ai toujours eu des réticences à acheter et conseiller à mes étudiants des ouvrages consacrés à des outils. Généralement, ils prétendent couvrir un très large panel d’approches en quelques centaines de pages. A la sortie, on se rend compte qu’ils traitent de manière très superficielle les méthodes sous-jacentes qu’ils essaient d’illustrer. Et, de toute manière, on trouvera toujours sur le web des tutoriels en français ou en anglais, qui décriront les opérations et les sorties des logiciels de manière autrement plus approfondie. De plus, la diffusion croissante de nombreuses vidéos de démonstration sur la plate-forme d’échange YouTube modifie la donne concernant ce type de document à vocation pédagogique.

Pourquoi alors faire une fiche de lecture sur « Building Machine Learning Systems with Python » qui s’inscrit finalement dans cette lignée des ouvrages centrés sur les outils ?

Tout simplement parce que l'ouvrage de Luis Pedro Coelho et Willi Richert nous permet de cerner le champ des possibles en matière de Machine Learning sous Python. Le livre ne prétend pas à l’exhaustivité. Il ne constitue certainement pas un ouvrage sur l’apprentissage automatique. L’objectif serait plutôt de titiller la curiosité du lecteur. Pour ma part, j’y ai surtout vu une source d’inspiration intéressante me permettant de faire évoluer mes Cours / Travaux Dirigés pour mes enseignements de Data Mining - Data Science en Master Statistique et Informatique.

Mots clés : big data, data science, data scientist, machine learning, statistical learning, python
Lien : Résumé
Références :
L.P. Coelho, W. Richert, "Buildong Machine Learning Systems with Python (2nd Edition)", Packt Publishing, mars 2015.

jeudi 7 janvier 2016

Data Science : fondamentaux et études de cas

Machine learning avec Python et R

Data Science est un terme très en vogue. Tout le monde en parle. Une requête sur Youtube du terme exact "data science" ramène 112.000 vidéos, 9.910.000 références sur Google  (au 7 janvier 2016).

Cet ouvrage d’Eric Biernat et Michel Lutz aborde le thème du data science en s’appuyant sur le prisme du machine learning. Ce parti pris est heureux parce qu’il leur évite de partir dans tous les sens. Bien sûr, d’autres prismes sont possibles. Mais on peut difficilement tout traiter dans un livre. Cadrer le débat est nécessaire.

Les auteurs font le tour de quelques techniques existantes dans un premier temps. Puis, dans un second temps,  ils partagent leur expérience, tant dans les missions qu’il ont eu à mener, que dans les compétitions (les fameux "challenge") auxquelles ils ont participé.

Mots clés : big data, data science, data scientist, machine learning, statistical learning, python, logiciel R
Lien : Résumé
Références :
Eric Biernat, Michel Lutz, "Data Science : fondamentaux et études de cas - Machine learning avec Python et R", Eyrolles, octobre 2015.

samedi 2 janvier 2016

Bonne année 2016 - Bilan 2015

L’année 2015 s’achève, 2016 commence. Je vous souhaite à tous une belle et heureuse année 2016.

Un petit bilan chiffré concernant l'activité organisée autour de Tanagra pour l' année écoulée. L'ensemble des sites (logiciel, support de cours, ouvrages, tutoriels) a été visité 255.386 fois cette année, soit 700 visites par jour.

Depuis la mise en place du compteur Google Analytics (01 février 2008), le groupe de sites a été visité 1.847.033 fois, soit 639 visites par jour.

Qui êtes-vous en 2015 ? La majorité des visites viennent de France (46%) et du Maghreb (16 %). Puis viennent les autres pays francophones, dont une grande partie vient d'Afrique. Pour ce qui est des pays non francophones, nous observons parmi ceux qui reviennent souvent : les États-Unis, l'Inde, le Royaume Uni, l'Allemagne, le Brésil.

Que consultez-vous en priorité en 2015 ? Les pages qui ont le plus de succès sont celles qui se rapportent à la documentation sur le Data Science (Data Mining, Statistique, Machine Learning, Big Data Analytics, Analyse de Données) : les supports de cours, les tutoriels, les liens vers les autres documents accessibles en ligne, etc. On peut rapprocher la page consacrée à la Programmation R, qui est la plus consultée, à cette thématique générale. Depuis septembre 2015, une page dédiée au Machine Learning sous Python a été mis en ligne, espérons qu’elle connaîtra la même audience.

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

Ricco.
Diaporama : Tanagra - Bilan 2015