Vous êtes sur la page 1sur 60

‫اﻟﺠﻤﻬﻮرﻳﺔ اﻟﺠﺰاﺋﺮﻳﺔ اﻟﺪﻳﻤﻘﺮاﻃﻴﺔ اﻟﺸﻌﺒﻴﺔ‬

‫وزارة اﻟﺘﻌﻠﻴﻢ اﻟﻌﺎﻟﻲ واﻟﺒﺤﺚ اﻟﻌﻠﻤﻲ‬

UNIVERSITÉ BADJI MOKHTAR - ANNABA


BADJI MOKHTAR – ANNABA UNIVERSITY
‫ﺟﺎﻣﻌﺔ ﺑﺎﺟﻲ ﻣﺨﺘﺎر – ﻋﻨﺎﺑ ـ ـ ـ ـ ـ ـ ــﺔ‬

Faculté : Sciences de l’ingéniorat


Département : Informatique
Domaine : Mathématique-informatique
Filière : Informatique
Spécialité : GADM

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

Présenté par : Aouissi Takkieddine

Encadrant : Mecheri Karima MCB UBMA

Jury de Soutenance :
Belleili Habiba MCA UBMA Président

Mecheri Karima MCB UBMA Encadrant

Klai Sihem MCA UBMA Examinateur

Année Universitaire : 2020/2021


Sommaire
Introduction générale ...................................................................................11
Chapitre 1 : Concepts fondamentaux de Big data ..........................................13
Introduction ..................................................................................................13
I.I-Introduction au big data............................................................................14
I.I.1-Le phénomène Big Data ......................................................................... 14
I.I.2-Définition du Big Data ............................................................................ 14
I.I.3-Big Data : l’analyse de données en masse .............................................. 15
I.I.4- C’est quoi le NoSQL? ............................................................................. 18
I.I.5- Les clés-valeurs ..................................................................................... 18
I.II-Les outils technologiques .........................................................................20
I.II.1- HADOOP .......................................................................................... 20
I.II.3- STORM ................................................................................................. 21
I.II.4- OPENREFINE ..................................................................................... 21
I.II.5- RAPIDMINER ..................................................................................... 21
I.II.6- MongoDB : ....................................................................................... 22
Conclusion ....................................................................................................22
Chapitre 2 : Analyse de données et l’apprentissage automatique..................23
Introduction ..................................................................................................23
II.I-L’analyse des données et l’apprentissage automatique............................23
II.I.1- À quoi sert la Data Analysis ? ............................................................... 23
II. II -Les principaux algorithmes d’analyse de données sont :........................24
II. II.1- La régression linéaire ..................................................................... 24
II.II.2- La régression logistique .................................................................... 24
II.II.3- Les arbres de classification et de régression........................................ 25
II.II.4- La méthode des K plus proche voisin .................................................. 26
II.II.5- Le partitionnement en K-moyennes .................................................... 26

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 ?

Plusieurs outils d’analyse de données et d’algorithme de classification ce


présentent à nous. Le but de ce mémoire est de faire une étude comparative de
l’un des algorithmes de classification le plus connu dans le monde qui est le k-
means avec l’outil le mieux adapté qui est l’apache spark, mais avant cela on
présente d’autres outils et d’autres algorithmes de classification et
d’apprentissage automatique.

Notre mémoire a pour objectif d’implémenter l’algorithme k-means classique


et le k-means basé spark sur l’environnement python et faire une étude
comparative des deux systèmes et voir le mieux adapté à la classification des
données massives.

Mots clés :Big Data, analyse de données, apprentissage automatique , Hadoop,


Apache Spark, K-means.

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

Pour tous les moments de la vie, de l’échec et de la réussite.


Nous dédions le fruit de notre travail à nos chers parents les
plus proches de notre cœur, à leurs sacrifices et à leur
présence. Ils ont porté sur leurs frêles épaules toutes les
responsabilités et ont dépensé leur temps, leur argent et leur
énergie sans compter. Nous demandons à Dieu de vous
protéger.
A tous nos petits membres de la famille.
A tous nos amis proches, merci pour tous les moments
inoubliables.
Un grand merci pour tous les moments qu’on a passé
ensemble.

9
Remerciements

Avant tout, je remercie Dieu le tout puissant qui m’a donné la force et
la volonté pour finir ce travail.

Je tiens à remercier énormément mon encadreur Madame Mecheri


Karima, pour m’avoir accueilli et proposé ce sujet passionnant, et
surtout pour ses précieux conseils.

Je remercie vivement les membres de jury, d’avoir accepté d’évaluer


