Metodologie per Sistemi Intelligenti
Regole di
Associazione
• Prof. Pier Luca Lanzi
• Laurea in Ingegneria
Informatica
• Politecnico di Milano
• Polo regionale di Como
Esempio
Esempio
Regole di Associazione
• Scopo
– Trovare Associazioni interessanti e relazioni
di correlazione in grandi insiemi di transazioni
• Dominio applicativo
– Grandi collezioni di dati che possono essere
raccolti con grande facilità in cui esista un
concetto di “transazione”
– Ad esempio, scontrini di supermercato,
log di trasmissioni di cellulari
Regole di Associazione
computer ⇒ software_finanziario
con confidenza 0.6
supporto 0.02
• Afferma che:
– computer e software_finanziario sono
acquistati insieme dal 2% dei clienti
– Il 60% dei clienti che acquistano computer
acquistano anche software finanziario
Regole di Associazione
pane,burro ⇒ latte
con supporto 0.05
confidenza 0.9
• Afferma che:
– pane, burro e latte compaiono insieme nel
5% degli scontrini
– Il 90% degli scontrini che contengono pane e
burro contengono anche latte
Regole di Associazione
• Le regole di associazione sono una sorta
di “implicazioni”
• La regola X⇒Y viene interpretata come
“nelle transazioni in cui compare X
compare anche Y”
• X è detto corpo o rule body, Y è detta
testa o rule head
Supporto e Confidenza
• Le regole di associazione sono
caratterizzate da due misure statistiche:
supporto, e confidenza.
• Il supporto indica la percentuale di
transazioni che contengono entrambe X
ed Y
• La confidenza indica, date le transazioni
che contengono X, qual è la percentuale
di transazioni che contengono Y
Esempio
Esempio
• Supporto?
• Confidenza?
Esempio
• Supporto = percentuale di transazioni in cui compaiono entrambi i
simboli.
• Supporto = 4/12 = 0.33
Esempio
• Confidenza = date le transazioni contenenti un quadrato nero, qual
è la percentuale di transazioni che contengono anche un triangolo
bianco?
• Confidenza = 4/5 = 0.80
Formalmente...
Dati
• un insieme I di “item” {I1…In}
• un insieme D di transazioni T, T⊆I
• due insieme X e Y di elementi, X⊆I Y⊆I
• la funzione freq(X,D) che restituisce pa
percentuale di transazioni in D che contengono
X
Formalmente...
• La regola X⇒Y indica che le transazioni T che
contengono X (X⊆T), conterranno molto
probabilmente anche gli elementi di Y (Y⊆T)
• Il supporto di X⇒Y rispetto a D è calcolato come
support(X⇒Y,D) = freq(X∪Y,D)
• La confidenza di X⇒Y rispetto a D è calcolata come
confidence(X⇒Y,D) =
freq(X∪Y,D)/freq(X,D)
Formalmente…
• Il problema di estrarre regole di
associazione è definito come il problema
di estrarre tutte le regole con
– un supporto superiore al parametro min_sup
– una confidenza superiore al parametro
min_conf
• Le regole che soddisfano i vincoli di
supporto minimo e confidenza minima
sono dette strong association rules
Tipi di Regole di Associazione
• Le regole di associazione si caratterizzano
in base a diverse caratteristiche quali:
– il tipo di dati trattati (nominali o numerici)
– il numero di tipi di elementi coinvolti
(T⊆ I1× …×In)
– il numero di livelli di astrazione coinvolti
Itemset
• Un insieme di item è detto itemset
• Un insieme di k item è detto k-itemset
• L’insieme {pane,burro,latte}è un
3-itemset
• Il Support count indica il numero di
transazioni che contengono un certo
itemset
Itemset
• La frequenza di un itemset è la
percentuale di transazioni in cui tutti gli
elementi dell’itemset compaiono
• Un itemset con frequenza superiore a
min_sup è detto frequent itemset
• L’insieme dei itemset di ordine k
è indicato con Lk
Esempio
• Qual è la frequenza dell’itemset formato da un triangolo, un
quadrato ed un esagono bianchi?
• 4/12
Come funziona?
• È un processo in due fasi
• Nella prima fase vengono estratti tutti i
frequent itemset
• Nella seconda fase vengono estratte tutte
le regole di associazione che soddisfano i
vincoli di min_sup e min_conf
Calcolo dei frequent itemset
• Se un itemset X non soddisfa min_sup
allora nessuna sua estensione X∪Y
soddiferà min_sup
• Si parte dall’insieme L1 dei frequent
itemset contenenti un solo elemento
• L1 è utilizzato per trovare L2
• L2 è utilizzato per trovare L3
• Il processo continua fino a quando non è
più possibile trovare frequent k-itemset
Algoritmo generale
1. Nella prima fase, il supporto di ogni item viene
contato e vengono determinati i frequent itemset
di dimensione 1
2. In ogni passo successivo, i frequent itemset
determinati al passo precedente sono utilizzati per
generare i nuovi itemset detti candidate itemsets.
3. Il supporto di ogni candidato è calcolato e i
frequent itemset sono determinati
4. Il processo continua fino a quando non vengono
trovati nuovi frequent itemset.
Algoritmo generale
• Tutti gli algoritmi si basano sulla
downward closure property
• Se un itemset ha supporto minimo, allora
ogni sottoinsieme dell’itemset ha pure
supporto minimo
• Quindi si applica una cosìdetta level-wise
search
Algoritmo generale
• Passo 1
– il supporto di ogni item è calcolato ottenendo così i frequent
itemset di dimensione 1
• Passo 2
– I frequent itemset ottenuti al passo precedente sono “estesi”
ottenendo i nuovi itemset candidati
• Passo 3
– Viene calcolato il supporto dei nuovi itemset e solo quelli che
soddisfano il minimo supporto sono tenuti
• Di volta in volta il numero di candidati diminuisce,
la procedura finisce quando non ci sono più candidati
che soddisfino la condizione di minimo supporto
Algoritmo Apriori
L1 = {large 1-itemsets}
for (k=2; Lk-1≠∅; k++)
{
Ck = apriori-gen(Lk-1); // nuovi candidati
forall transactions t
{
C’t = subset (Ck, t)
forall candidates c ∈ Ct do
c.count++
}
Lk = {c ∈ Ct | c.count ≥ minsup}
}
return
∪
k
Lk
Algoritmo AIS
• Due passi fondamentali
– Estensione degli itemset
– Determinazione dei candidate itemset
• Gli itemset candidati sono generati
dinamicamente
• I nuovi itemset candidati item sets sono
generati estendendo i frequent itemset
generati al passo precedente
Algoritmo SETM
• L’algoritmo è ottenuto esprimendo l’approccio
generale attraverso l’uso di query SQL
• Due passi fondamentali
– Gli itemset candidati sono generati attraverso join
– Viene calcolato il supporto così da determinare
i frequent itemset
• Anche in questo caso, i candidati sono generati
dinamicamente (on the fly)
• I nuovi candidati sono generati estendendo i
frequent itemset del passo precedente con altri
elementi della transazione
Esempio
Transazioni
TID
Items
L1
C2
Itemset Support
Itemset Support
100
134
{1}
2
{1 3}*
2
200
235
{2}
3
{1 4}
1
300
1235
{3}
3
{3 4}
1
400
25
{5}
3
{2 3}*
2
{2 5}*
3
{3 5}*
2
{1 2}
1
{1 5}
1
C3
Itemset Support
{1 3 4}
1
{2 3 5}*
2
{1 3 5}
1
Dagli itemset alle regole...
• Dati due frequent itemset X e Y
confidence(X⇒Y) = P(Y|X)=
= support_count(X∪Y,D)/support_count(X,D)
INPUT frequent itemset FI
OUTPUT strong association rules
for every frequent itemset X of FI
for every non empty subset s of X
{
if support_count(X)/support_count(s)>min_conf
output the rule s ⇒ (X-s)
}
Formalmente...
•
•
•
•
un insieme I di “item” {I1…In}
un insieme D di transazioni T, T⊆I
due insieme X e Y di elementi, X⊆I Y⊆I
data la funzione freq(X,D) che restituisce pa percentuale di
transazioni in D che contengono X
• La regola X⇒Y indica che le transazioni T che contengono X
(X⊆T), conterranno molto probabilmente anche gli elementi di Y
(Y⊆T)
• Il supporto di X⇒Y rispetto a D è calcolato come
support(X⇒Y,D) = freq(X∪Y,D)
• La confidenza di X⇒Y rispetto a D è calcolata come
confidence(X⇒Y,D) = freq(X∪Y,D)/freq(X,D)
Riferimenti
• J.Han & M.Kamber. “Data Mining:
Concepts and techniques” Morgan
Kaufmann (2001). Capitolo 6 e 8.