UNIVERSITÀ DEGLI STUDI DI MILANO - BICOCCA
Dipartimento di Informatica Sistemistica e Comunicazione
Facoltà di Scienze Matematiche, Fisiche e Naturali
Corso di Laurea Magistrale in Informatica
TECNICHE COMPUTAZIONALI AVANZATE
Modulo APPRENDIMENTO E APPROSSIMAZIONE
METODI DI CLUSTERING
Relazione sull’approfondimento
Carmine Carella 055465
Anno Accademico 2007-2008
Indice
1 Introduzione al clustering
1.1 Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1.2 Collocazione del problema . . . . . . . . . . . . . . . . . . . .
2 Analisi di algoritmi di clustering
2.1 Exclusive clustering: K-means . . . . . . . . .
2.2 Overlapping clustering: Fuzzy C-means . . . .
2.2.1 Esempio 1 . . . . . . . . . . . . . . . .
2.3 Hierarchical clustering . . . . . . . . . . . . .
2.3.1 Esempio 2 . . . . . . . . . . . . . . . .
2.4 Probabilistic clustering: Mixture of Gaussians
2.4.1 Expectation-Maximization . . . . . . .
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
.
2
2
2
5
5
6
7
8
9
9
11
3 Conclusioni
12
Bibliografia
13
1
Capitolo 1
Introduzione al clustering
1.1
Abstract
Lo scopo di questa relazione è quello di presentare gli argomenti relativi ad alcuni concetti che riguardano il trattamento e l’estrapolazione di informazioni
da insiemi di dati. Più in particolare introdurremo il problema del clustering,
presentando l’ambito nel quale esso si colloca e mostrando successivamente
alcune delle tecniche algoritmiche in uso.
1.2
Collocazione del problema
Potremmo definire informalmente il clustering come uno dei più importanti
problemi nell’ambito dell’apprendimento non supervisionato (o unsupervised
learning). Questo tipo di problema di apprendimento si basa sul concetto di
riconoscere pattern nell’input senza alcuna indicazione dei valori in uscita.
Ad esempio un learner sviluppa gradualmente il concetto di giorni di traffico
leggero e giorni di traffico intenso, senza ricevere esempi etichettati. Per capire
meglio il concetto, definiamo formalmente un problema di apprendimento
automatico come, dato:
• spazio di input ovvero un insieme di osservazioni x ∈ X ⊆ Rn
• spazio di output Y = f (x) con f detta funzione obiettivo, funzione
sconosciuta in alcuni punti
• training set di esempi: S = {(x1 , f1 (x)), ..., (xn , fn (x))}
• spazio delle ipotesi H: insieme di tutte le ipotesi h
2
il problema è cercare di ricostruire f nel modo più fedele possibile, ovvero
trovare una funzione h detta ipotesi che approssima f . Questa formulazione
è tipica dell’apprendimento supervisionato; al learner vengono forniti a priori esempi di comportamento e l’esperienza è fornita da esempi della forma S = {(x1 , f1 (x)), ..., (xn , fn (x))}, dove un trainer per ogni xi fornisce la
risposta corretta. Nell’apprendimento non supervisionato l’esperienza di apprendimento è rappresentata da esempi non classificati: non esiste un trainer
che fornisce le risposte corrette agli input; l’esperienza è fornita da esempi
della forma S = {x1 , x2 , ..., xn }. Perciò nell’ unsupervised learning, un learner
non può imparare cosa fare in quanto non possiede alcuna informazione su
cosa è un’azione corretta e non.
Quindi nell’unsupervised learning, non si conoscono a priori i dati e nè
tanto meno le classi di cui questi fanno parte. In Figura 1.1 è mostrato il
concetto di unsupervised learning.
Figura 1.1: Unsupervised learning
Il clustering (da to cluster = raggruppare) si prefigge dunque lo scopo di
creare collezioni di oggetti non noti, raggruppandoli in insiemi (cluster) di
oggetti tra di loro simili, ma diversi da tutti gli elementi che invece non vi
appartengono. Lo scopo è massimizzare la similarità di oggetti appartenenti
ad uno stesso cluster (similarità intraclasse) e minimizzare la similarità tra
oggetti appartenenti a cluster diversi (similarità interclasse) Più formalmente
possiamo definire il clustering nel seguente modo:
Definizione. Il clustering è un’insieme di tecniche algoritmiche il cui scopo
è quello di individuare gruppi di elementi di dati non etichettati.
In Figura 1.2 è mostrato un esempio di clustering su un insieme di dati
sconosciuti. Questo caso è piuttosto banale, ma significativo. In generale la
ricerca dei cluster non è un problema cosı̀ semplice da risolvere.
Dal punto di vista dell’apprendimento, il clustering è utilizzato come
tecnica per esplorare i dati e scoprire al loro interno eventuali strutture.
Le tecniche di clustering possono essere classificate in base a diversi
parametri. Uno di questi parametri è il criterio mediante il quale si valuta la
3
Figura 1.2: Un esempio di clustering di dati 2-demensionali
somiglianza dei dati da analizzare. Esistono infatti due differenti tecniche di
clustering:
• distance based clustering: due oggetti sono simili se la distanza che
li separa è piccola;
• conceptual clustering: due oggeti sono simili se li accomuna lo stesso
concetto.
Oltre alla modalità con cui vengono valutate le similitudini tra i dati,
vengono distinti gli approcci con i quali vengono costruiti i cluster di dati. In
particolare, durante il corso della trattazione faremo riferimento ai seguenti
metodi:
• Exclusive clustering: i dati sono raggruppati in maniera esclusiva.
Se un dato appartiene a un cluster, non potrà essere aggiunto a nessun
altro cluster;
• Overlapping clustering: un dato potrà appartenere a più di un
cluster per volta con un certo “grado” di appartenenza;
• Hierarchical clustering: tende ad unire i due cluster più vicini tra
loro;
• Probabilistic clustering: usa un approccio di tipo probabilistico.
Un buon algoritmo di clustering viene valutato oltre che per i normali
parametri (e.g. tempo computazionale, spazio di memoria richiesto per la
computazione) anche mediante i seguenti fattori:
4
• scalabilità;
• possibilità di trattare molteplici tipi di attributi;
• minimo numero possibile di parametri;
• possibilità di trattare dati affetti da “rumore”;
• possibilità di trattare oggetti con molti attributi;
Nel capitolo successivo (capitolo 2) analizzeremo 4 tecniche algoritmiche
di distance based clustering, associate ad ognuna delle classi definite precedentemente. Più in particolare parleremo nel dettaglio dei seguenti algoritmi:
K-means, Fuzzy C-means, Hierarchical clustering e Mixture of Gaussians.
5
Capitolo 2
Analisi di algoritmi di
clustering
2.1
Exclusive clustering: K-means
L’algoritmo K-means (MacQueen, 1967) è forse il più famoso algoritmo di
clustering. L’idea che sta alla base dell’algoritmo è molto semplice. Siano k
ed n rispettivamente il numero di cluster da ricercare, e la cardinalità dell’insieme dei dati, K-means suddivide gli n dati in k partizioni.
L’algoritmo è di tipo iterativo e può essere riassunto nel seguente modo. Alla
prima iterazione si scelgono in maniera casuale k centroidi che rappresentano
i centri dei cluster. Il centroide di un cluster è il vettore la cui j-esima coordinata è la media aritmetica delle j-esime variabili calcolate soltanto sulle
unità del cluster in questione. Ad esempio data la matrice di dati in input:


