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