mon travail.

Je souhaite remercier mes amis et mes collègues, ma mère qui a


toujours su être là dans tous les moments, son soutien et sa générosité
et sa volonté ont toujours mérité mon plus profond respect.

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:

- Une partie concernant des notions mathématiques statistiques et probabilistes sur


lesquelles sont fondés des algorithmes d’apprentissage numérique (ou machine
Learning), ainsi que des algorithmes de fouille de données et de graphes (Data
Science).
- Une partie d’informatique distribuée pour l’analyse de données à large échelle (Map-
Reduce).
- Une partie d’informatique parallèle à haute performance pour le data Analytics et le
machine Learning visant à accélérer les calculs sur des machines parallèles (Ex. pour
entraîner des réseaux de neurones profonds ‘deep learning’).
- Une partie de bases de données "not only SQL" (NoSQL) permettant de stocker des
données structurées complexes.

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.

- d’implémenter et comparer l’algorithme K-MEANS basé Spark et K-MEANS


classique.

Organisation du document

Notre document est structuré en 4 chapitres comme suit :

Le premier chapitre, est consacré à la présentation de différentes définitions et concepts


généraux relatifs au Big Data.

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.

Le quatrième chapitre est dédié à l’implémentation de l’algorithme K-means classique et k-


means sous 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]

I.I-Introduction au big data


Le terme "big data" désigne des ensembles de données dont la taille et les caractéristiques
dépassent la capacité des outils logiciels de base de données habituels pour les capturer, les
stocker, les gérer et les analyser. De plus, ce que nous appelions big data il y a dix ans ne l'est
peut-être plus aujourd'hui, car les outils et les technologies changent rapidement et de façon
continue pour s’adapter et subvenir aux besoins actuels. Et ce que nous appelons big data
aujourd'hui ne le sera peut-être plus dans 5 ans. À l'avenir, nous utiliserons peut-être encore
les systèmes traditionnels de collecte, de stockage et de traitement des données, mais très
probablement en association avec des systèmes plus récents. Il existe de nombreux outils Big
Data open source sur le marché. Il ne fait aucun doute qu'Apache Hadoop, Apache Spark sont
parmi les outils les plus utilisé actuellement dans le monde du Big Data en tant que
plateformes open source. Par conséquent, la plupart des groupes ou organisations actifs
développent des outils open source afin d'augmenter les possibilités d'adoption dans l'industrie
et recherchent des professionnels capables de les utiliser pour tirer le meilleur parti des
données générées au sein de l'organisation. En outre, un outil open source est facile à
télécharger et à utiliser, sans frais de licence.[4]

I.I.1-Le phénomène Big Data

L’explosion quantitative des données numériques a obligé les chercheurs à trouver de


nouvelles manières de voir et d’analyser le monde. Il s’agit de découvrir de nouveaux ordres
de grandeur concernant la capture, la recherche, le partage, le stockage, l’analyse et la
présentation des données. Ainsi est né le « Big Data ». Il s’agit d’un concept permettant de
stocker un nombre indicible d’informations sur une base numérique. Selon les archives de la
bibliothèque numérique de l’Association for Computing Machinery (ou ACM) dans des
articles scientifiques concernant les défis technologiques à relever pour visualiser les « grands
ensembles de données », cette appellation est apparue en octobre 1997. [1]

I.I.2-Définition du Big Data

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]

I.I.3-Big Data : l’analyse de données en masse

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]

Figure 1 : Les 3 V du big data [1]

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

Véracité : La véracité permet de vérifier la qualité et l'origine de l'information. Par exemple,


certaines données peuvent sembler suspectes, incertaines ou fausses. La véracité fournit des
informations sur des sujets que vous ne savez pas comment traiter. D'une certaine manière,
c'est un facteur d'hygiène. En démontrant la véracité de vos données, vous montrez que vous
avez porté un regard critique sur celles-ci.

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.

Variabilité : La variabilité définit la nécessité d'obtenir des données importantes en tenant


compte de toutes les circonstances possibles. C'est notamment le cas lorsque la collecte de
données repose sur le traitement du langage.

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]

I.I.4- C’est quoi le NoSQL?

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]

I.I.5- Les clés-valeurs

Le but de la famille clé-valeur est l'efficacité et la simplicité. Un système clé-valeur agit


comme une énorme table de hachage distribuée sur le réseau. Tout repose sur le couple
Clé/Valeur. La clé identifie la donnée de manière unique et permet de la gérer. La valeur
contient n'importe quel type de données. [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]

Figure 02 : Stockage clé/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.

