8
MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION MARCO MONTANARI, FRANCESCO SALBAROLI SOMMARIO Sommario .......................................................................................................................................................... 1 Indice delle figure .............................................................................................................................................. 1 Introduzione ...................................................................................................................................................... 2 L’Algoritmo ........................................................................................................................................................ 2 Apriori ............................................................................................................................................................ 2 FP-Growth...................................................................................................................................................... 2 Vantaggi e svantaggi di FP-Growth rispetto ad Apriori ................................................................................. 3 Implementazione............................................................................................................................................... 4 Weka .............................................................................................................................................................. 4 FPGrowth ....................................................................................................................................................... 4 Itemset utilizzati ................................................................................................................................................ 7 Itemset 1 ........................................................................................................................................................ 7 Itemset 2 ........................................................................................................................................................ 8 INDICE DELLE FIGURE Figura 1 - Diagramma uml del progetto ............................................................................................................ 5 Figura 2 - Algoritmo fp-growth .......................................................................................................................... 6

FPGrowth

Embed Size (px)

Citation preview

Page 1: FPGrowth

MININ G F R EQUE NT IT EM S E TS W ITH OUT C A ND ID A TE G ENERA TION

MAR CO MO NT ANARI , FRANCE SCO SALB AROLI

SOMMARIO

Sommario .......................................................................................................................................................... 1

Indice delle figure .............................................................................................................................................. 1

Introduzione ...................................................................................................................................................... 2

L’Algoritmo ........................................................................................................................................................ 2

Apriori ............................................................................................................................................................ 2

FP-Growth ...................................................................................................................................................... 2

Vantaggi e svantaggi di FP-Growth rispetto ad Apriori ................................................................................. 3

Implementazione ............................................................................................................................................... 4

Weka .............................................................................................................................................................. 4

FPGrowth ....................................................................................................................................................... 4

Itemset utilizzati ................................................................................................................................................ 7

Itemset 1 ........................................................................................................................................................ 7

Itemset 2 ........................................................................................................................................................ 8

INDICE DELLE FIGURE

Figura 1 - Diagramma uml del progetto ............................................................................................................ 5

Figura 2 - Algoritmo fp-growth .......................................................................................................................... 6

Page 2: FPGrowth

MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION

Marco Montanari, Francesco Salbaroli 2

INTRODUZIONE

La generazione di candidati necessaria per l’algoritmo apriori, utilizzando il meteodo Generate and test, può

portare da un lato ad un numero ridotto di candidate set, ma passando attraverso una fase di generazione

di un numero eventualmente enorme di set. Inoltre questa procedura necessita una scansione dell’intero

database cercando dei pattern per riconoscere dei candidate set.

CAN WE DESIGN A METHOD THAT MINES THE COMPLETE SET OF FREQUENT

ITEMSETS WITHOUT CANDIDATE GENERATION?

L’algoritmo FP-growth mira proprio all’eliminazione della fase di generazione attraverso una strategia

Divide et impera che suddivide il database rappresentante gli elementi frequenti in base agli elementi

frequenti in database condizionali.

L’ALGORITMO

APRIORI

L’algoritmo Apriori necessita di due dati: un database D e una soglia di supporto minima, min_sup.

L’algoritmo prevede un numero non predefinito di iterazioni. Ad ogni iterazione (la k-esima iterazione) è

necessario ottenere il set di candidati di dimensione k (chiamato 𝐶𝑘). Per calcolarlo viene utilizzato il

prodotto cartesiano di 𝐿𝑘−1 × 𝐿𝑘−1.

Viene quindi ricalcolato il supporto di ogni candidato a partire dai dati contenuti nel database D. Infine

vengono eliminati i candidati che non rispettano min_sup.

Ogni candidato è certamente più frequente dei suoi sottoinsiemi. Questo permette di eliminare piuttosto

presto dei candidati. Dato che Apriori utilizza una strategia di ricerca a livelli, è possibile controllare

semplicemente la frequenza dei sottoset di dimensione k-1 un dato candidato di dimensione k.

Nuovamente avviene un filtraggio a partire dal database.

L’algoritmo si conclude quando l’insieme dei candidati è vuoto.

FP-GROWTH

L’algoritmo FPGrowth parte dalle stesse premesse dell’algoritmo Apriori, necessita di un database e di un

supporto minimo min_sup.

La costruzione dell’albero è compost da più passi.

1. Innanzitutto è necessario trovare il set di termini frequenti del database e calcolarne il supporto.

Ordinato il set in ordine decrescente, si ottiene L,la lista di termini frequenti.

2. La creazione dell’albero vera e propria avviene come segue:

Per ogni transazione T nel database gli elementi della transazione vengono ordinati secondo L.

