Calcolo delle metriche chiave di mining
Scorri per mostrare il menu
Supporto: definizione, calcolo e interpretazione
Supporto misura la frequenza con cui uno specifico articolo o insieme di articoli appare in un dataset di transazioni.
Matematicamente, il supporto per un insieme di articoli è la proporzione di transazioni che contengono tutti gli articoli di quell'insieme. In un contesto retail, il supporto aiuta a comprendere quanto sia comune una combinazione di prodotti tra tutte le transazioni.
Support(itemset) = Number of transactions containing itemset / Total number of transactions
Un valore di supporto più alto indica che l'insieme di articoli è più presente nei dati, rendendolo un candidato per ulteriori analisi o promozioni. Ad esempio, se "bread and butter" compaiono insieme in 30 su 100 transazioni, il supporto per {"bread", "butter"} è 0.3.
Confidenza: formula, significato e utilizzo pratico
Confidenza valuta la probabilità che un cliente che acquista l'articolo A acquisti anche l'articolo B.
Si calcola come il rapporto tra il numero di transazioni contenenti sia A che B e il numero di transazioni contenenti solo A.
Confidenza(A ⇒ B) = Numero di transazioni contenenti sia A che B / Numero di transazioni contenenti A
In pratica, la confidenza indica quanto è affidabile la regola "se A, allora B". Se la confidenza è alta, si può essere più certi che i clienti che acquistano A acquisteranno anche B, il che è utile per raccomandazioni mirate o attività di marketing.
Lift: Derivazione, Misurazione e Importanza
Lift valuta quanto è più probabile che l'articolo B venga acquistato quando viene acquistato l'articolo A, rispetto a se gli acquisti di A e B fossero eventi indipendenti.
Si calcola dividendo la confidenza della regola per il supporto del conseguente (B):
Lift(A ⇒ B) = Confidence(A ⇒ B) / Support(B)
Un valore di lift pari a 1 implica assenza di associazione (indipendenza), maggiore di 1 indica un'associazione positiva, mentre inferiore a 1 suggerisce un'associazione negativa. Il lift è fondamentale perché tiene conto della popolarità del conseguente, aiutando a distinguere le relazioni realmente significative da quelle casuali.
Esempio pratico: Calcolo di Supporto, Confidenza e Lift
Supponiamo di avere i seguenti dati di transazione:
- Transaction 1: Milk, Bread;
- Transaction 2: Milk, Diaper, Beer, Bread;
- Transaction 3: Milk, Diaper, Beer, Cola;
- Transaction 4: Bread, Butter.
Calcoliamo le metriche per la regola: Milk ⇒ Bread.
-
Support(Milk, Bread): Presente nelle Transaction 1 e 2 (2 su 4) ⇒ 0.5;
-
Support(Milk): Presente nelle Transaction 1, 2 e 3 (3 su 4) ⇒ 0.75;
-
Support(Bread): Presente nelle Transaction 1, 2 e 4 (3 su 4) ⇒ 0.75.
-
Confidence(Milk ⇒ Bread): Support(Milk, Bread) / Support(Milk) = 0.5 / 0.75 = 0.6667;
-
Lift(Milk ⇒ Bread): Confidence(Milk ⇒ Bread) / Support(Bread) = 0.6667 / 0.75 = 0.8889.
Questo significa che, sebbene "Milk" e "Bread" compaiano spesso insieme, acquistare "Milk" non aumenta la probabilità di acquistare "Bread" rispetto alla media di base.
123456789101112131415161718192021222324252627282930import pandas as pd from mlxtend.preprocessing import TransactionEncoder # Sample transaction data data = [ ['Milk', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Bread'], ['Milk', 'Diaper', 'Beer', 'Cola'], ['Bread', 'Butter'] ] # Converting to DataFrame with one-hot encoding te = TransactionEncoder() te_ary = te.fit(data).transform(data) df = pd.DataFrame(te_ary, columns=te.columns_) # Calculating support support_milk = df['Milk'].mean() support_bread = df['Bread'].mean() support_milk_bread = (df['Milk'] & df['Bread']).mean() # Calculating confidence for rule: Milk => Bread confidence = support_milk_bread / support_milk # Calculating lift for rule: Milk => Bread lift = confidence / support_bread print(f"Support (Milk & Bread): {support_milk_bread:.2f}") print(f"Confidence (Milk ⇒ Bread): {confidence:.2f}") print(f"Lift (Milk ⇒ Bread): {lift:.2f}")
Questo codice mostra come calcolare le principali metriche delle regole di associazione—supporto, confidenza e lift—utilizzando un piccolo dataset di transazioni. Ecco come funziona ciascuna parte:
-
Preparazione dei dati di transazione:
- La lista
datacontiene le transazioni, ciascuna come elenco di articoli acquistati; - Ogni sotto-lista rappresenta una singola transazione (carrello) di un cliente.
- La lista
-
One-hot encoding delle transazioni:
- Il codice utilizza
TransactionEncoderdalla libreriamlxtendper convertire la lista di liste di articoli in un formato adatto all'analisi; fitapprende tutti gli articoli unici, mentretransformcrea un array booleano (True se l'articolo è presente nella transazione, False altrimenti);- Questo array viene convertito in un DataFrame pandas, dove ogni colonna è un articolo e ogni riga una transazione.
- Il codice utilizza
-
Calcolo del supporto:
support_milk = df['Milk'].mean()calcola la proporzione di transazioni contenenti "Milk";support_bread = df['Bread'].mean()calcola la proporzione contenente "Bread";support_milk_bread = (df['Milk'] & df['Bread']).mean()calcola la proporzione di transazioni contenenti sia "Milk" che "Bread" (intersezione delle due colonne).
-
Calcolo della confidenza:
confidence = support_milk_bread / support_milkcalcola la confidenza per la regola "Milk ⇒ Bread";- Questa misura quanto spesso "Bread" viene acquistato quando viene acquistato "Milk".
-
Calcolo del lift:
lift = confidence / support_breadcalcola il lift per la regola;- Il lift confronta la confidenza osservata con quella attesa se gli acquisti di "Milk" e "Bread" fossero indipendenti.
-
Stampa e interpretazione dei risultati:
- Il codice stampa i valori di supporto, confidenza e lift per "Milk & Bread";
- Un supporto di 0.50 significa che "Milk" e "Bread" vengono acquistati insieme nella metà delle transazioni;
- Una confidenza di 0.67 indica che quando viene acquistato "Milk", anche "Bread" viene acquistato nei due terzi dei casi;
- Un lift di 0.89 suggerisce che acquistare "Milk" rende l'acquisto di "Bread" leggermente meno probabile rispetto al caso casuale (poiché lift < 1).
1. Supponiamo che in un dataset di 1.000 transazioni, 150 transazioni contengano sia "apples" che "bananas". Qual è il supporto per l'itemset {"apples", "bananas"}?
2. Quale affermazione distingue meglio la confidenza dal lift nell'analisi delle regole di associazione?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione