Chapitre Apache Mahout & Machine Learning
Chapitre Apache Mahout & Machine Learning
Chapitre Apache Mahout & Machine Learning
Au cœur du Big Data, l’apprentissage automatique ( ML : Machine Learning) joue un rôle incontournable dans la gestion des
volumes massifs de données.
À mesure que ces quantités de données continuent de croître de manière exponentielle, le développement de modèles intelligents devient
impératif pour extraire des informations significatives. Les méthodes traditionnelles basées sur les outils mathématiques se révèlent
souvent insuffisantes face à ces défis grandissants.
1
Introduction
Dans ce contexte exigeant, Apache Mahout se distingue en tant qu'outil puissant, particulièrement efficace pour manipuler d'énormes
volumes de données, de l'ordre de gigaoctets ou téraoctets.
Apache Mahout, en tant que framework open-source, offre un ensemble d'outils puissants pour appliquer des algorithmes de Machine
Learning à grande échelle, s'intégrant harmonieusement avec Hadoop.
Grâce à ses algorithmes spécialisés, Mahout excelle dans la facilitation du calcul, fusionnant de manière efficiente le traitement de
données massives avec des techniques de Machine Learning.
2
Plan du chapitre
La Première partie présentera l'importance grandissante du Machine Learning, examinant comment il a transformé la façon dont les
entreprises prennent des décisions, résolvent des problèmes complexes et découvrent des tendances invisibles dans les données. Mettant en
avant le besoin croissant d'outils spécialisés, nous mettrons en évidence Apache Mahout comme une solution majeure dans l'écosystème du
ML.
La deuxième partie détaillera les composants clés de Mahout, illustrant comment il facilite la mise en œuvre de modèles de ML sur des
données massives. Nous explorerons ses fonctionnalités, ses avantages et la manière dont il contribue à rendre le ML accessible à un plus
grand nombre d'organisations.
Dans la troisième partie, trois TP spécifiques seront présentés, chacun illustrant les capacités distinctes de Mahout dans des domaines
cruciaux du ML. De la Recommandation au Clustering, passant par à la Classification, ces TP serviront de démonstration concrète de la
manière dont Mahout peut être mis en œuvre pour résoudre des problèmes du monde réel.
3
Partie I : Machine Learning et Différents
Types d‘Apprentissage
C’est quoi Machine Learning ?
Machine Learning ou Apprentissage Automatique est un domaine scientifique, et plus particulièrement une sous-catégorie de
l’intelligence artificielle qui permet à des ordinateurs d'apprendre à partir de données, sans être explicitement programmés, Elle
consiste à laisser des algorithmes découvrir des « patterns », à savoir des motifs récurrents, dans les ensembles de données. Ces données
peuvent être des chiffres, des mots, des images, des statistiques…
Tout ce qui peut être stocké numériquement peut servir de données pour le Machine Learning. En décelant les patterns dans ces
données, les algorithmes apprennent et améliorent leurs performances dans l’exécution d’une tâche spécifique.
Pour résumer, les algorithmes de Machine Learning apprennent de manière autonome à effectuer une tâche ou à réaliser des prédictions
à partir de données et améliorent leurs performances au fil du temps. Une fois entraîné, l’algorithme pourra retrouver les patterns dans de
nouvelles données.
4
C’est quoi Machine Learning ?
La réussite du machine Learning réside dans l'entrée de volumes considérables de données dans l'ordinateur-étudiant. Pour apprendre, la
machine a besoin de consommer des BIG DATA.
Un bon exemple de machine Learning est la voiture autonome. Une voiture autonome est équipée de plusieurs caméras, plusieurs radars et
d'un capteur lidar. Ces différents équipements assurent les fonctions suivantes :
o Utiliser le GPS pour déterminer l'emplacement de la voiture en permanence et avec précision.
o Analyser la section de route située en avant de la voiture.
o Détecter les objets mobiles ou fixes situés sur l'arrière ou les côtés de la voiture
Ces informations sont traitées en permanence par un ordinateur central également installé dans la voiture. Cet ordinateur collecte et analyse
en permanence des volumes considérables de données et les classe de la même manière que les réseaux neuronaux d'un cerveau humain.
Pour guider la voiture dans son environnement, l'ordinateur prend des milliers de décisions par seconde en fonction de probabilités
mathématiques et de ses observations : comment tourner le volant, quand freiner, accélérer, changer les vitesses, etc.
En résumé, le machine Learning est un domaine en constante évolution qui permet aux ordinateurs d'apprendre à partir de données et de
s'améliorer au fil du temps, il est utilisé dans de nombreuses industries pour améliorer les processus et les décisions.
5
Historique de Machine Learning
Le machine learning n'est pas une nouvelle technologie. Le premier réseau neuronal artificiel, appelé « Perceptron », a été inventé en 1958
par le psychologue américain Frank Rosenblatt.
Au départ, Perceptron devait être une machine, et non un algorithme. En 1960, il a été utilisé pour le développement de la machine de
reconnaissance d'images « Mark 1 Perceptron ». Mark 1 Perceptron a été le premier ordinateur à utiliser des réseaux neuronaux artificiels
(ANN) pour simuler la réflexion humaine et apprendre par essais et erreurs.
6
Catégories de Machine Learning
Quel que soit son degré de complexité, Machine Learning peut être classé en trois grandes catégories :
o L’apprentissage supervisé.
o L’apprentissage non-supervisé.
o L’apprentissage par renforcement.
7
L’apprentissage Supervisé
L'apprentissage supervisé implique l'utilisation d'un ensemble de données étiqueté pour entraîner un modèle. Chaque exemple du
jeu de données est associé à une étiquette ou une sortie connue, permettant au modèle d'apprendre à faire des prédictions sur de
nouvelles données en se basant sur les exemples fournis.
8
L’Apprentissage Supervisé : Classification
La classification consiste à attribuer des données à des catégories préétablies. Chaque exemple du jeu de données est associé à une
étiquette représentant la classe à laquelle il appartient. L'objectif est de permettre au modèle de généraliser à de nouvelles données en
attribuant correctement une classe à une observation non étiquetée.
Des exemples d'applications incluent la classification d'emails en spam ou non-spam, la reconnaissance faciale, ou encore la
catégorisation de documents.
Algorithmes de Classification :
Les principaux algorithmes du machine Learning
supervisé sont les suivants : forêts aléatoires, arbres Exemple de Classification
de décision, algorithme K-NN (k-Nearest
Neighbors), régression linéaire, algorithme de Naïve
Bayes, machine à vecteurs de support (SVM),
régression logistique et boosting de gradient.
9
L’Apprentissage Supervisé : Applications de la Classification
Les applications de la classification sont vastes et touchent divers domaines où la catégorisation et l'organisation des données sont cruciales.
Voici quelques applications significatives de la classification :
Catégorisation de Documents :
o La classification facilite la catégorisation automatique de documents en fonction de leur contenu, simplifiant ainsi la recherche et la gestion de
grandes collections de données textuelles.
Diagnostic Médical :
o En médecine, la classification est utilisée pour diagnostiquer des maladies en analysant des données telles que les résultats de tests, les
symptômes et les antécédents médicaux.
10
L’Apprentissage Supervisé : Applications de la Classification
Analyse des Sentiments :
o La classification est appliquée pour analyser les sentiments dans les données textuelles, tels que les commentaires en ligne, afin de
comprendre les opinions et les attitudes des utilisateurs.
Prédiction de la Churn :
o Dans les entreprises, la classification peut être utilisée pour prédire le risque de désabonnement des clients (churn) en analysant des
données comportementales et transactionnelles.
Reconnaissance d'Images :
o Dans la vision par ordinateur, la classification est utilisée pour identifier des objets ou des motifs spécifiques dans des images, par exemple,
dans la reconnaissance faciale.
Apache Mahout prend en charge l'apprentissage supervisé avec des de classification tels que Naïve
Bayes, SVM et logistique régression. Il permet également de créer des modèles d'apprentissage
supervisé à l'aide de données de plusieurs sources différentes.
11
L’Apprentissage Supervisé : Régression
À l'inverse, la régression concerne la prédiction de valeurs continues plutôt que des catégories discrètes. Chaque exemple du jeu de
données est associé à une valeur numérique.
Le modèle ajuste ses paramètres pour minimiser la différence entre les valeurs prédites et les valeurs réelles dans le jeu de données
d'entraînement.
12
L’Apprentissage Supervisé : Régression
Processus d'Entraînement pour la Régression :
Le modèle ajuste ses paramètres pour minimiser la différence entre les valeurs prédites et les valeurs réelles dans le jeu de données
d'entraînement.
Algorithmes de Régression :
Les régressions linéaires, les forêts aléatoires, et les réseaux de neurones peuvent être employés pour résoudre des problèmes de régression.
13
L’Apprentissage Supervisé : Applications de la Régression
Économie :
o La régression est largement utilisée en économie pour modéliser des relations entre des variables telles que le revenu, la consommation,
l'investissement et d'autres indicateurs économiques.
Finance :
o La régression est appliquée pour évaluer le rendement des investissements en fonction de divers facteurs tels que les taux d'intérêt, les indices
boursiers, et d'autres variables financières.
Marketing :
o Les professionnels du marketing utilisent la régression pour analyser la relation entre les dépenses publicitaires, les canaux de marketing et les
ventes, aidant ainsi à optimiser les budgets publicitaires.
Santé :
o En médecine, la régression peut être utilisée pour prédire des résultats cliniques en fonction de divers facteurs tels que l'âge, les antécédents
médicaux et d'autres variables médicales.
14
L’Apprentissage Supervisé : Applications de la Régression
Science Environnementale :
o La régression est employée pour modéliser les relations entre des variables environnementales telles que la température, la qualité de l'air, et
la biodiversité.
Industrie :
o Dans le domaine de la production, la régression peut être utilisée pour prédire la performance des machines en fonction de divers paramètres
opérationnels.
Éducation :
o En éducation, la régression peut être utilisée pour modéliser la relation entre les heures d'étude, les méthodes d'enseignement, et les
performances scolaires des élèves.
15
L’apprentissage Non Supervisé
L'apprentissage non supervisé est un type de machine Learning où un modèle est formé à partir de données non étiquetées.
Dans le cadre du machine Learning non supervisé, l'algorithme détermine lui-même la structure de l'entrée (aucune étiquette n'est appliquée
à l'algorithme). Cette approche peut être un but en soi (qui permet de découvrir des structures enfouies dans les données) ou un moyen
d'atteindre un certain but. Cette approche est également appelée « apprentissage des caractéristiques » (Feature Learning). Il n'y a pas de
réponse connue pour les exemples d'entraînement.
Les algorithmes d'apprentissage non supervisé les plus couramment utilisés sont l'agrégation, la réduction de dimension, la régression non
supervisée et le clustering qui est un processus de regroupement de données similaires en "groupes" ou "classes" appelées "clusters", Les
algorithmes de clustering les plus couramment utilisés sont K-means, Hierarchical Clustering, DBSCAN, et PCA.
16
L’apprentissage Non Supervisé
Voici quelque exemple :
o Regroupement de clients en différents groupes en fonction de leurs habitudes d'achat en utilisant des algorithmes de clustering.
o La segmentation d'image
o Détection d'anomalies dans les données financières en utilisant des algorithmes de détection d'anomalies.
o Association : l'objectif consiste à identifier les règles qui permettront de définir de grands groupes de données.
Apache Mahout fournit également des algorithmes de Réduction de Dimension tels que PCA
(Analyse en Composantes Principales) et SVD (Décomposition en Valeurs Singulières) pour rendre les
données plus faciles à comprendre et à visualiser. Pour le Clustering, il y a K-means…etc.
17
L’apprentissage Non Supervisé : Clustering
Les algorithmes de clustering regroupent les données similaires en clusters, où les éléments au sein d'un même cluster partagent des
caractéristiques communes. K-Means, hierarchal clustering, et DBSCAN sont des exemples d'algorithmes de clustering. Cette approche est
souvent utilisée pour explorer la structure inhérente à des ensembles de données, identifiant des groupes naturels.
Clustering
Processus d'Entraînement pour le Clustering :
Les algorithmes de clustering attribuent automatiquement des clusters aux données en fonction de similarités intrinsèques.
Algorithmes de Clustering :
Le clustering est utilisé dans divers domaines, tels que la segmentation de marché, la détection d'anomalies, et la classification automatique
de documents non étiquetés.
18
L’Apprentissage Non Supervisé : Applications de Clustering
Voici quelques applications courantes du clustering dans différents domaines :
Marketing :
o Les entreprises utilisent le clustering pour segmenter leur base de clients en groupes ayant des comportements d'achat similaires, ce qui
permet de personnaliser les stratégies marketing.
Médecine :
o En médecine, le clustering peut être utilisé pour regrouper les patients présentant des symptômes similaires, facilitant ainsi le diagnostic et le
traitement personnalisé.
Recommandation de Produits :
o Les plateformes de commerce électronique utilisent le clustering pour recommander des produits similaires à leurs clients en fonction des
achats ou des préférences passées.
19
L’Apprentissage Non Supervisé : Applications de Clustering
Voici quelques applications courantes du clustering dans différents domaines :
Cartographie et Géographie :
o En cartographie, le clustering peut être utilisé pour regrouper des zones géographiques similaires en fonction de diverses caractéristiques
telles que la démographie ou le climat.
Étude de Marché :
o Les entreprises utilisent le clustering pour regrouper les réponses des consommateurs lors d'études de marché, identifiant ainsi des tendances
et des préférences.
20
L’Apprentissage par Renforcement
L'apprentissage par renforcement est un type de machine Learning qui s'intéresse à la résolution de problèmes dans lesquels un agent
doit apprendre à agir dans un environnement dynamique en récoltant des récompenses ou des punitions.
Il se distingue des autres types d'apprentissage automatique (supervisé et non-supervisé) en ce que l'agent doit apprendre à agir en prenant
des décisions basées sur ses expériences passées plutôt que sur des données d'entraînement étiquetées.
L'agent reçoit des récompenses ou des pénalités en fonction de ses actions, ce qui guide son apprentissage pour maximiser les récompenses
sur le long terme.
Principes Fondamentaux :
o Agent : L'entité prenant des décisions dans l'environnement est appelée l'agent. Il peut s'agir d'un robot, d'un logiciel, ou de tout système
capable d'interaction.
o Environnement : C'est le contexte dans lequel l'agent évolue et prend des actions. L'environnement peut être virtuel, comme dans le cas de
simulations, ou réel, impliquant une interaction directe avec le monde physique.
21
L’Apprentissage par Renforcement
Principes Fondamentaux (suite) :
o Actions : L'agent effectue des actions spécifiques dans l'environnement. Ces actions peuvent être discrètes, comme choisir entre différentes
options, ou continues, comme ajuster une valeur numérique.
o Récompenses/punitions : L'agent reçoit des récompenses ou des pénalités/punitions en fonction de ses actions. L'objectif de l'agent est de
maximiser les récompenses cumulatives sur le long terme.
22
L’Apprentissage par Renforcement
Exemples :
Un programme informatique interagit avec un environnement dynamique dans lequel il doit atteindre un certain but, par exemple conduire
un véhicule ou affronter un adversaire dans un jeu. Le programme-apprenti reçoit du feedback sous forme de « récompenses » et de «
punitions » pendant qu'il navigue dans l'espace du problème et qu'il apprend à identifier le comportement le plus efficace dans le contexte
considéré.
En 2013, c'était déjà un algorithme de machine learning par renforcement (Q-learning) qui s'était rendu célèbre en apprenant comment
gagner dans six jeux vidéo Atari sans aucune intervention d'un programmeur. Un exemple courant d'application de l'apprentissage par
renforcement est la formation d'un agent (comme un robot ou un logiciel) à jouer à un jeu vidéo. L'agent reçoit une récompense pour
chaque victoire et une punition pour chaque défaite, et doit apprendre à jouer efficacement en utilisant cette rétroaction pour améliorer ses
actions.
23
L’Apprentissage par Renforcement
Les algorithmes d'apprentissage par renforcement les plus couramment utilisés sont Q-learning, SARSA, DDPG (Deep Deterministic
Policy Gradient) et PPO (Proximal Policy Optimization).
Il existe deux types de machine learning par renforcement :
o Conduite autonome de véhicules en utilisant des récompenses pour les actions sûres et des punitions pour les actions dangereuses.
o Entraînement d'un robot pour effectuer des tâches en utilisant des récompenses pour les actions correctes et des punitions pour les
actions incorrectes.
o Entraînement d'un agent pour optimiser les investissements en utilisant des récompenses pour les rendements élevés et des
punitions pour les rendements faibles.
24
L’Apprentissage par Renforcement
Mahout et l’Apprentissage par Renforcement :
Apache Mahout ne prend pas en charge directement l'apprentissage par renforcement, cependant, il peut être utilisé en conjonction avec
d'autres projets open-source pour implémenter des modèles d'apprentissage par renforcement.
Mahout peut être utilisé pour prétraiter les données pour alimenter les modèles d'apprentissage par renforcement. Il peut également être
utilisé pour stocker et gérer les données d'expérience pour les modèles d'apprentissage par renforcement.
Il est possible d'utiliser Mahout avec d'autres projets tels qu’Apache Samza pour intégrer l'apprentissage par renforcement dans des
systèmes distribués basés sur Hadoop.
25
Outils et Bibliothèques de Machine Learning
scikit-learn :
Scikit-learn est une bibliothèque de machine learning pour Python offrant une variété d'outils pour l'analyse de données et la
modélisation statistique. Elle est appréciée pour sa simplicité d'utilisation et son support pour une gamme étendue
d'algorithmes.
TensorFlow :
TensorFlow, développé par Google, est un framework open source qui excelle dans la création et le déploiement de modèles
d'apprentissage automatique, y compris les réseaux neuronaux. Il est particulièrement adapté pour les applications nécessitant des
architectures de modèles complexes.
Apache Mahout :
Apache Mahout est un framework spécifiquement conçu pour traiter efficacement de grandes quantités de données. Sa particularité
réside dans son intégration d'algorithmes spécialisés, faisant de lui un choix optimal pour le calcul distribué sur des volumes de
données massifs.
26
Partie II : Apache Mahout
Définition de Mahout
Apache Mahout est un projet open source créé par la fondation Apache qui vise à fournir des outils de machine learning et de data
mining faciles à utiliser pour les développeurs.
Mahout est conçu pour être utilisé avec des grands ensembles de données, en particulier ceux qui sont trop volumineux pour être
manipulés par des outils traditionnels. Il utilise des algorithmes de Machine Learning distribué pour traiter ces données à grande échelle,
ce qui permet aux utilisateurs de gérer efficacement de grandes quantités de données.
En utilisant Mahout, les développeurs peuvent facilement créer des applications de machine learning et de data mining pour résoudre des
problèmes complexes. Par exemple, il peut être utilisé pour prédire les tendances des ventes ou pour analyser les données de la clientèle
pour en tirer des informations précieuses.
Mahout est également conçu pour être facilement intégré à d'autres projets open source, tels qu’Apache Hadoop et Apache Spark. Cela
permet aux développeurs de bénéficier des avantages des technologies open source tout en utilisant les outils de machine learning de
Mahout.
28
Historique de Mahout
La genèse d'Apache Mahout remonte à une époque où le besoin d'exploiter les possibilités du Machine Learning dans le
traitement de données massives devenait de plus en plus pressant. En 2008, des discussions animées ont émergé au sein de la
communauté Apache autour de la création d'un projet qui rendrait les algorithmes de Machine Learning accessibles aux
développeurs travaillant sur la plateforme Hadoop.
L'objectif initial était clair : créer un ensemble d'outils qui démocratiserait l'accès au Machine Learning, permettant à un plus
grand nombre de développeurs de tirer parti de ces techniques sans avoir une expertise avancée dans le domaine.
Mahout a été publiée pour la première fois en 2008 et a depuis subi de nombreuses mises à jour et améliorations.
L'année suivante, en 2009, Mahout a été adopté en tant que projet incubateur Apache, officialisant son engagement envers la
philosophie open source et soulignant son ambition de devenir une référence dans le domaine du Machine Learning distribué.
Ses objectifs initiaux étaient guidés par la volonté d'assurer l'accessibilité aux techniques de Machine Learning, de garantir la
scalabilité pour s'adapter à l'explosion des données, et de s'intégrer harmonieusement avec la plateforme Hadoop déjà largement
utilisée dans le domaine du Big Data.
29
Historique de Mahout
2012 : Mahout a été utilisé par Yahoo! pour lancer son service de recommandation de films; Yahoo Recommends.
2013 : la fondation Apache a annoncé la sortie de Mahout 0.8, qui a introduit de nouvelles fonctionnalités telles que des
algorithmes de clustering basés sur les graphes et la prise en charge des fonctionnalités de streaming.
2014 : la fondation Apache a lancé Mahout 0.9, qui a introduit de nouvelles fonctionnalités de classification et de
regroupement, ainsi que la prise en charge de Hadoop 2.
2015 : La fondation Apache a publié Mahout 0.10, qui introduit de nouvelles fonctionnalités de clustering et de classification
basées sur les arbres.
2016 : La fondation Apache a publié Mahout 0.11, qui introduit de nouvelles fonctionnalités de filtrage collaboratif et de
recommandation.
30
L’architecture de Apache Mahout
L’architecture de Apache Mahout
L’architecture de Mahout inclut des couches de fonctionnalités utilitaires et mathématiques qui sont utilisées par les algorithmes de
machine learning inclus dans Mahout. Ces algorithmes sont exécutés sur Hadoop et peuvent être utilisés par les développeurs pour
mettre en œuvre des applications d'apprentissage automatique.
31
L’architecture de Apache Mahout
Apache Hadoop Distributed File System (HDFS) : HDFS est le système de fichiers distribué utilisé par Hadoop pour stocker et accéder
aux données sur le cluster. Les données sont divisées en blocs et réparties sur plusieurs nœuds de données dans le cluster, ce qui permet à
Hadoop de traiter les données de manière distribuée. HDFS joue un rôle important dans l'architecture de Mahout en fournissant un
mécanisme pour stocker et accéder aux données utilisées par les algorithmes de machine learning de Mahout.
Apache Hadoop (Mapreduce + YARN) : Mahout s'exécute sur le framework de traitement de données distribuées Apache Hadoop. Hadoop
permet à Mahout de traiter des données en parallèle sur plusieurs nœuds de données et de calcul dans un cluster, ce qui permet à Mahout
de traiter de grandes quantités de données de manière efficace.
Mahout Math : cette couche de l'architecture de Mahout inclut des bibliothèques de mathématiques qui peuvent être utilisées pour traiter
et analyser les données. Elle inclut des fonctions de traitement de matrices, de traitement de vecteurs et de calcul de statistiques, ainsi que
d'autres fonctions mathématiques utiles pour l'apprentissage automatique.
32
L’architecture de Apache Mahout
Mahout Utilities : cette couche de l'architecture de Mahout inclut des outils et des
fonctionnalités utilitaires pour les développeurs qui utilisent Mahout. Elle peut être
utilisée pour prétraiter les données avant de les utiliser dans les algorithmes de
machine learning de Mahout, pour gérer les fichiers de données et pour effectuer
d'autres tâches utilitaires.
33
Les caractéristiques de Mahout
Mahout a plusieurs caractéristiques à savoir :
Open source : Apache Mahout est un framework open source pour l'apprentissage automatique distribué. Il permet aux développeurs
de mettre en œuvre des applications d'apprentissage automatique en utilisant les algorithmes inclus dans Mahout et en exécutant ces
algorithmes sur le framework de traitement de données distribuées Apache Hadoop.
Outils de machine learning et de data mining : Mahout inclut un large éventail d'algorithmes de machine learning, tels que les
algorithmes de classification, de régression, de regroupement et de recommandation. Ces algorithmes peuvent être utilisés pour
résoudre de nombreux problèmes d'apprentissage automatique, tels que la prédiction de la valeur d'une variable cible, la détection de
patterns dans les données et la recommandation de produits ou de contenus basés sur les préférences des utilisateurs.
Traitement à grande échelle : Mahout utilise le framework de traitement de données distribuées Apache Hadoop pour exécuter les
algorithmes de machine learning sur des clusters de nœuds de calcul et de stockage de données. Cela permet à Mahout de traiter de grandes
quantités de données de manière efficace et de scaler facilement en ajoutant de nouveaux nœuds au cluster.
34
Les caractéristiques de Mahout
Mahout a plusieurs caractéristiques à savoir (suite) :
Intégration facile avec d'autres projets open source : Mahout est conçu pour être facilement intégré à d'autres projets open source, tels
qu’Apache Hadoop et Apache Spark, ce qui permet aux développeurs de bénéficier des avantages de ces technologies en utilisant les outils
de Mahout.
Interfaces utilisateur : Mahout inclut des interfaces utilisateur pour faciliter l'utilisation des algorithmes et des outils de Mahout, telles
que des commandes en ligne de commande et des interfaces graphiques.
35
Langages de programmation supportés par Mahout
Mahout est conçu pour être polyglotte, ce qui signifie qu'il prend en charge plusieurs langages de programmation afin de faciliter son adoption
par une variété de développeurs ayant des préférences et des compétences différentes. Voici une présentation des langages de programmation
pris en charge par Mahout :
1) Java : Mahout est principalement écrit en Java, et le support de ce langage est donc complet. Java est largement utilisé dans le domaine du
Big Data et du Machine Learning, ce qui facilite l'intégration de Mahout dans les écosystèmes Java existants, en particulier avec Apache
Hadoop.
2) Scala : Scala est un langage de programmation polyvalent qui s'exécute sur la machine virtuelle Java (JVM). Mahout propose également une
API Scala, offrant ainsi aux développeurs la possibilité d'écrire du code Mahout en utilisant Scala, ce qui peut être particulièrement
attrayant pour ceux qui préfèrent des fonctionnalités de programmation fonctionnelle.
3) Python : Mahout propose également une interface Python, permettant aux développeurs de tirer parti de Mahout dans des environnements
Python, tels que ceux basés sur Apache Spark. Cela élargit la portée d'utilisation de Mahout à la communauté Python, qui est très active
dans le domaine du Machine Learning.
Cette prise en charge de plusieurs langages de programmation vise à rendre Mahout accessible à un
large public de développeurs, quel que soit leur langage de prédilection. Cela encourage la
collaboration entre les équipes utilisant des technologies différentes et facilite l'intégration de Mahout
dans des projets existants.
36
Les Points forts de Apache Mahout
Mahout présente plusieurs avantages significatifs qui en font une bibliothèque attrayante pour le déploiement de solutions de Machine Learning
à grande échelle. Voici quelques-uns des avantages clés de Mahout :
1) Scalabilité Horizontale : Mahout est conçu pour fonctionner de manière distribuée, tirant parti du framework MapReduce d'Apache
Hadoop. Cela permet à Mahout de s'évoluer horizontalement en ajoutant simplement des nœuds à un cluster, ce qui est essentiel pour le
traitement efficace de grandes quantités de données. La capacité à évoluer avec la taille des données garantit que Mahout reste performant
même face à des ensembles de données massifs.
2) Flexibilité des Langages : Mahout offre une polyvalence linguistique en prenant en charge plusieurs langages de programmation,
notamment Java, Scala et Python. Cette flexibilité permet aux développeurs d'utiliser le langage de programmation qu'ils maîtrisent le mieux
ou qui est le mieux adapté à leur environnement. Cela facilite l'intégration de Mahout dans différents projets et écosystèmes technologiques.
3) Bibliothèque Diversifiée d'Algorithmes : Mahout propose une vaste bibliothèque d'algorithmes de Machine Learning couvrant des
domaines tels que la classification, la régression, le clustering, la recommandation, et l'apprentissage non supervisé. Cette diversité permet
aux utilisateurs de choisir et d'appliquer les algorithmes les mieux adaptés à leurs besoins spécifiques, offrant ainsi une solution complète
pour une variété d'applications.
37
Les Points forts de Apache Mahout
4) Support du Big Data : En s'appuyant sur Apache Hadoop, Mahout est particulièrement bien adapté au traitement des données massives. Il
tire parti de Hadoop Distributed File System (HDFS) pour le stockage distribué des données et utilise le paradigme MapReduce pour la
distribution parallèle des tâches de calcul. Ceci en fait une solution appropriée pour les environnements Big Data où la gestion et l'analyse
de grandes quantités de données sont cruciales.
5) Évaluation Intégrée des Modèles : Mahout propose des outils d'évaluation intégrés qui permettent aux utilisateurs de mesurer la
performance de leurs modèles de Machine Learning. Ces outils fournissent des métriques spécifiques à chaque type d'algorithme,
facilitant ainsi l'évaluation précise de la qualité des modèles générés.
6) Composants de Recommandation : Mahout propose des composants spécifiques pour les systèmes de recommandation, facilitant la
génération de recommandations personnalisées sur des systèmes distribués. Cela en fait une solution de choix pour les entreprises cherchant
à implémenter des systèmes de recommandation évolués.
En combinant ces avantages, Mahout se positionne comme une solution robuste et flexible pour le développement, le
déploiement, et l'évaluation de modèles de Machine Learning à grande échelle. Sa capacité à s'intégrer dans des
environnements Big Data, à offrir une variété d'algorithmes, et à supporter divers langages de programmation en font un
outil polyvalent pour les professionnels du Machine Learning.
38
Les limites de Apache Mahout
Une courbe d’apprentissage est une représentation graphique de l’amélioration des performances d’un individu avec l’augmentation de sa
pratique ou de son expérience. Ce terme est souvent utilisé dans le monde des affaires et de l’éducation pour décrire la vitesse à laquelle les
travailleurs ou les étudiants apprennent de nouvelles tâches. La pente de la courbe indique la vitesse d’apprentissage de l’individu ; une courbe
d’apprentissage abrupte indique une amélioration rapide, tandis qu’une courbe d’apprentissage peu prononcée indique une amélioration plus
lente.
Courbe d'Apprentissage peu prononcée : Pour les utilisateurs débutants, Mahout peut avoir une courbe d'apprentissage peu prononcée ,
en particulier en raison de sa complexité et de ses multiples options de configuration.
Documentation : Bien que la documentation de Mahout soit substantielle, elle peut parfois manquer de clarté ou de détails, ce qui peut
rendre la prise en main plus difficile.
Évolution du Paysage du ML : Mahout a été développé dans un contexte spécifique, et le paysage du Machine Learning a évolué depuis.
Certains frameworks plus récents peuvent offrir des fonctionnalités.
39
Applications de Machine Learning avec Apache Mahout
Classification :
La classification est une tâche fondamentale du Machine Learning consistant à attribuer une catégorie prédéfinie à un ensemble
d'observations en fonction de leurs caractéristiques. Mahout propose plusieurs modèles de classification, offrant ainsi une gamme
d'approches pour répondre à des problèmes spécifiques.
Classification :
Mahout propose plusieurs modèles de classification, dont certains sont particulièrement adaptés aux problèmes spécifiques. Parmi les
modèles les plus couramment utilisés dans le cadre de la classification, on peut citer :
o Random Forests : Les Random Forests sont des ensembles d'arbres de décision qui peuvent être utilisés pour la classification. Mahout
implémente des Random Forests distribués, exploitant la puissance du calcul distribué pour construire des modèles robustes.
o Naive Bayes : Mahout offre une implémentation distribuée de l'algorithme Naive Bayes, qui est particulièrement utile pour la
classification de textes et d'autres données catégorielles.
o k-Nearest Neighbors (k-NN) : L'algorithme k-NN est implémenté dans Mahout pour la classification basée sur la proximité des
voisins.
o Support Vector Machines (SVM) : Les SVM sont également pris en charge dans Mahout pour les problèmes de classification linéaire
et non linéaire. 41
Applications de Machine Learning avec Apache Mahout
Recommandation:
Les systèmes de recommandation visent à prédire les préférences ou les intérêts d'un utilisateur et à recommander des éléments
pertinents en fonction de ces prédictions. Mahout propose des composants spécifiques pour le développement de systèmes de
recommandation, en mettant l'accent sur la génération de recommandations personnalisées dans des environnements distribués.
Mahout propose une variété d'algorithmes de recommandation, couvrant différentes approches pour répondre aux besoins spécifiques des
applications. Certains des principaux composants de recommandation inclus dans Mahout sont les suivants :
o User-Based Collaborative Filtering : Cette approche recommande des articles à un utilisateur en se basant sur les préférences
d'utilisateurs similaires. Mahout implémente des algorithmes de filtrage collaboratif basés sur les utilisateurs.
o Item-Based Collaborative Filtering : Dans cette approche, les articles sont recommandés en se basant sur la similarité entre les
articles eux-mêmes. Mahout offre des solutions pour le filtrage collaboratif basé sur les articles.
42
Applications de Machine Learning avec Apache Mahout
Recommandation:
Composants de recommandation dans Mahout (suite) :
o Matrix Factorization : Mahout propose des méthodes de factorisation matricielle pour la recommandation, qui consistent à décomposer
une matrice utilisateur-article en facteurs latents, permettant ainsi de générer des recommandations précises.
o Content-Based Recommendation : En utilisant les caractéristiques des articles ou des utilisateurs, Mahout permet également la
recommandation basée sur le contenu, fournissant ainsi des recommandations personnalisées en fonction des préférences individuelles
Le regroupement, ou clustering, est une technique du Machine Learning qui vise à regrouper des données similaires dans des groupes
distincts. Mahout propose plusieurs algorithmes de regroupement distribués, permettant ainsi de traiter efficacement de grandes quantités de
données.
Mahout propose plusieurs algorithmes de regroupement adaptés à divers scénarios d'application. Certains des principaux algorithmes de
regroupement inclus dans Mahout sont les suivants :
k-Means Clustering : L'algorithme k-Means est l'un des algorithmes de regroupement les plus couramment utilisés. Mahout propose
une implémentation distribuée de k-Means qui permet de regrouper efficacement de grandes quantités de données sur un cluster de
machines.
Fuzzy k-Means : Cette variante du k-Means permet à un point d'appartenir à plusieurs clusters avec des degrés d'appartenance
différents. Cela peut être utile lorsque les données ne sont pas clairement séparables.
44
Comparaison avec d’autre frameworks de ML
Comparé à d'autres frameworks de Machine Learning tels que scikit-learn (pour Python) ou Apache Spark MLlib, Mahout a ses
avantages et inconvénients.
Alors que scikit-learn est réputé pour sa simplicité et sa facilité d'utilisation, Mahout excelle dans le traitement distribué de données
massives, surtout lorsqu'il est intégré avec Apache Hadoop.
Spark MLlib, d'autre part, offre des performances élevées et une API plus conviviale pour le traitement distribué, mais la sélection entre
Mahout et Spark dépend souvent du contexte spécifique du projet, des compétences de l'équipe, et des besoins en termes de scalabilité et
de fonctionnalités avancées.
Recommandation de Produits :
o Mahout excelle dans la recommandation collaborative, permettant aux entreprises de proposer des produits ou services personnalisés à
leurs utilisateurs en identifiant des similarités entre leurs comportements ou préférences.
o Mahout peut automatiser le processus de classification de documents, que ce soit pour l'attribution automatique de tags à des articles, la
catégorisation de courriers électroniques, ou d'autres tâches de classification.
46
Cas d’utilisation de Apache Mahout
Prédiction de Tendances :
o En utilisant des algorithmes de classification, Mahout peut être appliqué pour prédire des tendances futures basées sur des modèles
identifiés dans les données historiques.
Analyse de Sentiments :
o En traitant des volumes importants de données textuelles, Mahout peut être utilisé pour analyser les sentiments des utilisateurs à l'égard de
produits, de marques, ou d'événements.
Méthode 1 :
48
Installation de Apache Mahout
Méthode 2 :
4) Exécutez la commande suivante dans le terminal pour extraire le contenu du dossier compressé :
50
Installation de Apache Mahout
Méthode 2 :
7) Installation de Maven :
51
Installation de Apache Mahout
Méthode 2 :
Pour vérifier si Maven a été installé avec succès sur votre machine, on exécute la commande suivante dans le terminal :
8) Installation de Subversion :
Maven ayant été installé avec succès, nous allons maintenant installer Subversion. Subversion est un système de contrôle de révision de
logiciels libre d'utilisation. Il permet aux utilisateurs de suivre les différentes versions du code source sur leurs machines.
On exécute la commande suivante :
52
Installation de Apache Mahout
Méthode 2 :
53
Installation de Apache Mahout
Méthode 2 :
9) Installation de Mahout :
Avec Subversion maintenant installé, nous avons installé avec succès toutes les dépendances pour Mahout.
Nous allons maintenant télécharger et installer Mahout.
Tout d'abord, on se place dans le répertoire dans lequel nous allons installer Mahout.
54
Installation de Apache Mahout
Méthode 2 :
9) Installation de Mahout (suite) :
Apache Mahout est maintenant prêt à être utilisé sur notre machine Linux. 55
TP1 : Système de Recommandation avec Apache Mahout
Ce 1er TP est un projet de recommandation de films qui utilise l'un des algorithmes de recommandation (algorithme de filtrage
collaboratif) pour recommander des films à des utilisateurs en se basant sur leurs précédentes évaluations de films.
L‘Algorithme de Filtrage Collaboratif utilise les préférences des utilisateurs pour recommander des articles, des films ou des
produits similaires à ceux qu'ils ont appréciés précédemment.
Pour mettre en œuvre ce TP, on a besoin d'une base de données de films (moving.csv) et d'évaluations de films par les utilisateurs
(rating.csv). On doit ensuite utiliser l'un des algorithmes de recommandation de Mahout pour construire un modèle de
recommandation à partir de ces données. Lorsqu'un utilisateur souhaite obtenir des recommandations de films, le modèle utilisera
les évaluations précédentes de l’utilisateur et d’autres utilisateurs (et éventuellement d'autres informations sur les films, dans notre
Tp, ce n’est pas utile) pour recommander des films qui pourraient être pertinents pour l'utilisateur. La base rating.csv a été utilisée
seulement dans le présent TP pour construire la base dataset.csv. 56
TP1 : Système de Recommandation avec Apache Mahout
Les données :
Dans ce jeu de données qui comporte "userId", "movieId" et "rating", la colonne "userId" indique l'identifiant unique de
l'utilisateur qui a donné l'évaluation, la colonne "movieId" indique l'identifiant unique du film qui a été évalué et la colonne
"rating" indique la note que l'utilisateur a donnée au film sur une échelle de 1 à 5.
Par exemple, la première ligne indique que l'utilisateur avec l'identifiant 1 a donné une note de 4 au film avec l'identifiant 1 .
57
TP1 : Système de Recommandation avec Apache Mahout
Le code : Voici notre code de recommandation écrit en JAVA.
58
TP1 : Système de Recommandation avec Apache Mahout
Le code (suite) :
59
TP1 : Système de Recommandation avec Apache Mahout
Compilation et Exécution :
Résultat d’exécution :
60
TP2 : Système de Clustering avec Apache Mahout
Objectif du TP2 :
L'objectif du TP2 est d’appliquer l'algorithme de K-means afin de regrouper des éléments (par exemple, des documents, des
images, des enregistrements de données, etc.) en "clusters" ou groupes similaires. Dans notre cas, on va regrouper des individus. Le
but de cette opération est de permettre de mieux comprendre et analyser les données en identifiant les différents groupes qui peuvent
exister au sein des données.
61
TP2 : Système de Clustering avec Apache Mahout
Le processus de l'algorithme k-means (suite) :
Le résultat final de l'algorithme de K-means est une partition des points de données en K clusters, avec chaque cluster ayant un
centroïde représentatif. Les points de données sont assignés au cluster dont le centroïde est le plus proche, en utilisant une mesure de
distance.
Les données :
Dans ce dataset, chaque individu est représenté par deux valeurs normalisées.
Ces valeurs pourraient représenter, par exemple, deux caractéristiques ou
attributs des individus (dans notre cas : leur âge et leur revenu).
Il faut savoir que le dataset doit être normalisé avant d'être utilisé avec
l'algorithme de K-means de Mahout, afin que toutes les valeurs soient sur la
même échelle et que l'algorithme puisse correctement mesurer les distances.
62
TP2 : Système de Clustering avec Apache Mahout
Le code source (1/3) :
63
TP2 : Système de Clustering avec Apache Mahout
Le code source (2/3) :
64
TP2 : Système de Clustering avec Apache Mahout
Le code source (3/3) :
65
TP2 : Système de Clustering avec Apache Mahout
Compilation et Exécution :
Les données :
On a utilisé comme données l'ensemble de données 20
Newsgroups qui est une collection d'environ 20 000 documents
de groupes de discussion, répartis (presque) uniformément dans
20 groupes de discussion différents.
69
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
2) Convertir le répertoire des corpus en un fichier SequenceFile :
Cette commande est utilisée pour convertir un répertoire des corpus en un fichier SequenceFile, qui est un format de fichier utilisé
par Apache Mahout, le répertoire des corpus à convertir est spécifié avec l'option -i et il est appelé 20newsdataall. Le fichier
SequenceFile généré sera enregistré avec l'option -o et sera appelé 20newsdata_SEQ et il contiendra les données de chaque fichier
du répertoire d'entrée, organisées sous forme de vecteurs (étape 3).
70
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
2) Convertir le répertoire des corpus en un fichier SequenceFile (suite) :
71
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
3) Convertir un fichier SequenceFile en un fichier de vecteurs : :
73
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
4) Diviser le fichier de vecteurs en deux parties, une partie d'entraînement et une partie de test :
Le fichier de vecteurs à diviser 20newsdata_VEC/tfidf-vectors est spécifié avec l'option -i. La partie d'entraînement du fichier de
vecteurs sera enregistrée avec l'option --trainingOutput et sera appelée 20newsdata_TRAIN. La partie de test du fichier de
vecteurs sera enregistrée avec l'option --testOutput et sera appelée 20newsdata_TEST.
L'option --randomSelectionPct 40 spécifie que 40% des vecteurs seront sélectionnés au hasard pour la partie d'entraînement et que
le reste (60%) sera utilisé pour la partie de test. L'option --overwrite spécifie que les fichiers de sortie doivent être écrasés s'ils
existent déjà. L'option --sequenceFiles spécifie que les fichiers de sortie doivent être enregistrés sous forme de fichiers
SequenceFile. L'option -xm sequential spécifie que la commande doit être exécutée de manière séquentielle plutôt qu’en parallèle.
74
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
4) Diviser le fichier de vecteurs en deux parties, une partie d'entraînement et une partie de test (suite) :
75
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
4) Diviser le fichier de vecteurs en deux parties, une partie d'entraînement et une partie de test (suite) :
76
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
5) Entraîner un classificateur Naive Bayes à l'aide d'un fichier de vecteurs d'entraînement :
Cette commande est utilisée pour entraîner un classificateur NaiveBayes à l'aide d'un fichier de vecteurs d'entraînement.
Le fichier de vecteurs d'entraînement 20newsdata_TRAIN est spécifié avec l'option -i. Le modèle de classificateur Naive Bayes
entraîné sera enregistré avec l'option -o et sera appelé model.
L'option -li spécifie un fichier d'index d'étiquettes qui contient les étiquettes associées aux vecteurs d'entraînement. L'option -ow
spécifie que le fichier de modèle doit être écrasé s'il existe déjà. L'option -c spécifie que le classificateur doit être entraîné en
utilisant la comptabilité complète.
77
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
5) Entraîner un classificateur Naive Bayes à l'aide d'un fichier de vecteurs d'entraînement :
78
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
6) Evaluer un modèle de classificateur Naive Bayes sur un fichier de vecteurs de test :
Cette commande est utilisée pour évaluer le modèle de classificateur NaiveBayes sur un fichier de vecteurs de test ou le fichier de
vecteurs de test 20newsdata_TEST est spécifié avec l'option -i. Le modèle de classificateur NaiveBayes model à évaluer est
spécifié avec l'option -m.
L'option -l spécifie le fichier d'index d'étiquettes qui contient les étiquettes réelles associées aux vecteurs de test. L'option -ow
spécifie que le fichier de résultats doit être écrasé s'il existe déjà. L'option -o spécifie un fichier de sortie pour enregistrer les
résultats de l'évaluation du modèle.
Les résultats de l'évaluation du modèle peuvent inclure une Précision, un Rappel et un Score-F1 pour chaque étiquette.
79
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
6) Evaluer un modèle de classificateur Naive Bayes sur un fichier de vecteurs de test :
80
TP3 : Système de Classification avec Apache Mahout
Le code (Ensemble de commandes) :
6) Evaluer un modèle de classificateur Naive Bayes sur un fichier de vecteurs de test :
81
Conclusion
En conclusion, Apache Mahout est une bibliothèque open source de machine learning qui offre une variété
d'algorithmes de machine learning, notamment des algorithmes de recommandation, de clustering et de
classification.
Apache Mahout est optimisé pour fonctionner sur les systèmes de traitement de données en parallèle tels que
Hadoop et peut être utilisé pour traiter de grandes quantités de données.
Mahout peut être utilisé à l'aide de lignes de commande ou intégré dans des applications Java.
En utilisant Apache Mahout, les développeurs peuvent facilement mettre en œuvre des algorithmes de machine
learning sans avoir à réécrire le code de l'algorithme de zéro.
82