Vai al contenuto principale

Tutorial sul mining di regole associative in Python

Scoprire pattern nascosti in Python con il mining di regole associative
· 14 min leggi

Scopri con l'IA

Il mining di regole associative è una tecnica usata per scoprire relazioni nascoste tra variabili in grandi dataset. È un metodo popolare nel data mining e nel machine learning e trova applicazione in molti ambiti, come la market basket analysis, la segmentazione dei clienti e il rilevamento delle frodi.

In questo articolo esploreremo il mining di regole associative in Python, con i relativi casi d’uso, algoritmi e implementazione. Partiremo da una breve panoramica e dalle sue applicazioni, per poi entrare nei dettagli degli algoritmi e della loro implementazione in Python. Infine, concluderemo con un riepilogo dei punti chiave trattati.

Che cos’è il mining di regole associative?

Il mining di regole associative è una tecnica per identificare pattern in grandi insiemi di dati. Consiste nel trovare relazioni tra variabili nei dati e usare tali relazioni per fare previsioni o prendere decisioni. L’obiettivo è far emergere regole che descrivano le relazioni tra diversi elementi nel dataset.

Per esempio, considera un dataset di transazioni di un supermercato. Il mining di regole associative può individuare relazioni tra articoli spesso acquistati insieme. Ad esempio, la regola "Se un cliente compra il pane, è probabile che compri anche il latte" è una regola associativa che potrebbe essere estratta da questo dataset. Possiamo usare tali regole per supportare decisioni su layout del negozio, posizionamento dei prodotti e iniziative di marketing.

Il mining di regole associative in genere utilizza algoritmi per analizzare i dati e identificare le relazioni. Questi algoritmi possono basarsi su metodi statistici o tecniche di machine learning. Le regole risultanti vengono spesso espresse come affermazioni "se-allora", dove la parte "se" rappresenta l’antecedente (la condizione) e la parte "allora" rappresenta il conseguente (l’esito che si verifica se la condizione è soddisfatta).

Il mining di regole associative è importante nell’analisi dei dati perché consente di scoprire pattern o relazioni che potrebbero non essere immediatamente evidenti. Identificando le associazioni tra variabili, aiuta a comprendere come esse siano collegate tra loro. 

Questo può essere utile per diversi scopi, come identificare tendenze di mercato, rilevare attività fraudolente o comprendere il comportamento dei clienti. Il mining di regole associative può anche fungere da base per altri tipi di analisi, come la previsione di risultati o l’individuazione dei fattori chiave di determinati fenomeni. In sintesi, è uno strumento prezioso per estrarre insight e comprendere la struttura sottostante dei dati.

Casi d’uso del mining di regole associative:

Il mining di regole associative è comunemente usato in molte applicazioni; alcune tra le più diffuse sono:

Market basket analysis

Una delle applicazioni più note è la market basket analysis. Consiste nell’analizzare gli articoli acquistati insieme dai clienti per comprendere abitudini e preferenze di acquisto. 

Per esempio, un rivenditore potrebbe scoprire che i clienti che acquistano pannolini comprano spesso anche il latte in polvere. Queste informazioni possono essere usate per ottimizzare il posizionamento dei prodotti e le promozioni, aumentando le vendite. 

Per saperne di più sulla Market Basket Analysis, dai un’occhiata al nostro tutorial su Market Basket Analysis in R.

Segmentazione dei clienti

Il mining di regole associative può essere usato anche per segmentare i clienti in base alle loro abitudini di acquisto. 

Per esempio, un’azienda potrebbe scoprire che i clienti che acquistano determinati tipi di prodotti sono più spesso giovani. Allo stesso modo, potrebbe emergere che chi acquista certe combinazioni di prodotti è più probabile che si trovi in specifiche aree geografiche. 

Queste informazioni possono essere sfruttate per adattare campagne di marketing e raccomandazioni personalizzate a segmenti specifici. Approfondisci l’argomento con il nostro tutorial introduttivo sulla segmentazione dei clienti in Python. 

Rilevamento delle frodi

Il mining di regole associative può essere usato anche per individuare attività fraudolente. Ad esempio, una società di carte di credito potrebbe usarlo per identificare pattern di transazioni fraudolente, come acquisti multipli dallo stesso esercente in un breve lasso di tempo. 

Queste informazioni possono poi essere usate per segnalare potenziali frodi e adottare misure preventive a tutela dei clienti. Nel nostro blog Data Sciece in Banking: Fraud Detection puoi scoprire meglio come funziona il processo. 

