Fouille de données parallèle sur MapReduce - Maria Malek
Transcription
Fouille de données parallèle sur MapReduce - Maria Malek
Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Implémentation parallèle de certains algorithmes de fouille de données avec le framework MapReduce Algorithmes : K-means et Apriori Maria Malek LARIS-EISTI [email protected] séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche 1 Cloud Computing et MapReduce Introduction à MapReduce 2 Parallélisation de l’algorithme K-means L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 3 Parallélisation de l’algorithme Apriori Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! 4 Notre approche séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce Cloud Computing Le cloud computing : déporter sur des serveurs distants des stockages et des traitements informatiques traditionnellement localisés sur des serveurs locaux ou sur le poste de l’utilisateur. le cloud computing est l’accès via le réseau, à la demande et en libre-service à des ressources informatiques virtualisées et mutualisées. Le cloud a émergé principalement pour répondre aux exigences de continuité et de qualité du service : l’application, qui est en contact avec le client ; la plate-forme, qui exécute l’application ; l’infrastructure, qui est le support de la plate-forme ; les données, qui sont fournies sur demande. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce MapReduce MapReduce est un framework de développement informatique, introduit par Google, dans lequel sont effectués des calculs parallèles, et souvent distribués, de données potentiellement très volumineuses ( Terabyte et plus). Les terminologies de Map et Reduce, sont empruntées aux langages de programmation fonctionnelle utilisés pour leur construction. MapReduce s’articule en deux étapes (fonctions) : Map : prend en argument un enregistrement, calcule une liste de couples clef/valeur intermédiaires. Reduce : prend en argument une clef et la liste des valeurs intermédiaire générées par les différentes instances de la fonction Map, effectue un traitement. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce MapReduce : Schéma séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce MapReduce : Caractéristiques MapReduce permet de répartir la charge sur un grand nombre de serveurs. Distribution haut niveau avec une abstraction quasi-totale du la couche matérielle (scalable-friendly). MapReduce gère entièrement le cluster et la répartition de la charge. Cela permet de faire du calcul distribué dans un environnement Cloud. Plusieurs implémentations de ce framework dans différents langages (C++, Java, Python, etc.) et par de nombreux organismes (Google, Yahoo, etc.). séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce MapReduce : Exemple-1 Fréquences des mots dans un ensemble de documents. map(String key, String value) : // key : document name // value : document contents for each word w in value : EmitIntermediate(w, ”1”) ; reduce(String key, Iterator values) : // key : a word // values : a list of counts int result = 0 ; for each v in values : result += ParseInt(v) ; Emit(AsString(result)) ; séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce MapReduce : Exemple-1 séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce MapReduce : Exemple-2 La commande < grep Motif > La fonction Map renvoie un enregistrement s’il ”match” le motif. La fonction Reduce est la fonction identité, son rôle est juste d’écrire les valeurs intermédiaires sur la sortie. Caractéristiques 1To de données. 1800 serveurs. Les données sont découpés en 15000 morceaux d’environ 64Mo. Un seul serveur execute la reduction (afin d’avoir les résultats dans un seul fichier). séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce MapReduce : Exemple-2 La commande< grep Motif > La fonction Map renvoie un enregistrement s’il ”match” le motif. La fonction Reduce est la fonction identité, son rôle est juste d’écrire les valeurs intermédiaires sur la sortie. Performances Démarrage relativement lent dû au temps de propagation du programme (1mn). Les Maps sont tous finis au bout d’environ 80s. L’opération se termine en 150s. On atteint un pic de lecture de 30Go/s. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Introduction à MapReduce Hadoop et Mahout Hadoop Une implémentation ”open source” de MapReduce en Java, Projet Apache. Yahoo, Amazon (cloud provider) proposent MapReduce en utilisant Hadoop. Mahout Une libraire Java : implémentation de certains algorithmes basée sur Hadoop. Algorithmes de recommandation, de Data mining : k-means, classeur bayésien, réseaux de neurones, FPGrowth, etc. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Les centres mobiles : Illustration séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce K-means : Algorithme séquentiel 1 Affecter aléatoirement chaque exemple à une des k catégories s(K). 2 Calculer le centre de chaque catégorie c(k). Tantque les catégories ne sont pas stables faire 3 1 Pour chaque exemples exemple(i) faire calculer la distance entre exemple(i) et tous les autres centres c(j). trouver j* telque c(j*) soit le plus proche de exemple(i) affecter exemple(i)à la catégorie j*. Recalculer les centres des catégories changées. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce H-means : Algorithme séquentiel 1 Affecter aléatoirement chaque exemple à une des k catégories s(K). 2 Calculer le centre de chaque catégorie c(k). Tantque les catégories ne sont pas stables faire 3 1 Pour chaque exemples exemple(i) faire calculer la distance entre exemple(i) et tous les autres centres c(j). trouver j* telque c(j*) soit le plus proche de exemple(i) affecter exemple(i) à la catégorie j*. 2 Recalculer les centres des catégories changées. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Architecture MIMD Architectures : MIMD (mémoire distribué). Un ensemble de processeurs qui ”travaillent” simultanément. Chaque processeur a une mémoire. Diviser le problème en plusieurs sous-problèmes. Distribuer certaines données et dupliquer d’autres. Impliquer la communication dans le calcul. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce H-means : Algorithme parallèle 1 2 Distribuer les données de S sur p processeurs Pour chaque processeur kp ∈ {0, 1, .., p − 1} (en parallèle) Affecter aléatoirement chaque exemple dans le processeur kp à une catégorie 3 Calculer les centres (algorithme parallèle). 4 les centres ne sont pas stables les centres sont dupliqués sur les k processeurs 1 Pour chaque exemple exemle(i) dans le processeur kp Calculer les distance entre exemple(i) et tous les centres. Choisir k’ telque le centre k’ est le plus proche de l’exemple exemple(i) Affecter exemple(i) à la catégorie k’ séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Algorithme parallèle pour le calcul des centres 1 Pour chaque processeur kp ∈ {0, 1, .., p − 1} (en parallèle) 1 2 3 4 Calculer la somme partielle des exemples appartenant à la même catégorie. Envoyer la somme partielle aux autres processeurs. Recevoir la somme partielle des autres processeurs. pour chaque catégorie Effectuer la somme des sommes partielles. Diviser la somme totale par le nombre d’exemple dans la catégorie. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Implémentation de K-means sur MapReduce-1 Source : horkicky.blogspot.com séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche L’algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce Implémentation de K-means sur MapReduce-2 kmeans(data) initial centroids = pick(k, data) upload(data) writeToS3(initial centroids) old centroids = initial centroids while (true) map reduce() new centroids = readFromS3() if change(new centroids, old centroids) < delta break else old centroids = new centroids result = readFromS3() return result Source : horkicky.blogspot.com séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Les règles d’association - Définition Ensemble d’items fréquents : motif fréquent dans la base de transactions (calcul de support). minSupp est un paramètre Trouver tous les ensembles d’items fréquents de longueurs différentes. Trouver les règles d’associations à partir de l’ensemble d’items fréquents (calcul de la confiance). minConf est un paramètre. Exemple 1 Si ABCD est un ensemble d’items fréquents 2 Construire la règle AB ⇒ CD ssi support(ABCD)/support(AB) ≥ minConf séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Les règles d’association - Exemple Base de transactions 100 1 3 4 200 2 3 5 300 1 2 3 5 400 2 5 Résultats avec minSupp=2 : Items fréquents : L1 = {1, 2, 3, 5}, L2 = {13, 23, 25, 35},L3 = {235}. Règles d’association : R1 : 2 → 35 avec conf = 23 , R2 : 3 → 5 avec conf = 23 , etc. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Les règles d’association - Algorithmes Terminologie Lk est l’ensemble constitué des sous-ensembles d’items fréquents de longueur k. Ck est un ensemble constitué des sous-ensembles d’items candidats de longueur k, notons bien que Lk ⊂ Ck Propriété Soit Xk un sous-ensemble d’items fréquent, tous les sous-ensembles d’items contenus dans Xk et qui soient de longueurs inférieurs à k sont fréquents. 1 2 Si ABCD est un ensemble d’items fréquent ABC ,ABD, BCD, AB,AC ,BC ,BD,CD,A,B,C ,D les sont aussi. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Les règles d’association - Apriori Calculer L1 k ←2 TantQue Lk−1 <> φ 1 2 Ck ← apriori − gen(Lk−1 ) TantQue t ∈ D 1 2 3 4 Ct ← sousEns(Ck , t) TantQue c ∈ Ct 1 c.count++ Lk ← {c ∈ Ck |c.count ≥ minSup} k ←k +1 RETOURNER S k Lk séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Les règles d’association - Apriori - Suite L’algorithme apriori-gen, la phase joindre : 1 2 3 4 insert into Ck select p[1], p[2], ..p[k − 1], q[k − 1] from p,q Where p[1] = q[1]..p[k − 2] = q[k − 2],p[k − 1] < q[k − 1] la phase effacer 1 2 3 Si L3 = {{123}, {124}, {134}, {135}, {234}}, la phase joindre donne comme résultat C4 = {{1234}, {1345}} la phase effacer donne le résultat : C4 = {{1234} L’algorithme sousEns calcule le sous ensemble Ct ⊆ Ck , séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Implémentation de Apriori sur MapReduce -1 Map void map(void* map data) for each transaction in map data for (i = 0 ; i < candidates size ; i++) match = false itemset = candidates[i] match = itemset exists(transaction, itemset) if (match == true ) emit intermediate(itemset, one) Reduce void reduce(void* key, void** vals, int vals length) count = 0 for (i = 0 ; i < vals length ; i++) count+ = *vals[i] if ( count ≥ support level * num transactions)/100.0 emit(key, count) séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Implémentation de Apriori sur MapReduce -2 Mise à jour de la liste des candidats void update frequent candidates(void * reduce data out) j=0 length = reduce data out → length for (j = 0 ; i < length ; j++) temp candidates[j++] = reduce data out → key candidates = temp candidates séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! MapReduce et MATE -1 MapReduce (Google 2004) & Mate (W. Jiang,V.T. Ravi, G.Agrawal, Ohio State University, 2004-2009) MapReduce /* Outer Sequential Loop */ While() /* Reduction Loop */ Foreach (element e) (i, val) = Process(e) ; Sort (i,val) pairs using i Reduce to compute each RObj(i) séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! MapReduce et MATE -2 MapReduce (Google 2004) & Mate (W. Jiang,V.T. Ravi, G.Agrawal, Ohio State University, 2004-2009) Mate /* Outer Sequential Loop / While() /* Reduction Loop */ Foreach (element e) (i, val) = Process(e) RObj(i)=Reduce(RObj(i),val) ; Local combination of RObj séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! MATE : Schéma séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Description de l’algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE ! Implémentation de Apriori sur MATE reduction(void * reduction data) for each transaction ∈ reduction data for(i=0 ; i < candidatessize ;i++) match = false itemset = candidates[i] match = itemset exists(transaction, itemset) ; if (match == true ) object id= itemset.object id accumulate(object id, 0, 1) ; séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Nouvel algorithme pour la recherche des sous ensembles fréquents - 1 Appliquer l’algorithme k-means ou h-means dans le but de chercher plus efficacement les sous-ensembles fréquents Améliorer le point de départ de la recherche des sous ensembles fréquents (au lieu de partir des candidats de longueurs 1) Paramètres de l’algorithme : K : est le nombre initial de catégories (clusters) minSupp : est le support minimal pour qu’un sous-ensemble soit considéré comme fréquent. Entrées : Un ensemble de transactions : D. Sortie : La liste des sous-ensembles fréquents. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Nouvel algorithme pour la recherche des sous ensembles fréquents - 2 Structures intermédiaires Une liste appelée admis qui contiendra les sous-ensembles fréquents retenus. Une liste appelée exclus qui contiendra les sous-ensembles exclus (trouvés non fréquents). Une liste appelée candidats qui contiendra une liste (triée par ordre décroissante) de sous ensemble à tester, cette liste doit être triée Définitions Sous-ensemble localement fréquent : Li un sous-ensemble de longueur i on dit que Li est localement fréquent ssi il est fréquent dans la catégorie (ou le cluster) à laquelle il appartient. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Nouvel algorithme pour la recherche des sous ensembles fréquents - 3 Appliquer l’algorithme k-means et récupérer le k barycentres et le k catégories (ou clusters). Soit C1 , C2 , .., Ck les centres triés par leurs longueurs et à longueurs égales par leurs nombres d’occurrences dans D (par leurs supports). Initialiser la liste ”candidats” avec C1 , C2 , .., Ck . Tant que candidats n’est pas vide faire : Soit Ci le premier élément de ”candidats” : Si Ci 6∈ admis et Ci 6∈ exclu alors 1 2 3 Si Ci est localement fréquent alors mettre-à-jour-admis(Ci ), exit. Si Ci est globalement fréquent alors mettre-à-jour-admis (Ci ), exit. Sinon, mettre-à-jour-exclus(Ci ), et ajouter tous les sous-ensembles fréquents inclus dans Ci à la liste candidats séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Proposition d’un algorithme pour la recherche des sous ensembles fréquents - 4 mettre-à-jour-admis(Ci ) : ajouter à la liste admis le sous ensemble Ci et tous les sous-ensembles inclus dans Ci . mettre-à-jour-exclus(Ci ) : ajouter à la liste exclus le sous ensemble Ci et tous les sous-ensembles qui incluent Ci . séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Travaux actuels & Perspectives Travaux actuels Implémentation d’une version C++ (stage-LARIS) et une version en Java (PFE-IAD) et expérimentations. Solution au problème complétude (PFE-IAD). Implémentation de kmedoid en C# et expérimentations sur la distribution des clusters sur un ensemble de machines virtuelles (Khaled Tannir-Doctorant). Perspectives Implémentation sur MapReduce et comparaison avec : Apriori sur MapReduce. FPGrowth proposé dans Mahout. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce Cloud Computing et MapReduce Parallélisation de l’algorithme K-means Parallélisation de l’algorithme Apriori Notre approche Bibliographie I Rakesh Agrawal and Ramakrishnan Srikant. Fast algorithms for mining association rules in large databases. In VLDB, pages 487–499, 1994. Cheng-Tao Chu, Sang Kyun Kim, Yi-An Lin, YuanYuan Yu, Gary R. Bradski, Andrew Y. Ng, and Kunle Olukotun. Map-reduce for machine learning on multicore. In NIPS, pages 281–288, 2006. Jeffrey Dean and Sanjay Ghemawat. Mapreduce : Simplified data processing on large clusters. In OSDI, pages 137–150, 2004. Wei Jiang, Vignesh T. Ravi, and Gagan Agrawal. A map-reduce system with an alternate api for multi-core environments. In CCGRID, pages 84–93, 2010. Sean Owen, Robin Anil, Ted Dunning, and Ellen Friedman. Mahout in Action. Manning Publications, 1 edition, January 2011. Weizhong Zhao, Huifang Ma, and Qing He. Parallel k-means clustering based on mapreduce. In CloudCom, pages 674–679, 2009. séminaire de recherche@LARIS Fouille de données parallèle et MapReduce