La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Mining Frequent patterns without Candidate Generation De Faveri Alessandro Matricola 795135.

Presentazioni simili


Presentazione sul tema: "Mining Frequent patterns without Candidate Generation De Faveri Alessandro Matricola 795135."— Transcript della presentazione:

1 Mining Frequent patterns without Candidate Generation De Faveri Alessandro Matricola

2 Lassociation mining Trova le associazioni tra insiemi di articoli (items) in database transazionali. Dallanalisi delle transazioni crea regole del tipo: Body head [supporto, confidenza] Esempio: –age(x, ) ^ income(x, K) buys(x, PC) [1%, 75%]

3 Analisi dei dati Data la regola: X Y Supporto: –è la probabilità che un certo itemset appaia nelle transazioni del database. –Probabilità che una transazione contenga (X Y). –Si misura come rapporto tra le transazioni che contengono (X Y) sul numero totale di transazioni. σ(X Y) / |T| Confidenza: –è la probabilità condizionale che una transazione che include X includa anche Y. –Si misura come rapporto tra le transazioni che contengono (X Y) sulle transazioni che contengono Y. σ(X Y) / σ(X)

4 Esempio 1 TIDItems 1A,C 2B,C 3A,E 4B,C,E 5A,B,C,E 6B,E 7B,C Regola: B E Supporto: 3/7 = 43% Confidenza: 3/5 = 60%

5 Principio Apriori B71% C E57% B,C57% Ogni sottoinsieme di un itemset frequente deve essere frequente Se il supporto minimo è 50% troviamo gli itemset frequenti nellesempio precedente.

6 Algoritmo Apriori - 1 L 1 = {frequent items}; for (k = 1; L k != ; k++) do begin C k+1 = candidates generated from L k ; for each transaction t in database D do increment the count of all candidates in C k+1 that are contained in t L k+1 = candidates in C k+1 with min_support end return k L k ; C k : itemset di lunghezza k (candidati). L k: itemset frequenti di lunghezza k. Lalgoritmo si compone di due passi: –Gen step (candidate set generation) –Prune step (test)

7 Esempio 2 Min_support = 2 Database D: itemsetSupporto A2 B3 C3 D1 E3 TIDITEMS 1A C D 2B C E 3A B C E 4B E Scan D… K=1 Gen step… Prune step… CK:CK: K=2 K=3 LK:LK: itemsetSupporto A2 B3 C3 E3 itemset {A,B} {A,C} {A,E} {B,C} {B,E} {C,E} itemsetsupporto {A,B}1 {A,C}2 {A,E}1 {B,C}2 {B,E}3 {C,E}2 itemsetsupporto {A,C}2 {B,C}2 {B,E}3 {C,E}2 Itemset {B,C,E} itemsetsupporto {B,C,E}2

8 Analisi performance In certe situazioni, lalgoritmo Apriori non dà buone prestazioni, soprattutto in presenza di: –Patterns lunghi –Patterns frequenti molto lunghi. –Soglia minima del supporto abbastanza bassa. Portano ai seguenti costi: –È dispendioso gestire grandi insiemi di candidati itemset frequenti -> più di itemsets di candidati. per trovare pattern frequenti di lunghezza 100 si devono generare circa candidati. –È svantaggioso accedere ripetutamente al database e controllare un grande insieme di candidati, in modo particolare se si tratta di lunghi patterns. Sono necessarie (n +1) scansioni, dove n è la lunghezza del pattern più lungo.

9 Soluzioni Collo di bottiglia dellalgoritmo Apriori: generazione dellinsieme dei candidati e test. Soluzioni: –Creazione di una nuova e compatta struttura dati: Frequent Pattern Tree (FP-tree). –È stato creato un metodo basato su FP-tree che parte da un pattern frequente di lunghezza 1 ed esamina il suo conditional pattern base (un sub-database che consiste in un insieme di items frequenti che ricorrono assieme al pattern suffisso). –La tecnica di mining utilizzata è di tipo divide-et- impera piuttosto che il bottom-up dellalgoritmo Apriori.

10 FP-tree: regole di base (1) Estensione della struttura del prefix-tree che memorizza informazioni quantitative sui pattern frequenti. Solamente gli items frequenti di lunghezza 1 hanno i nodi corrispondenti nellalbero.

11 FP-tree: regole di base (2) Solamente gli items frequenti sono importanti per il mining. Per identificare gli items frequenti è necessaria una sola scansione del database. Se si memorizzano gli insiemi di items frequenti (in ordine decrescente in base alla frequenza) per ogni transazione si può evitare di accedere ripetutamente al database. Se transazioni diverse identificano lo stesso insieme di items frequenti si possono unire e salvare in una variabile il numero di transazioni. Se transazioni diverse hanno un prefisso in comune (nella lista degli item frequenti ordinati secondo lo stesso criterio), la parte comune può essere memorizzata a parte insieme al contatore del numero di transazioni.

12 FP-tree: costruzione Illustriamo la costruzione di un FP-tree con un esempio. La soglia minima di supporto ( ) è 3. Con una scansione del database si individua la lista degli items frequenti in ordine decrescente:. Per ogni TID si crea una lista ordinata di items frequenti. Si crea la radice dellalbero con etichetta null. Seconda scansione del database: –la scansione della prima riga crea il primo ramo dellalbero. –la seconda riga ha un prefisso in comune con la precedente: questi elementi verranno incrementati e si aggiungeranno i nuovi elementi. –la terza riga ha solo f come prefisso comune. –la scansione della quarta riga porta alla formazione del secondo ramo dellalbero. –lultima riga è identica alla prima: tutti i nodi del ramo più a sinistra vengono incrementati di uno. TIDItems 100f,a,c,d,g,i,m,p 200a,b,c,f,l,m,o 300b,f,h,j,o 400b,c,k,s,p 500a,f,c,e,l,p,m,n Items frequenti f,c,a,m,p f,c,a,b,m f,b c,b,p f,c,a,m,p null f:1 c:1 a:1 m:1 p:1 f:2 c:2 a:2 m:1 p:1 b:1 m:1 f:3 b:1 p:1 c:1 f:4 c:3 a:3 m:2 p:2

13 FP-tree: definizione (1) È formato da un nodo radice etichettato come null, un insieme di sottoalberi di prefissi come figli della radice e da una tabella per il collegamento diretto alle liste degli item frequenti (Header table). null f:1 c:1 a:1 m:1 p:1 f:2 c:2 a:2 m:1 p:1 b:1 m:1 f:3 b:1 p:1 c:1 f:4 c:3 a:3 m:2 p:2 itemnode-link f c a b m p

14 FP-tree: definizione (2) Ogni nodo è composto da tre campi: –nome dellitem: indica quale item è rappresentato dal nodo. –contatore: numero di transazioni rappresentate dalla porzione di percorso per raggiungere il nodo. –node-link: link al prossimo nodo con lo stesso nome o null se è lultimo. Ogni riga nella Header Table è composta da due campi: –nome dellitem –link al primo nodo del FP-tree che porta lo stesso nome dellitem.

15 FP-tree: algoritmo 1.Scansione del database per ottenere la lista (F) degli item frequenti e il loro supporto. Ordinare la lista secondo lordine decrescente per il supporto ottenendo la lista degli item frequenti (L). 2.Creazione della radice dellalbero (T). Per ogni transazione (Trans) eseguire le seguenti operazioni: 1.Selezionare e ordinare gli item frequenti in Trans secondo lordine di L. 2.Trans = lista di item frequenti appena creata. La lista ha la forma [p|P], dove p è il primo elemento della lista e P è il resto della lista. Chiamata alla funzione insert_tree(p|P,T). Funzione insert_tree([p|P,T]): se T ha un figlio N, tale che N.item_nome=p.item_nome Incrementa il contatore di N di 1. Altrimenti: Crea un nuovo nodo N e imposta il contatore ad 1. Il suo link al padre deve essere impostato a T. Il node- link deve essere impostato ai nodi con lo stesso itemname. Se P non è vuota, chiama insert_tree(P,N) ricorsivamente.

16 Analisi dellalgoritmo Come si può vedere dal processo di costruzione dellalbero sono necessari solo due scansioni del database: –La prima crea la lista degli items frequenti –La seconda costruisce lFP-tree. Il costo di inserimento di una transazione Trans nellFP-tree è O(|Trans|), dove |Trans| è il numero di item frequenti in Trans.

