mercredi 2 août 2017

Panne résolue

Bonjour,

Il semble que la panne ait été résolue depuis hier "01 août 2017" en journée.

Encore désolé pour la gêne occasionnée, et en espérant que la continuité du service sera assurée tout au long de l’été.

Cordialement,

Ricco (02/08/2017)

jeudi 27 juillet 2017

Panne serveur de fichiers

Depuis quelques jours (depuis le 24/07/2017 en fin de journée approximativement), le serveur du Laboratoire Eric qui héberge les fichiers du projet Tanagra (logiciel, ouvrages, supports de cours, tutoriels...) est inactif. Suite à une panne de courant, il n’y a personne pour redémarrer le serveur durant la période estivale. Je l'aurais bien fait, mais le serveur est hélas situé dans une salle à laquelle je n’ai pas accès.

Donc on attend. Et ça risque de durer un peu, la fermeture estivale dure un mois, notre établissement rouvre officiellement ses portes le 21 août ! Je suis désolé pour les internautes qui travaillent à partir des documents que je mets en ligne. Je le suis d’autant plus que ce second incident intervient après un fonctionnement perturbé au mois de Juin 2017 durant une douzaine de jours à cause d’un certificat de sécurité invalide. Ces difficultés sont totalement indépendantes de ma volonté et je ne peux rien faire pour y remédier. Mis à part la patience.

Comme vous êtes plusieurs à vous manifester, je préfère prendre les devants pour vous informer. Dès que tout sera rentré dans l’ordre, je vous avertirai.

Cordialement,

Ricco (27/07/2017).

samedi 6 mai 2017

Comprendre la taille d'effet (effect size)

La taille d’effet est un indicateur permettant de rendre compte de l’intensité d’un phénomène statistique : l’écart entre des moyennes ou des proportions, les liaisons entre les variables, etc. Dans ce support, nous nous plaçons dans le cadre de l’interprétation des partitions issues d’un processus de classification automatique (clustering). Il s’agit d’identifier les caractéristiques sous-jacentes à la formation des groupes, à travers les comparaisons de moyennes pour les variables quantitatives, les comparaisons des fréquences des modalités pour les variables qualitatives. Pour faciliter la lecture, il est intéressant de pouvoir hiérarchiser les variables pour distinguer celles qui ont la plus forte influence. Un indicateur statistique simple à calculer et interprétable est nécessaire à cet égard.

La mesure « valeur test » se révèle particulièrement intéressante dans ce contexte. Elle est disponible dans des logiciels et packages de R. J’ai moi-même écrit un tutoriel sur ce sujet. Elle permet de trier les variables et désigner celles qui sont les plus qualifiantes. Elle présente néanmoins un défaut qui pose problème dans le traitement des données massives. En effet, sa valeur augmente mécaniquement avec l’effectif absolu des groupes, et non avec leur effectif relatif. De fait, sur les grandes bases de données, la hiérarchie des variables n’est certes pas remise en cause, mais elles paraissent toutes significatives au regard des seuils usuels des tests statistiques, laissant à penser qu’elles pèsent toutes notoirement dans la constitution des groupes. La taille d’effet, insensible à la taille des échantillons, permet de dépasser cet inconvénient.

A travers la notion de taille d’effet, nous proposons une analyse en deux temps pour l’interprétation des résultats d’un clustering : (1) une caractérisation de la partition à travers un indicateur exprimant la proportion de variance expliquée ; (2) une caractérisation des groupes via un indicateur basé sur la corrélation.

Mots-clés : taille d'effet, effect size, d de Cohen, g de Hedges, rapport de corrélation, coefficient de corrélation bisériale ponctuelle, h de Cohen, v de Cramer, khi-2, phi, clustering, classification automatique, k-means, cah
Document : Taille d'effet
Références :
Cohen J., "Statistical Power Analysis for the behavioral sciences", Psychology Press, 1988.
Morineau A., "Note sur la caractérisation statistique d’une classe et les valeurs-tests", in Bulletin Technique du Centre de Statistique et Informatique Appliquées, 2(1-2), pp. 20-27, 1984.
Tutoriel Tanagra, "Interpréter la valeur test", avril 2008.
Tutoriel Tanagra, "Clustering : caractérisation des classes", septembre 2016.

