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.