17 Completezza del FP-tree Lemma 1: Dato un database di transazioni (DB) e una soglia del supporto ( ), il corrispondente FP-tree contiene le informazioni complete di DB riguardanti il mining di pattern frequenti. Dimostrazione: Guardando il processo di costruzione del FP-tree, ogni transazione in DB corrisponde ad un cammino nel FP- tree e le informazioni sugli itemset frequenti di ogni transazione sono completamente memorizzate nel FP- tree. Inoltre, più transazioni del DB possono essere rappresentate in un unico cammino nel FP-tree senza ambiguità.

18 Compattezza del FP-tree Lemma 2: Senza considerare la radice null, la dimensione di un FP-tree è limitata dalla somma delle occorrenze degli item frequenti nel database, mentre laltezza dellalbero è limitata dal numero massimo di item frequenti in ogni transazione del database. Dimostrazione: Per ogni transazione T nel database, cè un cammino nel FP- tree in modo che il numero di nodi del cammino è lo stesso degli item frequenti in T. Nessun item frequente presente in una transazione può creare più di un nodo nellalbero. La radice è lunico nodo extra creato. Laltezza dellalbero è data dal numero massimo di item presenti nelle transazioni se non si prende in considerazione il livello aggiunto dal nodo radice.

19 Analisi performances Poiché ci sono spesso items frequenti nei prefissi delle transazioni, le dimensioni del FP-tree sono molto ridotte. Lalgoritmo Apriori, nel caso peggiore, genera un numero esponenziale di candidati; mentre lFP-tree non genera mai un numero esponenziale di nodi. FP-tree è molto più piccolo rispetto al database originale: –database con transazioni e 43 items per ogni transazione con supporto minimo del 50% -> numero totale di occorrenze degli items frequenti: –FP-tree corrispondente è formato da nodi. RIDUZIONE DEL (RAPPORTO DI COMPRESSIONE)

20 FP-tree: proprietà dei node-link Per ogni item frequente a i, tutti i possibili pattern frequenti che contengono a i si possono ottenere seguendo la lista dei node-link a partire dalla Header Table. Esempio: Analizziamo il processo di mining partendo dalla fine della Header Table. p: abbiamo il pattern frequente (p:3) e i due cammini e questa stringa appare 2 volte nel DB questa stringa appare 1 volta nel DB

21 Conditional Pattern Base I due cammini dei prefissi di p dellesempio precedente ( e ) formano il sub-pattern base di p, chiamato Conditional Pattern Base (il sub- pattern base sotto la condizione dellesistenza di p). itemsitems frequenti (f:2),(c:2),(a:2),(m:2)(c:2) (c:1),(b:1)(c:1) Costruire lFP-tree partendo dai Conditional Pattern Base (chiamato Conditional FP- Tree) di p porta ad un albero con un solo ramo: (c:3). Da questo deriva che cè un solo pattern frequente: (cp:3). Così termina la ricerca di pattern frequenti associati a p.

22 Conditional FP-tree per m Ripetendo il procedimento precedente per m, si identificano due cammini (viene tralasciato il nodo p, in quanto già esaminato): e Si trova che il Conditional FP-tree per m è

23 Chiamate ricorsive A questo punto, si costruiscono i Conditional FP- tree ricorsivamente partendo da quello trovato per m, indicato come mine( |m) Conditional FP-tree per m: root f:3 c:3 a:3 itemtesta dei node-links f c a Conditional Pattern Base di am: (f:3,c:3) root f:3 c:3 Conditional Pattern Base di cm: (f:3) root f:3 fm: un solo pattern frequente (fm:3)

24 Ancora chiamate ricorsive... mine( |am) -> (cam:3) e (fam:3) mine( |cam) -> (fcam:3): otteniamo il pattern più lungo possibile. mine( |cm)->(fcm:3) Tutti i patterns frequenti che coinvolgono m sono: {(m:3),(am:3),(cm:3),(fm:3),(cam:3),(fam:3),(fcam:3),(fcm:3)}

25 FP-tree: proprietà dei prefix path Per calcolare i pattern frequenti per un nodo a i nel cammino P, solo il prefix sub- path di a i in P deve essere accumulato e il suo contatore deve essere uguale al nodo a i

