Algoritmo apriori
In informatica e in data mining, l'algoritmo Apriori è un classico algoritmo di ricerca delle associazioni. E' utlizzato per la generazione degli itemset frequenti, per approssimazioni successive, a partire dagli itemset con un solo elemento. In sintesi, il presupposto teorico su cui si basa l’algoritmo parte dalla considerazione che se un insieme di oggetti (itemset) è frequente, allora anche tutti i suoi sottoinsiemi sono frequenti, ma se un itemset non è frequente, allora neanche gli insiemi che lo contengono sono frequenti (principio di monotonicità).[1][2]
Un ambito dove questo algoritmo trova grande applicabilità è il market/basket problem.[3] Per ricavare le associazioni viene impiegato un approccio bottom up, dove i sottoinsiemi frequenti sono costruiti aggiungendo un item per volta (generazione dei candidati); i gruppi di candidati sono successivamente verificati sui dati e l'algoritmo termina quando non ci sono ulteriori estensioni possibili. In questo processo, il numero delle iterazioni è , dove indica la cardinalità massima di un itemset frequente.
Vi sono altri algoritmi con finalità analoghe (Winepi e Minepi), e che tuttavia sono più diffusi in ambiti dove i dati sono privi di timestamp (ad esempio le sequenze di DNA).[4]
Apriori, anche se storicamente significativo, soffre di molte inefficienze o trade-off, che hanno influenzato altri algoritmi successivi. La generazione dei candidati crea molti sottoinsiemi. L'esplorazione Bottom-up dei sottoinsiemi (in modo breadth-first trasversale sul reticolo dei sottoinsiemi) trova tutti i sottoinsiemi S massimali solo dopo aver trovato tutti i sottoinsiemi propri.
Esempio
Questo esempio mostra il processo di selezione o di generazione di una lista di candidati itemset ordinati. Il compito consiste nella costruzione di un insieme di nodi itemset ordinati in modo seriale a partire da itemset di lunghezza . Ad esempio, con , supponiamo che ci siano due di tali insiemi di lunghezza ...
- ,
e
- ,
i due candidati item sets sono generati
e
- .
Algoritmo
L'algoritmo Apriori trova gli insiemi frequenti nel Database .
- Ricerca di insiemi frequenti .
- Passo di Join.
- generato con un join di con se stesso
- Passo di pruning.
- Qualunque -itemset non frequente non può essere un sottoinsieme frequente -itemset, perciò sarà rimosso.
dove
- ( : candidato itemset di lunghezza )
- ( : itemset frequente di lunghezza )
Pseudocodice per l'Apriori
Apriori
- large 1-itemsets
-
- while
- Generate
- for transactions
- Subset
- for candidates
- while
- return
Riferimenti
- Agrawal R, Imielinski T, Swami AN. "Mining Association Rules between Sets of Items in Large Databases." SIGMOD. June 1993, 22(2):207-16, pdf.
- Agrawal R, Srikant R. "Fast Algorithms for Mining Association Rules", VLDB. Sep 12-15 1994, Chile, 487-99, pdf, ISBN 1-55860-153-8.
- Mannila H, Toivonen H, Verkamo AI. "Efficient algorithms for discovering association rules." AAAI Workshop on Knowledge Discovery in Databases (SIGKDD). July 1994, Seattle, 181-92, ps.