L’apprentissage automatique par la pratique – 1ère partie
Comme fidèle(s) lectrice(s) ou lecteur(s) de ce blog, nous avons déjà eu l’occasion d’aborder ensemble dans le cadre de ce blog le sujet de l’apprentissage automatique ou « Machine Learning » (ML) en anglais avec une première introduction ici ou encore avec la conférence Microsoft Research Machine Learning Summit.
Les architectures de type Big Data ouvrent un nouvel horizon à l’apprentissage automatique qui constitue en soi une vraie révolution dans le logiciel : probabilités et statistiques sur les masses de données permettent au logiciel « d’apprendre » et non seulement calculer. Nouvelle frontière, nouvelle façon de penser le logiciel et de le programmer, c’est une révolution qui replace la « Big Science » au cœur de l’innovation.
Nous souhaitons aller au-delà de d’une introduction sur le sujet avec une présentation des différents modes d’apprentissage et des algorithmes associés. A ce propos, le cours Machine Learning (CS 229) du professeur Andrew Ng de l’université de Stanford constitue une bonne introduction (le premier module du cours commence réellement à la 32ème minute).
Notre volonté est en effet d’aborder plus concrètement l’utilisation à bon escient d’Apache Mahout, un projet Apache, comme Hadoop, à ceci près qu’il n’est pas encore en version finale (0.8 pour la dernière version release à la date de ce billet).
Ce projet consiste en un entrepôt d’algorithmes d’apprentissage automatique, tous portés afin de s’exécuter sur Map/Reduce. Une vingtaine d’algorithmes sont déjà portés sur le paradigme ; ce qui suffit pour la très grande majorité des problèmes.
A ce propos, et en guise de préambule, nous souhaitons préciser que l’ouvrage de référence sur l’apprentissage automatique, et en particulier avec Mahout (avec ou sans Hadoop), est Mahout In Action.
Ce billet, à l’instar de la plupart des documents que vous trouverez sur le Web (articles, blog post, tutoriels), s’inspire de cet ouvrage, tant la pédagogie des auteurs est à saluer nous semble-t-il. Si vous avez le temps de le lire, ceci constituera un plus, sinon nous espérons que ce billet éclaircira déjà grandement les choses.
De façon à illustrer le sujet par la pratique, nous vous proposons de nous intéresser dans ce billet à l’affaire Enron, une affaire retentissante au début des années 2000.
L’affaire Enron
Pour mémoire, Enron était une entreprise américaine dans le domaine de l’énergie. A son sommet le plus haut, la capitalisation boursière de la société était estimée à 111 Milliards de dollars, la 7ème mondiale si bien que la société Enron était vantée comme le modèle de réussite économique de la fin des années 90, repris et adapté sur nombre de compagnies.
Enron avait élaboré un système de courtage afin d’acheter puis de revende de l’électricité, le tout sur une plateforme en ligne. Mais la partie immergée de l’iceberg cachait une toute autre vision : un surendettement conséquent était en effet masqué par tout un mécanisme de sociétés offshore (nom de code « Raptor ») de façon à effectuer des emprunts aux banques sans que cela soit comptabilisé dans la dette de la société Enron. En somme, pour faire court, Enron investit, mais ne perd pas d’argent ; ce qui fait gonfler sa cote auprès des investisseurs.
Début des années 2000, la bulle spéculative sur Internet explose avec les conséquences que l’on connait, et la société Enron qui avait axé toute sa stratégie sur Internet voit le cours de son action chuter. Les banques qui avaient prêté de l’argent en échange de garantie sous forme d’actions Enron veulent récupérer leur argent, car l’action continue à chuter. L’affaire éclate alors au grand jour, et la société Enron est accusée de fraude fiscale et dépose le bilan. Toute cette affaire ainsi brièvement résumée conduira à l’adoption aux Etats-Unis de la loi fédérale Sarbanes-Oxley (SOX) le 30 juillet 2002. (Le texte de la loi est disponible ici.)
Vous pouvez également approfondir les détails de l’affaire et revenir sur la chronologie associée avec l’article Wikipedia disponible ici.
Après cette affaire de fraude fiscale qui a bouleversée le marché financier au niveau mondial, la commission des fraudes a rendu public les boîtes aux lettres de messagerie des 150 hauts cadres de la société, avec à la clé plus de 600 000 mèls de cadres. Ceux-ci ont été analysés pour comprendre le mécanisme des sociétés écrans et détecter les complices. Le cabinet d’audit Arthur Andersen a ainsi été reconnu coupable d’obstruction à la justice pour avoir détruit des milliers de documents et supprimé des mèls et des fichiers d'entreprise qui liait le cabinet à son audit d'Enron.
Il va s’en dire que ce jeu de données est abondement utilisé dans les recherches sur les réseaux sociaux. Bien connu des scientifiques pour son utilisation en exploration/fouille de données (ou data mining en anglais) et en apprentissage automatique, il permet d’éprouver les algorithmes. Nous disposons donc avec celui-ci d’un bon terrain de jeu ;)
A la découverte du jeu de données
Le jeu de données se présente sous la forme d’une archive au format tar.gz contenant les dossiers et sous-dossier des boites mèl des 150 hauts cadres de chez Enron.
Le format de fichier tar.gz (ou .tgz) est un format particulier constitué de deux partie :
- L’archive « tar » qui est un type Unix d’archive non compressée. La commande tar (tape archiver) crée à partir d’un ou plusieurs dossiers un seul fichier .tar. On l’utilise par exemple pour rassembler tous les fichiers source d’un projet logiciel. C’est le cas des projets Apache Hadoop et Apache Mahout, qui sont tous les deux téléchargeables en « tarball » (chaque tarball correspond à une version).
- La compression « gzip », qui est un algorithme de compression très efficace (surtout sur des fichiers de texte), mais représente un inconvénient majeur : il n’est pas fractionnable (splitable), c’est-à-dire qu’il faut obligatoirement l’archive entière pour décompresser le tout (on ne peut partager le traitement sur plusieurs machines).
Une fois décompressé, le jeu de dossier correspond à un dossier – maildir – contenant un sous dossier par personne, eux-mêmes contenant des sous-dossiers comme inbox, sent_mail, all_documents, ou encore deleted_items dans lesquelles vous trouverez des fichiers texte contenant les mèls avec les entêtes SMTP (Simple Mail Transfer Protocol) : from, to, subject, cc, body.
L’objectif de ce tutoriel consiste à utiliser ce jeu de données pour mieux comprendre ce qu’est la mise en cluster ou le « clustering » en anglais et quelle approche doit-on adopter pour tirer parti de celui-ci.
Pour cela, concrètement, nous voulons connaitre ce dont on parle dans ce jeu de données. Nous voulons le comprendre et idéalement détecter l’influence de chaque personne.
C’est l’objet de la seconde partie de ce billet.