Go to main content
Cluster analysis: techniques and applications - official lesson image on GinnyTech, created by AD

Cluster analysis: techniques and applications

Advanced clustering techniques: hierarchical, DBSCAN, and Gaussian Mixture Models for segmentation.

AD
Created byAndrii Dyshkantiuk
Lesson 76 / 236Level: AdvancedDuration: 22 minPrerequisites: 1

What you will learn

  • Understand the analytical problem and the decision-making context
  • Apply examples, metrics, and controls to real cases

import matplotlib.pyplot as plt

Cluster analysis: techniques and applications

Questa è una lezione tecnica, quindi il punto non è elencare algoritmi ma capire quale decisione di marketing cambia quando i segmenti diventano più affidabili. Un algoritmo trova cinque cluster di clienti, ma nessuno sa se rappresentano comportamenti stabili o solo artefatti di scala, feature e normalizzazione. Il lavoro consiste nel trasformare segmenti matematici in gruppi interpretabili, attivabili e abbastanza robusti da guidare le campagne.

Il problema reale

Un clustering produce gruppi che a prima vista sembrano distinti, ma la geometria può ingannare. Capita che un cluster nasca quasi solo dal reddito, un altro dalla frequenza di acquisto e un terzo dai dati mancanti. Il cluster utile non è quello più bello in un grafico: è quello che descrive una differenza reale e suggerisce un trattamento diverso. Per questo la lezione è un controllo continuo tra geometria e business.

Il problema vero non è conoscere il clustering in astratto. È decidere cosa fare quando i dati sono incompleti, le metriche ambigue o i vincoli tecnici rendono fragile la lettura. Una buona analisi separa il segnale dal rumore, dichiara la baseline e indica quale segmento merita un’azione e quale va scartato perché non è azionabile.

Come impostare il ragionamento

Usa questa sequenza come mappa di lavoro. Ogni passaggio deve rendere più chiaro il costo di una decisione sbagliata.

StepQuestion to askExpected output
DecisionChe cosa cambia se capiamo meglio i segmenti?Scelta esplicita
SignalQuale dato osservabile riduce l’incertezza?Metrica o evento
BaselineRispetto a cosa interpretiamo il risultato?Credible comparison
VincoloChe cosa può falsare la lettura?Assunzione da dichiarare
ActionQuale passo operativo segue?Raccomandazione controllabile

La domanda di targeting che apre tutto è semplice: quale decisione richiede davvero segmenti non supervisionati, e quale controllo verifica che siano stabili e interpretabili?

Come formalizzare il problema

Formalizzare non serve a complicare. Serve a rendere visibili le assunzioni, così un altro analista può riprodurre la logica, criticarla e arrivare alla stessa decisione partendo dagli stessi dati.

ElementOperational DefinitionControllo minimo
Unit of analysisOggetto su cui misuri il fenomenoUtente, account, evento, ordine o periodo
Variabile osservataSegnale che rappresenta il comportamentoDefinizione stabile e tracciabile
BaselineStato contro cui confronti il segnalePeriodo, segmento, controllo o benchmark
Soglia decisionalePunto in cui cambia l’azioneCriterio scritto prima della lettura
Rischio residuoErrore che può restare anche dopo l’analisiSensitivity check o revisione qualitativa

Il rischio principale resta scambiare un numero disponibile per una prova sufficiente.

Hierarchical clustering

Il clustering gerarchico non richiede di fissare K a priori. Produce un dendrogramma che mostra visivamente 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, e puoi tagliare l’albero a diverse altezze per ottenere più o meno granularità.

DBSCAN: arbitrary shape clusters

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, quando ci sono outlier significativi e quando non hai idea di quanti cluster aspettarti. Il parametro più critico è eps. 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 (GMM)

I GMM assegnano una probabilità di appartenenza soft invece di etichette rigide.

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 “60% Deal Hunter, 30% Power Shopper, 10% Window Shopper”. Puoi targetizzare le campagne sui pesi di appartenenza invece che su etichette binarie. Un cliente al 60% Deal Hunter vede soprattutto offerte, ma ogni tanto anche raccomandazioni premium pensate per il 30% Power Shopper.

Scegliere il numero di cluster

Nessuna metrica decide da sola quanti cluster servono. Conviene incrociare gli indici quantitativi con il significato di business.

MetricRangeTargetInterpretation
Silhouette Score[-1, 1]Higher = better, >0.5 goodIntra-cluster cohesion vs inter-cluster separation
Davies-Bouldin Index[0, ∞)Lower = betterAverage similarity between each cluster and its closest
Calinski-Harabasz[0, ∞)Higher = betterBetween/within cluster variance ratio
Business interpretabilityQualitativeSegments with marketing meaningIf you can't explain the cluster in one sentence, it's useless

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 for successful clustering

Un clustering è pronto quando hai feature normalizzate (StandardScaler o MinMaxScaler), hai provato almeno tre metodi tra K-means, hierarchical, DBSCAN o GMM, e hai 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 interpretazione per segmenti

Prima di usare i cluster in una decisione, controlla sempre completezza, duplicati, timezone, definizioni cambiate e segmenti esclusi. Molte analisi apparentemente sofisticate falliscono perché il dato di partenza misura un comportamento diverso da quello che il team crede di osservare.

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 e può portare a una scelta sbagliata.

Lab ed esercizi

Comincia da una scheda di una pagina: decisione da supportare, metrica primaria, baseline, rischio principale e azione se il segnale è confermato. Al livello intermedio costruisci una tabella con tre segmenti o scenari, indicando per ciascuno cosa cambia, quale spiegazione alternativa è plausibile e quale controllo useresti prima di raccomandare un’azione. Al livello research-grade prepara un decision memo completo con ipotesi, dati richiesti, criteri di esclusione, controlli di qualità, soglia decisionale, rischio residuo e piano di monitoraggio. Se non hai dati reali, costruisci un dataset sintetico con almeno 200 righe, una dimensione temporale, una dimensione segmento e una metrica di outcome.

L’errore più comune è usare il clustering come etichetta invece che come processo: un grafico senza decisione, una metrica senza baseline, una conclusione senza l’assunzione che potrebbe invalidarla. La domanda di controllo: se questo risultato fosse instabile, quale scelta sbaglierei?

Quiz e checkpoint

Per verificare di aver collegato analisi e azione, rispondi a cinque domande. Quale decisione concreta dovrebbe migliorare la segmentazione? Quale unità di analisi rende il problema misurabile? Quale baseline useresti per evitare una lettura ingenua? Quale errore tipico potrebbe cambiare la conclusione? E quale output consegneresti a uno stakeholder non tecnico?

La cluster analysis diventa utile quando produce una decisione più chiara, non quando aggiunge terminologia. Un segmento conta solo se è stabile, interpretabile in una frase e traducibile in un trattamento diverso dagli altri. La forma corretta del ragionamento resta sempre la stessa: decisione, segnale, baseline, rischio e azione. Categoria Tecnico, difficoltà advanced, tempo stimato 22 minuti.