Analisi dei social network

Diverse aziende usano il mining di regole associative per identificare pattern nei dati dei social media utili all’analisi delle reti sociali. 

Per esempio, un’analisi di dati Twitter potrebbe rivelare che chi twitta su un certo argomento tende anche a twittare su temi correlati, informando così l’identificazione di gruppi o comunità all’interno della rete.

Sistemi di raccomandazione

Il mining di regole associative può suggerire elementi che potrebbero interessare a un cliente in base ai suoi acquisti passati o alla cronologia di navigazione. Ad esempio, un servizio di streaming musicale potrebbe raccomandare nuovi artisti o album in base alla cronologia di ascolto dell’utente.

Con il nostro tutorial sui sistemi di raccomandazione in Python puoi imparare a costruire diversi modelli che svolgono questa funzione. 

Algoritmi per il mining di regole associative

Esistono diversi algoritmi per il mining di regole associative. Alcuni tra i più comuni sono:

Algoritmo Apriori

L’algoritmo Apriori è uno dei più utilizzati. Funziona identificando prima gli insiemi di item frequenti nel dataset (itemset che compaiono in un certo numero di transazioni). Usa poi questi itemset frequenti per generare regole associative, sotto forma di "se l’articolo A è acquistato, allora è probabile che venga acquistato anche l’articolo B". Apriori usa un approccio bottom-up, partendo dai singoli item e costruendo via via itemset più complessi.

Algoritmo FP-Growth

L’algoritmo FP-Growth (Frequent Pattern Growth) è un altro algoritmo molto diffuso. Costruisce una struttura ad albero chiamata FP-tree, che codifica gli itemset frequenti del dataset. La FP-tree viene poi usata per generare regole associative in modo simile ad Apriori. In generale, FP-Growth è più veloce di Apriori, soprattutto su dataset di grandi dimensioni.

Algoritmo ECLAT

L’algoritmo ECLAT (Equivalence Class Clustering and bottom-up Lattice Traversal) è una variante di Apriori che adotta un approccio top-down invece del bottom-up. Divide gli item in classi di equivalenza in base al loro supporto (il numero di transazioni in cui compaiono). Le regole vengono poi generate combinando queste classi di equivalenza in una struttura a reticolo. È una versione più efficiente e scalabile di Apriori.

Algoritmo Apriori

L’algoritmo Apriori è diventato uno dei più utilizzati per l’estrazione di itemset frequenti e l’apprendimento di regole associative. È stato applicato a diverse aree, tra cui market basket analysis, sistemi di raccomandazione e rilevamento delle frodi, e ha ispirato lo sviluppo di molti altri algoritmi per compiti analoghi.

Dettagli dell’algoritmo

Apriori inizia impostando una soglia di supporto minimo. È il numero minimo di volte in cui un item deve comparire nel database per essere considerato un itemset frequente. L’algoritmo filtra quindi tutti gli itemset candidati che non soddisfano la soglia di supporto minimo. 

Successivamente genera l’elenco di tutte le combinazioni possibili di itemset frequenti e conta quante volte ciascuna combinazione compare nel database. Quindi genera l’elenco delle regole associative basate sulle combinazioni di itemset frequenti. 

Una regola associativa è un’affermazione del tipo "se l’articolo A è presente in una transazione, allora è probabile che sia presente anche l’articolo B". La forza dell’associazione si misura tramite la confidenza della regola, ovvero la probabilità che l’articolo B sia presente dato che l’articolo A è presente.

L’algoritmo elimina poi le regole associative che non superano una soglia minima di confidenza. Queste regole sono dette regole forti. Infine, l’algoritmo restituisce l’elenco delle regole forti come output.

Apriori utilizza un approccio "bottom-up", iniziando dai singoli item e combinandoli gradualmente in itemset sempre più grandi alla ricerca di pattern frequenti. Usa anche un approccio "delete-relabel" per potare in modo efficiente lo spazio di ricerca eliminando gli itemset infrequenti.

Pro:

  • Apriori è relativamente semplice e facile da capire.
  • Identifica in modo efficace pattern frequenti e regole associative in grandi dataset.
  • È efficiente nel ridurre lo spazio di ricerca eliminando gli itemset infrequenti, diminuendo la complessità computazionale dell’algoritmo.
  • È stato ampiamente usato e testato in varie applicazioni, risultando un algoritmo consolidato e affidabile.

