Your SlideShare is downloading. ×
FPGrowth
FPGrowth
FPGrowth
FPGrowth
FPGrowth
FPGrowth
FPGrowth
FPGrowth
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

FPGrowth

734

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
734
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  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

×