26 Alcune definizioni… Il prefix subpath del nodo a i può essere copiato e trasformato in un prefix subpath count- adjusted correggendo il contatore di ogni nodo del subpath con quello del nodo a i. Questa trasformazione è detta trasformed prefix path di a i per il cammino P. Linsieme dei prefix path trasformati si chiama conditional pattern base di a i e si indica pattern_base | a i. Il conditional FP-tree di a i è lFP-tree costruito partendo dal suo conditional pattern base e si indica con FP- tree | a i

27 Fragment Growth Lemma : Sia un itemset nel DB, B un conditional pattern base di e un itemset di B. Il supporto di nel DB è equivalente al supporto di in B. Dimostrazione : In base alla definizione di conditional pattern base, ogni sotto-transazione di B avviene con la condizione di occorrenza di nel database originale. Se un itemset appare in B n volte, appare n volte anche con nel database.

28 Pattern Growth Corollario : Sia un itemset frequente nel DB, B un conditional pattern base di e un itemset di B. Allora è frequente nel database se e solo se è frequente in B Dimostrazione : Questo corollario illustra il caso in cui è un itemset frequente nel DB e il supporto di in B è non minore della soglia.

29 Il mining dei dati viene migliorato identificando allinizio gli 1-itemset frequenti,, nel database e costruendo i loro conditional pattern base. Così, il problema del mining di k-itemset frequenti diventa il mining di una sequenza di k 1- itemset frequenti tramite un insieme di conditional pattern base. Considerazioni…

30 FP-tree con cammino singolo Lemma : Sia T un FP-tree a cammino singolo P. Linsieme completo di tutti i pattern frequenti di T può essere generato dalla enumerazione di tutte le combinazioni dei sottocammini di P con supporto, il minimo tra quelli degli items contenuti nel sottocammino. Dimostrazione : Sia P (a 1 :s 1 a 2 :s 2... a k :s k ). Il supporto s i di ogni nodo a i è la frequenza con la quale a i ricorre con il suo prefisso. Ogni combinazione di items nel cammino come (con 1 i,j k) è un pattern frequente con frequenza pari al minimo supporto tra tutti gli items. Ogni item nel cammino è unico e non ci sono pattern che vengono generati dalla combinazione, inoltre, nessun pattern frequente viene generato fuori dal FP-tree.