Contro:

  • Apriori non è adatto a dataset molto grandi, poiché la complessità computazionale cresce esponenzialmente con la dimensione del dataset.
  • Potrebbe non essere altrettanto efficace nell’identificare pattern in dataset con molti item rari o transazioni infrequenti.
  • È sensibile alle soglie di supporto minimo e confidenza minima, che possono influenzare la qualità dei risultati.
  • Può generare un numero elevato di regole, rendendo difficile l’interpretazione dei risultati.

Per approfondire l’algoritmo Apriori, dai un’occhiata a questo eccellente tutorial su Market Basket Analysis su DataCamp. 

Metriche per valutare le regole associative

Nell’ambito del mining di regole associative, diverse metriche vengono comunemente usate per valutare qualità e rilevanza delle regole scoperte. 

Queste metriche servono per valutare qualità e importanza delle regole e per selezionare quelle più pertinenti per una data applicazione. È importante notare che la scelta della metrica appropriata dipende dagli obiettivi e dai requisiti specifici dell’applicazione.

Interpretare i risultati delle metriche richiede di comprenderne significato e implicazioni, oltre a come usarle per valutare qualità e rilevanza delle regole scoperte. Ecco alcune linee guida per interpretare le principali metriche:

Supporto

Il supporto misura quanto frequentemente un item o un itemset appare nel dataset. Si calcola come numero di transazioni contenenti l’item/gli item diviso per il numero totale di transazioni. Un supporto alto indica che un item o itemset è comune nel dataset, mentre un supporto basso indica che è raro.

Support Formula

Confidenza

La confidenza misura la forza dell’associazione tra due item. Si calcola come il numero di transazioni contenenti entrambi gli item diviso per il numero di transazioni contenenti il primo item. Un’alta confidenza indica che la presenza del primo item è un forte predittore della presenza del secondo.

Confidence Formula

Lift

Il lift misura la forza dell’associazione tra due item tenendo conto della frequenza di entrambi gli item nel dataset. Si calcola come la confidenza dell’associazione divisa per il supporto del secondo item. Il lift confronta la forza dell’associazione tra due item con quella attesa se gli item fossero indipendenti. 

Un valore di lift maggiore di 1 indica che l’associazione tra due item è più forte di quanto ci si aspetterebbe in base alla frequenza dei singoli item. Questo suggerisce che l’associazione possa essere significativa e meriti ulteriori approfondimenti. Un valore di lift inferiore a 1 indica che l’associazione è più debole del previsto e potrebbe essere meno affidabile o meno significativa.

Lift Formula

Librerie Python e R per il mining di regole associative

Esistono diverse librerie in R e Python utilizzabili per il mining di regole associative:

Librerie R

  • arules: pacchetto per l’estrazione di regole associative e itemset frequenti in R. Offre funzioni per leggere e manipolare dati transazionali, generare regole associative e valutarne la qualità.
  • arulesViz: pacchetto per la visualizzazione di regole associative e itemset frequenti in R. Fornisce funzioni per creare grafici e chart per comprendere e interpretare i risultati del mining.
  • arulesSequences: pacchetto per l’estrazione di regole associative da dati sequenziali in R. Include funzioni per leggere e manipolare dati sequenziali, generare regole associative e valutarne la qualità.

Librerie Python

  • apyori: libreria per implementare l’algoritmo Apriori in Python. Fornisce funzioni per leggere e manipolare dati transazionali, generare regole associative e valutarne la qualità.
  • mlxtend: libreria che implementa vari algoritmi e strumenti di machine learning in Python, incluso il mining di regole associative. Offre funzioni per leggere e manipolare dati transazionali, generare regole associative e valutarne la qualità.
  • PyCaret: PyCaret è una libreria open source di machine learning low-code in Python per automatizzare i workflow di ML. Fornisce un wrapper sopra mlxtend per un’implementazione semplice dell’algoritmo Apriori.

Implementare le regole associative in Python

Useremo PyCaret per implementare le regole associative in Python. Iniziamo installando PyCaret e poi importando il dataset di esempio. 

Installa PyCaret

Puoi installare pycaret con pip. 

```

# install pycaret

pip install pycaret

```

Dataset

Inizieremo caricando un dataset di esempio dal repository di pycaret. È un dataset transazionale di un negozio al dettaglio in Francia. Contiene il numero di fattura per identificare la transazione e la descrizione dell’articolo. Sono le uniche due informazioni che ci interessano per estrarre regole da questo dataset.

```

# load sample data

from pycaret.datasets import get_data

data = get_data('france')

```

Sample Data

Setup