Familles Exemple d’utilisation

Orientées graphes pour traiter les réseaux Recommandations Twitter


massifs
Orientés colonnes pour faciliter les Calcul de l'âge moyen des utilisateurs
traitements privilégiant les colonnes
Orientées clé/valeur pour gagner en Système de sauvegarde de type Dropbox
efficacité en lecture/écriture et pour le
changement d'échelle
Orientée "document" pour supporter des Gestion des métadonnées des produits
structures variables vendus chez eBay

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

Fortes performances Pas de langage de requête abstrait partagé


Résistance au changement d'échelle Travail de programmation spécifique plus
important
Capacité à faire évoluer la représentation des Cohérence des données moins aisée à
données garantir

Et maintenant la question qui se pose avec quoi travaille les professionnelles du Big Data ?

I.II-Les outils technologiques


Il existe de nombreuses solutions techniques utilisées par les Data Analystes dans leur travail
quotidien afin d’optimiser les temps de traitement sur des bases de données. Voici 6
exemples :

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.

II.I-L’analyse des données et l’apprentissage automatique

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, ou data analysis en français, est un processus de nettoyage, de


transformation et de modélisation des données. L'objectif est d’extraire des informations
exploitables pour prendre de meilleures décisions commerciales [9]

II.I.1- À quoi sert la Data Analysis ?

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]

II. II -Les principaux algorithmes d’analyse de données

II. II.1- La régression linéaire


La régression linéaire est l'algorithme le plus basique et l'un des plus utilisés en analyse de
données et en apprentissage automatique. Cet algorithme utilise la relation entre deux
ensembles de mesures quantitatives continues. [1]

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]

Figure 03 : Graphe représentant la régression linéaire

II.II.2- La régression logistique


La régression logistique est similaire à la régression linéaire, mais elle est utilisée pour des
problèmes de catégorisation plutôt que pour des prédictions quantitatives. L'objectif de cet
algorithme est de déterminer si une instance d'une variable entre ou non dans une catégorie.

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]

Figure 04: Graphe représentant la régression logistique

II.II.3- Les arbres de classification et de régression


Les arbres de classification et de régression utilisent une décision pour catégoriser les
données. Chaque décision est basée sur une question liée à l'une des variables d'entrée. En
fonction des réponses, l'instance de données est catégorisée. Cette succession de questions et
de réponses et les divisions qui en résultent créent une structure arborescente. [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]

Figure 05: arbre de classification

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]

En fonction de la taille de l'ensemble d'entraînement, cet algorithme peut être gourmand en


ressources informatiques. Cependant, il est souvent utilisé pour sa facilité d'utilisation, sa
facilité d'entraînement et sa facilité d'interprétation des résultats. [1]

Figure 06: Algorithme des K plus proche voisin

II.II.5- Le partitionnement en K-moyennes

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

II.III- L’apprentissage automatique


L'apprentissage automatique (en anglais : machine Learning) est une technologie
d'intelligence artificielle qui permet aux ordinateurs d'apprendre sans avoir été explicitement
programmés pour le faire. Pour apprendre et se développer, les ordinateurs ont toutefois
besoin de données à analyser et sur lesquelles s'entraîner. En effet, le Big Data est la base du
Machine Learning, et c'est la technologie qui permet de libérer tout le potentiel du Big Data.

II. III.1- C’est quoi le machine Learning ?

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]

II. III.2- Les différents type d’algorithme de machine Learning

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]

II. III.2.1- L’apprentissage non supervisé


A la différence de l’apprentissage supervisé, le contexte non supervisé est celui où
l’algorithme doit opérer à partir d’exemples non annoté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]

II. III.2.2- L’apprentissage supervisé


Dans l'apprentissage supervisé, les données utilisées pour la formation sont déjà "étiquetées".
Par conséquent, le modèle d'apprentissage automatique sait déjà ce qu'il doit chercher dans

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]

II. III.2.2.1- L’algorithme SVM


Le SVM est un algorithme d'apprentissage automatique qui résout à la fois les problèmes de
classification, de régression et de détection d'anomalies. Ils sont connus pour leurs fortes
garanties théoriques, leur grande souplesse et leur facilité d'utilisation, même sans grandes
connaissances en data mining. Le SVM a été développés dans les années 1990. Comme le
montre la figure ci-dessous, sont principe est simple : il vise à séparer les données en classes
en utilisant une frontière aussi "simple" que possible, de telle sorte que la distance entre les
différents groupes de données et la frontière qui les sépare soit maximale. Cette distance est
également appelée "marge" et les SVM sont donc appelés "séparateurs à large marge", les
"vecteurs de support" étant les données les plus proches de la frontière. [12]

