SlideShare a Scribd company logo
1 of 8
Download to read offline
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
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
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
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
MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION




FIGURA 1 - DIAGRAMMA UML DEL PROGETTO


Marco Montanari, Francesco Salbaroli                    5
MINING FREQUENT ITEMSETS WITHOUT CANDIDATE GENERATION




                            FIGURA 2 - ALGORITMO FP-GROWTH




Marco Montanari, Francesco Salbaroli                         6
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
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

More Related Content

More from Marco Montanari

OpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptxOpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptxMarco Montanari
 
Ohm itwikicon tech - english
Ohm itwikicon tech - englishOhm itwikicon tech - english
Ohm itwikicon tech - englishMarco Montanari
 
ITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMapITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMapMarco Montanari
 
ITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e WikipediaITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e WikipediaMarco Montanari
 
MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018Marco Montanari
 
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGEGEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGEMarco Montanari
 
Saas rad with django, django rest framework
Saas rad with django, django rest frameworkSaas rad with django, django rest framework
Saas rad with django, django rest frameworkMarco Montanari
 
Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017Marco Montanari
 
Open Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politicaOpen Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politicaMarco Montanari
 

More from Marco Montanari (20)

OpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptxOpenStreetMap_LinuxDay2023.pptx
OpenStreetMap_LinuxDay2023.pptx
 
Ohm wikimania 2021
Ohm wikimania 2021Ohm wikimania 2021
Ohm wikimania 2021
 
Ohm itwikicon tech - english
Ohm itwikicon tech - englishOhm itwikicon tech - english
Ohm itwikicon tech - english
 
ITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMapITWikiCon 2020 - OpenHistoryMap
ITWikiCon 2020 - OpenHistoryMap
 
ITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e WikipediaITWikiCon - Edutainment e Wikipedia
ITWikiCon - Edutainment e Wikipedia
 
Storia dell'informatica
Storia dell'informaticaStoria dell'informatica
Storia dell'informatica
 
Bononia 1115
Bononia 1115Bononia 1115
Bononia 1115
 
ChContext
ChContextChContext
ChContext
 
MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018MN-MAP Poster for Foss4G2018
MN-MAP Poster for Foss4G2018
 
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGEGEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
GEOCONTEXT AND CHCONTEXT GEOGRAPHIC INFORMATION IN CULTURAL HERITAGE
 
OHM at FOSS4G17
OHM at FOSS4G17OHM at FOSS4G17
OHM at FOSS4G17
 
Mn map poster
Mn map posterMn map poster
Mn map poster
 
Saas rad with django, django rest framework
Saas rad with django, django rest frameworkSaas rad with django, django rest framework
Saas rad with django, django rest framework
 
poster mn-auth
poster mn-authposter mn-auth
poster mn-auth
 
poster holodocker
poster holodockerposter holodocker
poster holodocker
 
Big data, big tourism
Big data, big tourismBig data, big tourism
Big data, big tourism
 
Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017Intro datajournalism - 14-15/06/2017
Intro datajournalism - 14-15/06/2017
 
OHM at Kainua17
OHM at Kainua17OHM at Kainua17
OHM at Kainua17
 
OHM Workshop
OHM WorkshopOHM Workshop
OHM Workshop
 
Open Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politicaOpen Data e Trasparenza come punto di contatto fra cittadinanza e politica
Open Data e Trasparenza come punto di contatto fra cittadinanza e politica
 

Recently uploaded

XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaStefano Lariccia
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxlorenzodemidio01
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxlorenzodemidio01
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaStefano Lariccia
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxlorenzodemidio01
 
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.giuliofiorerm
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxlorenzodemidio01
 
San Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptxSan Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptxMartin M Flynn
 

Recently uploaded (8)

XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia RomanaXI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
XI Lezione - Arabo LAR Giath Rammo @ Libera Accademia Romana
 
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptxLorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
Lorenzo D'Emidio_Vita di Cristoforo Colombo.pptx
 
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptxLorenzo D'Emidio_Vita e opere di Aristotele.pptx
Lorenzo D'Emidio_Vita e opere di Aristotele.pptx
 
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia RomanaXIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
XIII Lezione - Arabo G.Rammo @ Libera Accademia Romana
 
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptxLorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
Lorenzo D'Emidio- Lavoro sulla Bioarchittetura.pptx
 
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
RICERCA_SUGLI ANFIBI PER LA PRIMA MEDIA.
 
Lorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptxLorenzo D'Emidio_Francesco Petrarca.pptx
Lorenzo D'Emidio_Francesco Petrarca.pptx
 
San Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptxSan Giorgio e la leggenda del drago.pptx
San Giorgio e la leggenda del drago.pptx
 

FPGrowth

  • 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