Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Calcolo delle metriche chiave di mining | Fondamenti delle Regole di Associazione e Analisi Transazionale
Analisi del Carrello della Spesa e Sistemi di Raccomandazione

Calcolo delle metriche chiave di mining

Scorri per mostrare il menu

Supporto: definizione, calcolo e interpretazione

Note
Definizione

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

Note
Definizione

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

Note
Definizione

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.

123456789101112131415161718192021222324252627282930
import 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:

  1. Preparazione dei dati di transazione:

    • La lista data contiene le transazioni, ciascuna come elenco di articoli acquistati;
    • Ogni sotto-lista rappresenta una singola transazione (carrello) di un cliente.
  2. One-hot encoding delle transazioni:

    • Il codice utilizza TransactionEncoder dalla libreria mlxtend per convertire la lista di liste di articoli in un formato adatto all'analisi;
    • fit apprende tutti gli articoli unici, mentre transform crea 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.
  3. 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).
  4. Calcolo della confidenza:

    • confidence = support_milk_bread / support_milk calcola la confidenza per la regola "Milk ⇒ Bread";
    • Questa misura quanto spesso "Bread" viene acquistato quando viene acquistato "Milk".
  5. Calcolo del lift:

    • lift = confidence / support_bread calcola il lift per la regola;
    • Il lift confronta la confidenza osservata con quella attesa se gli acquisti di "Milk" e "Bread" fossero indipendenti.
  6. 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?

question-icon

Supponiamo che in un dataset di 1.000 transazioni, 150 transazioni contengano sia "apples" che "bananas". Qual è il supporto per l'itemset {"apples", "bananas"}?

question mark

Quale affermazione distingue meglio la confidenza dal lift nell'analisi delle regole di associazione?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 1. Capitolo 2
some-alt