Figure 8: représentation du SVM

II. III.2.2.2- L’algorithme naive bayes


Naive Bayes, généralement utilisé en apprentissage automatique, est une collection
d'algorithmes de classification basés sur le théorème de Bayes. Il ne s'agit pas d'un algorithme
unique, mais d'une famille d'algorithmes. Tous ces algorithmes ont un principe commun, à
savoir que chaque caractéristique classée est indépendante de la valeur de toute autre
caractéristique. Ainsi, par exemple, un légume peut être considéré comme une tomate s'il est
rouge, rond et d'un diamètre d'environ 6 cm. Un classificateur Naive Bayes considère chacune
de ces "caractéristiques" (rouge, ronde, 6 cm de diamètre) comme des caractéristiques

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]

II. III.2.3- Les outils d’apprentissages automatique


L'apprentissage automatique est une technologie d'intelligence artificielle qui permet aux
ordinateurs d'apprendre par eux-mêmes, sans avoir été programmés pour effectuer des tâches
spécifiques. En reproduisant un comportement grâce à des algorithmes, eux-mêmes alimentés
par une grande quantité de données. Face à de nombreuses situations, l'algorithme apprend
quelle décision prendre et crée un modèle. La machine peut automatiser les tâches en fonction
des situations, voici quelques outils d’apprentissage automatique utilisé pour des données
massives

II. III.2.3.1- H2O


"H2O" est une plateforme JAVA d'apprentissage automatique. Elle offre des outils pour la
manipulation et la préparation des données, des algorithmes de modélisation, supervisés, non
supervisés ou de réduction de dimensionnalité. On peut accéder à ses fonctionnalités en mode
client-serveur via différents langages de programmation avec le mécanisme API (application
programming d'application)

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.

II. III.2.3.2- Mlib


MLlib est la bibliothèque d'apprentissage automatique de Spark. Tous les algorithmes de cette
bibliothèque sont conçus pour être optimisés pour le calcul parallèle sur un cluster. Une des
conséquences directes de cela est que, pour de petits ensembles de données qui occupent de la
mémoire, un algorithme lancé depuis Spark en local sur votre machine prendra beaucoup plus
de temps à s'exécuter que le même algorithme lancé depuis Python ou R, qui sont optimisés.
pour le mode local. En revanche, les performances deviennent extrêmement intéressantes
lorsque les volumétries sont très importantes. [13]

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 :

• Des classes Java pour le chargement et la manipulation des données.

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.

Il peut être utilisé à trois niveaux :

- Via l'interface graphique, pour charger un fichier de données, lui appliquer un algorithme,
vérifier son efficacité.

- Invoquer un algorithme en ligne de commande.

- 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.

D'autres algorithmes, comparer ou combiner plusieurs méthodes. C'est cette troisième


possibilité qui sera utilisée dans les travaux pratiques.

II.III.2.3.4- Massive online analysis (MOA)


MOA est le cadre open source le plus populaire pour l'exploration de flux de données, avec
une communauté croissante très active. Il comprend une collection d'algorithmes
d'apprentissage automatique (classification, régression, clustering, détection des aberrations,
détection de la dérive des concepts et systèmes de recommandation) et des outils d'évaluation.
Lié au projet WEKA, MOA est également écrit en Java, tout en s'adaptant à des problèmes
plus exigeants. Un nouveau livre sur MOA a été publié chez MIT Press.

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.

MOA contient des algorithmes et des mesures de pointe pour la classification et le


regroupement de flux et permet l'évaluation d'algorithmes d'exploration de flux de données
sur de grands flux, de l'ordre de dizaines de millions d'exemples si possible, et sous des
limites de mémoire explicites. Les principales contributions et les principaux avantages du
cadre MOA sont les suivants : analyse et comparaison des approches déférentes (algorithmes
nouveaux et de pointe) et des paramètres de streaming differents (de grande taille) ; création et
utilisation de paramètres de référence pour une évaluation comparable et répétable des

32
algorithmes d'extraction de flux ; cadre source ouvert facilement extensible pour les flux de
données, les algorithmes et les mesures d'évaluation.

II. III.2.3.5- JAVA-ML

Java-ml est une collection d'algorithmes d'apprentissage automatique et d'exploration de