Detta T=[p|P], si controlla che il nodo radice non abbia già l’elemento p tra i suoi figli. Se è così, il

nodo viene aggiunto e viene invocato un metodo ricorsivo per l’aggiunta della coda P a p. In caso

contrario la coda P viene aggiunta direttamente all’elemento p già presente.

Page 3: FPGrowth

MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION

Marco Montanari, Francesco Salbaroli 3

Infine avviene il processo di mining vero e proprio:

Ovvero per ogni elemento della lista L in ordine crescente di supporto viene considerato il sottoalbero di

Tree di cui il dato nodo è foglia (possono esserci più rami ad avere lo stesso nodo come foglia). Dato questo

sottoalbero viene selezionata solo la parte di esso con supporto maggiore a min_support.

L’insieme di sottoalberi generati da tutti gli elementi della lista L è il risultato della ricerca.

VANTAGGI E SVANTAGGI DI FP-GROWTH RISPETTO AD APRIORI

FP-Growth Apriori

Pro Contro Pro Contro Minimizza la ricerca di

nodi

Grande quantità di memoria per mantenere tutti i percorsi possibili.

Ricerca completamente tutte le combinazioni

Ricerca completamente tutte le combinazioni

E’ necessario esplorare tutto l’albero più volte, quindi da un punto di vista temporale diventa molto onteroso

procedure FP_growth (Tree, ) if Tree contains a single path P then for each combination (denoted as ) of the nodes in the path P

generate pattern 𝛽 ∪ 𝛼 with support = minimum support of nodes in ; else for each 𝑎𝑖 in the header of Tree { generate pattern = 𝑎𝑖 ∪ 𝛼 with support = 𝑎𝑖.support;

construct 's conditional pattern base and then 's conditional FP_tree Tree; if 𝑇𝑟𝑒𝑒𝛽 ≠ ∅ then call FP_growth (Tree, ); }

Page 4: FPGrowth

MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION

Marco Montanari, Francesco Salbaroli 4

IMPLEMENTAZIONE

WEKA

Si è scelto di utilizzare Weka 3.4 come punto di partenza del progetto in modo da garantire compatibilità e

confrontabilità rispetto ad altri algoritmi già disponibili nello strumento. Lo sviluppo di plugin per weka è

piuttosto complesso anche a causa della scarsa documentazione disponibile. Il vantaggio principale dato da

Weka è la possibilità di sfruttare la sua capacità di pre-elaborazione dei dati. Attraverso un complesso

sistema di filtri e impostazioni è possibile definire in modo anche molto preciso il formato dei dati di

ingresso dell’algoritmo.

Una volta effettuato il filtraggio, Weka mette a disposizione dell’algoritmo un oggetto Instance contenente

tutti i dati pre-elaborati.

L’uso della classe Instance permette di accedere ad una serie ordinata di dataset da elaborare in base

all’algoritmo scelto.

L’output su console viene generato a partire dal metodo toString() della classe che implementa l’algoritmo.

Questo è a volte problematico, in quanto non sempre i dati sono rappresentabili “comodamente” come

stringa (nel caso di FPGrowth è problematico rappresentare un albero come stringa).

FPGROWTH

L’implementazione dell’algoritmo presentata necessita che i dati siano forniti in formato csv con la

seguente formattazione:

La prima fase dell’algoritmo genera una lista di valori ordinati, mantenuti in un FPGrowthItemSet. Questa

struttura dati permette di mantenere l’elenco degli item con i rispettivi supporti.

Nella seconda fase viene generato per ogni transazione un ramo dell’albero, partendo dall’ordinamento

decrescente dei supporti dei singoli elementi della transazione. Quest’ordinamento viene fatto sfruttando

la lista ottenuta nella fase precedente. I dati dell’albero vengono raccolti in un RootTreeNode, che

sfruttando il pattern composite è una estensione di TreeNode.

Durante questa fase viene sfruttata una factory di TreeNode. Per ogni treenode deve essere tenuta traccia

delle sue caratteristiche: supporto della singola istanza e link alle singole istanza di ogni nodo.

Infine viene ripercorsa la lista degli item, stavolta in ordine crescente di supporto totale, per effettuare il

pruning e ottenere solo i candidati validi. Dal nome dell’item viene ritrovata la lista delle sue istanze. A

partire da questa viene calcolato il ramo avente quell’item come foglia e infine viene calcolato il supporto.

In base alla variabile min_support vengono in conclusione selezionati solo i rami che hanno il valore di

supporto superiore a min_support*N, con N il numero di transazioni nel database.

TID,Items T100,I1;I2;I5 T200,I2;I4 …,…;… …

Page 5: FPGrowth

MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION

Marco Montanari, Francesco Salbaroli 5

FIGURA 1 - DIAGRAMMA UML DEL PROGETTO

