Parallel Frequent Set Counting Progetto del corso di Calcolo Parallelo AA 2001-02 Salvatore Orlando CALCOLO PARALLELO - S. 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 CALCOLO PARALLELO - S. Orlando 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 CALCOLO PARALLELO - S. Orlando 3 Esempio Esempio: TID 1 2 3 4 5 {Pannolini,Latte} ⇒s,c Birra Items Pane, Latte Birra, Pane, Pannolini, Uova Birra, Coca, Pannolini, Latte Birra, Pane, Pannolini, Latte Coca, Pane, Pannolini, Latte Association rule: X⇒s,c y Support: s =σ(X∪y) / |T| Confidence: c = σ(X∪y) / σ(X) 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}) La confidenza è una probabilità condizionata c=P({Pannolini,Latte, Birra} | {Pannolini,Latte}) CALCOLO PARALLELO - S. Orlando 4 Complessità computazionale esponenziale • • • Dati n transazioni e m differenti item: – numero di pattern potenzialmente frequenti: O(2m) – complessità computazionale: O(n2m) • 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 CALCOLO PARALLELO - S. Orlando 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 CALCOLO PARALLELO - S. Orlando 6 Illustriamo il principio di Apriori m Senza pruning |Ci| = i |C1| = 6 |C2| = 15 |C1| = 20 Con pruning: 6+6+2=14 CALCOLO PARALLELO - S. Orlando 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 CALCOLO PARALLELO - S. Orlando 8 Prima iterazione di Apriori • • • • m: D: t: F1: gli identificatori numerici associati agli item vanno da 1 a m file delle transazioni generica transazione set dei set frequenti di lunghezza 1 CALCOLO PARALLELO - S. Orlando 9 Loop principale • Ck: • itemset candidati di lunghezza k L’algoritmo Apriori termina all’iterazione k se non si individuano itemset frequenti, oppure se non si trovano candidati CALCOLO PARALLELO - S. Orlando 10 Generazione dei candidati con pruning • • • Gli itemset in Fk e Ck sono ordinati c ∈ Ck se e solo se tutti i k-1-itemset c’ ⊂ c appartengono a Fk-1 Condizione necessaria affinché un k-itemset c possa appartenere a Ck – se esiste una coppia di itemset di Fk-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 Fk-1 CALCOLO PARALLELO - S. Orlando 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 • Fk e Ck come vettori di itemset – Vettori ordinati lessicograficamente – Ordinamento di Fk-1 utile per rendere più efficiente la costruzione di Ck • Più semplice individuare prefissi – Ordinamento di Ck utile per rendere più efficiente la ricerca dei candidati, e quindi la fase di conteggio CALCOLO PARALLELO - S. Orlando 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={t0, t1, t2, …. ,tz-1 }, z = |t| – i 2-prefix dei possibili k-itemset ordinati presenti in t • coppie ordinate (I0,I1), dove I0 ∈ t e I1 ∈ t • se I1 = tj 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 (I0,I1) non può essere un 2-prefix ammissibile CALCOLO PARALLELO - S. Orlando 13 Ordinamento e conteggio: subset_and_count(Ck, t) Tail di t Ck Counts t={t0, t1, t2, t3, …. ,tz-1} I0 • I1 Per ogni (I0, I1) Segmento di Ck con uno stesso 2-prefix (I0, I1) – Effettua una ricerca binaria su Ck per individuare l’inizio del segmento composto da candidati (k-itemset) con prefisso: (I0, I1) – Scorri sequenzialmente il segmento per controllare se ciascun candidato è un sottoinsieme di Tail di t, e aggiorna eventualmente i contatori associati CALCOLO PARALLELO - S. Orlando 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 CALCOLO PARALLELO - S. Orlando 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 Ck Ogni processore aggiorna i suoi contatori locali Riduzione globale per determinare il valore dei contatori • NOTA: Se Ck è troppo grande rispetto alla memoria, possono essere necessari scan multipli del database CALCOLO PARALLELO - S. Orlando 16 Count Distribution (esempio iterazione 2) CALCOLO PARALLELO - S. Orlando 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’ Fk globale, necessario per costruire Ck+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 • • • CALCOLO PARALLELO - S. Orlando 18 Data Distribution (DD) CALCOLO PARALLELO - S. Orlando 19 CALCOLO PARALLELO - S. Orlando 20 Data Distribution (DD) 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 CALCOLO PARALLELO - S. Orlando 21