0 2 5
 2 4 0 



X =
 1 1 4 
 0 0 2 
5 11 0
presi i cluster A = {x1 , x2 } e B = {x3 , x4 , x5 }, i loro centroidi sono rispettivamente c(A) = (1, 3, 2.5) e c(B) = (2, 4, 2).
Si procede iterativamente, associando ad ogni centroide un set di elementi
xi , 1 ≤ i ≤ n. Ogni elemento deve essere associato ad un centroide. Si
ricalcolano i k centri (e.g. calcolando la media aritmetica dei dati nel cluster)
e si ripete iterativamente la procedura fino al raggiungimento del criterio di
stop. L’algoritmo è dunque il seguente:
6
Input: k e gli n esempi x1 , . . . , xn
Output: k cluster che minimizzano l’errore quadratico
repeat
assegna ogni esempio al cluster corrispondente
al centroide a cui l’esempio è più vicino.
calcola i nuovi baricentri dei cluster, ovvero
calcola i nuovi centroidi.
until il crtiterio di arresto non è verificato
Il criterio di stop non è unico, in generale quando gli assegnamenti non cambiano o cambiano poco, ma spesso però consiste nel minimizzare il seguente
errore quadratico (quadrato della distanza euclidea):
k X
n °
°2
X
° (j)
°
x
−
c
° i
j°
dove,
(2.1)
j=1 i=1
°
°
° (j)
°
(j)
°xi − cj ° è la “distanza” tra un dato xi e il centroide cj del j-esimo cluster.
In Figura 2.1 possiamo vedere due esempi di clustering ottenuti con l’algoritmo K-means, a sinistra vogliamo un numero k = 3 cluster, mentre nella
figura di destra un numero k = 18. Differenti colorazioni dei dati, indicano a
quale cluster sono associati gli elementi.
Figura 2.1: esempi di clustering con valori differenti per il parametro k
Per concludere è possibile affermare che l’algoritmo K-means ha degli
indubbi vantaggi. Ad esempio il tempo di calcolo (O(tkn), dove t è il numero
di iterazioni di ciclo e k, n sono noti) e la semplicità di implementazione.
D’altro canto però, è molto sensibile alla scelta dei centroidi iniziale e non
7
sempre minimizza l’equazione (2.1), inoltre bisogna conoscere il numero di
cluster k e dopo l’applicazione dell’algoritmo alcuni cluster potrebbero essere
vuoti.
2.2
Overlapping clustering: Fuzzy C-means
In questa sezione parleremo della tecnica Fuzzy C-means (o FCM). In particolare, acceneremo a come lavora l’algoritmo, per poi concentrarci su alcuni esempi che possano esplicarne meglio il comportamento. Siano definiti i
seguenti parametri;
c: è il numero di cluster richiesti;
n: è il numero di dati in ingresso ;
m ∈ R+ costante fissato a priori è l’esponente della funzione di weight;
ui,j ∈ [0, 1]: è il grado di appartenenza di xi al cluster j;
cj : è il centro del j-esimo cluster;
k ∗ k: è una norma arbitrariamente scelta.
L’algoritmo opera come segue:
Input: c, gli n esempi, l’esponente m e un valore di soglia ε ∈ [0, 1]
Output: c cluster di dati.
inizializzazione della matrice delle appartenenze U ≡ U 0 =[ui,j ]
repeat
al k-esimo passo calcola il vettore dei centroidi
C k =[c
] usando U k nel seguente modo:
Pnj
um
i,j ·xi
cj = Pi=1
n
um
i=1
i,j
aggiorna le matrici di appartenenza U k → U k+1
1
ui,j =
µ
¶ 2
Pc
k=1
kxi −cj k
kxj −ck k
m−1
until kU k+1 − U k k ≥ ε
A differenza del metodo K-means, l’algoritmo FCM considera in maniera
meno netta l’appartenenza di un dato ad un cluster. Per comprendere meglio
questa affermazione, vediamo un esempio.
2.2.1
Esempio 1
Supponiamo di voler applicare l’algoritmo FCM ai dati 1-dimensionali di
Figura 2.2, e di voler cercare un numero di cluster pari a c = 2.
8
Figura 2.2: dati 1-dimensionali
Figura 2.3: membership function per l’exclusive clustering
Quello che sarebbe successo in caso di exclusive clsutering con qualsivoglia tecnica, sarebbe stato che ogni xi , 1 ≤ i ≤ n avrebbe potuto appartenere al cluster A o al cluster B seguendo l’andamento della funzione in
Figura 2.3. Un dato avrebbe cioè fatto parte del cluster A con valore 1, e al
cluster B con valore 0. Un esempio di matrice delle appartenenze potrebbe
essere la seguente:


1 0
 0 1 


Unxc =  .. .. 
 . . 
1 0
Nell’ambito della logica fuzzy, e dell’overlapping clustering invece, la
situazione risulta essere la seguente:
Figura 2.4: membership function per l’overlapping clustering
In questo caso la funzione associa un grado di appartenenza p per xi ∈ A,
9
e di 1 − p per xi ∈ B. La matrice delle appartenenze potrebbe essere la
seguente:


0.8 0.2
 0.7 0.3 


Unxc =  ..
.. 
 .
. 
0.9 0.1
Figura 2.5: risultato ottenuto dall’algoritmo FCM con n = 2 ed ε = 0.3
Partendo da questa matrice ed applicando la tecnica FCM mostrata precedentemente con valori m = 2 e ε = 0.3 si giunge al risultato di Figura
2.5.
2.3
Hierarchical clustering
Analogamente a quanto fatto nella sezione precedente, anche per questa tecnica forniremo una breve spiegazione del lavoro svolto dall’algoritmo e ci
concentreremo su un semplice ma significativo esempio.
L’algoritmo di clustering gerarchico lavora nel seguente modo:
1. assegna a ogni elemento un cluster. Al primo passo ogni elemento è un
cluster e la matrice delle “distanze” viene lasciata invariata;
2. cerca la coppia di cluster più vicina ed unisci i cluster in uno;
3. modifica la matrice D aggiornando le distanze tra il cluster cosı̀ creato
e i cluster rimanenti;
4. ripeti i passi 2 e 3 fino a quando tutti i cluster non appartengono ad
un unico cluster di dimensione n.
10
Il passo 3 dell’algoritmo può essere eseguito in tre differenti maniere:
• SINGLE LINKAGE: la distanza tra 2 cluster è la minima distanza tra
ogni elemento del primo cluster ed ogni elemento del secondo;
• COMPLETE LINKAGE: la distanza tra 2 cluster è la massima distanza
tra ogni elemento del primo cluster ed ogni elemento del secondo;
• AVERAGE LINKAGE: la distanza tra 2 cluster è la media distanza
delle distanze tra ogni elemento del primo cluster ed ogni elemento del
secondo;
Oltre a queste operazioni. l’algoritmo memorizza in due variabili m ed
L(m) il numero di sequenza con cui due cluster vengono uniti e il livello di
“profondità ” a cui viene eseguita l’operazione. Vedremo i particolari relativi
a questa tecnica nella sottosezione seguente.
2.3.1
Esempio 2
Supponiamo di avere la seguente matrice delle distanze che rappresenta
idealmente le distanze tra 5 città numerate da 0 a 4:


0.0
 2.0 0.0




U =
 6.0 5.0 0.0

 10.0 9.0 4.0 0.0

9.0 8.0 5.0 3.0 0.0
L’algoritmo di clustering gerarchico HC con tecnica di single linkage,
inzializzerà m = 0 ed L(m) = 0. Cercherà il:
min
i,j∈{0,...,4}
ui,j
unirà i cluster (i), (j) in un unico cluster e aggiornerà la matrice U eliminando una riga e una colonna. Queste ultime due operazioni verranno ripetute
iterativamente fino al raggiungimento di un unico cluster di dimensione 5. In
questo esempio il min ui,j = u0,1 , il livello L(0, 1) = 2.0 e il nuovo numero di
sequenza sarà m = 1 . La matrice U verrà aggiornata sostituendo ai vecchi
valori delle distanze i valori cosı̀ calcolati:
u(0,1),2 = min {u0,2 , u1,2 } = u1,2 = 5.0
u(0,1),3 = min {u0,3 , u1,3 } = u1,3 = 9.0
11
u(0,1),4 = min {u0,4 , u1,4 } = u1,4 = 8.0.
La nuova matrice è:


0.0
 5.0 0.0


U =
 9.0 4.0 0.0

8.0 5.0 3.0 0.0
Il processo continua fino a trovare un unico cluster. L’utilizzo delle variabili
m ed L(m) risulta essenziale nel caso in cui si voglia rappresentare graficamente il risultato ottenuto. Il grafo che visualizza il risultato è chiamato
dendogramma ed è simile a quello rappresentato in Figura 2.6.
Figura 2.6: Dendogramma
2.4
Probabilistic clustering: Mixture of Gaussians
Come ultima tecnica di clustering presenteremo l’algoritmo Mixture of Gaussians.
Questo algoritmo rappresenta una variante probabilistica dell’algoritmo Kmeans. L’idea su cui si basa questa tecnica è quella di supporre che ogni
cluster si distribuisca seguendo l’andamento di una distribuzione gaussiana
avente media µ e varianza σ 2 .
12
Figura 2.7: Mixture of Gaussians
Se lo scopo è quello di individuare k cluster, l’obiettivo dell’algoritmo è
quello di stimare la media µi e la varianza σi2 di ogni cluster, considerando i dati x1 , . . . , xn distribuiti come un miscuglio di distribuzioni gaussiane.
I dati non sono assegnati a nessun cluster, e l’obiettivo è stimare una distribuzione miscuglio di gaussiane che è la distribuzione generatrice dei dati,
composta da k distribuzioni gaussiane che definiscono i cluster. Il concetto
viene mostrato in Figura 2.7. Indichiamo con ωi 1 ≤ i ≤ k le classi o cluster
ed assegniamo loro una probabilità P (ωi ). Per ogni xh , 1 ≤ h ≤ n della
popolazione possiamo definre la sua probabilità
P (xh ) =
k
X
P (xk |ωi )P (ωi ).
i=1
La probabilità di osservare i dati x1 , . . . , xn è data da:
2
P (x|µ, σ ) =
n
Y
P (xk ).
k=1
L’obiettivo è quello di scegliere il vettore delle medie µ, delle varianze σ 2
e delle probabilità p, in modo da massimizzare tale quantità. Il problema
appena posto è però troppo complesso da risolvere, per questo motivo ci si
accontenta di risolvere un problema analogo ma più semplice.
2.4.1
Expectation-Maximization
Algoritmo iterativo utilizzato in diversi ambiti della ricerca operativa. In
questo caso viene usato per stimare i vettori delle medie µ e delle probabilità p
13
dei k cluster. L’ipotesi di partenza di questa tecnica assume che tutti i cluster
abbiano la stessa varianza σ 2 e che rimarrà la stessa durante l’esecuzione
dell’algoritmo.
Siano assegnati i record di dati x1 , . . . , xn , si sceglie un’ipotesi di partenza,
ossia un vettore di medie e probabilità:
L(0) = (µ1 , . . . , µk , p1 , . . . , pk )
e si cerca ad un passo t-esimo, un’ipotesi L(t+1) più “aggiornata” di L(t) sulle
medie e sulle probabilità.
L’algoritmo lavora come segue, iterando i due passi:
• Expectation: cerchiamo di calcolare ∀ xh → P (ωi |xh )
P (xh |µi , σ 2 )pi
.
P (ωi |xh ) = · · · = Pn
2
h=1 P (xh |µi , σ )pi
• Maximization: si calcola una stima migliore per L(t) → L(t+1)
Pn
(t+1)
h=1 P (ωi |xh )xh
µi
= P
.
n
h=1 P (ωi |xh )
Le probabilità diventano le seguenti:
Pn
P (ωi |xh )xh
(t+1)
.
pi
= h=1
n
La procedura viene ripetuta fino alla convergenza dei parametri come avveniva per l’algoritmo K-means.
14
Capitolo 3
Conclusioni
La trattazione dei criteri di clustering si esaurisce qui, ma oltre ai metodi
esposti ne esistono molti altri. La possibilità di scegliere un metodo di clustering piuttosto che un altro dipende dagli scopi che vogliamo raggiungere. Si
potrebbe infatti dimostrare che non esiste un algoritmo di clustering migliore
rispetto a tutti gli altri. In questo caso conta l’esperienza di chi deve analizzare i dati e la sua capacità di giungere a delle conclusioni sfruttando i
risultati ottenuti.
15
Bibliografia
[1] Matteucci Matteo, A Tutorial on Clustering Algorithms, Politecnico di
Milano. http://home.dei.polimi.it/matteucc/Clustering/tutorial html.
[2] Russel S., Norvig P., Intelligenza Artificiale-un approccio moderno,
Seconda Edizione Volume 2, Pearson Education Italia.
[3] A.K.Jain, M.N.Murty, P.J.Flynn, Data Clustering: A Review, ACM
Computing Surveys, Vol.31, No.3, September 1999. www.cs.rutgers.edu
[4] Wikipedia English, the free encyclopedia,
http://en.wikipedia.org/wiki/Data clustering
Cluster
Analysis.
[5] Osmar R.Zaiane, Principles of Knowledge Discovery in Databases, Chapter 8: Data Clustering. www.cs.ualberta.ca/Ezaiane/courses/cmput690
[6] Pier Luca Lanzi, Ingegneria della Conoscenza e Sistemi Esperti
Lezione Apprendimento non supervisionato, Politecnico di Milano, 2002.
www.elet.polimi.it/upload/lanzi/corsi/icse/2002
16