Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
2016 / 2017
Laboratorio
del corso di
STATISTICA
Donata Bonino
2
Cluster Analysis
Clustering (~ raggruppamenti) è un insieme di tecniche statistiche il cui scopo
è quello di trovare una o più strutture all'interno di dati non organizzati.
Si cerca quindi di raggruppare i dati in gruppi i cui membri siano “simili”
secondo una qualche legge, e in modo che i gruppi siano “diversi” tra di loro.
Graficamente, possiamo facilmente intuire il concetto di raggruppamento:
4
Cluster Analysis
5
Cluster Analysis
Gli ambiti di utilizzo sono in costante crescita:
- finanza, assicurazioni: trovare gruppi omogenei di consumatori è utile per la
previsione delle strategie future, ma anche per scoprire eventuali bachi
(prodotti non competitivi, ma anche truffe!)
- biologia: possibilità di classificare piante, animali... utilizzando le loro
caratteristiche classiche o cercandone di nuove meno evidenti
Studi coinvolgenti grandi masse di dati di cui non si conoscono le
caratteristiche. Es: caratterizzazione del genoma umano
- pianificazione territoriale: studio del territorio e pianificazione studiando
contemporaneamente la moltitudine di caratteristiche di un'area geografica: la
popolazione (età, sesso, titolo di studio...), l'urbanizzazione (quantità di case,
tipi di case, di utilizzo, valore economico, localizzazione geografica...), il
paesaggio (aree agricole vs. industriali o residenziali, presenza di corsi d'acqua
o situazioni particolari – montagna, difficoltà di accesso...) e molti altri ancora!
- analisi del web: il web è caratterizzato da una quantità abnorme di dati
eterogenei. Servono allora tecniche per la classificazione di documenti, per lo
studio degli utenti, delle loro preferenze...
-… 6
Cluster Analysis: requisiti
7
Cluster Analysis: problemi
8
Cluster Analysis: note
Controllo della qualità dei dati.
Un aspetto importante dell'analisi cluster è l'ispezione dei dati, della loro
qualità.
Qualità dei dati:
- errori, rumori, outlier (dati validi ma molto diversi)
- dati mancanti, duplicati di osservazione
10
Cluster Analysis: algoritmi
11
Cluster Analysis: criteri di valutazione
R2
Un buon clustering è tale da massimizzare le differenze tra cluster, ma
minimizzare le differenze tra punti all'interno dello stesso cluster. In altre
parole, la variabilità all'interno dei singoli cluster deve essere più bassa
possibile, mentre quella tra cluster deve essere massimizzata.
L'indice R2 mette a confronto la somma delle variabilità all'interno dei singoli
cluster con la variabilità totale dei dati:
K 2
x x
j 1 iC j
i j
R 1
2
n 2
x x
i 1
i
dove n è il numero totale dei dati, K il numero dei cluster Cj, xj è la media del
cluster Cj e x è la media dei dati.
13
Cluster Analysis: alcuni algoritmi
14
Cluster Analysis: k-means
Questo metodo iterativo assume di scegliere un certo numero K di cluster a
priori. Per ognuno viene scelto un “centroide” c. Ogni punto viene quindi
associato al centroide più vicino, creando un primo set di K cluster. Dopo di
che, in ogni cluster viene ricalcolato il baricentro (momento primo), basandosi
sui dati in esso presente. Con questo nuovo set di centroidi, ogni punto viene
nuovamente associato al centroide a lui più vicino.
Questo processo può essere iterato fino a quando i centroidi non cambiano più,
permettendo di minimizzare la funzione obiettivo:
nj 2
K
J xi c j
j 1 i 1
15
Cluster Analysis: algoritmi gerarchici
Questo algoritmo parte assegnando ad ogni punto un cluster (N cluster). Dopo
di che, si cercano i due punti più vicini e li si uniscono in un solo cluster. A
questo punto si hanno N-1 cluster. Questo processo viene iterato fino ad
arrivare ad un unico cluster che contiene tutti gli N punti.
Ogni algoritmo per la classificazione gerarchica definisce una sua propria
distanza, in base alla quale raggruppare i dati. Possibili scelte sono:
- single-linkage: si definisce la distanza tra cluster come la minima distanza tra
i membri dei due cluster.
- complete-linkage: la distanza è la massima distanza tra i punti dei due
cluster.
- average-linkage: la distanza è la media delle distanze tra i punti dei due
cluster.
- mediana: la distanza è la media delle distanze tra i punti dei due cluster (più
resistente agli outlier).
- centroidi: la distanza è la distanza tra le medie dei due cluster.
- Ward: versione più robusta dell'algoritmo dei centroidi ...
16
Cluster Analysis: algoritmi gerarchici
Il risultato della classificazione può essere rappresentato graficamente con un
dendogramma:
17
Cluster Analysis: algoritmi gerarchici
18
Cluster Analysis con SAS
19
Cluster Analysis con SAS
Esercizio
Il dataset food contiene 27 osservazioni di cibi diversi, contrassegnati da un
indice (id_food). Per ogni cibo, vengono riportati i contenuti calorici, di
proteine, di grassi, di calcio e di ferro.
E' possibile raggruppare i dati in gruppi?
20
Preprocessamento dei dati
Le variabili che ci possono permettere una classificazione sono:
cal protein fat calcium iron
La variabile id_food, invece, serve per tenere traccia di quali cibi finiranno
nei vari cluster. Notiamo che le scale di valori delle variabili classificatrici
sono diverse. Dobbiamo quindi procedere ad un primo trattamento,
richiedendo la standardizzazione classica (portandole tutte a media nulla e
varianza 1) e salvando i risultati in un nuovo dataset.
21
Preprocessamento dei dati
Nota: la procedura stdize mette a disposizione diversi metodi di
standardizzazione (method= ...), in cui varia la quantità sottratta (location) e il
denominatore (scale). Ci sono anche metodi che sono particolarmente indicati
per il clustering. A questo livello dell'analisi, però, noi non abbiamo ancora
alcuna indicazione sui risultati (per es, il numero di cluster) che ci permetta di
discriminare tra i metodi.
22
Preprocessamento dei dati
Ecco il dataset stan:
23
Procedura cluster
Procediamo ora ad una prima analisi cluster sui dati standardizzati,
richiedendo una classificazione gerarchica. In questo modo non dobbiamo
scegliere un numero di cluster a priori.
Chiediamo che l'output (la classificazione e i principali indici di controllo)
sia salvato in un nuovo dataset: lib.tree
24
Procedura cluster
algoritmo di
variabili classificazione
standardizzate
richiede il
generiche opzioni di plot:
calcolo di ccc
voglio al massimo 10
clusters richiede un
dendogramma
Var: le variabili per la classificazione avente come
Id: ogni punto è contraddistinto dal valore ordinata l'indice R2
della variabile id, e non da un valore di multiplo
default 25
Procedura cluster
26
Procedura cluster: output
R2 multiplo: 6 cluster
storia delle rappresentano l'82.6% Non ci sono
unioni tra della varianza totale tie!
cluster dei dati 27
Procedura cluster: output
Per valutare il numero di cluster, oltre l'R2, possiamo controllare il criterio di
clustering cubico (ccc). Il ccc sale per K>4. Non avendo altre informazioni,
possiamo pensare a K=5 o K=6. Per K<5, valori negativi possono far
sospettare la presenza di outlier.
28
Procedura cluster: output
Il dendogramma rappresenta la gerarchia di cluster. Avendo richiesto l'R2 come
altezza dei cluster, possiamo valutare quanta proporzione di varianza spiegano i
cluster che scegliamo.
Notiamo come ci siano 3 cluster molto piccoli, che giustifica il ccc negativo per
29
K<5.
Procedura cluster
Possiamo richiedere altre visualizzazioni. Dobbiamo prima di tutto
decidere il numero di cluster (nclusters=6), e richiedere che i dati vengano
correttamente associati al cluster corrispondente. Questo si può fare con
la procedura tree. L'output verrà messo in un nuovo dataset, lib.clust.
Chiediamo anche che nel nuovo data set vengano copiate le variabili di
origine, e che i dati vengano identificati grazie alla variabile id_food
(opzione id).
Ora con questo nuovo dataset possiamo chiedere nuovi plot. Dato che
abbiamo 5 variabili, non possiamo avere una rappresentazione d'insieme.
Conviene ridurre la dimensionalità dei dati, costruendo una
rappresentazione canonica (concettualmente simile alle componenti
principali, ma in cui si condensa la variabilità tra classi e non tra dati)...
30
Procedura cluster
La procedura candisc produce un'analisi delle componenti canoniche,
usando come variabile di raggruppamento la variabile automatica cluster
prodotta dalla procedura tree e contenuta nel dataset lib.clust.
I dati prodotti vengono salvati nel nuovo dataset lib.can, che utilizzeremo
nella procedura di plot, sgplot (procedura che permette di creare più grafici
e di sovrapporli):
33
Procedura fastclus: output
La prima tabella riporta la scelta dei semi iniziali, ovvero dei centroidi dei K
cluster. Nelle varie iterazioni, i centroidi verranno aggiornati.
36
Procedura fastclus: output
Possiamo richiedere di vedere quali dati rientrano nei vari gruppi:
38
Procedura fastclus: outlier
Selezioniamo solo i dati che non appartengono ai due cluster, salviamoli in
un nuovo dataset, lib.clust_noOut e ripetiamo l'analisi cluster:
data lib.clust_noOut;
set lib.clust;
if cluster ~= 4 and cluster ~= 6 then output;
run;
proc fastclus data=lib.clust_noOut out=lib.clust_kno maxclusters=4;
var cal protein fat calcium iron;
id id_food;
run;
proc candisc data=lib.clust_kno out=lib.can_kno;
var cal protein fat calcium iron;
class cluster;
run;
proc sgplot data=lib.can_kno;
scatter y=can2 x=can1 / group=cluster;
run;
39
Procedura fastclus: outlier
Un cluster isola il nuovo outlier (prima era in un gruppo con un altro dato), il
nucleo centrale dei dati si riparte tra tre gruppi principali.
Esercizio: ripetere ancora l'analisi escludendo il punto isolato, confrontare i
cluster ottenuti con gli originali. 40