Vai al contenuto principale
Cluster analysis: tecniche e applicazioni - immagine ufficiale della lezione su GinnyTech, creata da AD

Cluster analysis: tecniche e applicazioni

Tecniche avanzate di clustering: hierarchical, DBSCAN e Gaussian Mixture Models per segmentazione.

AD
Creato daAndrii Dyshkantiuk
Lezione 76 / 236Livello: AvanzatoDurata: 22 minPrerequisiti: 1

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

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.

  1. Normalizza le feature comportamentali con scaler stabile e tracciabile.
  2. Esegui hierarchical, DBSCAN e GMM sulla stessa tabella di feature.
  3. Confronta Silhouette, Davies-Bouldin e Calinski-Harabasz da 2 a 10 cluster.
  4. Verifica stabilità su sottocampioni e interpretabile in una frase.
  5. 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.

MetricaRangeTargetInterpretazione
Silhouette Score[-1, 1]Più alto e sopra 0.5Coesione intra-cluster contro separazione inter-cluster
Davies-Bouldin Index[0, infinito)Più bassoSimilarità media tra ogni cluster e il suo più simile
Calinski-Harabasz[0, infinito)Più altoRapporto varianza between contro within cluster
Business interpretabilityQualitativoSegmenti con significato marketingSe 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

  1. Quale metodo usi per esplorare la struttura senza fissare K?
  2. Quale parametro di DBSCAN separa cluster densi dal rumore?
  3. Quale vantaggio danno le appartenenze pesate dei GMM nelle campagne?
  4. Quale test di stabilità scarta un cluster bello ma fragile?
Serve una mano concreta?

Bloccato su questo argomento o vuoi applicarlo al tuo caso? Prenota una call di 15 minuti con un analista esperto.

Prenota una call