Vai al contenuto

Algoritmo apriori

Da Wikipedia, l'enciclopedia libera.

In informatica e in data mining, l'algoritmo Apriori è un classico algoritmo di ricerca delle associazioni. È utilizzato 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 anti-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 è kmax+1, dove kmax 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 alcune inefficienze. In particolare, la generazione dei candidati crea molti sottoinsiemi. Nel processo vengono individuati i sottoinsiemi significativi solo dopo aver trovato tutti i 2|S|−1 sottoinsiemi propri, dove S è il gruppo di elementi specifico (Supporto) in cui un particolare sottoinsieme di oggetti compare.[5]

Insiemi frequenti

[modifica | modifica wikitesto]

I passi dell'algoritmo per trovare gli insiemi frequenti L nel Database D:

a. ricerca di insiemi frequenti Lk−1
b. passo di Join
Ck generato con un join di Lk−1 con se stesso
c. passo di Pruning
qualunque (k−1)−(itemset) non frequente non può essere un sottoinsieme frequente k−(itemset), perciò sarà rimosso

dove Ck è il candidato itemset di grandezza k e dove inoltre Lk è l'itemset frequente di grandezza k

Questo esempio mostra il processo di selezione ovvero generazione di una lista ordinata di itemset candidati.
Il compito consiste nella costruzione di un insieme ordinato di k nodi, in modo seriale, a partire da itemset di grandezza k−1.
Ad esempio, con k=4, supponiamo che ci siano due di tali insiemi di grandezza k−1

A→B→C,

e

A→B→D,

ebbene i due itemset candidati generati saranno

A→B→C→D

e

A→B→D→C.

Apriori (T,ε)

L1←{ large 1-itemsets }
k←2
while Lk−1≠∅
Ck←Generate(Lk−1)
for transactions t∈T
Ct←Subset(Ck,t)
for candidates c∈Ct
count[c]←count[c]+1
Lk←{c∈Ck| count[c]≥ε}
k←k+1
return ⋃kLk
  1. ↑ Regole associative, CNR pdf (PDF).
  2. ↑ Regole associative, UNIFE pdf (PDF) (archiviato dall'url originale il 14 maggio 2006).
  3. ↑ DataMining For Dummies (archiviato dall'url originale il 21 novembre 2010).
  4. ↑ Data Mining, Univ. Helsinki ppt (PPT).
  5. ↑ Agrawal R, Srikant R. "Fast Algorithms for Mining Association Rules", pdf (PDF), su rakesh.agrawal-family.com. URL consultato il 19 agosto 2010 (archiviato dall'url originale il 25 febbraio 2015).