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 maria.malek@eisti.fr
1 Cloud Computing et MapReduce Introduction à MapReduce 2 L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 3 Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! 4
Cloud Computing Introduction à MapReduce 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.
MapReduce Cloud Computing et MapReduce Introduction à 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.
MapReduce : Schéma Introduction à MapReduce
MapReduce : Caractéristiques Introduction à MapReduce 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.).
MapReduce : Exemple-1 Introduction à MapReduce 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)) ;
MapReduce : Exemple-1 Introduction à MapReduce
MapReduce : Exemple-2 Introduction à MapReduce 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).
MapReduce : Exemple-2 Introduction à MapReduce 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.
Hadoop et Mahout Introduction à MapReduce 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.
Les centres mobiles : Illustration 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 L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 1 Affecter aléatoirement chaque exemple à une des k catégories s(k). 2 Calculer le centre de chaque catégorie c(k). 3 Tantque les catégories ne sont pas stables faire 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.
H-means : Algorithme séquentiel L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 1 Affecter aléatoirement chaque exemple à une des k catégories s(k). 2 Calculer le centre de chaque catégorie c(k). 3 Tantque les catégories ne sont pas stables faire 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.
Architecture MIMD L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 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.
H-means : Algorithme parallèle L algorithme k-means : version séquentielle Implémentation de K-means avec une architecture MIMD Implémentation de K-means sur MapReduce 1 Distribuer les données de S sur p processeurs 2 Pour chaque processeur k p {0, 1,.., p 1} (en parallèle) Affecter aléatoirement chaque exemple dans le processeur k p à une catégorie 3 Calculer les centres (algorithme parallèle). les centres sont dupliqués sur les k processeurs 4 les centres ne sont pas stables 1 Pour chaque exemple exemle(i) dans le processeur k p 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
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 k p {0, 1,.., p 1} (en parallèle) 1 Calculer la somme partielle des exemples appartenant à la même catégorie. 2 Envoyer la somme partielle aux autres processeurs. 3 Recevoir la somme partielle des autres processeurs. 4 pour chaque catégorie Effectuer la somme des sommes partielles. Diviser la somme totale par le nombre d exemple dans la catégorie.
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
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
Les règles d association - Définition Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! 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
Les règles d association - Exemple Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! 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 : L 1 = {1, 2, 3, 5}, L 2 = {13, 23, 25, 35},L 3 = {235}. Règles d association : R 1 : 2 35 avec conf = 2 3, R 2 : 3 5 avec conf = 2 3, etc.
Les règles d association - Algorithmes Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Terminologie L k C k est l ensemble constitué des sous-ensembles d items fréquents de longueur k. est un ensemble constitué des sous-ensembles d items candidats de longueur k, notons bien que L k C k Propriété Soit X k un sous-ensemble d items fréquent, tous les sous-ensembles d items contenus dans X k et qui soient de longueurs inférieurs à k sont fréquents. 1 Si ABCD est un ensemble d items fréquent 2 ABC,ABD, BCD, AB,AC,BC,BD,CD,A,B,C,D les sont aussi.
Les règles d association - Apriori Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! Calculer L 1 k 2 TantQue L k 1 <> φ 1 C k apriori gen(l k 1 ) 2 TantQue t D 1 C t sousens(c k, t) 2 TantQue c C t 1 c.count++ 3 L k {c C k c.count minsup} 4 k k + 1 RETOURNER k L k
Les règles d association - Apriori - Suite Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! L algorithme apriori-gen, la phase joindre : 1 insert into C k 2 select p[1], p[2],..p[k 1], q[k 1] 3 from p,q 4 Where p[1] = q[1]..p[k 2] = q[k 2],p[k 1] < q[k 1] la phase effacer 1 Si L 3 = {{123}, {124}, {134}, {135}, {234}}, 2 la phase joindre donne comme résultat C 4 = {{1234}, {1345}} 3 la phase effacer donne le résultat : C 4 = {{1234} L algorithme sousens calcule le sous ensemble C t C k,
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)
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
MapReduce et MATE -1 Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! 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)
MapReduce et MATE -2 Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE! 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
MATE : Schéma Cloud Computing et MapReduce Description de l algorithme Apriori Implémentation de Apriori sur MapReduce Implémentation de Apriori sur MATE!
Implémentation de Apriori sur MATE Description de l algorithme Apriori Implémentation de Apriori sur MapReduce 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) ;
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.
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 : L i un sous-ensemble de longueur i on dit que L i est localement fréquent ssi il est fréquent dans la catégorie (ou le cluster) à laquelle il appartient.
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 C 1, C 2,.., C k 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 C 1, C 2,.., C k. Tant que candidats n est pas vide faire : Soit C i le premier élément de candidats : Si C i admis et C i exclu alors 1 Si C i est localement fréquent alors mettre-à-jour-admis(c i ), exit. 2 Si C i est globalement fréquent alors mettre-à-jour-admis (C i ), exit. 3 Sinon, mettre-à-jour-exclus(c i ), et ajouter tous les sous-ensembles fréquents inclus dans C i à la liste candidats
Proposition d un algorithme pour la recherche des sous ensembles fréquents - 4 mettre-à-jour-admis(c i ) : ajouter à la liste admis le sous ensemble C i et tous les sous-ensembles inclus dans C i. mettre-à-jour-exclus(c i ) : ajouter à la liste exclus le sous ensemble C i et tous les sous-ensembles qui incluent C i.
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.
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.