
Cluster analysis: tecniche e applicazioni
Tecniche avanzate di clustering: hierarchical, DBSCAN e Gaussian Mixture Models per segmentazione.
Cosa imparerai
- Applicare hierarchical clustering, DBSCAN e GMM sulla stessa tabella di feature
- Confrontare Silhouette, Davies-Bouldin e Calinski-Harabasz per scegliere il numero di cluster
- Verificare stabilità e interpretabilità dei cluster prima di attivare campagne
Collegamenti
Cluster analysis: tecniche e applicazioni
La domanda di fondo del clustering è semplice: come si fa a dividere una base clienti in gruppi che abbiano davvero senso per il marketing? Lavorando su tabelle di feature e algoritmi classici, senza reti neurali, impari a confrontare hierarchical, DBSCAN e Gaussian Mixture Models sulla stessa base, e a scegliere il numero di cluster con metriche e significato di business insieme. Un cluster che non porta a un’azione diversa non serve.
Che cos’è la cluster analysis
La cluster analysis raggruppa i clienti per comportamento d’acquisto in segmenti stabili che ricevono trattamenti di marketing diversi.
La procedura in cinque passaggi
Ecco la sequenza che seguiamo quando vogliamo un clustering solido e non un grafico colorato.
- Normalizza le feature comportamentali con scaler stabile e tracciabile.
- Esegui hierarchical, DBSCAN e GMM sulla stessa tabella di feature.
- Confronta Silhouette, Davies-Bouldin e Calinski-Harabasz da 2 a 10 cluster.
- Verifica stabilità su sottocampioni e interpretabile in una frase.
- Attiva solo segmenti con trattamento di marketing diverso e misurabile.
Hierarchical clustering
Il clustering gerarchico non richiede di fissare K a priori. Produce un dendrogramma, cioè un albero che mostra a quale distanza i gruppi si uniscono. La visualizzazione rende leggibile la struttura gerarchica dei cluster.
from scipy.cluster.hierarchy import dendrogram, linkage, fcluster
from sklearn.preprocessing import StandardScaler
X_scaled = StandardScaler().fit_transform(df[features])
Z = linkage(X_scaled, method='ward') # minimizza varianza intra-cluster
# Dendrogramma
plt.figure(figsize=(14, 7))
dendrogram(Z, truncate_mode='level', p=5)
plt.title('Customer Segmentation Dendrogram')
plt.show()
# Taglia a 5 cluster
clusters = fcluster(Z, t=5, criterion='maxclust')
Il dendrogramma è un buon strumento esplorativo. Vedere a quale altezza i cluster si uniscono dà intuizioni sulla struttura dei dati che i numeri da soli non offrono. Puoi tagliare l’albero a diverse altezze per ottenere più o meno granularità.
DBSCAN: cluster di forma arbitraria
DBSCAN non assume cluster sferici e gestisce automaticamente gli outlier, classificandoli come rumore nel cluster -1.
from sklearn.cluster import DBSCAN
dbscan = DBSCAN(eps=0.8, min_samples=15)
clusters = dbscan.fit_predict(X_scaled)
n_clusters = len(set(clusters)) - (1 if -1 in clusters else 0)
n_outliers = list(clusters).count(-1)
print(f"Cluster: {n_clusters}, Outliers: {n_outliers} ({n_outliers/len(clusters)*100:.1f}%)")
Conviene quando i dati hanno cluster di densità variabile, per esempio comportamenti di acquisto con pattern non lineari. È la scelta giusta quando ci sono outlier significativi e quando non hai idea di quanti cluster aspettarti. Il parametro più critico è eps, cioè il raggio di vicinanza. Per sceglierlo usa il metodo k-distance: plotta la distanza al k-esimo vicino per ogni punto in ordine decrescente, e cerca il gomito della curva.
from sklearn.neighbors import NearestNeighbors
neigh = NearestNeighbors(n_neighbors=15)
nbrs = neigh.fit(X_scaled)
distances, _ = nbrs.kneighbors(X_scaled)
distances = np.sort(distances[:, -1])
plt.plot(distances)
# Cerca il punto di massima curvatura → eps ottimale
Gaussian Mixture Models
I GMM assegnano una probabilità di appartenenza soft invece di etichette rigide. Ogni cliente appartiene a ogni cluster con un peso tra 0 e 1.
from sklearn.mixture import GaussianMixture
gmm = GaussianMixture(n_components=5, covariance_type='full', random_state=42)
gmm.fit(X_scaled)
probs = gmm.predict_proba(X_scaled) # shape: (n_samples, n_components)
labels = gmm.predict(X_scaled)
Per il marketing è comodo: un cliente può essere in quota parte cacciatore di offerte, in quota parte acquirente ad alto scontrino e in quota parte vetrina. Puoi targetizzare le campagne sui pesi di appartenenza invece che su etichette binarie. Un cliente prevalentemente orientato alle offerte vede soprattutto promozioni, ma ogni tanto anche raccomandazioni premium pensate per la sua quota ad alto scontrino.
Verdetto: hierarchical per esplorare la struttura, DBSCAN per outlier e forme irregolari, GMM per appartenenze pesate attivabili nelle campagne.
Scegliere il numero di cluster
Nessuna metrica decide da sola quanti cluster servono. Conviene incrociare gli indici quantitativi con il significato di business.
| Metrica | Range | Target | Interpretazione |
|---|---|---|---|
| Silhouette Score | [-1, 1] | Più alto e sopra 0.5 | Coesione intra-cluster contro separazione inter-cluster |
| Davies-Bouldin Index | [0, infinito) | Più basso | Similarità media tra ogni cluster e il suo più simile |
| Calinski-Harabasz | [0, infinito) | Più alto | Rapporto varianza between contro within cluster |
| Business interpretability | Qualitativo | Segmenti con significato marketing | Se non sai spiegare il cluster in 1 frase, non serve |
In pratica testa K da 2 a 10 con tutte e tre le metriche, cerca il punto dove iniziano a peggiorare marginalmente, poi scegli il K con il miglior significato di business anche se non è l’ottimo matematico puro.
Checklist per un clustering di successo
Un clustering è pronto quando hai feature normalizzate e hai provato almeno tre metodi tra K-means, hierarchical, DBSCAN o GMM. Hai inoltre fissato il numero di cluster usando le metriche insieme al business sense. Ogni cluster deve avere un nome memorabile e un profilo interpretabile, e deve restare stabile: rifacendo il clustering su un subset, le assegnazioni non cambiano radicalmente. L’ultimo controllo è il più severo: il clustering deve portare a un’azione di marketing diversa per segmento. Se tratti tutti i segmenti allo stesso modo, non serve.
Controllo di qualità e lettura per segmenti
Prima di usare i cluster in una decisione, controlla sempre completezza, duplicati, timezone, definizioni cambiate e segmenti esclusi. La media aggregata è solo il punto di partenza. Segmenta per canale, coorte, piano, paese, device e maturità dell’utente: se due segmenti si muovono in direzioni opposte, la media non rappresenta nessuno dei due.
Un caso che fa riflettere: Target
Nel 2012 il New York Times con Charles Duhigg documentò il caso Target sulla previsione delle gravidanze. Il team analytics identificò circa 25 prodotti il cui acquisto congiunto segnalava alta probabilità di gravidanza. Target inviò coupon per neonati mirati in base a quel punteggio. Il modello anticipò la gravidanza di una adolescente prima che il padre ne fosse al corrente. Il caso resta il riferimento per segmentazione predittiva: cluster comportamentale, azione mirata e controllo etico mancato.
Domande per l’autoverifica
- Quale metodo usi per esplorare la struttura senza fissare K?
- Quale parametro di DBSCAN separa cluster densi dal rumore?
- Quale vantaggio danno le appartenenze pesate dei GMM nelle campagne?
- Quale test di stabilità scarta un cluster bello ma fragile?
Bloccato su questo argomento o vuoi applicarlo al tuo caso? Prenota una call di 15 minuti con un analista esperto.
Percorso collegato
Lezioni da leggere insieme
Questi collegamenti portano la lezione dentro il resto del corso: basi da riprendere, passaggi successivi e connessioni tematiche tra moduli.