données, qui vise à être une API facilement utilisable et extensible pour les développeurs de
logiciels et les chercheurs. Les interfaces pour chaque type d'algorithme restent simples et les
algorithmes suivent strictement leur interface respective. La comparaison de différents
classificateurs ou algorithmes de clustering est donc simple, et l'implémentation de nouveaux
algorithmes est également facile. Les implémentations des algorithmes sont clairement
écrites, correctement documentées et peuvent donc être utilisées comme référence.
Java-ML contient un ensemble étendu de techniques basées sur la similarité et offre des
techniques de sélection de caractéristiques de pointe. Le grand nombre de fonctions de
similarité permet d'utiliser un large éventail de techniques de regroupement et d'apprentissage
par instance, tandis que les techniques de sélection de caractéristiques sont bien adaptées aux
domaines à haute dimension, tels que ceux que l'on rencontre souvent dans les applications
bio-informatiques et biomédicales.

II. III.3- APACHE SAMOA


Apache SAMOA (Scalable Advanced Massive Online Analysis) est une plateforme open-
source pour l'exploitation des flux de données volumineux. Les big data sont définis comme
des ensembles de données dont la taille dépasse la capacité des outils logiciels typiques à
capturer, stocker, gérer et analyser, en raison de la complexité en termes de temps et de
mémoire. Apache SAMOA fournit une collection d'algorithmes de streaming distribués pour
les tâches les plus courantes d'exploration de données et d'apprentissage automatique telles
que la classification, le regroupement et la régression, ainsi que des abstractions de
programmation pour développer de nouveaux algorithmes. Il présente une architecture
enfichable qui lui permet de fonctionner sur plusieurs moteurs de traitement de flux distribués
tels que l’Apache Flink, Apache Storm et Apache Samza. [15]

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 .

III.I.1- Hadoop framework


Apache Hadoop est un logiciel open-source écrit en Java qui permet le stockage et le traitement de
données massives sur un cluster contenant plusieurs machines (ApacheTM Hadoop). En 2004, Google
a publié un article de recherche sur l'algorithme MapReduce, conçu pour réaliser des opérations
analytiques à grande échelle sur une multitude de serveurs, ainsi que sur le système de fichiers dans le
cluster, Google File System (GFS) (Dean & Ghemawat, 2004). Doug Cutting, qui a travaillé sur le
développement du moteur de recherche libre Apache Lucene s'est inspiré des concepts décrits dans
l'article de Google et a décidé de répliquer en open source les outils développés par Google pour ses
besoins (LeMagIT/TechTarget, 2014). Hadoop Core offre un système de fichiers distribué qui donne
un accès rapide aux données des applications, d'un autre côté, il fournit un système d'analyse parallèle
de grands ensembles de données (Intel IT Center, 2013). [1]

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 a une architecture maître/esclave avec un NameNode comme maître et plusieurs


DataNodes comme esclaves. Le NameNode stocke les informations du fichier et leurs
caractéristiques de manière centralisée. Il supporte également les DataNodes qui stockent le
contenu des fichiers, fragmenté en blocs (64MB par défaut) [1]

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]

La figure suivant montre l’architecture de l’hdfs :

Figure 9: : l’architecture de l’HDFS

36
III.1.3- Système map/reduce :

Le deuxième composant important d'Hadoop est MapReduce. Il s'agit d'un modèle de


programmation et d'une implémentation associée pour traiter et générer de grands ensembles
de données dans un cluster. L'algorithme MapReduce est basé sur deux fonctions qui sont : La
fonction Map() et la fonction Reduce() [1]

Figure 10: Le traille de map/reduce

Le calcul prend un groupe de paires clé/valeur en entrée, et produit un groupe de paires


clé/valeur en sortie. La fonction Map() transforme les données d'entrée en une série de paires
clé/valeur, et elle va regrouper les données en les associant à des clés, qui sont choisies parmi
les paires clé/valeur ayant une signification avec le travail à résoudre. De plus, cette opération
doit être parallélisée : il doit être possible de diviser les données d'entrée en plusieurs
fragments, et d'exécuter l'opération Map() sur chaque machine du cluster sur un fragment
séparé. La fonction Reduce() applique un traitement à toutes les valeurs produites par
l'opération Map(), et à la fin de l'opération Reduce(), nous aurons un résultat pour chacune des
clés distinctes. Ici, chaque machine du cluster se voit attribuer une des clés uniques produites
par Map(), et elle liste les valeurs associées à la clé, puis effectue l'opération Reduce() pour
cette clé. Enfin, le résultat souhaité est produit dans un fichier de sortie. [1]

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]

La figure suivante decrit l’architecture du cluster basé mapreduce

Figure 11: l’architecture map/reduce

38
III.1.3.1-Comment fonctionne Map/Reduce?