samedi 29 avril 2017

De la statistique à la data science

Comme expliqué dans un des posts précédents, j’avais participé récemment à la conférence "De la statistique à la data science" à l’occasion des 45 ans du DUT STID de Vannes. On était plusieurs à présenter. Les vidéos sont aujourd’hui en ligne, je me fais un plaisir de les partager sur ce blog.

De la statistique à la Data Science
Auteur - TitrePrésentation
Patrice Kermorvant. Introduction de la journée.
René Lefebure. Jurassic Data.
Ricco Rakotomalala. Open source et data science.
Stéphane Tufféry. Deep Learning.
COHERIS SPAD. Nouveautés du logiciel SPAD V9.
DATAIKU. Data science studio.

Pour une fois que je sortais de mon environnement habituel (ça n'arrive vraiment pas souvent), il me tenait à cœur de mettre en valeur le travail de nos étudiants.

Références / Slides : Open source et data science

mercredi 26 avril 2017

Probabilités et quantiles sous Excel, R et Python

J’utilise indistinctement Excel (en conjonction avec Tanagra ou Sipina), R et Python pour mes travaux dirigés (TD) de data mining et de statistique à l’Université. Souvent, je demande aux étudiants de procéder à des tests d’hypothèses pour éprouver la significativité d’un ou plusieurs coefficients dans un modèle prédictif, ou encore pour calculer les intervalles de confiance de prédiction en régression, etc.

Nous sommes sur machine, il est bien évidemment hors de question d’aller consulter les tables statistiques pour obtenir les quantiles ou les p-value des lois de probabilités couramment utilisées. Dans ce tutoriel, je présente les principales fonctions pour les lois normales, Student, KHI-2 et Fisher. Je me suis en effet rendu compte que les étudiants avaient parfois du mal à faire la correspondance entre la lecture des tables et l’utilisation des fonctions qu’ils ont du mal à identifier dans les logiciels. C’est aussi l’occasion pour nous de vérifier les équivalences entre les fonctions proposées par Excel, R (package stats) et Python (package scipy). Ouf ! Du moins sur les quelques exemples illustratifs de notre document, les résultats sont parfaitement cohérents.

Mots-clés : excel, r, package stats, python, package scipy, probabilités, p-value, p-valeur, valeur-p, quantile, fractile, loi normale, loi de student, loi du khi-2, loi de fisher
Document : Calcul des probabilités et quantiles

mardi 11 avril 2017

Détection de communautés sous Python

La détection de communautés dans les réseaux sociaux a pour objectif d’identifier les groupes d’individus entretenant des relations privilégiées. Ce thème connaît une recrudescence d’intérêt ces dernières années avec le développement des médiaux sociaux (Twitter, Facebook, etc.), multipliant les opportunités d’interactions entre les individus. Un réseau social est souvent représenté par un graphe où les sommets (nœuds) représentent les individus, les liens qu’il entretiennent sont matérialisés par les arêtes. Une communauté correspond à un groupe de nœuds présentant une forte densité de connexions.

Ce tutoriel vient en complément de mon support de cours accessible en ligne qui nous servira de référence. Nous nous plaçons dans une situation particulière où le graphe est non orienté, les liaisons entre les individus – lorsqu’elles existent – sont symétriques et non pondérées c.-à-d. les connexions ont tous la même intensité.

Nous travaillerons sous Python et nous utiliserons le package igraph.

Mots clés : web mining, fouille du web, réseaux sociaux, communautés, python, package igraph
Document : Détection de communautés sous Python
Données : Données Karaté et code prog. Python
Références :
Rakotomalala R., "Détection de communautés - Diapos", mars 2017.

mercredi 29 mars 2017

Open source et data science

Je dois faire un exposé le 31 mars 2017 à l’occasion des 45 ans du DUT STID de Vannes. L’idée est de faire un état de l’art sur les logiciels open source de data science.

A priori, le schéma est très simple : il faut faire un travail de recensement dans un premier temps, puis établir une série de critères qui permettent de comparer les outils. De nombreuses publications portant sur le même sujet ont adopté ce plan. Dans le cas présent, l’affaire est un peu plus difficile parce que je ne dispose que de 30 minutes. Bouffer le temps de présentation par une longue litanie des outils peu ou prou connus, ou par des tableaux au kilomètre, forcément confus parce que trop larges, ne me paraît pas très judicieux.

J’ai donc préféré adopter une approche plus dynamique : cadrer effectivement le sujet en présentant les critères important permettant de les caractériser, parler de deux études disponibles sur le site KDnuggets qui donnent une photographie assez précise du positionnement des différentes outils disponibles, et faire un focus sur R et Python qui sont incontournables aujourd’hui en montrant ce que l’on peut faire avec ces logiciels à travers les projets POC réalisés par mes étudiants du Master SISE.

Voici les slides que j’utiliserai le jour dit.

Mots clés : logiciel, data science, open source, logiciel r, python, projets étudiants
Document : Open Source et data science
Références :
Master SISE, « Etude des logiciels de data science », octobre 2016.
Piatetsky G., « R, Python Duel As Top Analytics, Data Science Software », KDnuggets 2016 Software Poll Results, June 2016.
Piatetsky G., « Gartner 2017 Magic Quadrant for Data Science Platforms: gainers and losers », KDnuggets, February 2017.

jeudi 16 mars 2017

Détection de communautés - Diapos

La détection de communautés a pour objectif de mettre en évidence des groupes d’individus qui se forment implicitement dans les réseaux sociaux. Les individus à l’intérieur d’une communauté interagissent plus fortement – et donc tissent des liens plus affirmés – entre eux qu’avec les autres. Le thème a connu un regain d’intérêt spectaculaire ces dernières années avec la multiplication des médias sociaux. Les finalités sont multiples : identifier les profils types, ajuster les recommandations, réaliser des actions ciblées, réorganiser une structure, etc.

Ce support de cours décrit les tenants et aboutissants de la détection de communautés. Plusieurs algorithmes simples sont décrits. Les approches décrites s’appuient sur la représentation en graphes des réseaux sociaux.

Mots clés : web mining, communautés, réseaux sociaux, médias sociaux, algorithmes divisifs, algorithmes agglomératifs, multidimensional scaling, matrice d'adjacence
Document : Détection de communautés dans les réseaux sociaux
Références :
Tang L., Liu H., « Community detection and mining in social media », Morgan and Claypool Publishers, 2010 (http://dmml.asu.edu/cdm/).

samedi 4 mars 2017

Analyse de tweets sous R

Twitter est devenu un instrument incontournable de communication pour tous les acteurs sociaux. Les hommes politiques, les sportifs, les dirigeants d'entreprises l'utilisent pour donner la primeur de leur actualité, leurs décisions, leurs actions à venir. Il constitue également une plate-forme d'échange qui permet à tout un chacun d'exprimer son opinion en réaction à une annonce ou à un évènement. Des informations, parfois très importantes, transitent ainsi dans tous les sens, tous les jours, sans que nous saisissions toute la portée de ce déluge de textes qui, parfois, semblent peu cohérents.

Dans ce tutoriel, nous montrons comment accéder à des messages liés à un thème choisi sur Twitter. Nous initierons une étude relativement basique des propriétés des tweets dans un premier temps. Nous enchaînerons ensuite sur l'exploitation du contenu des messages. Nous travaillerons sous R en nous appuyant sur le package "twitteR" de Jeff Gentry qui se révèle particulièrement pratique (Package ‘twitteR’).

Mots clés : text mining, fouille de textes, corpus, bag of words, sac de mots, twitter, package twitteR, logiciel R, package tm
Document : Analyse de tweets sous R
Données : Collection de tweets
Références :
Wikipédia, "Twitter".
Jeff Gentry, "Package 'twitteR'".

mardi 21 février 2017

Python : Manipulations des données avec Pandas

La manipulation des données est la base de l’activité du data scientist. Si on ne sait pas charger un fichier, exécuter des restrictions et des projections, réaliser des transformations, croiser les variables, représenter les données à l’aide de graphiques simples, la suite des opérations se révèlera très difficile. Quel que soit notre niveau de connaissances sur les techniques de machine learning, nous serions un peu comme une poule qui a trouvé un couteau : nous savons ce qu’il faut faire, mais nous ne savons pas comment faire. C’est ballot comme dirait toto.

Ainsi, dans tous mes enseignements de statistique et de data mining face à un public non statisticien ou data miner (peu au fait des logiciels de data mining), je consacre systématiquement au moins un TD (travaux dirigés) à des exercices de manipulation de données : charger un fichier, réaliser des filtrages, des tris, des recherches, etc. Mes outils privilégiés jusqu’à présent étaient Excel et R. Face à la demande croissante des étudiants, j’ai décidé d’écrire un support décrivant les manipulations basiques des ensembles de données (dataset) sous Python. C’est aussi et surtout l’occasion de faire découvrir la magnifique librairie Pandas, puissante et foisonnante. Un peu trop peut-être. J’ai passé un temps monumental à l’explorer dans tous les sens. Je ne suis pourtant pas sûr d’en avoir mesuré toutes les subtilités à ce jour. Je peux comprendre qu’un néophyte se décourage rapidement face à la documentation en ligne qui est particulièrement touffue. C’est la raison pour laquelle j’ai écrit un support assez basique, schématisant les opérations les plus fréquemment réalisées, au moins pour une première mise en bouche.

Enfin, ce support a été l’occasion d’écrire un document à l’aide du notebook Jupyter. Je le connaissais depuis longtemps. Je n’ai pas été convaincu par le rendu jusqu’à présent. Mais le fait est que j’écrirai de plus en plus de tutoriels pour Python à l’avenir. Je dois explorer cette piste qui me permettrait de réduire le temps de rédaction, exploitable pour R aussi d’ailleurs. Il faut simplement que j’aie une plus grande maîtrise de l’organisation et de la mise en forme du PDF final.

Mots clés : pandas, python, manipulation des données, filtres, tableaux croisés, DataFrame, data.frame, Series, graphiques, matplotlib
Document : Manipulation des données avec Pandas
Données : Données et notebook Jupyter
Références :
Python Data Analysis Library, pandas.
Tutoriel Tanagra, "Manipulation des données avec R", août 2012.

jeudi 2 février 2017

Filtrage collaboratif et recommandations - Diapos

Le filtrage collaboratif regroupe l’ensemble des méthodes qui visent à construire des systèmes de recommandation utilisant les opinions, les évaluations et le comportement d’un groupe d’individus (Wikipédia). La vente en ligne – entres autres, on peut penser aussi aux suggestions sur les plateformes de partage de vidéos, etc. – rend ces systèmes indispensables. Nous ne disposons plus d’un vendeur qui va essayer de comprendre nos attentes pour nous aiguiller vers les bons achats (bien que l’on voie maintenant apparaître des guides qui essaient de nous prendre en main sur les sites). Et, d’un autre côté, un expert ne peut pas édicter tous les règles de gestion qui permettrait d’avancer des propositions efficaces sur un site. S’appuyer sur l’expérience commune se révèle être une stratégie féconde.

Dans ce support, nous dessinons les tenants et aboutissants du domaine. Nous explicitons la démarche en détaillant concrètement deux approches, l’une centrée utilisateur (ex. client), l’autre centrée item (ex. produit). Nous constatons que des méthodes relativement simples permettent de répondre à un cahier des charges exigeant.

Mots clés : web mining, collaborative filtering, recommendation system, système de recommandation
Document : Filtrage collaboratif et système de recommandation
Références :
Ekstrand M.D., Riedl J.T., Konstan J.A., « Collaborative Filtering Recommender Systems », in Foundations and Trends in Human-Computer Interaction, vol. 4, n°2, p. 81-173, 2011.

mardi 24 janvier 2017

Les expression régulières sous R

La manipulation de documents textuels en text mining implique de nombreuses opérations de recherche, de remplacement, de nettoyage, de découpage… Il s’agit donc de pouvoir effectuer des requêtes sur du contenu qui n’est pas structuré comme le serait une base de données.

Les expressions régulières constituent un outil privilégié dans ce contexte. Elles correspondent à des modèles (motifs) qui permettent de décrire des ensembles de chaînes de caractères. Les outils tels que grep() ou gsub() de R par exemple savent les mettre à profit pour effectuer des recherches ou des rechercher / remplacer dans les documents. Le dispositif peut s’appliquer au traitement de textes bruts totalement non structurés ; il peut faire merveille également dans l’exploitation des documents semi-structurés tels que les fichiers logs.

Dans ce support de cours, je décris succinctement les idées sous-jacentes aux expressions régulières et les principaux éléments de syntaxe. Un exemple réaliste de recherche dans des SMS possiblement délictueux permet d’appréhender pleinement leur intérêt.

Mots clés : text mining, fouille de textes, expressions régulières, grep, gsub, posix étendu, perl, analyse des fichiers logs
Document : Expressions régulières sous R
Fichiers : Données et programme R
Références :
Zyntrax-Info, "Regular Expressions – User Guide".
Jwang, "Utilisation des expressions régulières sous R".

mercredi 18 janvier 2017

Fouille d'opinions et analyse des sentiments - Diapos

Savoir ce que pensent les "gens" (électeurs, clients, concurrents, etc.) est fondamental pour les décideurs (partis politiques, entreprise, etc.). Le web 2.0 (on parle aussi de médias sociaux ou de réseaux sociaux numériques) est un terrain privilégié pour recueillir à moindre coût l’opinion et le sentiment de tout un chacun, par rapport à une décision ou un projet politique, par rapport à un produit, etc.

Dans ce support de cours, nous décrivons les enjeux et les méthodes de la fouille d’opinions (opinion mining) et, de sa déclinaison la plus usuelle, l’analyse des sentiments (sentiment analysis). Nous sommes bien dans le domaine du text mining puisque nous travaillons à partir de données textuelles. Mais les spécificités du web peuvent amener des points de vue et des outils qui permettent d’enrichir l’analyse. Nous nous attarderons notamment sur la plateforme de microblogage Twitter, support de communication particulièrement populaire aujourd’hui.

Mots clés : text mining, fouille de textes, web mining, opinion mining, sentiment analysis, analyse des tweets
Document : Opinion mining et sentiment analysis
Références :
Aggarwal C., Zhai C., "Mining Text Data", Springer, 2012.
Russell M.A., "Mining the Social Web – Data Mining Facebook, Twitter, Linkedin, Google+, Github, and more", O’Reilly, 2013.

jeudi 5 janvier 2017

Bonne année 2017 - Bilan 2016

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

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

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

Par rapport à l’année dernière (2015), les visiteurs viennent toujours en majorité de la France (50%), du Maghreb (16%) et de l’Afrique francophone. Les pages de supports de cours ont toujours autant de succès. La page dédiée à la Programmation Statistique sous Python monte en puissance avec 31 visites par jour, mais reste loin de la Programmation R (141 sessions journalières) ou du Data Mining (126). Il reste une marge de progression.

36 posts de supports de cours et tutoriels en français ont été réalisés cette année, 10 en anglais (hum… il y a du boulot…). Le programme de remise à niveau pour l’accession au Master SISE a été mon principal projet cet été.

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 2016

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.