Introduzione agli

                        Algoritmi di clustering
Rosario Turco



Abstract
Il presente articolo è un'int...
•   etc
La Clustering Analysis, però, è un'attività leggermente differente
rispetto a settori come KDD (Knowledge Discover...
Algoritmi per rinforzo
E' una filosofia di programmazione, in grado di apprendere
dall'ambiente attraverso le interazioni ...
Algoritmi gerarchichi di clustering
Questi algoritmi lavorano raggruppando oggetti in gerarchie di
cluster. La gerarchia i...
dell'Errore di Quantizzazione.
Gli algoritmi di clustering raggruppano i dati in base alla
distanza reciproca e, quindi, l...
catena di oggetti p1=q,p2,...,pn=p per cui       ogni   oggetto   pi+1   è
Directly Density Reachable dal precedente pi.

...
La tecnica è nota come "DBSCAN" (Density-Based Spatial Clustering
of Applications with Noise). L'algoritmo va alla ricerca...
oggetto il suo Reachability Distance nell'ordine in cui gli
oggetti sono processati. Appena si trova un oggetto core, inve...
Un punto ξ è detto "steep upward point" quando è un punto ripido
in salita con un Reachability Distance almeno inferiore d...
(3 − 0) 2 + (4 − 0) 2 = 5

La distanza euclidea viene, di solito, valutata rispetto ad un
"centroide" d-dimensionale tra k...
modo randomico nei k insiemi (o cluster fissati)            e    si
      scelgono k centri iniziali, uno per ogni cluster...
all'altro della città non è possibile fare la distanza più
    breve, ma percorsi permessi tra quartieri; per cui il city-...
i punti xi e yi esiste un offset costante, allora la centered
      correlation è 1 ma non è 1 l'uncentered correlation. Q...
Esempio concettuale di clustering
Supponiamo k=2 cluster e prendiamo k=2 centri casuali (quelli in
arancione nella figura ...
chiamiamo codebook l'insieme:


                               W = { µ 1 , µ 2 ,..., µ k }


i cui elementi, detti codevec...
Illustrazione 8: Tassellazione di Voronoi


Da quanto visto prima, una volta fissati i codevectors (k)
possiamo ottenere c...
Vi = { S ∈ D | i = arg min j || S − µ j ||}
  3. Assegniamo ad ogni codevector                    μi la media (o centroide...
Gli algoritmi grid-based      dividono lo spazio dell'input in
ipercelle rettangolari, scartano le ipercelle a bassa densi...
Difetti di OptiGrid
OptiGrid ha due difetti principali:
  • è sensibile alla scelta dei parametri che portano alla
     sc...
insieme di proiezioni o dimensioni rispetto alle quali determinare
degli istogrammi. Ogni partizione che presenta una fogl...
significativo statistico che usa O-Cluster è il test χ2:

                         2(observed − exp ected )2
             ...
3. un certo numero di dati sono stati letti, il buffer non è
     pieno e non vi sono molti dati
La terza condizione sembr...
O-cluster avviene con un     clustering   ad   albero   binario   ed   è
validato statisticamente.


Benchmark di O-Cluste...
dimensione del lotto di default è 50000). O-Cluster legge un altro
batch se ritiene, sulla base di test statistici, perchè...
Tools free per studio didattico su Windows
per didattica sul Clustering:
[5]Cluster e Java Tree Viewer


per una didattica...
Upcoming SlideShare
Loading in …5
×

Algoritmi di clustering

1,216 views

Published on

Il presente articolo è un'introduzione ad un settore teoricamente molto esteso, di notevole importanza e con possibili margini di innovazione, ancor oggi.
Nel seguito l'autore percorre la storia degli algoritmi di clustering, ne esamina i vari punti di forza e le debolezze, nell'ottica di individuare una soluzione implementativa valida, da utilizzare in un progetto software e tenendo sempre come punto di attenzione importanti caratteristiche come le prestazioni, la scalabilità, l'affidabilità e l'esistenza di un prodotto di mercato, certificato e supportato.

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,216
On SlideShare
0
From Embeds
0
Number of Embeds
8
Actions
Shares
0
Downloads
17
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Algoritmi di clustering

  1. 1. Introduzione agli Algoritmi di clustering Rosario Turco Abstract Il presente articolo è un'introduzione ad un settore teoricamente molto esteso, di notevole importanza e con possibili margini di innovazione, ancor oggi. Nel seguito l'autore percorre la storia degli algoritmi di clustering, ne esamina i vari punti di forza e le debolezze, nell'ottica di individuare una soluzione implementativa valida, da utilizzare in un progetto software e tenendo sempre come punto di attenzione importanti caratteristiche come le prestazioni, la scalabilità, l'affidabilità e l'esistenza di un prodotto di mercato, certificato e supportato. Introduzione Il Clustering è una tecnica nata, sin dagli anni '50, in ambito Statistica; consente attraverso un'analisi dei dati di segmentarli e raggrupparli secondo dei patterns. Gli algoritmi di clustering sono da sempre di notevole interesse per innumerevoli settori: • Biologia molecolare; • Progettazione componenti elettronici; • Text mining; • Bioinformatica; • Biomedicina e Medicina; • Marketing, per la segmentazione della clientela; • Social Network Analysis (SNA); • Data Mining Analysis; • Web; • Analisi delle frodi; • Fisco; • Filtraggio immagini; 1
  2. 2. • etc La Clustering Analysis, però, è un'attività leggermente differente rispetto a settori come KDD (Knowledge Discovery in Databases) e Data Mining; anche se spesso si incrociano e si auto-sostengono. Il KDD è un processo di estrazione di conoscenza (catasto, storia, informatica, matematica, fisica, etc) immediatamente estraibile da un datawarehouse e direttamente fruibile. Il DataMining è, invece, un processo automatico che lavora su un datawarehouse e che porta alla scoperta dell'esistenza di strutture all'interno dei dati. La somiglianza, almeno in termini di definizione degli obiettivi, tra DataMining e Clustering è notevole. Nel seguito, però, vedremo cosa si intende per Clustering e le sue sfumature e differenze rispetto al Data Mining. Problema dell'Apprendimento L'apprendimento è sostanzialmente "il cosa" un algoritmo riesce a comprendere, circa un insieme di dati a disposizione; in pratica l'algoritmo è alla ricerca di una "regola generale" o una "descrizione", che spieghi l'insieme dei dati, avendone a disposizione un insieme di grandezza limitata. Gli algoritmi di apprendimento sono classificati in generale in tre famiglie: • algoritmi supervisionati; • algoritmi con apprendimento per rinforzo; • algoritmi non supervisionati; Algoritmi supervisionati Si è di fronte ad un algoritmo supervisionato quando i dati sono in forma di coppie input-output e una descrizione dei dati è solo la ricerca della funzione o del mapping tra input e output. L'algoritmo è supervizionato perchè abbiamo a che fare con valori target o desiderati associati in input . Se i dati di input o target sono una categoria o una classe, l'algoritmo affronta un problema di classificazione. Se i dati di input o target sono valori interi , l'algoritmo affronta un problema di regressione. Esempi Data una bitmap di caratteri ricercare la corretta lettera dell'alfabeto è un problema di classificazione. Ricercare un indice di borsa a fronte dei dati storici è, invece, un problema di regressione. 2
  3. 3. Algoritmi per rinforzo E' una filosofia di programmazione, in grado di apprendere dall'ambiente attraverso le interazioni o input ricevuti da esso. L'obiettivo degli algoritmi, in tal caso, è di massimizzare il premio ottenibile che dipende dal contesto del problema. Esistono due categorie: 1. algoritmi ad apprendimento continuo, che hanno delle semplici regole per stabilire se si è penalizzati o premiati e comunque di adattarsi a variazioni dell'ambiente. Esempi sono i riconoscitori vocali, oppure gli OCR 2. algoritmi ad addestramento preventivo, un esempio classico sono le reti neurali. Alcuni componenti elettronici vengono realizzati in prima battuta con circuiti a rete neurale e solo dopo l'apprendimento di diverso tempo si cristallizza il componente realizzandolo definitivamente. Algoritmi non supervisionati Se i dati forniti sono un insieme di oggetti senza nessun dato di input o target, allora abbiamo a che fare con algoritmi non supervisionati; in tal caso l'algoritmo deve individuare delle regole, rispetto a delle variabili, per raggruppare i dati in qualche modo: • cluster • altro Scopo dell'articolo è indagare sugli algoritmi non supervisionati. Algoritmi di clustering Nel 1999 Jain classificò gli algoritmi di clustering (algoritmi non supervisionati) in due grandi famiglie: • algoritmi gerarchici di clustering, che fanno uso di rappresentazioni grafiche (dendrogrammi) • algoritmi partition clustering, che assegnano i dati o partizionano i dati, secondo criteri (come metriche, densità, similarità etc), inserendo essi in cluster differenti. Oggi gli algoritmi di clustering si dovrebbero classificare come: Gerarchico, Partizionale, Densità, Modello, Grid-Based; la tendenza, comunque, è spesso di avere un misto di tecniche tra essi, per migliorare la scalabilità e l'efficvienza, tale da ridurli a sole due-tre categorie principali. 3
  4. 4. Algoritmi gerarchichi di clustering Questi algoritmi lavorano raggruppando oggetti in gerarchie di cluster. La gerarchia in tal caso può avvenire top-down (divisive hierarchical methods) o bottom-up (agglomerative hierarchical methods). La loro complessità è di solito O(n^2). Alcuni miglioramenti furono introdotti con BIRCH (Balanced Iterative Reducing and Clustering using Hierarchies) che ha una complessità O(n), lavora con meno memoria, utilizza una struttura dati CF-Tree per memorizzare e comprimere informazioni e fa meno I/O. BIRCH lavora bene su data set con cluster sferici. Altro algoritmo del genere è CURE (Clustering Using Representative), con O(n^2) e lavora con una filosofia diversa da BIRCH: usa un numero fisso di punti di riferimento per determinare i cluster. Usa un approccio gerarchico agglomerativo, in cui si mappa ogni cluster con un insieme di oggetti rappresentativi. In ogni cluster vengono identificati questi punti rappresentativi, che vengono condensati verso il centro di un fattore prefissato (per ridurre l’effetto del rumore). La fusione di due cluster dipende dalla distanza tra i più vicini punti rappresentativi. Permette di gestire in modo corretto clusters non sferici, scala bene all’aumentare del numero di punti. È molto sensibile alla scelta dei parametri (numero di punti rappresentativi, fattore di condensazione). Altri algoritmi noti sono AGNES (AGlomerative NESting), DIANA (Divisive ANAlysis), Rock, Chameleon che risulta più efficace di CURE e di DBSCAN (Density-Based Spatial Clustering of Applications with Noise). Problematiche del clustering gerarchico Il clustering gerarchico tipicamente è poco scalabile (complessità almeno O(n^2)), e tipicamente non consente di tornare indietro (se si fondono male due cluster, non c’è modo poi di separarli a meno di non ripartire daccapo con l’algoritmo). Hanno però interesse per tutti i problemi che hanno dietro come inpalcatura una gerarchia tra nodi, item, oggetti o soggetti. Cluster Analysis L'analisi dei cluster o Cluster Analysis fu introdotta nel 1939 da Robert Tryon. La Cluster Analysis è un insieme di tecniche, matematiche ed informatiche, di analisi dei dati con il preciso obiettivo di raggruppare i dati in insiemi omogenei rispetto a determinate variabili. Tutte le tecniche di analisi clustering si basano sul concetto di distanza (come metrica) tra due punti, oggetti o dati. La bontà delle analisi di clustering dipende, quindi, dalla scelta della metrica o della distanza o, come si dice, dalla minimizzazione 4
  5. 5. dell'Errore di Quantizzazione. Gli algoritmi di clustering raggruppano i dati in base alla distanza reciproca e, quindi, l'appartenza di un dato ad un insieme dipende da quanto esso dista dall'insieme. Algoritmi di partition clustering Lo scopo di questi algoritmi è innanzitutto minimizzare la dissimilirità tra i dati di uno stesso gruppo (o cluster o insieme )e massimizzare la dissimilirità tra i dati di cluster differenti, secondo una metrica prescelta che può dipendere anche dal problema da affrontare. Nel seguito accenneremo solo agli algoritmi di partition clustering. Clustering density-based o Locality based Lo scopo di un algoritmo Clustering density based è di creare raggruppamenti di dati, considerando l'intorno di ogni punto (o dato) nello spazio d-dimensionale; analizzando, cioè, la densità dei punti in un intorno di raggio prefissato. Tutto questo è possibile se si assume come "proprietà fondamentale" la densità locale dei punti, rinunciando alla densità globale dei dati in senso statistico, proprio perchè la densità locale dei punti consente di individuare raggruppamenti in zone diverse dello spazio d-dimensionale, altrimenti impossibile. OPTICS, ad esempio, è un algoritmo basato su questa idea. Definizioni Sono importanti due parametri nel prosieguo: • il raggio Є dell'intorno considerato • il numero minimo MinPts di punti all'interno dello spazio o intorno considerato Oggetti Core e Oggetti Directly Density Reachable Un oggetto p è nell'intorno di un oggetto q se la distanza tra p e q è minore o uguale al raggio Є. Se l'oggetto q ha nel suo intorno di raggio Є almeno MinPts punti, allora esso è definito "oggetto Core"; mentre l'oggetto p è definito "Directly Density Reachable" da q, ovvero è nell'intorno di un oggetto core. Illustrazione 1 Oggetti Density Reachable Un oggetto p è Density Reachable da un oggetto q, se esiste una 5
  6. 6. catena di oggetti p1=q,p2,...,pn=p per cui ogni oggetto pi+1 è Directly Density Reachable dal precedente pi. Illustrazione 2 Oggetti Density Connected Un oggetto p è Density Connected ad un oggetto q se esiste un terzo oggetto o, da cui sia p che q sono Density Reachable dall'oggetto o. Illustrazione 3 Cluster Un cluster C è un sottoinsieme dei dati, massimale e connesso. Per massimale si intende che per ogni p e q, se p apparteiene a C e q è density reachable da p, allora q è in C. Per connesso si intende che per ogni p e q appartente a C, p è density connected a q. Punti Border e Outlier Un punto border è sul bordo del cluster; mentre un punto outlier non è border nè core. OPTICS usa qualche metrica aggiuntiva, che andiamo a definire nel seguito. Core Distance e Reachability Distance La Core Distance è il min valore di raggio Є per cui l'oggetto è possibile considerarlo core, ovvero min Є = Є'. La Reachability Distance tra due oggetti p e q è il max valore tra distanza euclidea e la Core Distance, ovvero max [de(p,q),Є']. OPTICS (Ordering Points To Identify Clustering) Tipicamente la fase di analisi per la determinazione dei cluster è affrontata in almeno due fasi. In pratica non si assegna un cluster ad ogni dato elaborato, ma si elaborano prima gli oggetti per comprendere dove si addensano e poi si decidono i cluster. 6
  7. 7. La tecnica è nota come "DBSCAN" (Density-Based Spatial Clustering of Applications with Noise). L'algoritmo va alla ricerca di zone ad alta densità di punti rispetto a zone a bassa densità e l'idea base del DBSCAN, come già accennato precedentemente, è di individuare zone con punti che superano una soglia (il MinPts). La tecnica DBSCAN ha complessità O(n^2), ma se si usa un indice spaziale la complessità diventa O(nlogn). Vediamo nel seguito le due fasi usate. Fase "Scan dei dati" Viene fatta l'analisi di un oggetto, se non è stato ancora elaborato, e si determinano i punti nel suo intorno. Per questo si considera il raggio Є ed occorre individuare almeno MinPts punti nell'intorno. Poi si calcola la "Core Distance" Є' e si inserisce l'oggetto nel database finale (DBF da adesso in avanti) se esso è un oggetto core. Se l'oggetto precedente non è un oggetto core, si passa ad un altro oggetto non elaborato ancora. Se, invece, è un oggetto core si determinano, fissato Є e MinPts, tutti gli oggetti Directly Density Reachable dall'oggetto. Tali oggetti, poi, sono inseriti in una lista (Lista nel seguito), ordinata secondo la distanza euclidea dei punti crescente al più vicino oggetto core raggiungibile; viene, poi, settata la Core Distance e la Reachability Distance. Si cicla ad ogni passo sulla Lista, di cui prima, selezionando l'oggetto con la minor Reachability Distance e si calcolano i punti vicini (neighbors) e la Core Distance; infine l'oggetto viene alla fine scritto nel DBF. Se l'oggetto è core allora ulteriori punti possono essere scritti nella lista e se ne aggiorna l'ordinamento e questo finchè non sono processati tutti i dati. Fase "elaborazione del DBF" In questa fase si scandaglia sequenzialmente il DBF. Si fissa un cluster corrente, se la Reachability Distance dell'oggetto considerato è maggiore della Clustering Distance Є', in tal caso l'oggetto non è Density Reachable rispetto a Є' e MinPts da nessuno degli oggetti presenti nell'ordinamento prima dell'oggetto stesso. Per cui si guarda la Core Distance e si crea un nuovo cluster B solo se l'oggetto è core rispetto a Є' e MinPts, altrimenti è considerato rumore (noise). Se, invece, la Reachability Distance dell'oggetto considerato è minore della Clustering Distance Є', si assegna l'oggetto al cluster corrente, perchè è Density Reachable rispetto a Є' e MinPts dagli oggetti precedenti dell'ordinamento. Visualizzazione con istogrammi Un metodo semplice di visualizzazione nel caso Optics o degli algoritmi Clustering density-based è il Reachability plot. Si tratta di tracciare su grafico un istogramma che mostra di ogni 7
  8. 8. oggetto il suo Reachability Distance nell'ordine in cui gli oggetti sono processati. Appena si trova un oggetto core, invece, si passa ad elaborare tutti gli ogetti Directly Density Reachable rispetto all'oggetto core, proseguendo dai punti più vicini a più lontani. In figura a sinistra l'addensamento degli oggetti e l'individuazione dei cluster; mentre a sinistra il grafico degli istogrammi. Tecniche automatiche per il clustering density based Sono usate tecniche per creare i cluster automaticamente gestendo una struttura gerarchica di cluster. In genere si lavora sugli istogrammi degli oggetti, prodotti a partire da una metrica di similarità o di distanza (ad esempio r è il coefficiente di Pearson, oppure la distanza euclidea normalizzata, etc). Avendo a disposizione gli istogrammi occorre introdurre il parametro ξ grado di ripidezza. 8
  9. 9. Un punto ξ è detto "steep upward point" quando è un punto ripido in salita con un Reachability Distance almeno inferiore di ξ% rispetto al successivo. Un punto ξ "steep downward point" è l'analogo punto ripido in discesa. Una ξ "steep upward area" è, invece, un'area [s,e] tale che s ed e sono steep upward points; mentre ogni punto tra s ed e ha una Reachability Distance almeno uguale a quella dei suoi predecessori. Inoltre l'area non contiene più di MinPts punti che non sono ξ "steep upward" points, altrimenti contribuirebbero a cluster diversi. Analogamente si può dire per una ξ "steep downward area". Un ξ cluster soddisfa i seguenti requisiti: 1. inizia con una ξ "steep downward area" D; 2. Finisce con una ξ "steep upward area" U; 3. L'inizio del cluster è l'ultimo punto con alto valore di Reachability Distance; 4. La fine del cluster è l'ultimo punto con basso valore di Reachability Distance; 5. La Reachability Distance dei punti nel cluster deve essere ξ% minore a quella del primo punto di D e dell'ultimo punto di U Usando i criteri di sopra si possono automatizzare le ricerche dei cluster. Clustering K-means (o K-medie) Supponiamo di avere un insieme totale di n punti, in uno spazio d- dimendionale. L'obiettivo che ci poniamo è di individuare k punti con k≤n, nello spazio d-dimensionale, minimizzando la distanza quadratica media di ogni punto da un centroide. Detto in altri termini occorre massimizzare, rispetto ad una serie di metriche, il rapporto tra la varianza esterna (tra i gruppi) e quella interna (nei gruppi). Il metodo è sensibile ai punti outlier. Per tali tipi di problemi non sono ancora noti algoritmi in tempi polinomiali. Supponiamo inizialmente di far riferimento alla distanza euclidea tra i punti x e y: d d E ( x, y ) = || ( x, y ) ||= ∑ i= 1 ( xi − yi ) 2 Ad esempio la distanza euclidea tra il punto (0,0), origine di un sistema di assi cartesiani (d=2 o 2D), ed il punto (3,4) è: 9
  10. 10. (3 − 0) 2 + (4 − 0) 2 = 5 La distanza euclidea viene, di solito, valutata rispetto ad un "centroide" d-dimensionale tra k punti d-dimensionali come segue:  k k k   ∑ x1i ∑ x2 i ∑ xd i  (1) µ ( x1 , x2 ,..., xk ) =  i= 1 , i= 1 ,..., i = 1   k k k      Ad esempio il centroide in ambito 2D (d=2) dei punti (2,4),(5,2), (8,9), quindi con k=3, è:  2+ 5+ 8 4+ 2+ 9  µ =  ,  = ( 5,5 )  3 3  Generalizzando, l'idea di base è di cercare k vettori μj per j=1,...,k; poi per classificare un punto x si dovrà trovare il vettore μj più vicino a x e, in tal caso, potremo affermare che x appartiene al cluster j. Supponiamo, difatti, che il data set di dati disponibili è x^n con n=1,...,N. Ora occorre partizionare il dataset in k sottoinsiemi disgiunti Sj per j=1,...,k a cui sarà associabile un vettore μj. L'errore di quantizzazione E viene definito con: k 1 E= 2N ∑ ∑ j = 1 n∈ S j ||x n − µ j ||2 dove, in base alla (1) è: 1 µj = N ∑ n∈ S j xn (2) Minimizzare l'errore di quantizzazione significa minimizzare la distorsione o la perdita di informazione che si ottiene sostituendo un punto (a volte detto anche centro) col suo centroide. Per cui l'algoritmo k-means va applicato, in generale, secondo i seguenti passi: 1. Si assegnano inizialmente i punti x^n (punti o centri) in 10
  11. 11. modo randomico nei k insiemi (o cluster fissati) e si scelgono k centri iniziali, uno per ogni cluster 2. Si calcolano i centroidi con la (2) in basa ai cluster iniziali fissati ed i centri iniziali 3. Si assegna ogni punto al più vicino μj e quindi lo si assegna nel cluster j (questo minimizza la varianza interna e massimizza la varianza esterna) 4. Se E non diminuisce ci si arresta (significa anche che i punti non si spostano più tra cluster); se, invece, diminuisce si ritorna al passo 2 per continuare Per poter minimizzare la distorsione occorre: 1. ogni punto deve essere codificato col suo centroide 2. la derivata parziale della distorsione rispetto alla posizione di ogni centro o punto deve essere nulla. La configurazione iniziale dei punti e la scelta di k L'algoritmo ha una relativa velocità di convergenza. Il risultato iniziale non necessariamente è quello ottimo. La cosa dipende dalla configurazione iniziale, per cui di solito si provano più configurazioni iniziali randomiche o manuali dei punti e si confrontano i risultati per scegliere alla fine la configurazione iniziale giusta. Anche con la scelta di k si preferisce provare diversi valori di k, in modo che minimizzi le distanze intra-cluster e massimizzi le distanze inter-cluster. L'algoritmo ha complessità O(tkn) dove t è il numero di iterazioni che occorranno, n è il numero di punti e k il numero di cluster. Scelta della metrica In generale uno dei problemi fondamentali, legato anche al problema, è la scelta della metrica di similitarità (Similitarity Metric) o anche di distanza tra due serie di numeri x={x1,x2,...,xn} e y={y1,y2,...,yn}. Possono essere scelte diverse metriche, alcune delle quali sono: • Distanza euclidea quadrata • distance(x,y)=Σi(xi-yi)2 Rappresenta la distanza o path più breve tra due punti.Di solito è preferibile una distanza normalizzata ovvero 1/N di quella di sopra. • Distanza City-block (Manhattan) • distance(x,y)=Σi|xi-yi| Il concetto dietro al City-block è come se una città fosse divisa in quartieri o blocchi e per arrivare da un punto 11
  12. 12. all'altro della città non è possibile fare la distanza più breve, ma percorsi permessi tra quartieri; per cui il city- block è la somma dei path possibili messi a disposizione da ogni quartiere. Di solito è preferibile una distanza normalizzata ovvero 1/N di quella di sopra. • Distanza Chebychev • distance(x,y)=Maximum|xi-yi| • Percentuale di disaccordo • distance(x,y)=(Number of xi≠yi )/i • Coefficiente di correlazione di Pearson 'centered' 1 N  xi − x   yi − y  r= N ∑  i= 1   σ x  σ y     dove x o y 'segnato' sono la media, mentre σx o σy sono la devizione standard. Il coefficiente r vale 1, 0, -1. Con 1 esiste una correlazione tra i dati xi e yi, con 0 non esiste e con -1 è una correlazione opposta. Quando non si vuole parlare di distanza, ma di similarità, r è la metrica preferita insieme a quello uncentered. Se si usa questo coefficiente non è necessaria una normalizzazione, perchè è già implicita nella definizione. Il concetto della correlazione di Pearson è quanto r si avvicina ad approssimare il passaggio per i punti; oppure più semplicemente se i vettori x e y sono pensati come curve di punti xi e yi, allora il coefficiente di Pearson indica se le due curve hanno pendenze simili. Il coefficiente di Pearson è invariante rispetto ad una trasformazione lineare di y; ad esempio se gli yi sono moltiplicati per una costante o sommati per una costante il coefficiente di Pearson è ancora uguale al precedente (la pendenza è rimasta la stessa). • Coefficiente di correlazione di Pearson 'uncentered' 1 N  xi   yi  r= ∑  (0)   (0)  N i= 1  σ x   σ y    rispetto al 'centered' assume la media nulla anche se non lo è realmente. Mentre sono definite come: N 1 ∑ (x) 2 σ (0) x = i N i= 1 N 1 ∑ (y) 2 σ (0) y = i N i= 1 Se i dati x e y sono due vettori, con analoga pendenza, e tra 12
  13. 13. i punti xi e yi esiste un offset costante, allora la centered correlation è 1 ma non è 1 l'uncentered correlation. Questo perchè l'uncentered correlation rappresenta il coseno dell'angolo tra due vettori x e y n-dimensionali, ognuno dei quali è in uno spazio a n dimensioni che passa per l'origine. • Spearman rank correlation rSpearman che rappresenta la correlazione dei rank dei dati dei vettori. E' una versione derivata dal coefficiente di Pearson, ed è un coefficiente di solito più robusto con gli outliers. Si parte dai vettori e si sostituisce ad ogni loro valore quello del loro rank o della loro posizione, poi si ricava il coefficiente. In questo modo rimpiazzando il valore con quello del rank si ottiene un valore prossimo a quello del coefficiente di Pearson standard, anche se esistono valori estremi elevati (outliers). Spesso lo Spearman rank correlation è usato come test statistico di indipendenza di x da y. • Il τ di Kendall, anch'esso un coefficiente derivato da quello di Pearson. Con Nc indichiamo il numero di coppie (xi,yi) (xj,yj) concordi, cioè tali che: • xi > xj e yi > yj oppure xi < xj e yi < yj (sinteticamente ogni coppia con segni >> o <<) mentre con Nd quelle discordi (sinteticamente ogni coppia con segni <> o >< ) che non rispettano la definizione precedente. In tal caso è: Nc − Nd τ = N ( N − 1) / 2 Anche il coefficiente di Kendall può essere usato come test di indipendenza dei dati. Missing value Se uno dei due vettori da confrontare nella similitarità ha valori assenti, il valore presente nell'altro vettore corrispondente non verrà considerato; questo per poter confrontare a coppie i valori (xi,yi). 13
  14. 14. Esempio concettuale di clustering Supponiamo k=2 cluster e prendiamo k=2 centri casuali (quelli in arancione nella figura 1), uno per cluster.Clusterizziamo i nostri dati rispetto a questi centri. Ricalcoliamo ora i centroidi in base ai cluster individuati (vedi figura 2). Illustrazione 4 Rifacciamo il clustering dei nostri dati rispetto ai nuovi centroidi individuati (vedi figura 3). Illustrazione 5 Si ripetono gli ultimi due passi fintanto che dei punti si muovono da un cluster ad un altro (vedi figura 4). Illustrazione 6 Illustrazione 7 Codebook e Codevector, Insieme di Voronoi e Regione di Voronoi Formalizziamo ulteriormente quello già visto prima e indichiamo il dataset dei dati D con: D = { S1 , S 2 ,..., S N } di cardinalità N, costituito da vettori S appartenenti a Rn, allora 14
  15. 15. chiamiamo codebook l'insieme: W = { µ 1 , µ 2 ,..., µ k } i cui elementi, detti codevector, sono: 1. appartenenti a Rn, 2. e l'insieme W ha una cardinalità k«N L'insieme di Voronoi Vc del codevector μc è l'insieme di tutti i vettori in D per i quali μ c è il codevector più vicino (o winner): Vc = { S ∈ D | c = arg min j || S − µ j ||} Per conseguenza la Regione di Voronoi Rc del codevector μc è l'insieme di tutti i vettori in Rn per i quali μc è winner: Rc = { S ∈ R n | c = arg min j || S − µ j ||} La definizione di un codebook porta, inevitabilmente, alla quantizzazione vettoriale dello spazio di input e lo spazio di input diventa una collezione di poliedri (tassellazione di Voronoi). 15
  16. 16. Illustrazione 8: Tassellazione di Voronoi Da quanto visto prima, una volta fissati i codevectors (k) possiamo ottenere codebook differenti; il codebook migliore è quello che minimizza l'errore di quantizzazione: k 1 E= ∑1 S∑V ||S − µ c ||2 2 | D | c= ∈ c dove |D| è la cardinalità di D. Algoritmo K-means (il ciclo di Lloyd) L'algoritmo già visto prima, e qui riformulato, è dovuto a Lloyd nel 1957 e consiste in quattro passi iterativi: 1. Inizializziamo il codebook W={μ1,μ2,...,μk} con k vettori scelti dall'insieme dati D 2. Calcoliamo per ogni codevector μi ε W l'insieme di Voronoi del codevector 16
  17. 17. Vi = { S ∈ D | i = arg min j || S − µ j ||} 3. Assegniamo ad ogni codevector μi la media (o centroide) dell'insieme di Voronoi 1 ∑ S µi = | Vi | S∈ Vi 4. Torniamo al passo 2 se qualche codevector cambia; altrimenti abbiamo terminato. Principali problematiche tecniche degli algoritmi precedenti I problemi che nascono con tecniche come quelle precedenti e di tante altre simili sono: 1. le performance che richiedono: • cluster hardware e linguaggi di programmazione che consentano parallelismo e velocità di esecuzione • database in cluster ed affidabili • attenzione nella progettazione e nell'implementazione privilegiando tecniche che migliorino le prestazioni 2. scarsa scalabilità del sistema di analisi non appena aumenta largamente il numero di oggetti del data set di analisi ed il numero di dimensioni in gioco del dominio del problema (es: centinaia di migliaia di dimensioni). In sostanza l'efficacia degenera col numero di dimensioni ed in base alla quantità di rumore (o errore). L'efficienza degenera al crescere del numero di punti da elaborare e del numero di dimensioni. Il punto 2 richiede un'attenta valutazione del proprio dominio del problema, con un'accurata scelta dei prodotti di base da utilizzare (tipicamente del prodotto a supporto della propria base dati), oltre ad una precisa progettazione di ogni dettaglio. Uno dei difetti delle precedenti tecniche, inerenti il punto 2, ma che il clustering grid-based evita, è che se la tecnica utilizzata porta al relazionamento col punto vicino o con il più vicino dei punti, allora questa tecnica tenderà a lavorare male in un dataset ad alte dimensioni. Difatti in un dataset con molte dimensioni, è improbabile che i punti sono più vicini gli uni agli altri rispetto alla distanza media tra i punti, perché c'è spazio scarsamente riempito. Come risultato, appena aumenta la dimensionalità, la differenza tra la distanza dal più vicino e dal più lontano di un punto va a zero (vedi [3]). Clustering Grid-based e il miglioramento di OptiGrid I metodi grid-based sono ragionevolmente veloci, capaci di scoprire cluster di qualsiasi forma. 17
  18. 18. Gli algoritmi grid-based dividono lo spazio dell'input in ipercelle rettangolari, scartano le ipercelle a bassa densità e uniscono le ipercelle ad alta densità per formare i cluster. Molti algoritmi di tal genere sono STING, MAFIA, CLIQUE etc (vedi [3]). Tuttavia anche gli algoritmi grid-based diventano costosi, specie in termini di memoria, all'aumentare delle dimensioni in gioco. Esistono, però, diversi algoritmi che cercano di superare il problema dell'aumento della dimensionalità: ORCLUS, PROCLUS, OptiGrid, O-Cluster sono un esempio. OptiGrid è un algoritmo interessante sia per la sua semplicità che per la capacità di trovare cluster in spazi ad alte dimensioni, anche in presenza di rumore. OptiGrid costruisce un "grid partitioning" dei dati, usando degli iperpiani di partizionamento e usando un "contratto progettuale" tra le differenti partizioni dei dati. OptiGrid cerca degli iperpiani che soddisfano due requisiti: 1. la separazione degli iperpiani deve effettuare un taglio attraverso le regioni a bassa densità rispetto alla regioni circostanti; 2. la separazione degli iperpiani dovrebbe mettere in cluster i singole partizioni diverse. Il primo requisito mira a prevenire il problema definito "oversplitting", cioè un piano di taglio non deve dividere mai un cluster. Facendo il taglio in regioni a bassa densità non si taglia uno stesso cluster in più parti, cioè non si dividono i dati di "ugual significato e peso", che dovrebbero stare in uno stesso cluster. Il secondo requisito è il tentativo di far sì che il piano di taglio contribuisca a trovare cluster separati. OptiGrid costruisce ricorsivamente una griglia multidimensionale con il partizionamento dei dati, utilizzando un taglio a iperpiani, ciascuno dei quali è ortogonale ad almeno una proiezione. Ad ogni step la generazione degli iperpiani candidati è controllata da due parametri di soglia: 1. il livello del rumore (noise level) 2. la massima densità di splitting La tecnica implementativa proposta dagli autori considera che gli iperpiani di partitioning sono proiezioni parallele all'asse e dimostrano che l'errore diminuisce all'aumentare delle dimensioni (vedi [3]). 18
  19. 19. Difetti di OptiGrid OptiGrid ha due difetti principali: • è sensibile alla scelta dei parametri che portano alla scelta del piano di taglio; • non descrive o prevede una tecnica di gestione dei dati dei dataset che non riescono, poi, a trovare spazio in memoria. Algoritmo O-Cluster (Ortoghonal Partitioning Clustering) O-Cluster, è nato in ambito del database Oracle, già dal 2002 in Oracle 9i e presente come pacchetto PL/SQL. Sfrutta l'idea di base di OptiGrid e cerca di introdurre miglioramenti tale da eliminare i suoi due difetti principali. Due sono i punti di miglioramento introdotti in O-Cluster: • l'uso di test statistici per validare o meno la scelta del piano di taglio, rendendo automatica tale operazione e garantendo una buona qualità del piano di taglio; • l'uso di un buffer contenente un campione random dei dataset; il campionamento permette di avere ulteriori informazioni disponibili per le partizioni e la scelta del piano di taglio. Per alcuni tipi di partizioni, come vedremo, è possibile rimuovere dal buffer i dati dei dataset associati per liberare memoria e analizzare il resto dei dati. O-Cluster lavora ricorsivamente: prima analizza i possibili punti di splitting (o di taglio) rispetto a tutte le dimensioni; poi individua il miglior splitting e divide i dati in due partizioni. A questo punto O-Cluster cerca nuovi splitting da fare nelle due partizioni iniziali individuate. In pratica O-Cluster crea un albero gerarchico che tassella lo spazio di input in rettangoli. O-Cluster ha complessità O(N*d) dove N è la quantità di dati nel buffer e d sono le dimensioni.L'algoritmo che usa O-Cluster si può riassumere come nel diagramma a blocchi successivo; i punti fondamentali dello schema a blocchi sono stati numerati e ad essi faremo riferimento nel seguito: Step 1 Load Buffer: se l'intero daset non entra in memoria si mettono nel buffer solo dei campioni selezionati randomicamente (campionamento). Step 2 Computa gli istogrammi: l'obiettivo è di determinare un 19
  20. 20. insieme di proiezioni o dimensioni rispetto alle quali determinare degli istogrammi. Ogni partizione che presenta una foglia nella gerarchia di cluster e non è masrcata 'ambigua' o 'frozen' è da considerarsi come una partizione attiva. Allo step 4 e a quello 6 si vedrà cosa si intende per marcare le partizioni ambigue e frozen. E' essenziale calcolare gli istogrammi perchè, secondo vari studi (vedi [3]), si evidenzia che è possibile individuare un numero ottimale di contenitori in base alla distribuzione dei dati. Secondo alcuni studi l'approccio più semplice porta ad un numero di contenitori inversamente proporzionale alla deviazione standard dei dati di una certa dimensione e direttamente proporzionale a N1/3, con N il numero di punti interni ad una partizione. Un metodo alternativo è di considerare una strategia di contenitori globali e cambiare gli istogrammi appena il numero dei punti interni alla partizione decrementa. O-cluster è comunque robusto rispetto a qualsiasi strategia adottata. Step 3 Cerca il 'best splitting': per ogni istogramma O-Cluster cerca il miglior piano di taglio se esiste; difatti un buon piano di taglio deve passare attraverso un punto di bassa densità dell'istogramma (un avvallamento) e l'avvallamento dovrebbe essere supportato, su entrambi i lati, da punti di alta densità (picchi). O-Cluster cerca proprio un avvallamento ed un picco, ad entrambi i lati, tale che la differenza tra picchi e gli avvallamenti sia significativo da un punto di vista statistico. Il test 20
  21. 21. significativo statistico che usa O-Cluster è il test χ2: 2(observed − exp ected )2 χ2= ≥ χ α2 ,1 exp ected Nella formula il "valore osservato" è il conteggio degli istogrammi nell'avvallamento, mentre il "valore atteso" è il conteggio medio degli avvallamenti e dei picchi. Alcune implementazioni di O-Cluster risalenti al 2002 usavano già i seguenti valori: χ2=95% e χ20.005,1=3,843 dando buoni risultati. Step 4 Marca 'ambigous' e 'frozen partitions': Se non esiste un buon splitting delle partizioni, O-Cluster cambia il test χ2, abbassando ad esempio χ2=90% e χ20.1,1=2,706. Se su molti dati si riscontra questo tipo di situazione, ovvero che abbassando i valori si rientra nel test, allora la partizione corrente è marcata 'ambigua'. Se non vengono trovati splitting, anche abbassando più volte i valori, e il test non è mai superato (partizioni ambigue) allora la partizione è marcata 'frozen' e i punti di essa vengono eliminati dal buffer. Step 5 Splitting delle partizioni attive: Se è stato individuato uno splitting vengono create due partizioni e il procedimento riparte dallo step 2. Step 6 Reload buffer: Il reload buffer viene attuato solo dopo che gli splitting sono terminati, come si vede dal diagramma a blocchi. Se tutte le partizioni rimaste sono marcate frozen oppure i dati sono finiti, allora l'algoritmo termina. Se esistono partizioni marcate come ambigue oppure esistono dataset non ancora esaminati, allora il buffer viene ricaricato. I nuovi dati vanno a rimpiazzare nel buffer quelli delle partizioni 'frozen' (congelate). In sostanza vengono caricati o dati di partizioni ambigue oppure dati mai esaminati. E' possibile durante l'elaborazione conteggiare le statistiche dei punti delle partizioni ambigue, congelate etc. Il caricamento continua fino a che non si verifica una delle seguenti condizioni: 1. il buffer è pieno 2. i dati sono finiti 21
  22. 22. 3. un certo numero di dati sono stati letti, il buffer non è pieno e non vi sono molti dati La terza condizione sembra strana ma serve per evitare un eccessivo Reloading; difatti il buffer è molto grande ed essere pieno con molti record marcati da cancellare, e ciò richiederebbe un tempo di attesa grande per poi riempirlo con i dati di una partizione ambigua. Per evitare questo, come compromesso, il processo di reloading si intende terminato quando si sono letti una quantità di dati almeno uguale alla lunghezza del buffer stesso. Una volta completato il reload del buffer si ritorna allo step 2. Ulteriori caratteristiche di differenza tra O-Cluster e Optigrid Opti-grid ha due parametri di soglia come visto precedentemente, che gli servono per individuare un buon piano di taglio: 1. il livello del rumore 2. la massima densità di splitting In OptiGrid i picchi degli istogrammi devono essere al di sopra del livello del rumore, mentre gli istogrammi dell'avvallemento devono avere densità più bassa della massima densità di splitting e normalmente la massima densità di splitting dovrebbe essere settata al di sopra della soglia del livello del rumore. La ricerca di tali valori ottimali è una fase critica da un punto di vista prestazionale per OptiGrid. O-Cluster col test χ2 elimina la necessità dei poarametri di soglia rendendo più facile e meno critica la ricerca del taglio ottimale. Successivi studi su O-Cluster hanno portato anche alla introduzione del parametro sensitività ρ. Questo parametro ha quasi lo stesso significato del livello di rumore di OptiGrid. Lo scopo del parametro, difatti, è di eliminare arbitrari piccoli cluster, settando un conteggio minimo dei picchi degli istogrammi di O-Cluster. Sebbene OptiGrid tenta di far il miglior splitting possibile, può arrivare all'oversplitting. Per come è stato pensato inizialmente, OptiGrid tende a partizionare contemporaneamente con diversi piano di taglio. I cluster ottenuti con pochi punti vanno rimossi successivamente. OptiGrid lavora, inoltre, con istogrammi che sotto-arrotondano la densità di distribuzione, per cui sia questo fatto che il meccanismo delle soglie può portare a tagliare attraverso clusters. Questo fatto anche se non è un vero problema per OptiGrid, richiede diverse elaborazioni. Lo splitting, invece, di 22
  23. 23. O-cluster avviene con un clustering ad albero binario ed è validato statisticamente. Benchmark di O-Cluster Su O-Cluster è stato eseguito (vedi [3]) un particolare benchmark, con un dataset bidimensionale DS3. I risultati sono da considerarsi molto validi per scalabilità, prestazioni, efficacia ed efficienza. Inoltre occorre tener conto che è basato su Oracle e, quindi, di un prodotto molto noto e supportato. O-Cluster Data Mining Oracle 11g Come precedentemente visto O-Cluster crea un modello di clustering gerarchico e grid-based, con partizioni parallele agli assi (quindi ortogonali) rispetto allo spazio di input. Inoltre ripetutamente riesegue il lavoro fino a che la struttura gerarchica ottenuta riesce a tassellare tutto lo spazio di input. I cluster sono descritti da intervalli lungo gli assi degli attributi e corrispondenti ai centroidi e agli istogrammi. L'algoritmo k-means tassella lo spazio di input in n cluster (con n deciso dall'utente) anche quando il cluster non esiste, mentre ciò è evitato da O-Cluster. O-Cluster effettua piani di taglio nelle aree a bassa densità e si basa sul riconoscimento di picchi e valli negli istogrammi; per cui se un'area ha una densità uniforme, O-Cluster non la partiziona. I cluster scoperti da O-Cluster sono usati (vedi [4]) per generare un modello bayesiano di probabilità che viene poi utilizzato durante l'assegnazione di punteggi (modello a pagamento) ai cluster. Il modello di probabilità generato è un modello misto in cui sono rappresentati i componenti con un prodotto di distribuzioni normali indipendenti per gli attributi numerici e distribuzioni multinomiale per gli attributi categorici. Esso utilizza una forma particolare di binning equi-width che calcola il numero di cassonetti per attributo automaticamente. Le colonne numeriche con tutti i valori null o un singolo valore vengono rimossi. Va studiato l' "Oracle Data Mining Application Developer's Guide" per informazioni sulle colonne nidificati e dati mancanti. O-Cluster non necessariamente utilizza tutti i dati di input quando costruisce un modello. Esso legge i dati in lotti (la 23
  24. 24. dimensione del lotto di default è 50000). O-Cluster legge un altro batch se ritiene, sulla base di test statistici, perchè potrebbero esistere gruppi che non ha ancora individuato. Poiché O-Cluster può smettere di costruire il modello prima di leggere tutti i dati, è altamente raccomandato che i dati siano randomizzati. E' raccomandato che gli attributi binari siano dichiarati come categorici. L'utilizzo di trasformazione equi-width binning Oracle Data Mining, con stima automatica del numero di cassonetti è altamente raccomandato. La presenza di valori anomali possono influenzare notevolmente la algoritmi di clustering. Utilizzare un ritaglio di trasformazione prima del binning o di una normalizzazione. Valori anomali con binning equi-larghezza possono impedire O-Cluster di rilevare cluster. Come risultato, l'intera popolazione sembra si inserisce in un singolo cluster. Social Network Analysis e il clustering Nella SNA, il clustering è un punto teorico di base per poter descrivere le reti sottostanti che si analizzano. In questi casi la velocità di elaborazione ha una grande importanza. Esempi didattici sono alcuni tools disponibili anche per Windows come "Cluster" associato ad un Java Tree Viewer [5], che fornisce una visione didattica delle tecniche di clustering, ad esempio quelle gerarchiche, k-means, Self-Organizing Maps di Tamayo, Principal Component Analysis; mentre UCINET [6] è adatto allo studio delle Social Network Analysis. Riferimenti [1]http://www.smaponline.net/tags/optics-clustering-java- implementation.html [2]http://download.oracle.com/docs/cd/E11882_01/datamine.112/e1221 6/clustering.htm [3] O-cluster: Scalable Clustering of Large High Dimensional Data Sets - Boriana L. Milenova (Oracle), Marcos M. Campos (Oracle) [4] O-Cluster Data Mining – Oracle 11g http://www.comp.dit.ie/btierney/oracle11gdoc/datamine.111/b28129/a lgo_oc.htm http://www.oracle.com/technetwork/database/options/odm/index.html 24
  25. 25. Tools free per studio didattico su Windows per didattica sul Clustering: [5]Cluster e Java Tree Viewer per una didattica sul Social Network Analysis: [6]UCINET [7]PAJEK -°- Il presente documento è stato realizzato con OpenOffice.org -°- 25

×