Figure 12 ; Fonctionnement du 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

Figure 13 : 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]

III.II.1- Caractéristique de l’apache spark


Apache Spark a les caractéristiques suivantes :

• 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]

III.II.2- Apache spark écosystème


l'Eco-système contient des bibliothèques supplémentaires qui le rendent très fort, afin
d'exploiter et d'analyser le Big Data. Nous pouvons citer les composants de l'écosystème
Spark comme suit

• 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- RDD (Resilient Distributed Datasets) :


Les ensembles de Données Distribuées Résilientes (RDD) sont "une abstraction pour une
collection de données qui peuvent être stockées et traitées en mémoire". Il s'agit d'une
collection spéciale qui supporte de multiples sources, possède un mécanisme de tolérance aux
pannes, peut être mise en cache et supporte les opérations parallèles. Il peut également
représenter un ensemble de données avec plusieurs partitions. Lors de l'exécution sur le
cluster Hadoop les RDDs seront créés sur le HDFS dans de nombreux formats supportés par
Hadoop tels que le texte, les fichiers de séquence. Il existe deux types d'opérations supportées
par RDD : la transformation et action.

III.II.2.1.1-Transformation :

L'opération de transformation adopte le calcul du délai, ce qui signifie créer un nouvel


ensemble de données sur la base d'un ensemble de données existant lorsqu'un RDD est
converti en un autre, il n'y a pas de conversion immédiate. Au contraire, il ne fait
qu'enregistrer le fonctionnement logique de l'ensemble de données pour un traitement
ultérieur. Toutes les opérations de transformation sont paresseuses ce qui signifie qu'elles ne
calculeront pas le résultat immédiatement. Les transformations ne seront calculées que
lorsque une opération d'action requiert un résultat du programme pilote. L'opération normale
de transformation comprend map, flatmap, filter, goupbeykey et reducebykey

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.

III.II.2.2-DAG (Directed Acyclic Graph)

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.

III.II.3- Comment marche spark

Figure 14 : Flux de travail de Spark

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]

Après avoir appliqué suffisamment de ressources depuis le gestionnaire de ressources, le


programme du pilote commencera l'ordonnancement et l'exécution des codes. Tout d'abord,
Spark va diviser le code en plusieurs étapes. Chaque étape exécutera un morceau de code et
créera un lot de tâches pour l'étape. Ensuite, les tâches seront attribuées à différents
exécuteurs pour être exécutées. Les tâches sont la plus petite unité des travaux Spark et sont
responsables de la même logique de calcul ou du même code lors du traitement de différents
ensembles de données différents ensembles de données. Le travail passe à l'étape suivante
lorsque toutes les tâches d'une étape sont terminées et les résultats sont écrits dans le système
de fichiers local sur les différents nœuds. L'étape suivante utilisera le résultat de la dernière
étape comme données d'entrée et répétera le cycle jusqu'à ce que toutes les étapes soient
terminées. [18]

Les travaux Spark divisent différentes étapes en fonction de l'opération de brassage ou


d'action. Une fois que le code comprend une opération d'action comme reduceByKey ou join,
Spark divisera une étape en deux étapes. et la divisera en deux étapes. En d'autres termes, les
codes avant l'opération d'action et les codes après l'opération d'action seront reconnus comme
deux étapes Ainsi, chaque tâche d'étape peut extraire les données dont elle a besoin de l'étape
précédente par le biais d'Internet et exécuter l'opération en fonction des codes. Ce processus
est appelé shue dans Spark. En outre, Spark fournit une fonction permettant de sauvegarder
les données en mémoire si les utilisateurs définissent l'option persist/cache [18]. C'est la
principale différence entre Spark et MapReduce framework

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

III.III- L’algorithme k-means :

Figure 15 :Organigramme de l’algorithme kmeans

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 :

• Ensemble non optimal de clusters : k-means ne permet pas de développer un ensemble


optimal de cluster et vous devez choisir les cluster avant des résultats effectifs

• 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 :

L'algorithme de clustering k-means est couramment utilisé sur de grands ensembles de


données, et en raison ses caractéristique, il se présente comme un bon candidat pour la
parallélisassions. Dans ce chapitre on va présenter la partie pratique de notre étude
comparative entre le k-means classique et k-means basé spark en implémentant cet
algorithme, afin d’étudier et d’analysé les performances du point de vue temps d’exécution et
fiabilité des résultats Pour faire ce travail on vas présenter les outils et le langage qu’on vas
utiliser pour l’implémentation

IV. 1. -Environnement, langages et outils utilisés :