Il primo passo è importare il modulo `arules` e inizializzare la funzione `setup` definendo data, transaction_id e item_id.

```

# init setup

from pycaret.arules import *

s = setup(data = data, transaction_id = 'InvoiceNo', item_id = 'Description')

```

Setup Function

Output della funzione setup

Crea il modello

```

The `create_model` function runs the algorithm and return the rules in pandas DataFrame based on the selection parameters defined in the `create_model`. In this example we have used selection metric `confidence` with threshold and support of 0.5.

# train model

arules = create_model(metric='confidence', threshold=0.5, min_support=0.05)

```

Create Model

Output della funzione create_model

In base alla soglia definita nelle funzioni `create_model`, abbiamo creato 45 regole. L’output sopra contiene le prime 10 ordinate per confidenza (dalla più alta alla più bassa). 

Grafica delle regole

Visualizza e analizza le regole usando la funzione `plot_model` in PyCaret.

```

# 2d plot
plot_model(arules, plot = '2d')

```

Plot Rules

```

# 3d plot

plot_model(arules, plot = '3d')

```

Dai un’occhiata al Notebook completo per seguire passo passo.

3D Plot

Conclusione

Il mining di regole associative è uno strumento prezioso per l’analisi dei dati e una tecnica potente per scoprire pattern e relazioni all’interno dei dati. In Python e R sono disponibili diverse librerie che offrono implementazioni pronte all’uso di vari algoritmi e opzioni per visualizzare i risultati. 

Puoi usare il mining di regole associative in molti contesti per estrarre insight e comprendere la struttura sottostante dei dati. È però importante scegliere l’algoritmo appropriato e impostare correttamente i parametri, come le soglie di supporto minimo e confidenza minima, per ottenere risultati significativi e accurati. 

Se vuoi approfondire l’argomento e saperne di più sul mining di regole associative, puoi consultare i seguenti corsi:

FAQ sul mining di regole associative

Quali sono alcuni algoritmi comuni per il mining di regole associative?

Alcuni algoritmi comuni per il mining di regole associative includono Apriori e FP-Growth. L’algoritmo Apriori usa un approccio bottom-up per generare e testare iterativamente le regole candidate, mentre FP-Growth adotta un approccio più efficiente, top-down, per generare regole partendo dagli itemset frequenti.

Quali librerie Python posso usare per implementare il mining di regole associative in Python?

Ci sono diverse librerie Python per implementare il mining di regole associative, tra cui apyori e mlxtend. La libreria apyori fornisce una semplice implementazione dell’algoritmo Apriori, mentre mlxtend offre ulteriori algoritmi e funzionalità oltre ad Apriori. Puoi anche usare PyCaret, che fornisce una semplice implementazione dell’algoritmo Apriori sopra la libreria mlxtend.

Quali sono alcune metriche comuni per valutare la qualità delle regole?

Tra le metriche più comuni per valutare la qualità delle regole associative ci sono supporto, confidenza e lift.

Qual è la differenza tra supporto e confidenza?

Nel mining di regole associative, il supporto è la percentuale di transazioni nel dataset che contengono un determinato item o insieme di item, mentre la confidenza è la percentuale di transazioni che contengono un determinato item o insieme di item, dato che è presente un altro item o insieme di item. Il supporto misura l’importanza o la rilevanza di un item o insieme di item, mentre la confidenza misura la forza o l’affidabilità di una regola.

Il mining di regole associative è supervisionato o non supervisionato?

Il mining di regole associative è una tecnica di machine learning non supervisionata perché non richiede dati etichettati. L’obiettivo è scoprire pattern o relazioni nei dati, non prevedere un esito specifico a partire da esempi etichettati.

Quali sono alcuni svantaggi dell’algoritmo Apriori?

Uno dei principali svantaggi dell’algoritmo Apriori è il costo computazionale, specialmente su dataset di grandi dimensioni. L’algoritmo genera e testa un gran numero di regole candidate, attività che può richiedere tempo. Inoltre, Apriori è sensibile alla soglia di supporto minimo: una scelta inappropriata può portare a prestazioni scadenti. L’algoritmo richiede anche molta memoria per archiviare gli itemset, il che può essere un problema per dataset molto grandi.

Il mining di regole associative può essere usato con variabili continue o solo con variabili categoriche?

Il mining di regole associative è tipicamente usato con variabili categoriche, ovvero variabili che possono assumere un numero limitato di valori. Tuttavia, è possibile applicarlo a variabili continue discretizzandole in insiemi di classi o intervalli categorici.

Argomenti

Correlato