31 Algotimo FP-growth Input: FP-tree costruito usando il DB e la soglia. Output: linsieme completo dei pattern frequenti. Metodo: chiamata a FP-growth(FP-tree, null) Procedure FP-growth (tree, ) { if (tree contiene un path singolo) then per ogni combinazione ( ) dei nodi di P do genera il pattern con supporto = supporto minimo dei nodi di else per ogni a i in testa a tree do { genera = a i con supporto = a i.supporto; costruisci il conditional pattern base e il conditional FP-tree (tree ) di if (tree ) then chiama FP-growth(tree, ); } Lemma (completezza): FP-tree contiene tutte le informazioni utili. Lemma: FP-tree a cammino singolo Proprietà dei prefix path Fragment e Pattern Growth: i pattern creati a partire da un Conditional FP-tree sono un insieme completo di items frequenti.

32 Efficenza dellalgoritmo FP-growth scansiona lFP-tree dal database una sola volta e genera un piccolo pattern base B a i per ogni item frequente a i. FP-tree di solito è molto più piccolo rispetto alla dimensione del DB. Inoltre, il conditional FP-tree, FP-tree | a i costruito a partire da B a i è molto più piccolo o, almeno, non più grande di B a i. Le operazioni di mining sono solitamente di correzione dei contatori, conteggio e concatenazione; quindi molto meno costosi rispetto alla generazione e al test di un gran numero di candidati. FP-growth è un processo di tipo divide-et-impera. Il fattore di riduzione per la costruzione di un FP-tree da un database è di circa 20~100.

33 Valutazione delle prove e studio delle performances Tutte le prove sono state eseguite su una macchina PC Pentium 450MHz con 128 Mb di ram su sistema operativo Microsoft © Windows NT. I programmi sono stati scritti usando Microsoft Visual C I diversi algoritmi per le prove comparative sono state scritte usando le migliori implementazioni presenti e sono state eseguite sulla stessa macchina. Il tempo di runtime misurato corrisponde al tempo totale di esecuzione, inoltre, il tempo per FP-growth comprende anche il tempo per la costruzione del FP-tree dal database originale. Per le prove sono stati utilizzati due database: –D 1 : nel quale la lunghezza della transazione media è pari a 25, litemset frequente massimo è 10 e il numero di transazioni è (T25.I10.D10K) con items. –D 2 : T25.I20.D100K con items.

34 Confronto tra Apriori e FP-growth Al diminuire della soglia nellalgoritmo Apriori, il numero e la lunghezza degli itemset frequenti aumenta notevolmente. Linsieme dei candidati che lalgoritmo deve gestire diventa molto alto e il test diventa molto dispendioso.

35 Analisi runtime/itemset Il grafico sotto indica che se la soglia è bassa, il tempo per itemset con lFP-growth diventa molto basso. Scala esponenziale

36 Scalabilità sul numero di transazioni Il grafico indica landamento dei due algoritmi al variare del numero di transazioni usando il database D2. La soglia è stata impostata a 1.5%. Entrambi gli algoritmi sono lineari, tuttavia FP-growth ha un runtime sempre inferiore ad Apriori

37 Confronto con TreeProjection TreeProjection è un efficente algoritmo basato sulla costruzione di un albero lessicografico. Il numero dei suoi nodi è quello delgi itemsets frequenti. TreeProjection risulta più efficente di Apriori. Come si vede dalla figura in alto, FP-growth e TreeProjection hanno buoni risultati ma il primo è sempre un po più veloce.

38 Modifiche future – FP-tree per database grandi (1) Quando il database è molto grande è impensabile costruire un FP-tree che possa risiedere tutte nella memoria principale. La soluzione è di partizionare il database e costruire un FP-tree e il mining per i vari database creati.

39 Modifiche future – FP-tree per database grandi (2) Unalternativa alla soluzione precedente è quella di creare un FP-tree residente su disco. Il B+-tree viene utilizzato in molti databases e può essere usato per indicizzare lFP-tree. I nodi del livello più alto del B+-tree possono essere divisi in base alle radici dei prefix-subtree.

40 Realizzazione di un FP-tree Ogni volta che si effettua una query, lalgoritmo deve costruire lapposito FP-tree in base alla soglia passata come parametro. Se consideriamo, per esempio, che il 98% delle queries hanno 20, possiamo costruire un FP- tree con questa soglia e solamente nel 2% dei casi sarà necessario costruirne unaltro. Tenendo presente che un FP-tree è organizzato in modo che gli items meno frequenti siano posizionati più in basso, si potrà lavorare anche solo con la parte superiore dellalbero.

41 Aggiornamenti incrementali del FP-tree Avendo creato un FP-tree da usare per molteplici queries si deve pensare ad un sistema per aggiornarne i nodi quando nuove transazioni vengono inserite nel database. Se lFP-tree è stato creato utilizzando = 1 (diventando quindi, una versione compatta del database), non ci sarebbero problemi, in quanto basterebbe aggiungere le ultime righe al FP-tree. In questo caso, lalbero potrebbe però diventare ingestibile per le grandi dimensioni. Nel caso generale, potrebbero sorgere dei problemi. Se lalbero originale era stato costruito con una certa, ad esempio 0,1% e si aggiungono molte entry al database potrebbe succedere che il supporto per certi items scenda sotto la soglia. La soluzione migliore è quella di ricostruire lFP-tree.

42 Conclusioni (1) Ci sono tre vantaggi principali nelluso di FP- growth: –Costruisce un FP-tree che è una struttura dati molto compatta e che evita costose scansioni del database. –Applica il pattern growth metod che evita la generazione di candidati concatenando successivamente 1-itemset frequenti trovati nel FP- tree. –Utilizza un metodo basato sulle partizioni di tipo divide-et-impera che riduce drasticamente le dimensioni dei conditional pattern base e conditional FP-tree successivi.

43 Conclusioni (2) Gli studi sulle performances hanno dimostrato che il metodo è efficiente sia sui pattern corti che su quelli lunghi. Il metodo è stato implementato in una versione di DBMiner ed è stato testato in grandi databases industriali come il London Drugs database con performance soddisfacenti.


Scaricare ppt "Mining Frequent patterns without Candidate Generation De Faveri Alessandro Matricola 795135."

Presentazioni simili


Annunci Google