Parallel Frequent Set Counting Progetto del corso di Calcolo Parallelo AA 2001-02 Salvatore Orlando 1 Cosa significa association mining? Siano dati un insieme di item un insieme di transazioni, ciascuna contenete un sottoinsieme di item Vogliamo trovare regole/associazioni del tipo: if I1 then I2 (sup, conf) dove: I1, I2 sono insieme di item (itemset) I1, I2 hanno un sufficiente supporto: P(I1+I2) = sup La regola associativa ha sufficiente confidenza: P(I2 I1) = conf 2
Association mining L utente specifica l interesse delle regole: Minimum support (minsup) Minimum confidence (minconf) 1. Frequent Set Countint (FSC): Trova tutti gli itemset frequenti (> minsup) Spazio di ricerca esponenziale Molto costoso sia per quanto riguarda Computazione e I/O 2. Genera regole Solo regole associative forti (> minconf) Passo poco costoso 3 Esempio TID Items 1 Pane, Latte 2 Birra, Pane, Pannolini, Uova 3 Birra, Coca, Pannolini, Latte 4 Birra, Pane, Pannolini, Latte 5 Coca, Pane, Pannolini, Latte Association rule: X s,c y Support: s =σ(x y) / T Esempio: {Pannolini,Latte} s,c Birra s = σ({pannolini,latte, Birra}) / Tot_trans = = 2/5 = 0.4 = 40% c = σ({pannolini,latte, Birra}) / σ({pannolini,latte}) = = 2/3 = 0.66 Il supporto è la probabilità che un certo itemset appaia nelle transazioni del dataset. s=p({pannolini,latte, Birra}) Confidence: c = σ(x y) / σ(x) La confidenza è una probabilità condizionata c=p({pannolini,latte, Birra} {Pannolini,Latte}) 4
Complessità computazionale esponenziale Dati n transazioni e m differenti item: numero di pattern potenzialmente frequenti: O(2 m ) complessità computazionale: O(n2 m ) Apriori: ricerca di tutti i pattern frequenti, basato su vincoli di supporto minimo [Agarwal & Srikant]: 6HLOSDWWHUQ^$%`KDXQVXSSRUWRGLDOPHQR.DOORUDVLD$HB hanno XQVXSSRUWRGLDOPHQR. 6H$RSSXUH%KDQQRXQVXSSRUWRPLQRUHGL.DOORUD^$%`KDQQRun VXSSRUWRPLQRUHGL. - usa i pattern frequenti di k-1 item per ridurre lo spazio di ricerca dei pattern lunghi k - itera il procedimento 5 Apriori (Frequent Set Counting) Colleziona i conteggi degli item singoli seleziona solo gli item più frequenti Individua le coppie candidate ed effettua i conteggi seleziona solo le coppie più frequenti Individua le triple candidate ed effettua i conteggi seleziona solo le triple più frequenti E così via Principio guida: tutti i sottoinsiemi di un itemset frequente sono anch essi frequenti Questo principio è usato da Apriori per effettuare il pruning dei candidati 6
Illustriamo il principio di Apriori m Senza pruning C i = i C 1 = 6 C 2 = 15 C 1 = 20 Con pruning: 6+6+2=14 7 Contare gli itemset frequenti Gli itemset frequenti sono individuati contando quanti candidati appaiono in ciascuna delle transazioni del database Per velocizzare il conteggio, bisogna velocizzare la ricerca dei vari candidati all interno di ciascuna transazione Esistono vari metodi, che fanno affidamento dell ordinamento degli item all interno delle transazioni e degli itemset Item rappresentati tramite identificatori numerici 8
Prima iterazione di Apriori m: gli identificatori numerici associati agli item vanno da 1 a m D: file delle transazioni t: generica transazione F 1 : set dei set frequenti di lunghezza 1 9 Loop principale C k : itemset candidati di lunghezza k L algoritmo Apriori termina all iterazione k se non si individuano itemset frequenti, oppure se non si trovano candidati 10
Generazione dei candidati con pruning Gli itemset in F k e C k sono ordinati c C k se e solo se tutti i k-1-itemset c c appartengono a F k-1 Condizione necessaria affinché un k-itemset c possa appartenere a C k se esiste una coppia di itemset di F k-1 che con c condividano un identico prefisso di k-2 elementi La condizione diventa sufficiente se tutti i sottoinsiemi di k-1 elementi di c appartengono a F k-1 11 Ordinamento Item come numeri Transazioni a formato variabile ciascuna transazione è una lista di interi ordinati in maniera crescente Itemset (itemset sia candidati e sia frequenti) ordinati F k e C k come vettori di itemset Vettori ordinati lessicograficamente Ordinamento di F k-1 utile per rendere più efficiente la costruzione di C k Più semplice individuare prefissi Ordinamento di C k utile per rendere più efficiente la ricerca dei candidati, e quindi la fase di conteggio 12
Ordinamento e conteggio L ordinamento degli item può essere sfruttata per determinare i candidati contenuti in una certa transazione Vengono usate strutture dati complesse per memorizzare i candidati e velocizzare la ricerca Hash-tree o Prefix-tree Vogliamo qui suggerire un metodo più semplice da implementare Sia data una transazione ordinata t={t 0, t 1, t 2,.,t z-1 }, z = t i 2-prefix dei possibili k-itemset ordinati presenti in t coppie ordinate (I 0,I 1 ), dove I 0 t e I 1 t se I 1 = t j allora in t esistono al massimo z-j-1 item che possono essere usati per costruire un k-itemset contenuto in t quindi, se z-j-1 < k-2, allora (I 0,I 1 ) non può essere un 2-prefix ammissibile 13 Ordinamento e conteggio: subset_and_count(c k, t) Tail di t t={t 0, t 1, t 2, t 3,.,t z-1 } C k Counts I 0 I 1 Per ogni (I 0, I 1 ) Effettua una ricerca binaria su C k per individuare l inizio del segmento composto da candidati (k-itemset) con prefisso: (I 0, I 1 ) Scorri sequenzialmente il segmento per controllare se ciascun candidato è un sottoinsieme di Tail di t, e aggiorna eventualmente i contatori associati Segmento di C k con uno stesso 2-prefix (I 0, I 1 ) 14
Tecniche di parallelizzazione Consideriamo che Il Dataset può essere grande (elaborazione su disco) Per valori piccoli di minsup si ottengono molti candidati Data parallelism Partiziona il Database di Transazioni Partiziona i Candidati 15 Count Distribution (CD) Partiziona il Database di Transazioni Replica i candidati e conta in maniera distribuita Approccio noto come Count Distribution (CD) Ogni processore ha il completo insieme di candidati C k Ogni processore aggiorna i suoi contatori locali Riduzione globale per determinare il valore dei contatori NOTA: Se C k è troppo grande rispetto alla memoria, possono essere necessari scan multipli del database 16
Count Distribution (esempio iterazione 2) 17 Data Distribution (DD) Partiziona non solo il Database, ma anche i Candidati Ogni partizione dei candidati deve essere confrontata con l intero Dataset Partizioni dei dati comunicati fra tutti i processori Comunicazione finale per conoscere l F k globale, necessario per costruire C k+1 Alto costo di comunicazione Approccio utile quando i candidati diventano troppi e non possono essere mantenuti in memoria Anello per comunicare le partizioni tra i processori Shift sull anello e ed conteggio rispetto alla partizione remota ricevuta Tanti shift quanti sono i processori Possibile overlapping tra calcolo e comunicazione 18
Data Distribution (DD) 19 Data Distribution (DD) 20
Cluster di WS Architettura adatta per questo tipo di problema, in quanto le comunicazioni introdotte da questo algoritmo sono limitate Dischi multipli, utili per contenere i dati in ingresso / uscita dell algoritmo di FSC Di sotto, abbiamo illustrato due modi di configurare il cluster Shared Nothing Shared Disk Considerare anche il load balancing Architetture eterogenee, o multiprogrammate 21