IV.1.1-le language python :


Python est un langage de programmation interprété, multi-paradigmes et multiplateformes. Il
favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté
d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et
d'un système de gestion d'exceptions. Il est ainsi similaire
à Perl, Ruby, Scheme, Smalltalk et Tcl. Le langage Python est placé sous une licence
libre proche de la licence BSD et fonctionne sur la plupart des plates-formes informatiques,
des smartphones aux ordinateurs centraux, de Windows à Unix avec
notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et peut aussi être
traduit en Java ou .NET. Il est conçu pour optimiser la productivité des programmeurs en
offrant des outils de haut niveau et une syntaxe simple à utiliser. [20]

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.

Il permet l'analyse de code et contient un débogueur graphique. Il permet également la gestion


des tests unitaires, l'intégration de logiciel de gestion de versions, et supporte le
développement web avec Django [21]

Figure 16: Le logiciel paycharm

IV.3- kmeans classique:


Les k-means classiques ne nécessitent que quelques étapes. La première étape consiste à
sélectionner aléatoirement k centroïdes, où k est égal au nombre de clusters que vous
choisissez. Les centroïdes sont des points de données représentant le centre d'un cluster.

L'élément principal de l'algorithme fonctionne par un processus en deux étapes appelé


maximisation de l'espérance. L'étape d'attente attribue chaque point de données à son
centroïde le plus proche. Ensuite, l'étape de maximisation calcule la moyenne de tous les
points pour chaque groupe et définit le nouveau centroïde.

IV.4- Kmeans avec Spark


Dans cette partie nous présentons l’algorithme général pour implémenter Kmeans avec Spark.
Il est à noter que nous avons utilisé la conception Mapreduce.

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].

centroids = k random sampled points from the dataset.

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.

while prev_centroids - centroids > threshold.

IV.4.2-Implémentation avec spark :


Comme première étape, nous lisons le fichier avec les points et nous générons les centroïdes
initiaux avec un échantillonnage aléatoire, en utilisant la fonction takeSample(False, k) : cette
fonction prend k échantillons aléatoires, sans remplacement, du RDD ; ainsi, l'application
génère les centroïdes initiaux de manière distribuée, en évitant de déplacer toutes les données
vers le pilote. Puisque nous réutilisons le RDD dans un algorithme itératif, nous décidons de

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.

Elle comprend les opérations suivantes

• distance (il est possible de passer en paramètre le type de distance)


• la somme
• get_average_point : cette méthode renvoie un point dont les composantes sont la
moyenne des composantes réelles du nombre de points représentés par l'objet.

IV.4.3- Importation des bibliothèques


La première étape à faire est d’importer les bibliothèques suivantes :

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 !

• Les fonctionnalités fournies par scikit-learn sont les suivantes :

• La régression, notamment la régression linéaire et logistique.

• Classification, y compris K-Nearest Neighbors (voisins les plus proches)

• Le clustering, y compris K-Means et K-Means++.

• Sélection de modèles

• Prétraitement, y compris la normalisation Min-Max.

Figure 17: Les bibliothèque nécessaires

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 :

Le réducteur calcule la nouvelle approximation du centroide et l’émet.

Figure 19 ; Calcule des nouveaux centroid

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 :

Figure 20: Exemple du dataset

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

Kmeans classique Spark

Temps d’exécution 57.8462 40.9746


Nombre d’itération 8 3

Figure 21: Résultat

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

IV.6.1Teste sur spark

Temps d’exécution Nombre d’itération


4 clusters 34.97665ms (la moyenne) 7
7 clusters 63.210175ms (la moyenne) 10
10 clusters 86.02525ms (la moyenne) 17
Tableau : Test sur K-means basé sur Spark

Pour 4 clusters on a eu en moyen 34.97665 ms temps d’exécution avec un nombre de 7


itérations avec les mêmes centroids , pour 7 cluster on a eu en moyenne 63.212175 ms temps
d’exécution avec un nombre de 7 itérations et les mêmes centroids à chaque test. Et pour 10
clusters on a eu en moyenne 86.02525 ms temps d’exécution avec un nombre de 17 itérations
et toujours les mêmes centroids.

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.

IV.6.2 test sur k-means classique

Temps d’exécution Nombre d’itérations


4 clusters 75.9525ms (la moyenne) 3
7 clusters 87.1958ms (la moyenne) 10
10 clusters 123.39965ms (la moyenne) 17
Tableau : Test sur K-means classique

Pour 4 clusters ont eu en moyenne 75.9525ms temps d’exécution avec un nombre de 3


