parallel and distributed association mining: a survey cappellazzo pietro 809652 carminati roberto...
TRANSCRIPT
Parallel and Distributed Association Mining:
A Survey
Cappellazzo Pietro 809652
Carminati Roberto 814930
Approfondimento per il corso di Calcolo Parallelo A.A. 2006 - 2007
Docente: Orlando Salvatore
OBBIETTIVO:
estrarre informazioni utili da una grande mole di dati
Una delle attività più importanti di questo processo è
l’ ARM: associaton rule mining
che consiste nell’identificare frequenze, collegamenti, correlazioni,
causalità tra insieme di item in database transazionali.
Introduzione: Cos’è il Data Mining
Regole Associative
Scopo dell’ARM: trovare tutte le regole che correlano la presenza di un
insieme di articoli con quello di un altro insieme di articoli
Dati: D un database di transazioni I un insieme di item distinti T una transazione ( TI )
Una regola associativa ha la forma AB dove:
A I, B I, A∩B=ø
Regole Associative
ESEMPIO: gli acquisti fatti da vari clienti sono memorizzati come
transazione nel database di un negozio.
Esempio di regola associativa:
Diaper Beer
Misure associate alle regole
Dato un database di transazioni e una regola associativa XZ, si definisce:
Supporto: la probabilità che una transazione del database
contenga sia X che Z:
Sup (X Z ) = Probabilità(X Z ) Confidenza:
la probabilità condizionale che una transazione che include X contenga anche Z:
Conf (X Z ) = Probabilità(Z | X )
ESEMPIO:
Dove σ(x) è il numero di transazioni nel database checontengono X.
Misure associate alle regole
Frequent Itemset
Un passo chiave dell’association mining consiste nel
trovare gli insiemi frequenti:
Frequent Itemset: insieme di item che hanno supporto maggiore di una soglia prefissata: min_sup.
Se {AB} è un frequent itemset allora sia A che B sono frequenti.
Sia I un Itemset, se un sottoinsieme di I non è frequente allora neanche I lo è.
Ricercare i frequent itemset
L’algoritmo sequenziale più diffuso è Apriori basato sulle proprietà dei frequent itemset, in particolare:
Ogni sottoinsieme di un itemset frequente deve essere frequente.
Fasi Principali:
1. Ricerca di tutti i frequent itemset Li dove i indica la dimensione.
2. Generazione delle regole associative dai precedenti L i.
Algoritmo Apriori
Processo iterativo partendo da candidati Ck ottiene i relativi Frequent itemset Lk:
1) GenStep: Generazione di candidati Ck+1 da Lk, facendo il join di Lk con se stesso e prendendo solo gli itemset di lunghezza k+1, che contengono item distinti.
2) Per ogni transazione T del database si incrementa il contatore di tutti i candidati contenuti.
3) PruneStep: Vengono selezionati solo i candidati frequenti.
In Output Apriori restituisce I frequent itemset Fk trovati
(singoli o a coppie, triple,...)
Algoritmo Apriori
ESEMPIO: (min_sup=2)
Algoritmo Apriori
Possibili soluzioni: Velocizzare la ricerca dei candidati memorizzandoli in Hash Tree
Applico una funzione hash sul valore degli item. Nodi foglia contengono una lista di itemset. Funzione di subsetting per trovare i candidati contenuti in una
transazione visitando l’hash tree.
ECCESSIVI ACCESSI AL DATABASE
Problemi: Contare i candidati può essere
problematico: Numero di candidati potrebbe essere
enorme. Una transazione può contenere molti
candidati.
Algoritmi Paralleli
Ulteriori Problemi: Numero di transizioni in un dataset molto grande . Per valori piccoli di supporto minimo si ottengono
molti candidati.
Soluzione: Per migliorare le prestazioni si possono utilizzare
varianti dell’algoritmo Apriori che sfruttano le computazioni in parallelo.
Benefici e obbiettivi degli algoritmi paralleli
Benefici: Scalabilità in rapporto alla dimensione dei dati. Miglioramento del tempo di risposta del sistema.
Obbiettivi: Minimizzare comunicazioni e sincronizzazioni. Bilanciamento del carico. Trovare la giusta decomposizione dei dati. Minimizzare l’accesso I/O.
Algoritmi Paralleli
La maggior parte degli algoritmi attuali (ARM parallel) sfruttano queste caratteristiche:
Bilanciamento del carico statico Avviene in modo statico perché si partiziona all’inizio il
database fra i nodi disponibili.
Memoria distribuita Per la scalabilità del sistema, altrimenti limitata dal bus.
Data Parallelism/Task Parallelism/Hybrid Parallelism
Data parallelism vs Task parallelism
Data Parallelism Il database è partizionato fra i processori
disponibili.
Task Parallelism I processori eseguono calcoli indipendenti. Hanno bisogno di accedere a tutto il database.
Hybrid Parallelism Combina data e task parallelism.
Distributed Memory ARM
Per accedere alle altre memorie presenti nel sistema è necessario
utilizzare Message Passing
Scalabilità a scapito della facilità di programmazione
Count Distribution (Data Parallelism)
È una semplice parallelizzazione di Apriori dove:
Il database viene partizionato in base ai P processori disponibili.
Tutti i processori possiedono l’intero hash tree dei candidati.
Ogni processore così può aumentare i contatori in base alla sua partizione locale del database.
Avviene la riduzione globale scambiando i contatori locali con tutti i processori.
Count Distribution - Algoritmo -
Nel primo passo (K=1)
Pi dinamicamente genera il proprio candidate itemset Ci1,dai valori
presenti nella partizione di database locale Di.
Nei passi successivi (k>1)
1. Ogni processore Pi genera il Ck completo usando Lk-1 (il frequent itemset precedentemente calcolato).
2. Ogni Pi conta i candidati presenti in Ck utilizzando la propria parte di Database.
3. Ogni Pi scambia i contatori locali con tutti gli altri processori, in questo step viene forzata la sincronizzazione, si genera quindi il Ck globale.
4. Ogni processore Pi compie la fase di pruning e genera Lk.
Count Distribution
Il database viene partizionato.
Si effettua il conteggio (Parziale).
Ci si scambiano i contatori.Si eseguono le fasi di pruning e join.
Count Distribution Miglioramenti rispetto alla soluzione
sequenziale: Tempo per transazione invariato rispetto all’algoritmo
sequenziale. Ogni processore lavora su N/p transazioni (N transazioni
totali, p processori). Tempo totale diminuisce di un fattore pari a p.
Problemi: Non vengono partizionati i candidati. Bassa scalabilità all’aumentare degli items. Non si sfrutta efficacemente la memoria aggregata.
Data Distribution(Task Parallelism)
Viene sfruttata tutta la memoria aggregata del sistema: Si partiziona sia il database che l’insieme dei candidati
in modalità round robin. Ogni processore deve poter accedere a tutto il
database (sia partizione locale che partizioni remote) in tutte le iterazioni (Data Broadcast).
Overhead di comunicazioni elevato
Data Distribution - Algoritmo -
Nel primo passo (K=1) come in Count Distribution:
Pi dinamicamente genera il proprio candidate itemset Ci1,dai valori
presenti nella partizione di database locale Di.
Nei passi successivi (k>1)
1. Ogni processore Pi genera il Ck usando Lk-1 (il frequent itemset precedentemente calcolato). Ogni processore Pi manterrà solo N/P itemset che formano l’insieme Ck, questo sarà chiamato Ci
k. La scelta di quali itemset mantenere avviene in maniera roud robin. L’unione di tutti i Ci
k darà Ck.
2. Ogni Pi conta i candidati presenti in Cik utilizzando la propria parte di
Database e quella ottenuta dagli altri.
3. Ogni Pi calcolerà il propriol Lik usando il Ci
k locale. L’unione di tutti gli Lik darà
Lk.
4. Ogni processore Pi scambia il proprio Lik con ogni altro processore per
determinare Lk globale e poter procedere con il prossimo passo. In questo step è richiesta la sincronizzazione di tutti i processori.
Data Distribution
Ogni processo per effettuare il conteggio della propria partizione di canditati ha bisogno di leggere sia le informazioni locali che quelle remote.
Al termine di ogni step è necessaria una sincronizzazione per determinare il frequent itemset globale .
Data Distribution MIGLIORAMENTI RISPETTO APRIORI SEQUENZIALE:
Il numero dei candidati per processore viene ridotto di un fattore P.
Numero medio dei nodi foglia in un hash tree locale viene ridotto in base al numero di processori.
Riduzione del tempo di transazione di un fattore pari a P.
MIGLIORAMENTO RISPETTO A COUNT DISTRIBUTION: Sfruttamento della memoria aggregata. Riduzione del tempo di transazione.
PROBLEMI: Questo algoritmo soffre dell’overhead di comunicazioni che
genera e ha nella pratica prestazioni inferiori rispetto a Count Distribution.
Candidate Distribution(Task Parallelism) I precedenti algoritmi hanno bisogno di una
sincronizzazione al termine di ogni iterazione, questo può comportare uno sbilanciamento del carico.
Per evitare questo l’algoritmo Candidate Distribution, tramite un euristica basata sul supporto, partiziona candidati, in modo che il carico sia bilanciato.
Contemporaneamente il database viene replicato selettivamente, ogni processore può quindi continuare a lavorare in modo indipendente.
Candidate Distribution
Prima di iniziare l’algoritmo vero e proprio viene determinato un passo l, in modo euristico, dal quale tutti i processori lavoreranno in modo indipendente.
Alla fine di ogni passo ogni processore invia i risultati ottenuti in modo asincrono.
Se questi vengono ricevuti dagli altri in tempo vengono utilizzati, altrimenti saranno utilizzati nei passi successivi.
Candidate Distribution - Algoritmo -
Nei passi iniziali (K<l) viene utilizzato Count oppure Data Distribution.
Nel passo (k=l)
1. Lk-1 viene partizionato fra tutti gli N processori in modo che siano “well balanced”.
2. Pi genera Cik utilizzando solamente la propria parte di Lk-1 .
3. Ogni Pi determinerà quindi il conteggio globale per Cik.Per fare questo
contemporaneamente al conteggio il database Di sarà ridistribuito.
4. Ogni processore Pi scambia il prorio Lik con ogni altro processore in modo
asincrono, necessari per poter formare l’insieme Cik+1.
Candidate Distribution - Algoritmo -
Nei passi successivi (k>l)
1. Ogni processore Pi colleziona tutti i frequent itemset ricevuti dagli altri e li utilizza nella fase di prunig (non è necessario attendere tutti i risultati). Questa fase determina anche il bilanciamento del carico: ai processori che hanno inviato prima i risultati vengono affidati più candidati.
2. Ogni Pi determinerà quindi Cik utilizzando Li
k-1 locale.
3. Ogni Pi a questo punto effettuerà il conteggio utilizzando il proprio Di e determinerà Li
k locale, inviandolo in modo asincrono a tutti i processori.
PROBLEMI: La ridistribuzione del database è un operazione molto
costosa, questo fa sì che le prestazioni siano peggiori di quelle date da Count Distribution..
Confronto delle prestazioni fraCount/Data/Candidate Distribution
D: Numero medio di transazioni.
I: Dimensione media del frequent itemset.
T: Lunghezza media delle transazioni.
Res
po
nse
Tim
e
Approcci simili Sono state implementati, indipendentemente dagli algoritmi presentati,
alcuni algoritmi molto simili di cui diamo solo una breve introduzione:
Non Partitioned Apriori (NPA) Essenzialmente uguale a Count Distribution. Unica differenza la riduzione finale avviene su un processore “master”.
Simply Partitioned Apriori (SPA) Corrisponde esattamente a Data Distribution.
Hash Partitioned Apriori (HPA) Simile a Candidate Distribution. Differenza il database non viene replicato selettivamente, ad ogni passo i
candidati C vengono generati e inviati ai processori secondo una funzione hash.
E’ difficile che ogni processore riceva un numero uguale di candidati, inoltre il volume di comunicazione è molto maggiore di DD.
Ottimizzazioni Consideriamo ora alcune varianti dell’algoritmo Data
Distribution visto in precedenza, che ne ottimizzano la scalabilità e ne riducono le comunicazioni:
Data Distribution
Intelligent Data Distribution
Hybrid Distribution
Count Distribution
Intelligent Data Distribution
L’idea è quella di ridurre le comunicazioni eseguite da Data Distribution (All to All broadcast): Ogni processore invia dati a quello di destra e riceve da quello di
sinistra (Ring Based all-to-all broadcast). Partizionamento intelligente dei candidati basato sul prefisso
degli itemset (primo elemento). Ogni processore ha una bitmap (“bitmask”) che tiene traccia dei
candidati locali. Pruning iniziale grazie alla bitmask. Una transazione viene analizzata solo se contiene item rilevanti
(con un certo prefisso). Ogni processore ha un fattore P di candidati.
Intelligent Data Distribution
Intelligent Data Distribution
Miglioramenti rispetto a DD :
Ridotto il lavoro ridondante.
Se numero totale dei candidati è sotto una certa soglia (= sta in memoria) si comporta come Count Distribution.
Buon bilanciamento del carico.
Hybrid Distribution
Combina Count Distribution e Intelligent Data Distribution Processori vengono partizionati in gruppi
(superprocessore). La Count Distribution è usata dai superprocessori. L’Intelligent Data Distribution è invece utilizzata
all’interno dei superprocessori (tra i processori). Inoltre il numero di superprocessori è modificato
dinamicamente ad ogni passo.
Hybrid Distribution
Hybrid Distribution
Vantaggi:
Le comunicazioni sono ridotte di 1/G (dove G è il numero di superprocessori).
Load balancing specialmente nelle ultime iterazioni.
Prestazioni simili a IDD, ma molto più scalabile.
Confronto delle prestazioni fraCD DD IDD HD - Scalabilità -
Confronto delle prestazioni fraCD IDD HD – Aumento dei dati-
Confronto delle prestazioni fraCD IDD HD
Altre Soluzioni PDM
Formulazione parallela basata su hashing dell’algoritmo DHP (Direct Hashing and Pruning), una forma di Apriori che utilizza una tecnica di hashing per filtrare itemset e che riduce ad ogni passo il size del db delle transazioni (più efficiente nel generare candidati).
Fast Distributed Mining (FDM) Ottimizzato per l’ambiente distribuito (comunicazioni molto più
lente). Si basa su Count Distribution. Propone nuove tecniche per ridurre il numero di candidati
MINORI COMUNICAZIONI.
Fast Parallel Mining Versione parallela di FDM.
Shared Memory ARM
Questi algoritmi non hanno avuto una grande attenzione nella letteratura ARM, ma ultimamente con l’avvento di multiprocessori desktop stanno diventando sempre più importanti.
Processori condividono la memoria di sistema, gli accessi sono diretti e omogenei
Facilità di programmazione a scapito della scalabilità limitata dal Bus
CCPD e PCCD • CCPD (Common Candidate Partitioned Database):
Basato su Apriori usa un approccio di tipo Data Parallel.• Il Database viene diviso in parti di dimensioni uguali su ogni
processore.• Viene parallelizzata la fase di generazione dell’hash tree
contenente i candidati, che viene condiviso (utilizzando dei lock).
• PCCD (Partitioned Candidate Common Database): Simile a CCPD ma con approccio Task parallel.• L’albero dei candidati viene costruito in modo separato da ogni
processore.• Ogni processore per ottenere il supporto del proprio insieme di
candidati deve scansionare l’intero DB→gravi problemi di overhead.
• ALTA DIMENSIONALITÁ• I metodi visti possono trattare poche migliaia di item o di dimensioni ridotte
perché non può essere ridotta la complessità quadratica della seconda iterazione (conteggio della frequenza di 2-itemset).
• Possibili soluzioni: metodo che enumera solo pattern massimali, utilizzo di pruning hash-based.
• DIMENSIONE DEL DATABASE• Possono essere trattati dati solo nell’ordine di decine di GB.• Impossibile trovare tutti gli itemset frequenti in un solo passo.• I candidati non possono stare in memoria.• Possibile soluzione: tecniche di parallel-join.
• DISTRIBUZIONE LOGICA E FISICA DEI DATI• La maggior parte degli algoritmi trattano partizionamento orizzontale dei
database distribuiti (ogni sito ha diverse transazioni) e non verticale (ogni sito ha diversi item).
Problemi Aperti
• ASIMMETRIA DEI DATI• La maggior parte degli algoritmi ha bisogno di asimmetria dei dati.• È necessaria simmetria per applicare il pruning globale.
• BILANCIAMENTO DEL CARICO DINAMICO• Tutti gli algoritmi esistenti utilizzano bilanciamento statico, basato su iniziale
scomposizione dei dati.• Assumono un ambiente dedicato e omogeneo poco reale.
• SCOPERTE DELLE REGOLE ASSOCIATIVE• Ci si concentra sulla scoperta di (pochi) itemset frequenti.• Assunzione errata: in realtà possono essere milioni.• Necessario prestare attenzione al processo di generazione delle regole.
• GENERALIZZAZIONE DI REGOLE ASSOCIATIVE• Quantitative association mining.• Multiple-level mining.
Problemi Aperti
Bibliografia
M.J. Zaki. Parallel and Distributed Association Mining: A survey. IEEE Concurrency, Vol. 7, no. 4, 1999.
E. Han, G. Karypis, and V. Kumar. Scalable Parallel Data Mining for Association Rules. IEEE Transactions on Knowledge and Data Engineering. 2000. Vol. 12, n. 3, 2000.
R. Agrawal and J. Shafer. Parallel mining of association rules. IEEE Trans. on Knowledge and Data Engg., 8(6):962--969, December 1996.
S. Orlando Association mining slide per il corso Data Minig. Università Ca’ Foscari Venezia.