Académique Documents
Professionnel Documents
Culture Documents
Mémoire
Présenté en vue de l’obtention du Diplôme de Master
Thème:
Apprentissage automatique pour l’analyse des données
massives : K-MEANS basé Spark vs K-MEANS classique
Jury de Soutenance :
Belleili Habiba MCA UBMA Président
2
II.III- L’apprentissage automatique ................................................................27
II. III.1- C’est quoi le machine Learning ? ....................................................... 27
II. III.2- Les différents type d’algorithme de machine Learning ...................... 28
II. III.2.1- L’apprentissage non supervisé .................................................... 28
II. III.2.2- L’apprentissage supervisé ........................................................... 28
II. III.2.3- Les outils d’apprentissages automatique .................................... 30
II. III.3- APACHE SAMOA ................................................................................ 33
Conclusion ....................................................................................................34
CHAPITRE 3 : étude comparative de l’algorithme k-means classique vs k-
means basé spark..........................................................................................35
Introduction ..................................................................................................35
III.I.1- Hadoop framework ............................................................................. 35
III.I.2- Hadoop Distributed File System (HDFS) .............................................. 36
III.1.3- Système map/reduce : ....................................................................... 37
III.1.3.1-Comment fonctionne Map/Reduce? ............................................. 39
III.II- Apache spark .....................................................................................41
III.II.1- Caractéristique de l’apache spark ...................................................... 41
III.II.2- Apache spark écosystème .................................................................. 42
III.II.2.1- RDD (Resilient Distributed Datasets) : ....................................... 43
III.II.2.2-DAG (Directed Acyclic Graph) ................................................. 44
III.II.3- Comment marche spark ..................................................................... 44
III.III- L’algorithme k-means : .........................................................................46
III.III.1- Avantages :........................................................................................ 47
III.III.2- Inconvénients : .................................................................................. 48
Chapitre 4: réalisation et implémentation ....................................................49
Introduction : ................................................................................................49
IV. 1. -Environnement, langages et outils utilisés :.........................................49
IV.1.1-le language python : ........................................................................... 49
3
IV.1.2-pycharm : ............................................................................................ 50
IV.3- kmeans classique: ...............................................................................50
IV.4- Kmeans avec Spark ...............................................................................50
IV.4.1- pseudo code: ..................................................................................... 51
IV.4.2-Implémentation avec spark :............................................................... 51
IV.4.3- Importation des bibliothèques ........................................................... 52
IV.4.4-Mapper : ............................................................................................. 53
IV.4.5-Reducer :............................................................................................. 54
IV.5- Dataset : ...............................................................................................55
IV.6- Résultats : .............................................................................................55
IV.7- Tests : ...................................................................................................56
IV.6.1Teste sur spark ..................................................................................... 56
IV.6.2 test sur k-means classique .................................................................. 56
Conclusion ...................................................................................................57
Conclusion et perspective.............................................................................58
Références bibliographiques .........................................................................59
4
Table des figures :
Figure 1 : Les 3 V du big data.................................................................................................... 16
Figure 02 : Stockage clé/valeur ................................................................................................ 19
Figure 03 : Graphe représentant la régression linéaire ........................................................... 24
Figure 04: Graphe représentant la régression logistique ........................................................ 25
Figure 05: arbre de classification ............................................................................................. 25
Figure 06: Algorithme des K plus proche voisin ....................................................................... 26
Figure 7 : Partition en k moyenne ............................................................................................ 27
Figure 8: représentation du SVM ............................................................................................. 29
Figure 9: : l’architecture de l’HDFS ........................................................................................ 36
Figure 10: Le traille de map/reduce ......................................................................................... 37
Figure 11: l’architecture map/reduce ....................................................................................... 38
Figure 12 ; Fonctionnement du map/reduce ............................................................................. 39
Figure 13 : Apache spark ......................................................................................................... 41
Figure 14 : Flux de travail de Spark ......................................................................................... 44
Figure 15 diagramme de l’algorithme kmeans ........................................................................ 46
Figure 16 : Le langage python .................................................................................................. 49
Figure 17: Le logiciel paycharm ................................................................................................ 50
Figure 18: Les bibliothèque nécessaires ................................................................................... 53
Figure 19 ; Création des Centroid ............................................................................................ 54
Figure 20 ; Calcule des nouveaux centroid .............................................................................. 54
Figure 21: Exemple du dataset ................................................................................................. 55
Figure 22: Résultat.................................................................................................................... 55
5
Résumé
Le Big Data est déjà largement utilisé par de nombreuses entreprises pour
prendre des décisions plus intelligentes en se basant sur des données. La plupart
des industries sont peu à peu bouleversées par cette nouvelle technologie, et les
sommes investies dans le Big Data sont de plus en plus importantes. La question
qui se pose maintenant est comment gérer ce grand nombre de données ?
6
Abstract
Big Data is already widely used by many companies to make smarter decisions
based on data. Most industries are gradually being disrupted by this new
technology, and the amount of money being invested in Big Data is growing.
The question now is how to manage this large amount of data?
Several data analysis tools and classification algorithms are available to us. The
purpose of this thesis is to make a comparative study of one of the best known
classification algorithms in the world which is the k-means with the best adapted
tool which is the apache spark but before that we presented other tools and
other classification algorithm and machine learning.
Our dissertation aims to implement the classic k-means algorithm and the k-
means based spark on the python environment and make a comparative study of
the two systems and see the best suited to the classification of massive data.
Keywords :Big Data, data analysis, machine learning , Hadoop, Apache Spark,
K-means
7
ﻣﻠﺨﺺ
ﺗﺴﺘﺨﺪم اﻟﻌﺪﯾﺪ ﻣﻦ اﻟﺸﺮﻛﺎت اﻟﺒﯿﺎﻧﺎت اﻟﻀﺨﻤﺔ ﺑﺎﻟﻔﻌﻞ ﻋﻠﻰ ﻧﻄﺎق واﺳﻊ ﻻﺗﺨﺎذ ﻗﺮارات أﻛﺜﺮ ذﻛﺎ ًء ﺑﻨﺎ ًء ﻋﻠﻰ
ﺳﺎ ﻋﻠﻰ ﻋﻘﺐ ﺑﺴﺒﺐ ھﺬه اﻟﺘﻜﻨﻮﻟﻮﺟﯿﺎ اﻟﺠﺪﯾﺪة ،واﻟﻤﺒﺎﻟﻎ
اﻟﺒﯿﺎﻧﺎت .ﺗﻨﻘﻠﺐ ﻣﻌﻈﻢ اﻟﺼﻨﺎﻋﺎت ﺗﺪرﯾﺠﯿًﺎ رأ ً
اﻟﻤﺴﺘﺜﻤﺮة ﻓﻲ اﻟﺒﯿﺎﻧﺎت اﻟﻀﺨﻤﺔ ھﻲ أﻛﺜﺮ ﻓﺄﻛﺜﺮ أھﻤﯿﺔ اﻟﺴﺆال اﻟﺬي ﯾﻄﺮح ﻧﻔﺴﮫ اﻵن ھﻮ ﻛﯿﻒ ﺗﺘﻢ إدارة ھﺬا
اﻟﻜﻢ اﻟﮭﺎﺋﻞ ﻣﻦ اﻟﺒﯿﺎﻧﺎت؟ ﺗﻘﺪم ﻟﻨﺎ اﻟﻌﺪﯾﺪ ﻣﻦ أدوات ﺗﺤﻠﯿﻞ اﻟﺒﯿﺎﻧﺎت وﺧﻮارزﻣﯿﺔ اﻟﺘﺼﻨﯿﻒ .ﻧﮭﺎﯾﺔ ھﺬه اﻟﺮﺳﺎﻟﺔ
ھﻲ ﻋﻤﻞ دراﺳﺔ ﻣﻘﺎرﻧﺔ ﻟﻮاﺣﺪة ﻣﻦ أﺷﮭﺮ ﺧﻮارزﻣﯿﺎت اﻟﺘﺼﻨﯿﻒ ﻓﻲ اﻟﻌﺎﻟﻢ واﻟﺘﻲ ﺗﻌﻨﻲ kﺑﺄﻓﻀﻞ أداة
ﻣﻼﺋﻤﺔ وھﻲ Apache sparkوﻟﻜﻦ ﻗﺒﻞ ذﻟﻚ ﻗﺪﻣﻨﺎ أدوات أﺧﺮى وﺗﺼﻨﯿﻔﺎت أﺧﺮى وﺗﻌﻠﻢ آﻟﻲ.
اﻟﺨﻮارزﻣﯿﺔ ﺗﮭﺪف أطﺮوﺣﺘﻨﺎ إﻟﻰ ﺗﻨﻔﯿﺬ ﺧﻮارزﻣﯿﺔ k-meanاﻟﻜﻼﺳﯿﻜﯿﺔ واﻟﻮﺳﺎﺋﻞ kاﻟﻤﺒﻨﯿﺔ ﻋﻠﻰ ﺷﺮارة
ﻋﻠﻰ ﺑﯿﺌﺔ Pythonوإﺟﺮاء دراﺳﺔ ﻣﻘﺎرﻧﺔ ﻟﻠﻨﻈﺎﻣﯿﻦ وﻣﻌﺮﻓﺔ اﻷﻧﺴﺐ ﻟﺘﺼﻨﯿﻒ اﻟﺒﯿﺎﻧﺎت اﻟﻀﺨﻤﺔ.
اﻟﻜﻠﻤﺎت اﻟﻤﻔﺘﺎﺣﯿﺔ :اﻟﺒﯿﺎﻧﺎت اﻟﻀﺨﻤﺔ ،ﺗﺤﻠﯿﻞ اﻟﺒﯿﺎﻧﺎت ،اﻟﺘﻌﻠﻢ اﻵﻟﻲ ،Apache Spark ،Hadoop ،
.K-mean
8
Dedicace
9
Remerciements
Avant tout, je remercie Dieu le tout puissant qui m’a donné la force et
la volonté pour finir ce travail.
10
Introduction générale
Contexte de recherche
Le traitement de données massives à l’aide des méthodes d’analyse probabiliste et
d’apprentissage, est un domaine de recherche très actif. En effet, le Big Data est
pluridisciplinaire, il comprend:
Problématique
Plusieurs outils techniques et algorithmes d’apprentissage pour le traitement et l'analyse de
données structurées et non structurées ont apparu très rapidement. Cependant, la plupart des
outils nécessitent des connaissances approfondies de la part des experts pour comprendre
leurs concepts et les utiliser.
Motivations
L’analyse de données massives est d’une importance indéniable dans tous les domaines : e-
commerce, santé, réseaux sociaux, recherche scientifique ... Elle concerne les systèmes d’aide
à la décision en transformant les données en connaissances voire en prévisions par filtrage,
prédiction, etc.
Objectifs
L’objectif de ce thème est :
11
- de réaliser une étude des outils et des algorithmes d’apprentissage pour l’analyse des
données massives.
Organisation du document
Dans le deuxième chapitre, nous présentons les outils et les algorithmes d’apprentissage
automatique pour l’analyse des données massives.
Dans le troisième chapitre, on va étaler sur une étude comparative des systèmes Mapreduce et
Apache Spark.
Enfin, nous clôturons notre manuscrit par une conclusion générale et quelques perspectives.
12
Chapitre 1 : Concepts fondamentaux de Big data
Introduction
« The Big data » ou Les mégadonnées peuvent être définies comme des ensembles de données
dont la taille ou le type dépasse la capacité des bases de données relationnelles traditionnelles
à capturer, gérer et traiter les données avec une faible latence. Les caractéristiques des
mégadonnées incluent un volume élevé, une vitesse élevée et une grande variété. Les sources
de données deviennent plus complexes que celles des données traditionnelles, car elles sont
alimentées par l'intelligence artificielle (IA), les appareils mobiles, les médias sociaux et
l'Internet des objets (IoT). Par exemple, les différents types de données proviennent de
capteurs, d'appareils, de vidéo / audio, de réseaux, de fichiers journaux, d'applications
transactionnelles, du Web et des médias sociaux - une grande partie est générée en temps réel
et à très grande échelle.[4]
La quantité de données dans le monde d’aujourd’hui est stupéfiante. Mais le big data offre de
vastes opportunités aux entreprises, qu'elles soient utilisées indépendamment ou avec des
données traditionnelles existantes. Les spécialistes des données, les analystes, les chercheurs
et les utilisateurs professionnels peuvent tirer parti de ces nouvelles sources de données pour
des analyses avancées qui fournissent des informations plus approfondies et alimentent des
applications de Big Data innovantes. Certaines techniques courantes incluent l'exploration de
données, l'analyse de texte, l'analyse prédictive, la visualisation de données, l'intelligence
artificielle, l'apprentissage automatique, les statistiques et le traitement du langage naturel. .[4]
Grâce à l’analyse des données massives, on peut, à terme, accélérer la prise de décision, la
modélisation et la prévision des résultats futurs et améliorer l’intelligence et l’efficacité dans
le monde des affaires. Il existe de nombreux outils Big Data open source sur le marché.
Lorsque on crée une solution Big Data, Il ne fait aucun doute que les logiciels open source
tels qu'Apache Hadoop, Apache Spark et l'ensemble de l'écosystème Hadoop comme des
outils de traitement et de stockage de données flexibles et rentables conçus pour gérer le
volume de données générés sont parmi les outils les plus utilisé actuellement. .[4]
Pour exploiter la puissance du big data, on a besoin d'une infrastructure capable de gérer et de
traiter d'énormes volumes de données structurées et non structurées en temps réel et de
protéger la confidentialité et la sécurité des données. Il existe sur le marché diverses
13
technologies de différents fournisseurs, dont Amazon, IBM, Microsoft, etc. pour gérer le big
data. En examinant les technologies qui traitent le big data, nous étudions les deux catégories
de technologies suivantes : Big Data opérationnel, Big Data analytique.[4]
14
Littéralement, ces termes signifient mégadonnées, grosses données ou encore données
massives. Ils désignent un ensemble très volumineux de données qu’aucun outil classique de
gestion de base de données ou de gestion de l’information ne peut vraiment prendre en
charge. En effet, nous procréons environ 2,5 trillions d’octets de données tous les jours. Ce
sont les informations provenant de partout : messages que nous nous envoyons, vidéos que
nous publions, informations climatiques, signaux GPS, enregistrements transactionnels
d’achats en ligne et bien d’autres encore. Ces données sont baptisées Big Data ou volumes
massifs de données. Les géants du Web, au premier rang desquels Yahoo (mais aussi
Facebook et Google), ont été les tous premiers à déployer ce type de technologie.[6]
Cependant, aucune définition précise ou universelle ne peut être donnée au Big Data. Etant un
objet complexe polymorphe, sa définition varie selon les communautés qui s’y intéressent en
tant qu’usager ou fournisseur de services. Une approche transdisciplinaire permet
d’appréhender le comportement des différents acteurs : les concepteurs et fournisseurs
d’outils (les informaticiens), les catégories d’utilisateurs (gestionnaires, responsables
d’entreprises, décideurs politiques, chercheurs), les acteurs de la santé et les usagers.[6]
Le big data ne dérive pas des règles de toutes les technologies, il est aussi un système
technique dual. En effet, il apporte des bénéfices mais peut également générer des
inconvénients. Ainsi, il sert aux spéculateurs sur les marchés financiers, de manière autonome
avec, à la clé, la constitution des bulles hypothétiques.[6]
L’arrivée du Big Data est maintenant présentée par de nombreux articles comme une nouvelle
révolution industrielle semblable à la découverte de la vapeur (début du 19e siècle), de
l’électricité (fin du 19e siècle) et de l’informatique (fin du 20e siècle). D’autres, un peu plus
mesurés, qualifient ce phénomène comme étant la dernière étape de la troisième révolution
industrielle, laquelle est en fait celle de « l’information ». Dans tous les cas, le Big Data est
considéré comme une source de bouleversement profond de la société.[6]
Inventé par les géants du web, le Big Data se présente comme une solution qui facilite l’accès
en temps réel à des bases de données géantes pour tout le monde. Il vise à proposer un choix
aux solutions classiques de bases de données et d’analyse. Selon le Gartner, ce concept
regroupe une famille d’outils qui répondent à une triple problématique dite règle des 3V. Il
15
s’agit notamment d’un volume de données considérable à traiter, une
grande variété d’informations (venant de diverses sources, non-structurées, organisées,
Open…), et un certain niveau de vélocité à atteindre, autrement dit de fréquence de création,
collecte et partage de ces données. [2]
Le Big Data peut être défini par les 3 V et selon les spécialistes on peut ajouter des V à ces 3
premiers. On peut aussi le décrire par six V qui sont le volume, la variété, la vitesse, la valeur,
la véracité et la variabilité [1] :
Volume : Le volume est une composante principale du Big Data et représente principalement
la relation entre la taille et la capacité de traitement. Cette variable évolue rapidement à
mesure que l'accumulation de données se poursuit.
Lorsque nous parlons de données massives, la plupart des gens ne pensent qu'au volume. Mais
il y a aussi cinq autres aspects qui peuvent vous aider à rendre le Big Data utile : Ces aspects
jouent un rôle très important dans l'amélioration des bases de données.
Vitesse: La vitesse est une mesure de la valeur éphémère de l'information. Le Big Data évolue
rapidement. Nous devons donc traiter rapidement les flux de données structurées et non
structurées pour tirer parti des données de géolocalisation, des excès et des tendances perçues,
ainsi que des informations sur le marché et les clients disponibles en temps réel. La vélocité
16
implique la condition que vous devez traiter vos données en quelques minutes ou secondes
pour obtenir les résultats escomptés.
Le flux de données est massif et continu, ce qui est d'une grande valeur pour les chercheurs et
les entreprises pour la prise de décision concernant les avantages concurrentiels. Pour traiter
les données à grande vitesse, des outils de traitement des données appelés "analyse continue"
ont été mis en place. L'échantillonnage des données facilite le tri entre les problèmes de
volume et de vitesse. [1]
Variété : Le V de variété décrit la grande variété d'informations contenues qui doivent encore
être traitées et analysées. De nouveaux types de données provenant de réseaux sociaux et
d'appareils connectés, entre autres, complètent les types d'informations structurés existants.
Par exemple: fichiers audio et vidéo, photos, données GPS
Ce V fait référence à des données provenant de différentes sources et types, qui peuvent être
structurées ou non structurées. Les données non structurées telles que la voix et les médias
sociaux créent des problèmes de stockage, d'exploration de données et d'analyse de données.
Avec la croissance des données, même le type de données a augmenté rapidement
En bref, la véracité fait référence aux biais, au bruit et aux anomalies dans les données. C'est
là que nous devons être en mesure d'identifier la pertinence des données et de nous assurer
qu'elles sont nettoyées de manière à ce que seules les données utiles soient stockées.
En gros, quand on parle de big data, cela ne comprend pas seulement l’énorme quantité
d'informations qui constituent des trésors de connaissances. Il comprend aussi le travail
d'analyse de ces données, la manière dont on sélectionne le trésor. Dans le monde du big data,
17
les données et l'analyse sont liées : l'une sans l'autre est insensée, mais leur puissance
combinée est sans limite. [1]
Valeurs : Ce V décrit la valeur qui peut être obtenue à partir des données .Et comment le big
data est plus performant que les données stockées, la valeur fait référence à l'objectif, au
scénario ou au résultat commercial que la solution analytique doit prendre en compte. [1]
Depuis les années 70, la base de données relationnelle était l'incontournable référence pour
gérer les données d'un système d'information. Toutefois, face aux 3V (Volume, Velocity,
Variety), le relationnel peut difficilement lutter contre cette vague de données. Le NoSQL
s'est naturellement imposé dans ce contexte en proposant une nouvelle façon de gérer les
données, sans reposer sur le paradigme relationnel, d'où le "Not Only SQL". Cette approche
propose de relâcher certaines contraintes lourdes du relationnel pour favoriser la distribution
(structure des données, langage d'interrogation ou la cohérence). [4]
Dans un contexte bases de données, il est préférable d'avoir un langage de haut niveau pour
interroger les données plutôt que tout exprimer en Map/Reduce. Toutefois, avoir un langage
de trop haut niveau comme SQL ne facilite pas la manipulation. Et c'est en ce sens que l'on
peut parler de "Not Only SQL", d'autres solutions peuvent être proposées pour résoudre le
problème de distribution. Ainsi, le NoSQL est à la fois une autre manière d'interroger les
données, mais aussi de les stocker. [4]
Les besoins de stockage et de manipulation dans le cadre d'une base de données sont variables
et dépendent principalement de l'application que vous souhaitez intégrer. Pour cela,
différentes familles de bases NoSQL existent : Clé/Valeur, colonnes, documents, graphes.
Chacune de ces familles répond à des besoins très spécifiques que nous allons développer par
la suite. [4]
18
Le fait d'avoir n'importe quoi implique qu'il n'y ait ni schéma, ni structure pour le stockage.
D'un point de vue de bases de données, il n'y a pas la possibilité d'exploiter ni de contrôler la
structure des données et de fait, pas de langage (SQL = Structured Query Language). En soit
ce n'est pas un problème si vous savez ce que vous cherchez (la clé) et que vous manipulez
directement la valeur. [4]
Et Il ne s'agit pas d'un modèle NoSQL, mais de plusieurs familles NoSQL qui se sont
développées en parallèle et qui répondent à des besoins différents.
Le principal avantage de ces nouvelles familles de bases de données est qu'elles contournent
les limites du modèle relationnel qui sont contraignantes dans le contexte des systèmes Web
distribués à grande échelle (hautes performances, résistance au passage à l'échelle, entre
autres). Elles ne sont cependant pas exemptes de limites, par exemple en raison de leur
relative jeunesse et du développement parallèle de plusieurs familles. [11]
19
Avantage Désavantage
Faible coût relatif Jeunesse
Et maintenant la question qui se pose avec quoi travaille les professionnelles du Big Data ?
I.II.1- HADOOP
C’est une solution open source créée par Apache qui permet de traiter de très larges volumes
de données grâce à un fonctionnement déporté sur serveur. Hadoop utilise un système de
fichiers distribué permettant une vitesse de traitement très importante grâce à des transferts
élevés entre les noeuds d’un serveur. Ainsi, même si l’un d’entre eux est défaillant, Hadoop
peut continuer à travailler sans interruption. C’est un outil utilisé par les plus grandes
entreprises de la technologie, comme Google ou Yahoo, pour gérer les données, la recherche
et le marketing programmatique, entre autres exemples. [3]
I.II.2- CASSANDRA
Apache Cassandra est une technologie de gestion des bases de données distribuée NoSQL qui
a la particularité d’être toujours disponible et très flexible en terme d’adaptabilité et de
scalabilité. Cassandra est utilisée par des grandes entreprises comme Facebook, Netflix,
Twitter, Cisco ou eBay en raison de sa très haute vélocité déployable sur de multiples
serveurs.
Elle peut prendre en charge différents types de données, qu’elles soient structurées, non
20
structurées ou semi-structurées, et gère particulièrement bien les changements dynamiques
pour s’adapter aux évolutions des besoins. [3]
I.II.3- STORM
Storm est une autre solution open source qui permet de traiter des calculs complexes en temps
réel. Technologie particulièrement résiliente et tolérante aux pannes, Storm peut monter en
charge dynamiquement en ajoutant des serveurs selon les besoins. C’est une solution
relativement simple à déployer qui s’intègre bien avec toutes les autres briques existantes
capables de traiter des données. Storm est distribué et développé par l’Apache Software
Foundation. [3]
I.II.4- OPENREFINE
Initialement baptisé Freebase Gridworks avant d’être achetée par Google en 2010 (puis
abandonnée en 2012), c’est une solution désormais open source conçue pour travailler avec
des données non structurées et désorganisées. OpenRefine (ou GoogleRefine selon la
terminologie historique que l’on trouve encore en ligne) a la particularité d’être simple
d’utilisation et ne nécessite pas de compétences techniques poussées. Quelques clics suffisent
pour transformer un jeu de données brutes en données exploitables, pertinentes et uniques. [3]
I.II.5- RAPIDMINER
Rapidminer est une technologie et un environnement de travail qui fournit tous les outils pour
analyser et préparer des données non structurées. À travers une interface soignée, Rapidminer
est utilisé pour des projets de machine learning, deep learning, text mining et d’analyses
prédictives. Un outil régulièrement cité par Gartner et Forrester comme l’un des plus
puissants en termes de traitement et d’analyse des données. On n’utilise pas un outil unique de
traitement des données comme on utilise Word ou Excel. Chaque solution ou technologie
dépend de l’infrastructure matérielle en place et des missions. Entre la collecte, le traitement,
le nettoyage, la clusterisation, l’analyse en temps réel et le machine learning, il existe
plusieurs outils spécifiques qui peuvent s’intégrer ensemble afin de couvrir tous les besoins
des Data Analysts et des Data Scientists. [3]
21
I.II.6- MongoDB :
MongoDB (de l'anglais humongous qui peut être traduit par "énorme") est un système de
gestion de base de données orienté document qui peut être distribué sur un nombre
quelconque d'ordinateurs et ne nécessite pas de schéma de données prédéfini. Il est écrit en C
++.Le serveur et les outils sont distribués sous la licence SSPL, les pilotes sous la licence
Apache et la documentation sous la licence Creative Commons. Il fait partie du mouvement
NoSQL. [3]
Conclusion
Alors que les données deviennent de plus en plus volumineuses et complexes, nos bases de
données traditionnelles sont limitées lorsqu'il s'agit d'analyser et de traiter ces données. Dans
un souci de gain de temps, les nouvelles technologies sont venues soulager les entreprises qui
génèrent beaucoup de données. L'analyse des Big Data est sans aucun doute vouée à prendre
de l'importance, certains parlent même de révolution.
22
Chapitre 2 : Analyse de données et l’apprentissage
automatique
Introduction
L'apprentissage automatique peut être défini comme une technologie d'intelligence artificielle
qui permet aux machines d'apprendre sans avoir été programmées. L'apprentissage
automatique est explicitement lié au Big Data, car pour apprendre et se développer, les
ordinateurs ont besoin de flux de données à analyser et sur lesquels s'entraîner dans ce
chapitre on va voir les algorithmes d’analyse de données et les algorithmes d’apprentissages
automatique dit Machine Learning.
Pour tirer profit de l'analyse des données, il est important de connaître les algorithmes à
utiliser.
Le Big Data peut être extrêmement utile aux entreprises. De nos jours, la majorité des
organisations internationales s'appuient sur l'analyse des données pour orienter les décisions
visant à stimuler la croissance, à augmenter les revenus ou à découvrir de nouvelles
opportunités. [9]
Toutefois, de nombreuses entreprises qui souhaitent à leur tour exploiter le Big Data ne savent
pas par où commencer. Si tel est le cas, alors qu’est ce que l’analyse de données en big data
Grâce aux technologies numériques, les entreprises ont désormais accès à de vastes volumes
de données. La compréhension et l'analyse de ces informations constituent un atout précieux.
L'analyse des données est utilisée par les entreprises pour prendre de meilleures décisions
grâce à la Business Intelligence. Elle peut être utilisée pour des études de marché, le
23
développement de produits, le positionnement sur le marché, ou pour examiner les opinions et
les sentiments des clients. [7]
D'une manière générale, elle permet de faire des choix sur la base d'éléments concrets plutôt
que de se fonder sur une intuition ou un autre facteur abstrait. En se tournant vers l'analyse
des données, les entreprises deviennent "pilotées par les données". Voici les 5 algorithmes de
Big Data les plus utilisés. [7]
Le premier ensemble est appelé "prédicteur" ou "variable indépendante". Le second est appelé
"réponse" ou "variable dépendante". L'objectif de la régression linéaire est d'identifier la
relation entre ces deux ensembles sous la forme d'une formule. Une fois la relation quantifiée,
la variable dépendante peut être prédite pour toute instance de la variable indépendante. [1]
24
Ainsi, le résultat d'une régression logistique est une valeur comprise entre 0 et 1. Plus le
résultat est proche de 1, plus la variable appartient à la catégorie. Au contraire, un résultat
proche de 0 indique une probabilité que la variable n'entre pas dans la catégorie. [1]
Bien évidemment, les arbres de classification peuvent rapidement devenir très grands et
complexes. Une façon de contrôler cette complexité est de supprimer certaines questions. Une
variante des arbres de classification et de régression est celle des forêts aléatoires. Elle
consiste à créer une collection de petits arbres simples plutôt qu'un seul arbre avec de
nombreuses branches. Chacun de ces petits arbres évalue une partie des données, puis les
résultats sont assemblés pour créer une prédiction finale. [1]
25
II.II.4- La méthode des K plus proche voisin
La méthode des k plus proches voisins est également un algorithme de classification. Tout
d'abord, nous utilisons un ensemble de données pour entraîner l'algorithme. Ensuite, la
distance entre les données d'entraînement et les nouvelles données est évaluée pour
catégoriser les nouvelles données. [1]
Le partitionnement en K-moyennes est une méthode qui consiste à créer des groupes
d’attributs relatifs. Ces groupes sont appelés partitions. Une fois qu’ils sont créés, les autres
instances peuvent être évaluées par rapport à eux afin de déterminer quelle catégorie leur
correspond le mieux. Cette technique est souvent utilisée dans le cadre de l’exploration de
données. Les analystes définissent d’abord le nombre de partitions, puis les données sont
réparties en fonction de leurs similitudes. Les partitions diffèrent des catégories, car il s’agit
seulement d’instances liées de variables entrantes. Une fois identifiées et analysées, les
partitions peuvent toutefois être converties en catégories. Cette méthode est souvent utilisée
pour sa simplicité et sa vitesse.
26
Figure 7 : Partition en k moyenne
Si la machine learning n'est pas nouveau, sa définition précise reste confuse pour de
nombreuses personnes. Plus concrètement, il s'agit d'une science moderne permettant de
découvrir des modèles et de faire des prédictions à partir de données en se basant sur les
statistiques, l'exploration de données, la reconnaissance de modèles et les analyses
prédictives. Les premiers algorithmes ont été créés à la fin des années 1950. Le plus connu
d'entre eux n'est autre que le Perceptron. [9]
Le Machine Learning est très efficace dans les situations où des informations doivent être découvertes
à partir de grands ensembles de données diverses et changeantes, c'est-à-dire le Big Data. Pour
analyser de telles données, il est beaucoup plus efficace que les méthodes traditionnelles en termes
de précision et de rapidité. Par exemple, sur la base des informations associées à une
transaction, telles que le montant et le lieu, et des données historiques et sociales,
l'apprentissage automatique peut détecter une fraude potentielle en une milliseconde. Ainsi,
cette méthode est nettement plus efficace que les méthodes traditionnelles d'analyse des
données transactionnelles .[1]
27
Le Machine Learning peut être défini comme une branche de l'intelligence artificielle
regroupant de nombreuses méthodes de création automatique de modèles à partir de données.
Ces méthodes sont en fait des algorithmes. Un programme informatique traditionnel exécute
une tâche en suivant des instructions spécifiques, et donc toujours de la même manière. Au
contraire, un système d'apprentissage automatique ne suit pas d'instructions, mais apprend par
l'expérience. Par conséquent, ses performances s'améliorent au cours de sa "formation", à
mesure que l'algorithme est exposé à davantage de données. [1]
Il existe différents types d'algorithmes de machine Learning. En général, ils peuvent être
divisés en deux catégories : supervisés et non supervisés. [12]
Il doit faire émerger automatiquement les catégories à associer aux données qui lui sont
soumises afin de reconnaître qu'un chat est un chat, une voiture, une voiture, comme les
animaux et les humains sont capables de le faire. Le problème d'apprentissage non supervisé
le plus courant est la segmentation (ou clustering) où l'on cherche à séparer les données en
groupes (catégorie, classe, cluster...) : regroupement d'images de voitures, de chats, etc. On
fonde beaucoup d'espoir sur la détection d'anomalies pour la maintenance prédictive, la
cybersécurité, mais aussi la détection précoce de maladies, etc. En général, l'algorithme
cherche à maximiser d'une part l'homogénéité des données au sein des groupes de données et
à former des groupes aussi distincts que possible : selon le contexte, on choisit d'utiliser un
algorithme particulier pour classer les données par exemple en fonction de leur densité ou de
leur gradient de densité. Dans le cas de la détection d'anomalies, c'est plutôt le caractère
extrême ou atypique des valeurs ou d'un motif dans les données qui est recherché. La
métrique sous-jacente joue un rôle clé pour déterminer ce qui est la norme et ce qui s'en
écarte. [12]
28
ces données. A la fin de l'apprentissage, le modèle ainsi entraîné sera capable de trouver les
mêmes éléments sur des données non étiquetées. Parmi les algorithmes supervisés, on
distingue les algorithmes de classification et les algorithmes de régression. En fonction du
problème à résoudre, l'un de ces deux archétypes sera utilisé. Par exemple le SVM (support
Vector machine) et le Naive Bayes [12]
29
indépendantes de la probabilité que le légume soit une tomate, indépendamment des
corrélations entre les caractéristiques. Cependant, les caractéristiques ne sont pas toujours
indépendantes, ce qui est souvent considéré comme un inconvénient de l'algorithme de Bayes
naïf et explique pourquoi il est appelé "naïf".[12]
Bien qu'il s'agisse d'un concept relativement simple, Naive Bayes peut souvent surpasser les
algorithmes les plus complexes et est extrêmement utile dans des applications courantes telles
que la détection des spams et la classification des documents. [12]
Fondamentalement, l'algorithme nous permet de prédire une classe, étant donné un ensemble
de caractéristiques, en utilisant des probabilités. Ainsi, dans un autre exemple de légume, nous
pourrions prédire si un légume est une tomate, une carotte ou une asperge en fonction de sa
couleur, de sa forme et d'autres caractéristiques. [12]
Le code principal de H2O est écrit en Java. À l'intérieur de H2O, un magasin de clé/ valeur
distribué, permet d'accéder et de référencer des données, des modèles, des objets, etc., sur tous
les nœuds et toutes les machines. Les algorithmes sont implémentés au-dessus du cadre
distribué Map / Reduce de H2O et utilisent le cadre Java Fork / Join pour le multi threads. Les
données sont extraites en parallèle, distribuées sur le cluster et stockées en mémoire sous
forme de colonnes de manière compressée. L'analyseur de données de H2O est doté d'une
30
intelligence intégrée qui lui permet de deviner le schéma de l'ensemble de données entrant et
prend en charge l'acquisition de données provenant de plusieurs sources dans différents
formats.
MLlib a été conçu pour une utilisation très simple des algorithmes en les appelants sur des
RDDs dans un format spécifique, quel que soit l'algorithme choisi. L'architecture se rapproche
ainsi de ce que l'on trouve dans la bibliothèque scikit-learn de Python, même s'il existe encore
quelques différences notables qui seront supprimées dans les futures versions de l'API. Les
algorithmes présents dans MLlib sont, comme le reste du framework, développés en Scala, en
s'appuyant principalement sur le package d'algèbre linéaire Breeze pour l'implémentation des
algorithmes. En outre, pour exécuter MLlib, il est nécessaire d'installer gfortran, ainsi que
Numpy si vous utilisez l'API Python. [13]
II.III.2.3.3- Weka
Weka (Waikato Environment for Knowledge Analysis) est un logiciel d'apprentissage
automatique open source éprouvé auquel on peut accéder via une interface utilisateur
graphique, des applications de terminal standard ou une API Java. Il est largement utilisé pour
l'enseignement, la recherche et les applications industrielles. Il contient une pléthore d'outils
intégrés pour les tâches d'apprentissage automatique standard et offre en outre un accès
transparent à des boîtes à outils bien connues telles que scikit-learn, R et Deeplearning4j.
Weka est un ensemble d'outils pour manipuler etd'analyser des fichiers de données, mettant en
œuvre la plupart des algorithmes d'intelligence artificielle, entreautres, les arbres de décision
et les réseaux neuronaux.
Il se constitue principalement de :
31
• Des classes pour les principaux algorithmes de classification supervisée et non
supervisée.
• D'outils de sélection d'attributs, de statistiques sur ces attributs.
• De classes permettant de visualiser les résultats.
- Via l'interface graphique, pour charger un fichier de données, lui appliquer un algorithme,
vérifier son efficacité.
- Utiliser les classes définies dans vos propres programmes pour créer d'autres méthodes,
implémenter d'autres algorithmes, comparer ou combiner plusieurs méthodes.
MOA peut être étendu avec de nouveaux algorithmes d'extraction, de nouveaux générateurs
de flux ou de nouvelles mesures d'évaluation. L'objectif est de fournir une suite de référence
pour la communauté de l'exploration de flux.
32
algorithmes d'extraction de flux ; cadre source ouvert facilement extensible pour les flux de
données, les algorithmes et les mesures d'évaluation.
SAMOA est un cadre qui s'exécute au-dessus de plateformes distribuées de calcul en continu,
telles que Storm et S4. Ainsi, la SAMOA hérite de l'évolutivité de la plateforme sous-jacente.
Il utilise le paradigme du streaming ML et contient une collection d'algorithmes de streaming
ML. Elle est donc adaptée à l'analyse en temps réel. il découple aussi les algorithmes ML des
33
plateformes sous-jacentes de calcul distribué en continu, ce qui signifie que nous pouvons
facilement déployer la SAMOA sur différentes plateformes. [15]
En d'autres termes, SAMOA a le paradigme "écrire une fois, déployer partout", c'est-à-dire
que nous n'avons besoin d'écrire les algorithmes ML qu'une seule fois en utilisant l'API
SAMOA et nous pouvons facilement déployer les algorithmes dans différents types de cluster
[15]
Conclusion
On connaît maintenant les algorithmes de Big Data les plus utilisés. Chacun de ces
algorithmes a ses avantages et ses inconvénients, et il est important de choisir le plus adapté à
chaque situation.
34
CHAPITRE 3 : étude comparative de l’algorithme k-means classique vs
k-means basé spark
Introduction
De nos jours, une grande quantité de données est produite par différents utilisateurs dans le
monde. Ces données sont sous différents formats et la plupart d'entre elles sont non
structurées. En plus, la venue de nombreuses nouvelles technologies apporte des volumes
beaucoup plus importants de données complexes qui comprennent les données des médias
sociaux, les données des machines et les données des systèmes. Ainsi, comment les traiter et
analyser .
les données croissantes devient un défi pour de nombreuses entreprises. Pour traiter ce
problème, l'informatique distribuée est proposée et devient la méthode la plus efficace et la
plus tolérante aux pannes pour les entreprises afin de sauvegarder et de traiter les données
massives.
Parmi ce nouveau groupe, Hadoop et Spark sont les outils de calcul en grappe les plus
couramment utilisés. Avant de faire l’etude comparative entre k-means classic et k-means
basé spark nous allons faire un passage pour comprendre le fonctionnement des système
mapreduce et spark .
35
III.I.2- Hadoop Distributed File System (HDFS)
HDFS est un projet Java utilisé pour stocker de très gros volumes de données, structurées ou
non, sur un cluster. Comme d'autres technologies liées à Hadoop, HDFS est devenu un outil
clé pour la gestion des pools de Big Data et le support des applications analytiques. HDFS est
conçu pour assurer la sécurité des données en répliquant plusieurs fois les données écrites sur
le cluster, cela signifie que les données sont pipelinées entre différents DataNodes
(LeMagIT/TechTarget, 2014).
HDFS facilite le travail en mode parallèle, c'est-à-dire que lorsqu'on exécute une requête, par
exemple, chaque nœud l'exécutera avec ses données disponibles. Le NameNode est l'arbitre et
le dépositaire de toutes les métadonnées HDFS. Les demandes de lecture et d'écriture du
client HDFS sont sous la responsabilité des DataNodes, en plus de celles-ci, ils effectuent la
création, la suppression et la réplication des blocs, selon les instructions du NameNode. [16]
36
III.1.3- Système map/reduce :
La fonction Map() envoie à chaque mot le nombre d'occurrences trouvées, puis la fonction
Reduce() additionne tous les comptages émis pour un mot particulier[1]
37
Lorsqu'un programme MapReduce est exécuté avec Hadoop, la tâche est envoyée au nœud
maître qui est le JobTracker. Il est unique sur le cluster, le JobTracker reçoit les tâches
Map/Reduce et organise leur exécution sur le cluster. Le TaskTracker, multiple sur le cluster,
exécute lui-même la tâche Map/Reduce (sous la forme des fonctions Map() et Reduce()
associées aux données d'entrée), chacun des TaskTrackers est une unité de calcul dans le
cluster. Le JobTracker est en communication avec HDFS, sait où sont stockées les données
d'entrée pour exécuter les programmes Map/Reduce, et il sait où sont stockées les données de
sortie. Ainsi, pour exécuter un programme Map/Reduce, nous devons écrire les données
d'entrée dans le HDFS, soumettre le programme aux JobTrackers, et récupérer les données de
sortie du HDFS. [1]
38
III.1.3.1-Comment fonctionne Map/Reduce?
D'après la figure, nous pouvons constater que le travail MapReduce contient deux tâches
latérales qui sont les tâches map et les tâches reduce. et chacune d'entre elles comprend
plusieurs étapes. ensuite, nous allons expliquer chaque étape pour présenter le fonctionnement
du framework.
Pour les tâches map , il y a cinq étapes : division de l'entrée, fonction map, construction,
déversement et fusion.
Avant d'effectuer les tâches map , les données d'entrée seront divisées en plusieurs morceaux
et chacun d'eux sera associé à une tâche map.Les fractionnements d'entrée ne sont pas utilisés
pour stocker les données.
Au contraire, il s'agit d'un tableau qui enregistre la longueur de la tranche et la position des
données. La tranche d'entrée est souvent étroitement liée au bloc du HDFS et la valeur par
défaut est 128MB.
Après avoir reçu les données d'entrée, MapReduce les traitera en fonction de la fonction Map,
et la sortie sera sauvegardée sur un tampon de mémoire temporairement. Une fois que le
tampon a atteint le seuil, il se déverse dans un nouveau fichier et les données du tampon sont
écrites dans ce fichier. En plus, avant d'écrire le fichier sur le disque, MapReduce divise les
39
données en différentes partitions basées sur le nombre de tâches de réduction pour s'assurer
que chaque tâche de réduction correspond à une partition. Lorsque la fonction map se termine,
de nombreux fichiers de déversement sont enregistrés sur les systèmes de fichiers locaux.
MapReduce va donc fusionner ces fichiers. De plus, le tri et la combinaison seront effectués
pendant le processus de fusion visant à minimiser la quantité de données réécrites dans HDFS
à chaque fois ainsi que de réduire la quantité de données transmises à la phase suivante à
travers l'internet. [17]
La dernière étape de la tâche map consiste à copier les données des différentes partitions vers
les tâches de réduction correspondantes. Cette étape représente le processus de transfert de la
sortie des tâches map vers les tâches de réduction. [17]
Pour les tâches de reduce, il y a trois étapes au cours du processus qui sont la fusion, la
fonction de reduce et la sortie puisque les tâches de réduction recevront différents résultats
des tâches map et que tous les fichiers sont dans l'ordre il enregistrera ces fichiers en fonction
de leur taille. Si les sont petites, les tâches de reduce les mettront en mémoire cache pour un
traitement ultérieur, tandis qu'elles les fusionneront et les déverseront dans le système de
fichiers local si leur taille est importante. lorsque le nombre de fichiers de déversement
augmente, MapReduce les fusionne et les utilise comme données d'entrée pour la fonction de
réduction. Ensuite, une fois la fonction de réduction terminée, les fichiers de sortie seront
sauvegardés sur HDFS. [17]
Bien que MapReduce soit attrayant pour les utilisateurs en raison de sa simplicité et de sa
convivialité, le framework a encore quelques limitations en MapReduce, chaque tâche doit
lire les données d'entrée, les traiter et écrire les résultats dans le HDFS, il doit répéter le cycle
de nombreuses fois lorsque la nouvelle tâche exige les résultats de la tâche précédente. Ainsi,
l'efficacité des tâches MapReduce est faible et beaucoup de ressources sont gaspillées au
cours du processus lors du le traitement des tâches itératives. Pour surmonter les limites de
MapReduce, Spark est proposé. [17]
40
III.II- Apache spark
Apache Spark est un moteur de traitement rapide des données dédié au big data. Il permet de
traiter de grands volumes de données de manière distribuée (cluster computing). Très
populaire depuis quelques années, ce framework est en passe de remplacer Hadoop. Ses
principaux avantages sont sa rapidité, sa facilité d'utilisation et sa polyvalence. Il s'agit d'un
moteur de traitement de données parallèle open source permettant d'effectuer des analyses à
grande échelle grâce à des machines en cluster. Il ne doit pas être confondu avec le logiciel de
messagerie de Cisco, disponible sous Windows, Spark, ni avec le réseau social d'Amazon.
Codé en Scala, Spark permet notamment de traiter des données provenant de référentiels de
données tels que Hadoop Distributed File System, des bases de données NoSQL, ou des
magasins de données relationnelles tels que Apache Hive. Ce moteur supporte également le
traitement en mémoire, ce qui permet d'augmenter les performances des applications
analytiques de big data. Il peut également être utilisé pour le traitement classique sur disque,
si les ensembles de données sont trop volumineux pour la mémoire du système. [1]
• Vitesse : Apache spark est très rapide en mémoire, il stocke les données d'entrée, les données
de sortie et les données intermédiaires en mémoire sous forme d'ensembles de données
distribuées résilientes (RDD). Spark est également plus rapide lorsque les données sont
stockées sur disque, il détient le record du monde de tri sur disque à grande échelle. [18]
41
• Prise en charge de plusieurs langages : Apache Spark écrit rapidement des applications en
Java, Scala, Python ou R. Il peut donc créer des applications dans différents langages. Spark
est doté de 80 opérateurs de haut niveau pour les requêtes interactives. [18]
• Analyses avancées : Spark est livré emballé avec des bibliothèques de plus haut niveau,
notamment la prise en charge des requêtes SQL, de l'apprentissage automatique (MLlib), du
traitement des flux (Spark Streaming) et du traitement des graphes (GraphX). Ces
bibliothèques sont étroitement intégrées à l'écosystème Apache Spark et peuvent être
combinées de manière transparente pour créer des flux de travail complexes. [18]
• L'intégration partout : Spark fonctionne partout. Il est conçu pour fonctionner sur différentes
plateformes et de multiples systèmes distribués. Apache Spark fonctionne sur Hadoop,
Apache Mesos, de manière autonome ou dans le nuage. Il peut accéder à diverses sources de
données, notamment HDFS, Cassandra, HBase et S3. Les programmeurs peuvent lancer
Spark et utiliser leurs sources de données pour une meilleure utilisation. [18]
• Apache Spark Core : est le moteur d'exécution général de la plateforme Spark, sur lequel
reposent toutes les autres fonctionnalités. Spark Core est responsable des fonctionnalités d'E/S
de base, de la programmation et de la surveillance des travaux sur les clusters Spark, de la
répartition des tâches, de la mise en réseau avec différents systèmes de stockage, de la reprise
sur panne et de la gestion efficace de la mémoire. Il est fourni avec des API pour une variété
de langages couramment utilisés : R, SQL, Python, Scala et Java.
• Spark SQL : est un module pour le traitement des données structurées. Il fournit une
abstraction de programmation appelée Data Frames et peut également faire office de moteur
de requête SQL distribué. Les développeurs Spark peuvent exécuter des requêtes de type SQL
sur les données Spark
• Spark Streaming : permet un traitement de flux évolutif, à haut débit et tolérant aux pannes,
tout en héritant de la facilité d'utilisation de Spark. Pour traiter les données en temps réel,
Spark Streaming utilise un flux continu de données d'entrée.
42
• MLlib (Machine Learning Library) : fonctionnant au-dessus de Spark, MLlib contient des
algorithmes et des utilitaires d'apprentissage courants, notamment la classification, la
régression, le regroupement, etc.
• GraphX : est un nouveau composant dans un Spark pour les graphes et le calcul parallèle de
graphes. GraphX est livré avec une bibliothèque complète d'algorithmes courants.
Il y a deux termes importants proposés par Spark : RDD et DAG. Ces deux termes
fonctionnent parfaitement ensemble et accélèrent Spark 10 fois plus vite qu'Hadoop dans
certaines circonstances.
III.II.2.1.1-Transformation :
III.II.2.1.2-Action :
L'opération d'action lancera les travaux Spark et renverra les résultats au programme pilote
après la fin du processus de calcul. Elle sera déclenchée lorsque l'utilisateur aura besoin de
renvoyer les résultats du calcul au programme pilote ou d'écrire le résultat dans un système
externe. Lorsque l'opération d'action se produit le planificateur du DAG sera déclenché pour
43
diviser le DAG en différentes étapes. Ensuite, une fois le processus terminé, le planificateur
des tâches est appelé pour distribuer la tâche aux différents exécutants. L'opération d'action
comprend count, collect and reduce.
Spark fournit un planificateur DAG avancé pour exprimer les dépendances des RDDs.
Chaque tâche Spark créera un DAG et le planificateur plongera le graphe en différentes étapes
de tâches. Ensuite, les tâches seront lancées sur le cluster. Le DAG sera créé à la fois dans les
étapes map et de reduce pour exprimer pleinement les dépendances. De plus, ce paramètre
permet au travail simple de se terminer en une seule étape, tandis que la tâche complexe se
termine en plusieurs étapes, sans être divisée en plusieurs tâches. C'est l'une des raisons pour
lesquelles Spark est plus rapide qu'Hadoop.
Cette figure illustre le flux de travail de Spark. La figure montre que le travail Spark lancera
un programme pilote correspondant lorsque l'utilisateur soumet un travail Spark par la
commande spark-submit. En fonction du mode de déploiement, le programme du pilote peut
être lancé localement ou sur un nœud de travail du cluster. En outre, le processus du pilote
prendra certaines ressources basées sur les paramètres pour contrôler tous les travaux. La
première tâche que le programme pilote doit effectuer est d'appliquer la ressource qui est
44
représentée par le processus exécuteur depuis le gestionnaire. Les utilisateurs ont le choix
entre plusieurs gestionnaires de ressources : autonome, Yarn et Mesos. Ensuite, le
gestionnaire de ressources lance plusieurs exécuteurs sur les nœuds de travail en fonction des
paramètres de l'utilisateur et chacun d'eux possède un certain nombre de cœurs de CPU et de
mémoire. [18]
Il y a trois niveaux de persistance fournis par Spark : MEMORY ONLY, DISK ONLY and
MEMORY AND DISK. En définissant différents niveaux de stratégies de persistance, les
résultats des différentes tâches peuvent être sauvegardés sur la mémoire de l'exécuteur ou sur
le système local. La mémoire de l'exécuteur contient trois parties : l'une est utilisée pour les
tâches d'exécution de qui prend 20% de la mémoire totale par défaut. La deuxième partie est
utilisée par les tâches pour extraire la sortie de l'étape précédente par le processus de brassage
45
et l'utiliser pour l'agrégation et d'autres opérations. Les paramètres par défaut de la deuxième
partie occupent également 20 % de la mémoire totale. de la mémoire totale. La troisième
partie est utilisée pour la mise en cache des RDD dans la mémoire qui prend 60% de la
mémoire totale sur la base des paramètres par défaut
Le clustering K-means est l'un des algorithmes d'apprentissage automatique non supervisé les
plus faciles à comprendre et à utiliser. Aujourd'hui, cet algorithme est l'un des plus utilisés.
Habituellement, les algorithmes non supervisés font des déductions à partir d'ensembles de
données en utilisant uniquement les vecteurs d'entrée sans se référer à des résultats connus ou
étiquetés. K-means est une technique de classification par apprentissage automatique utilisée
pour simplifier les grands ensembles de données en ensembles de données simples et plus
petits. Des modèles distincts sont évalués et les ensembles de données similaires sont
regroupés. La variable K représente le nombre de groupes dans les données, nous allons citer
46
les avantages et les inconvénients de l'algorithme de classification K-means afin d’évaluer les
avantages de l'utilisation de cette technique de classification. [19]
III.III.1- Avantages :
• Simple : Il est facile d’implémenter k-means et d’identifier des groupes de données inconnus à
partir d’ensembles de données complexes. Les résultats sont présentés de manière rapide.
• Flexible : L’algorithme K-means s’adapte aux divers changements de vos données. En cas de
souci, l’ajustement du segment de cluster permettra d’apporter rapidement des modifications
nécessaires à l’algorithme.
• Convient aux gros data set : K-means convient à un grand nombre d’ensembles de données et
est calculé beaucoup plus rapidement que le plus petit. Il peut également produire des clusters
plus élevées.
• Efficace : L’algorithme utilisé permet de partitionner les gros de datasets. Son efficacité est
fonction de la forme des clusters. Les K-Means fonctionnent bien dans les clusters hyper-
sphériques.
• Complexité temporelle : La classification K-Means est linéaire en nombre d'objets de
données, ce qui augmente le temps d'exécution. Il n'est pas plus long de classer des
caractéristiques similaires dans les données comme les algorithmes hiérarchiques.
• Clusters proches : Comparées aux algorithmes hiérarchiques, les k-Means produisent des
clusters plus serrées, en particulier avec les clusters globulaires.
• Facile à interprété : Les résultats sont très faciles à interpréter. K-Means génère des
descriptions de cluster sous une forme minimisée pour maximiser la compréhension des
données.
• Faible cout de calcule : Comparée à l’utilisation d’autres méthodes de classification, une
technique de classification k-means est rapide et efficace en termes de coût de calcul.
• Précision : L'analyse K-means améliore la précision de la classification et permet de s'assurer
que des informations sur une zone problématique particulière sont disponibles. La
modification de l'algorithme k-means en fonction de ces informations améliore la précision
des clusters.
• Cluster sphérique : Ce mode de regroupement fonctionne très bien lorsqu’il s’agit de clusters
sphériques. Il fonctionne avec une hypothèse de distributions conjointes de caractéristiques
47
puisque chaque cluster est sphérique. Toutes les caractéristiques ou tous les caractères des
clusters ont la même variance et sont indépendants les uns des autres.
III.III.2- Inconvénients :
• Manque de cohérence : Le clustering K-means donne des résultats variables sur différentes
exécutions d’un algorithme. Un choix aléatoire de modèles de clusters produit différents
résultats, ce qui entraîne une incohérence.
• Effet uniforme : Il produit un cluster de taille uniforme même lorsque les données d’entrée ont
des tailles différentes.
• Ordres des valeurs : La façon dont les données sont ordonnées lors de la construction de
l’algorithme affecte les résultats de l’ensemble de données.
• Limitations des calculs : Lorsqu’il s’agit d’un grand ensemble de données, l’application d’une
technique de dendrogramme fera planter l’ordinateur en raison de la charge de calcul et des
limites de mémoire dynamique.
• Traiter les donnes numériques : l’algorithme K-means ne peut être exécuté que dans des
données numériques.
• Fonctionne sous certaines conditions : La technique de groupement K-means suppose que
nous traitons avec des clusters sphériques et que chaque cluster a des nombres égaux pour les
observations. Les hypothèses sphériques doivent être satisfaites. L’algorithme ne peut pas
fonctionner avec des clusters de taille inhabituelle.
• Spécifiez les valeur de k : pour que la classification par K-moyennes soit efficace, vous devez
spécifier le nombre de clusters (K) au début de l’algorithme.
• Problème de prédiction : Il est difficile de prévoir les valeurs k ou le nombre de clusters . Il
est également difficile de comparer la qualité des clusters produites.
48
Chapitre 4 : réalisation et implémentation
Introduction :
Il est également apprécié par certains pédagogues qui y trouvent un langage où la syntaxe,
clairement séparée des mécanismes de bas niveau, permet une initiation aisée aux concepts de
base de la programmation. [20]
49
Figure 15 : Le langage python
IV.1.2-pycharm :
Un environnement de développement intégré pour le langage de programmation Python de la
société JetBrains basée en République tchèque. PyCharm fonctionne sous Windows, Mac et
Linux et est publié à la fois sous forme de logiciel libre et de logiciel propriétaire payant.
50
IV.4.1- pseudo code:
L'algorithme classique des k-means fonctionne comme un processus itératif dans lequel, à
chaque itération, il calcule la distance entre les points de données et les centroïdes, qui sont
initialisés de manière aléatoire au début de l'algorithme. La conception d’un tel algorithme
comme un workflow MapReduce nécessite les étapes suivantes [22] :
Une seule étape de MapReduce correspond à peu près à une seule itération de l’algorithme
classique comme dans l’algorithme classique de la première étape les centres de gravité sont
échantillionnés au hasard à partir de l’ensemble des points de données. La fonction Map prend
en entrée un point de données et la liste des centroides, calcule la distance entre le point et
chaque centroide et émet le point et le centroide le plus proche. La fonction de réduction
collecte tous les points appartenant à un cluster et calcule le nouveau centre de gravité et
l’émet. A la fin de chaque étape, il trouve une nouvelle approximation des centres de gravité,
qui sont utilisés pour l’itération suivante. Le flux de travail se poursuit jusqu’à ce que la
distance entre chaque centroid d’une étape précédente et les centroides correspondants de
l’étape actuelle tombe en dessous d’un seuil donné [22].
do:
Map:
- Given a point and the set of centroids.
- Calculate the distance between the point and each centroid.
- Emit the point and the closest centroid.
Reduce:
- Given the centroid and the points belonging to its cluster.
- Calculate the new centroid as the aritmetic mean position of the points.
- Emit the new centroid.
prev_centroids = centroids.
centroids = new_centroids.
51
le mettre en mémoire cache avec la fonction cache(). De cette façon, nous évitons de le
réévaluer à chaque fois qu'une action est déclenchée. Ensuite, nous itérons les étapes du
mappeur et du réducteur jusqu'à ce que le critère d'arrêt soit vérifié ou que le nombre
maximum d'itérations soit atteint.
Afin de représenter les points, une classe Point a été définie. Elle est caractérisée par les
champs suivants :
• un numpyarray de composants
• nombre de points : un point peut être vu comme l'agrégation de plusieurs points, donc
cette variable est utilisée pour suivre le nombre de points qui sont représentés par
l'objet.
a) La bibliothèque mtpmotlib :
matplotlib est une bibliothèque Python capable de produire des graphes de qualité, peut être
utilisé dans des scripts Python, le shell Python et IPython, le notebook Jupyter, des serveurs
d’application web et dans quatre outils d’interface graphique.
Matplotlib essai de rendre les tâches simples “simples” et de rendre possible les choses
compliqués. Vous pouvez générer des graphes, histogrames, des spectres de puissance des
graphiques à bares, des graphiques d’erreur, des nuages de dispersion, etc… en quelques
lignes de code. Pour des graphiques simples, le module matplotlib.pyplot fournit une interface
comme MATLAB spécialement adaptée avec IPython.
52
b) La bibliothèque numpy :
NumPy est une bibliothèque pour langage de programmation Python, destinée à manipuler
des matrices ou tableaux multidimensionnels ainsi que des fonctions mathématiques opérant
sur ces tableaux. Plus précisément, cette bibliothèque logicielle libre et open source fournit de
multiples fonctions permettant notamment de créer directement un tableau depuis un fichier
ou au contraire de sauvegarder un tableau dans un fichier, et manipuler des vecteurs, matrices
et polynômes.
c) La bibliothéque Scikit-learn
est une bibliothèque en Python qui fournit de nombreux algorithmes d'apprentissage supervisé
et non supervisé. Elle s'appuie sur certaines technologies qui vous sont peut-être déjà
familières, comme NumPy, pandas et Matplotlib !
• Sélection de modèles
IV.4.4-Mapper :
Le mappeur calcule la distance entre le point de données et chaque centroide. Emet ensuite
l’index de centre de gravité le plus proche et du point de données.
53
Figure 18 ; Création des Centroid
IV.4.5-Reducer :
54
IV.5- Dataset :
Pour générer les ensembles de données, nous avons utilisé la bibliothèque python scikitlearn.
Nous avons construit l’ensemble de données en utilisant la fonction make_blobs() du module
ensemble de données pour générer des points avec une tendance au clustering. L’ensemble de
données de validation comprend des points bidimensionnels repartis en 4 clusters bien définis.
Extrait de l’ensemble de données :
IV.6- Résultats :
Pour valider nos implémentations, nous avons utilisé la fonction sklearn Kmeans() du module
cluster. Dans le tableau suivant nos exécutions Kmeans classique et Kmeans basé spark
55
IV.7- Tests :
Nous avons utilisé une dataset de 5000 points qui nous a permis d’obtenir les résultats du
tableau précèdent et prenant compte que l’algorithme k-means est sensible aux centroids
initiaux et que nous avons utilisé une initialisation aléatoire.
Nous avons testé plusieurs fois l’algorithme k-means classique et k-means basé spark avec 3
clusters le premier avec 4 cluster le 2 eme avec 7 clusters et le 3 eme avec 10 cluster et à
chaque fois nous avons répété l’opération 10 fois
C’est-à-dire avec 4 clusters on a eu les mêmes centroids et le même nombre d’itérations, aussi
avec 7 clusters on a eu les mêmes centroids aussi et le même nombre d’itération à chaque fois,
et avec 10 clusters aussi seul le temps d’exécution qui change.
56
123.9965ms de temps d’exécution avec un nombre de 17 itérations et encore une fois les
mêmes centroids.
On remarque que le k-means classique avec 4 clusters prend moins d’itérations pour trouver
les centroids que le k-means basé spark, par contre on ne peut pas dire de mêmes pour le
temps d’exécution à chaque test le k-means basé spark et bien plus rapide que le k-means
avec plus de fiabilité à chaque test on n’a pas eu une grande différence de temps d’exécution.
• Du point de vue vitesse le k-means basé spark est bien plus rapide que le k-means
classique la vitesse est très importante dans le traitement de grands ensembles de
données, car elle représente la différence entre l'exploration interactive des données et
l'attente de minutes ou d'heures.
• Spark utilise une méthode d'optimisation pour éviter les calculs inutiles lorsqu'il
calcule la distance la plus courte entre chaque point d'échantillonnage de l'ensemble de
données et l'ensemble de centroïdes sélectionné.
Conclusion
Dans ce chapitre nous avons présenté les étapes de la conception, les outils utilisés et les
bibliothèques nécessaires pour ce travail. Nous avons expliqué l’implémentation des deux
méthodes : l’algorithme k-means classique et k-means basé spark, et nous les avons
comparées.
57
Conclusion et perspective
Nous avons assisté ces dernières années à l’apparition de plusieurs outils techniques et
d’algorithmes d’apprentissage pour le traitement et l'analyse de données massives. Cependant,
la plupart des outils nécessitent des connaissances approfondies de la part des experts pour
comprendre leurs concepts et les utiliser. Le premier objectif de notre travail est d’étudier ces
outils et algorithmes pour lesquels nous avons consacré deux chapitres. Dans le troisième
chapitre nous nous sommes intéressés aux systèmes MapReduce et Apache Spark. Et enfin,
nous avons approfondie notre étude en implémentant et en comparant l’algorithme K-means
classique et k-means avec Spark.
L'algorithme k-means est l'un des algorithmes de clustering les plus anciens et les plus
couramment utilisés c'est un excellent point de départ pour les nouveaux amateurs de machine
learning étant donné la simplicité de sa mise en œuvre. L'algorithme K-means, qui est un
algorithme largement utilisé pour le regroupement de divers types de données qui est une
tâche importante dans les domaines du datamining et de l'apprentissage automatique. Étant
donné une fonction de distance particulière pour mesurer la dis-similarité des données, les
algorithmes de type K-means peuvent optimiser les fonctions de critère sur ses deux
paramètres : les affectations de clusters et les centres de clusters, dans ce modeste travail on a
fait une comparaison entre le k-means classique et l’algorithme basé spark et ont vu après
plusieurs tests sur une dataset de 5000 point de 2 dimensions que le k-means basé spark est
bien plus rapide que le k-means classique et bien plus fiable aussi on peut déduire qu’avec un
grand nombre de données il est préférable de travailler avec le k-means basé spark.
58
Références bibliographiques
59
means-mapreduce
60