1. MINING FREQUENT ITEMSETS WITHOUT
CANDIDATE GENERATION
M A R C O M O N T AN AR I , FR A NC E SC O S AL B AR O L I
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
2. MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION
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.
Marco Montanari, Francesco Salbaroli 2
3. MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION
Infine avviene il processo di mining vero e proprio:
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, );
}
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 Grande quantità di
nodi memoria per
mantenere tutti i
percorsi possibili.
Ricerca completamente Ricerca completamente
tutte le combinazioni tutte le combinazioni
E’ necessario esplorare
tutto l’albero più volte,
quindi da un punto di vista
temporale diventa molto
onteroso
Marco Montanari, Francesco Salbaroli 3
4. MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION
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:
TID,Items
T100,I1;I2;I5
T200,I2;I4
…,…;… …
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.
Marco Montanari, Francesco Salbaroli 4
5. MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION
FIGURA 1 - DIAGRAMMA UML DEL PROGETTO
Marco Montanari, Francesco Salbaroli 5
6. MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION
FIGURA 2 - ALGORITMO FP-GROWTH
Marco Montanari, Francesco Salbaroli 6
7. MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION
ITEMSET UTILIZZATI
ITEMSET 1
Il primo degli itemset utilizzati per i test è lo stesso dell’esempio fornito nel paper.
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
Questo item set genera il seguente albero non filtrato:
Root
������2 :7 ������1 :2
������3 :2
������3 :2 ������1 :4 ������4 :1
������5 :1 ������3 :2 ������4 :1
������5 :1
Marco Montanari, Francesco Salbaroli 7
8. MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION
ITEMSET 2
Il secondo itemset è dato dagli acquisti effettuati in un negozio on-line di DVD.
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
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.
Marco Montanari, Francesco Salbaroli 8