Algoritmo apriori

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 è k m a x + 1 {\displaystyle k_{max}+1} , dove k m a x {\displaystyle k_{max}} 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 {\displaystyle 2^{|S|}-1} sottoinsiemi propri, dove S è il gruppo di elementi specifico (Supporto) in cui un particolare sottoinsieme di oggetti compare.[5]

Esempi

Insiemi frequenti

I passi dell'algoritmo per trovare gli insiemi frequenti L {\displaystyle L} nel Database D {\displaystyle D} :

a. ricerca di insiemi frequenti L k 1 {\displaystyle L_{k-1}}
b. passo di Join
C k {\displaystyle C_{k}} generato con un join di L k 1 {\displaystyle L_{k-1}} con se stesso
c. passo di Pruning
qualunque ( k 1 ) ( i t e m s e t ) {\displaystyle (k-1)-(itemset)} non frequente non può essere un sottoinsieme frequente k ( i t e m s e t ) {\displaystyle k-(itemset)} , perciò sarà rimosso

dove C k {\displaystyle C_{k}} è il candidato itemset di grandezza k {\displaystyle k} e dove inoltre L k {\displaystyle L_{k}} è l'itemset frequente di grandezza k {\displaystyle k}

Candidati

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 {\displaystyle k} nodi, in modo seriale, a partire da itemset di grandezza k 1 {\displaystyle k-1} .
Ad esempio, con k = 4 {\displaystyle k=4} , supponiamo che ci siano due di tali insiemi di grandezza k 1 {\displaystyle k-1}

A B C {\displaystyle A\rightarrow B\rightarrow C} ,

e

A B D {\displaystyle A\rightarrow B\rightarrow D} ,

ebbene i due itemset candidati generati saranno

A B C D {\displaystyle A\rightarrow B\rightarrow C\rightarrow D}

e

A B D C {\displaystyle A\rightarrow B\rightarrow D\rightarrow C} .

Pseudocodice

Apriori ( T , ε ) {\displaystyle (T,\varepsilon )}

L 1 { {\displaystyle L_{1}\gets \{} large 1-itemsets } {\displaystyle \}}
k 2 {\displaystyle k\gets 2}
while L k 1 {\displaystyle L_{k-1}\neq \varnothing }
C k {\displaystyle C_{k}\gets } Generate ( L k 1 ) {\displaystyle (L_{k-1})}
for transactions t T {\displaystyle t\in T}
C t {\displaystyle C_{t}\gets } Subset ( C k , t ) {\displaystyle (C_{k},t)}
for candidates c C t {\displaystyle c\in C_{t}}
c o u n t [ c ] c o u n t [ c ] + 1 {\displaystyle \mathrm {count} [c]\gets \mathrm {count} [c]+1}
L k { c C k |   c o u n t [ c ] ε } {\displaystyle L_{k}\gets \{c\in C_{k}|~\mathrm {count} [c]\geq \varepsilon \}}
k k + 1 {\displaystyle k\gets k+1}
return k L k {\displaystyle \bigcup _{k}L_{k}}

Note

  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).
  Portale Informatica
  Portale Matematica