itérations et les mêmes centroids à chaque fois seul le temps d’exécution qui change, pour 7
clusters on a eu en moyenne 87.1958ms de temps d’exécution avec un nombre de 7 itérations
et les mêmes centroids à chaque fois aussi, et avec 10 clusters en a eu en moyenne

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.

Notre travail n’est qu’un début, plusieurs perspectives sont envisagées :

• faire une étude comparative de l’algorithme k-means classique vs le k-means basé


MapReduce.
• faire une étude comparative de l’algorithme k-means basé spark vs k-means basé
MapReduce.
• travaille avec d’autre outils d’apprentissage automatique tel que : apache SAMOA,
JAVA-ML , Mlib ,H2O et plein d’autre outils.

58
Références bibliographiques

[1] « Analyse de données : top 5 des algorithmes Big Data Analytics ».


https://www.lebigdata.fr/analyse-de-donnees-algorithmes.
[2] « Big Data : comparatif des technos, actualités, conseils... »
https://www.journaldunet.com/solutions/analytics/big-data/.
[3] « Big Data : les 5 outils clés pour analyser les données », EMLV École de Commerce
Post-Bac, déc. 28, 2018. https://www.emlv.fr/big-data-outils-analyser-donnees/ .
[4] « Choisissez votre famille NoSQL », OpenClassrooms.
https://openclassrooms.com/fr/courses/4462426-maitrisez-les-bases-de-donnees-
nosql/4462433-choisissez-votre-famille-nosql.
[5] L. Maria, « Conception et réalisation d’un système de protection et d’assurance de vie
privée sur les Bigdata », p. 95.
[6] « LeBigData.fr : Le Magazine Big Data et Cloud Computing ».
https://www.lebigdata.fr/.
[7] L. F. P. Tous, « Les applications du Big Data », La finance pour tous.
https://www.lafinancepourtous.com/decryptages/finance-et-societe/nouvelles-
economies/big-data/les-applications-du-big-data/.
[8] « Messeguem Abdel Djalil.pdf ». Consulté le: juill. 05, 2021. [En ligne]. Disponible sur:
http://dspace.univ-
msila.dz:8080/xmlui/bitstream/handle/123456789/16018/Messeguem%20Abdel%20Djal
il.pdf?sequence=1&isAllowed=y
[9] « Qu’est-ce que l’Apprentissage automatique ? », Formation Data Science |
DataScientest.com, janv. 26, 2021. https://datascientest.com/apprentissage-automatique.
[10] A. Abdesalam, Rapport sur le Big Data. 2015. doi: 10.13140/RG.2.1.3076.2081.
[11] « SGBD : Familles NoSQL [SCI6005 Automne 2020] ».
https://cours.ebsi.umontreal.ca/sci6005/co/sgbd_modele_nosql.html.
[12] « Machine Learning : les 9 types d’algorithmes les plus pertinents en entreprise »,
LeMagIT. https://www.lemagit.fr/conseil/Machine-Learning-les-9-types-dalgorithmes-
les-plus-pertinents-en-entreprise.
[13] N. Pentreath, Machine Learning with Spark, Packt puplishing, 2015
[15] G. D. F. Morales et A. Bifet, « SAMOA: Scalable Advanced Massive Online
Analysis », p. 5.
[16] Amal Abid, « Cours Big Data Chap2 », 00:31:24 UTC. [En ligne]. Disponible sur:
https://fr.slideshare.net/AmalAbid1/cours-big-data-chap2
[17] « MapReduce : qu’est-ce que c’est et comment l’utiliser pour le Big Data ? »,
Formation Data Science | DataScientest.com, mai 19, 2021.
https://datascientest.com/mapreduce.
[18] « Introduction à Apache Spark », Ippon | Cabinet de conseil et expertise en
technologies | Discovery to Delivery, nov. 06, 2014.
http://blog.ippon.fr/2014/11/06/introduction-a-apache-spark/.
[19] « K-means: Definition & Avantages / Inconvénients », Analytics & Insights, mars 05,
2019. https://analyticsinsights.io/k-means/.
[20] « Python, Java, C : tiercé gagnant des langages de programmation ».
https://www.informatiquenews.fr/python-java-c-tierce-gagnant-des-langages-de-
programmation-63252.
[21] « PyCharm : l’IDE Python pour développeurs professionnels par JetBrains ».
https://www.jetbrains.com/fr-fr/pycharm/.
[22] « seraogianluca/k-means-mapreduce », GitHub. https://github.com/seraogianluca/k-

59
means-mapreduce

60

Vous aimerez peut-être aussi