FPGrowth è ancora considerato "stato dell'arte" nelle miniere di pattern frequenti?


12

Per quanto ne so lo sviluppo di algoritmi per risolvere il problema Frequent Pattern Mining (FPM), la strada dei miglioramenti ha alcuni punti di controllo principali. In primo luogo, l' algoritmo Apriori è stato proposto nel 1993, da Agrawal et al. , insieme alla formalizzazione del problema. L'algoritmo è stato in grado di rimuovere alcuni set dagli 2^n - 1insiemi (powerset) usando un reticolo per mantenere i dati. Uno svantaggio dell'approccio era la necessità di rileggere il database per calcolare la frequenza di ciascun set espanso.

Più tardi, nel 1997, Zaki et al. ha proposto l'algoritmo Eclat , che ha inserito la frequenza risultante di ciascun set all'interno del reticolo. Ciò è stato fatto aggiungendo, su ciascun nodo del reticolo, l'insieme di ID transazione che avevano gli elementi dalla radice al nodo indicato. Il contributo principale è che non è necessario rileggere l'intero set di dati per conoscere la frequenza di ciascun set, ma la memoria richiesta per mantenere tale struttura di dati può superare le dimensioni del set di dati stesso.

Nel 2000, Han et al. ha proposto un algoritmo chiamato FPGrowth , insieme a una struttura di dati con prefisso chiamata FPTree. L'algoritmo è stato in grado di fornire una significativa compressione dei dati, garantendo al contempo che si producessero solo set di articoli frequenti (senza generazione di set di articoli candidati). Ciò è stato fatto principalmente ordinando gli articoli di ciascuna transazione in ordine decrescente, in modo che gli articoli più frequenti siano quelli con il minor numero di ripetizioni nella struttura dei dati dell'albero. Dal momento che la frequenza scende solo mentre si attraversa l'albero in profondità, l'algoritmo è in grado di eliminare elementi non frequenti.

Modifica :

Per quanto ne so, questo può essere considerato un algoritmo all'avanguardia, ma mi piacerebbe conoscere altre soluzioni proposte. Quali altri algoritmi per FPM sono considerati "allo stato dell'arte"? Qual è l' intuizione / il contributo principale di tali algoritmi?

L'algoritmo FPGrowth è ancora considerato "allo stato dell'arte" nelle miniere di pattern frequenti? In caso contrario, quali algoritmi possono estrarre più frequentemente set di elementi da set di dati di grandi dimensioni?


Questo post è stato studiato e presentato bene. È una domanda scadente per un sito della rete SE, ma sarebbe un ottimo argomento iniziare su un forum di discussione.
Air

@AirThomas Grazie per l'avvertimento. Ho provato a salvare il post facendo una domanda corretta da esso.
Rubens,

Risposte:


9

Stato dell'arte come in: usato nella pratica o lavorato in teoria?

APRIORI viene utilizzato ovunque, tranne che per lo sviluppo di nuovi algoritmi di articoli frequenti. È facile da implementare e facile da riutilizzare in domini molto diversi. Troverai centinaia di implementazioni APRIORI di qualità variabile. Ed è facile sbagliare APRIORI, in realtà.

FPgrowth è molto più difficile da implementare, ma anche molto più interessante. Quindi da un punto di vista accademico, tutti cercano di migliorare FPgrowth - ottenere lavoro basato su APRIORI accettato sarà ormai molto difficile.

Se hai una buona implementazione, ogni algoritmo ha una buona ed è cattiva situazione secondo me. Una buona implementazione di APRIORI dovrà solo scansionare il database k volte per trovare tutti gli articoli frequenti di lunghezza k . In particolare, se i tuoi dati si inseriscono nella memoria principale, questo è economico. Ciò che può uccidere APRIORI sono troppi set di 2 elementi frequenti (in particolare quando non si utilizza un Trie e simili tecniche di accelerazione ecc.). Funziona meglio su dati di grandi dimensioni con un numero basso di set di articoli frequenti.

Eclat funziona su colonne; ma deve leggere ogni colonna molto più spesso. C'è qualche lavoro sui diffset per ridurre questo lavoro. Se i tuoi dati non rientrano nella memoria principale, probabilmente Eclat soffre di più di Apriori. Andando prima in profondità, sarà anche in grado di restituire un primo risultato interessante molto prima di Apriori e puoi usare questi risultati per regolare i parametri; quindi hai bisogno di meno iterazioni per trovare buoni parametri. Ma in base alla progettazione, non può sfruttare la potatura con la stessa cura di Apriori.

FPGrowth comprime il set di dati nell'albero. Funziona meglio quando hai molti record duplicati. Probabilmente potresti anche ottenere alcuni guadagni anche per Apriori ed Eclat se puoi presortire i tuoi dati e unire i duplicati in vettori ponderati. FPGrowth lo fa a un livello estremo. Lo svantaggio è che l'implementazione è molto più difficile; e una volta che questo albero non si adatta più alla memoria, diventa un casino da implementare.

Per quanto riguarda i risultati di performance e benchmark - non fidarti di loro. Ci sono così tante cose da implementare in modo errato. Prova 10 diverse implementazioni e ottieni 10 risultati prestazionali molto diversi. In particolare per APRIORI, ho l'impressione che molte implementazioni vengano interrotte nel senso che mancano alcuni dei principali contributi di APRIORI ... e di quelli che hanno queste parti giuste, la qualità delle ottimizzazioni varia molto.

In realtà ci sono persino articoli su come implementare questi algoritmi in modo efficiente:

Implementazioni efficienti di Apriori ed Eclat.
Christian Borgelt
Workshop of Frequent Set Set Mining Implementations (FIMI 2003, Melbourne, FL, USA).

Potresti anche voler leggere questi sondaggi su questo dominio:

  • Goethals, Bart. "Sondaggio su frequenti pattern mining." Univ. di Helsinki (2003).

  • Ferenc Bodon, A Survey on Frequent Itemset Mining, Report tecnico, Università di tecnologia ed economica di Budapest, 2006,

  • Mining di articoli frequenti
    Christian Borgelt
    Wiley Recensioni interdisciplinari: Data mining e Knowledge Discovery 2 (6): 437-456. 2012


2

La maggior parte dei recenti approcci di Frequent Pattern che ho visto in letteratura si basano sull'ottimizzazione di FPGrowth. Devo ammettere che non vedo molti sviluppi nella letteratura in FPM da molti anni.

Questo wikibook evidenzia molte delle varianti di FPGrowth disponibili.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.