Page 6: FPGrowth

MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION

Marco Montanari, Francesco Salbaroli 6

FIGURA 2 - ALGORITMO FP-GROWTH

Page 7: FPGrowth

MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION

Marco Montanari, Francesco Salbaroli 7

ITEMSET UTILIZZATI

ITEMSET 1

Il primo degli itemset utilizzati per i test è lo stesso dell’esempio fornito nel paper.

Questo item set genera il seguente albero non filtrato:

TID,Items T100,I1;I2;I5 T200,I2;I4 T300,I2;I3 T400,I1;I2;I4 T500,I1;I3 T600,I2;I3 T700,I1;I3 T800,I1;I2;I3;I5 T900,I1;I2;I3

Root

𝐼2:7

𝐼1:2

𝐼3:2

𝐼1:4

𝐼3:2

𝐼4:1

𝐼5:1

𝐼3:2

𝐼4:1

𝐼5:1

Page 8: FPGrowth

MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION

Marco Montanari, Francesco Salbaroli 8

ITEMSET 2

Il secondo itemset è dato dagli acquisti effettuati in un negozio on-line di DVD.

L’itemset è stato creato immaginando come diversi utenti potrebbero fare acquisti on-line: da somiglianza

di genere a somiglianza di attori o argomento.

Lo scopo era quello di testare la performance dell’algoritmo con tanti dati anche abbastanza complessi. Il

tempo di esecuzione dell’algoritmo è molto più lungo del primo Itemset.

TID,Items T800,Batman_Returns;Dark_Knight;Batman;Batman_2;Batman_Forever;Batman_and_Robin T100,Sex_and_the_City;Ce_posta_per_te;Insonnia_damore T110,Sex_and_the_City;Fire_walk_with_me;Twin_Peaks T101,Sex_and_the_City;Ce_posta_per_te;Insonnia_damore;P.S._I_Love_You T111,Sex_and_the_City;Fire_walk_with_me;Twin_Peaks;Blue_Velvet T120,Fire_walk_with_me;Mulholland_Drive;Twin_Peaks;Lost_Highways T123,Fire_walk_with_me;Mulholland_Drive;Twin_Peaks;Lost_Highways T121,Fire_walk_with_me;Mulholland_Drive;Twin_Peaks;Lost_Highways;Elephant_Man T122,Fire_walk_with_me;Mulholland_Drive;Twin_Peaks;Lost_Highways;Blue Velvet T130,Twin_Peaks;The_O.C.;Veronica_Mars;Supernatural;Lost;Brothers_and_Sisters T140,Twin_Peaks;Veronica_Mars;Hero T142,Twin_Peaks;Veronica_Mars;Hero;Lost T141,The_O.C.;Dawsons_Creek T150,Brothers_and_Sisters;Ally_McBeal T160,Ally_McBeal;Boston_Legal;Brothers_and_sisters;The_Practice T162,Ally_McBeal;Boston_Legal;The_Practice T170,Boston_Legal;Stargate T180,Boston_Legal;Star_Trek;Star_Trek_II_Kahns_Wrath T181,Star_Trek;Star_Trek_II_Kahns_Wrath;Star_Trek_TOS;Star_Trek_Enterprise;Star_Trek_Generations T182,Star_Trek_VI_The_Undiscovered_Country;Star_Trek_II_Kahns_Wrath T200,Boiling_Point;Lestate_di_Kikujiro;Zatoichi;Dolls T300,I_sette_Samurai;Zatoichi T400,2046;In_the_mood_for_love;Chunking_Express;Days_of_being_wild;Eros T500,In_the_mood_for_love;Lussuria;Eros T600,Into_the_wild;The_girl_next_door T700,Dark_Knight;Iron_Man;Spiderman;Spiderman_2;Spiderman_3 T710,Batman_Returns;Dark_Knight T730,Dark_Knight;Iron_Man;Spiderman;Spiderman_2;Spiderman_3 T740,Batman_Returns;Dark_Knight T720,Batman_Returns;Dawsons_Creek T900,Batman;Batman_2;Nightmare_before_Christmas;Edward_Scissoirhands;Big_Fish T910,Star_Trek;Star_Trek_II_Kahns_Wrath;Dune;Star_Wars;Star_Wars_A_New_Hope;Star_Wars_Clone_Wars;Star_Wa > rs_Return_Of_The_Jedi T920,Closer;Doc_Magoo;Star_Wars_Clone_Wars;Star_Wars_The_Phantom_Menace T930,Closer;Doc_Magoo;Star_Wars_Clone_Wars;Star_Wars_The_Phantom_Menace T940,Closer;The_girl_next_door;In_the_cut T950,In_the_cut;Ce_posta_per_te;Insonnia_damore