ROCK
A Robust Clustering Algorithm
for Categorical Attributes
Sudipto Guha, Rajeev Rastogi, Kyuseok Shim
Presentazione di Sara Liparesi e Francesco Nonni
Sistemi Informativi per le Decisioni
a.a. 2005/2006
Prof. Marco Patella
ROCK Clustering Algorithm
RObust Clustering using linKs
• Sviluppato da Sudipto Guha, Rajeev Rastogi e Kyuseok
Shim nel 1999
• Algoritmo gerarchico agglomerativo
• Adatto allo studio dei dati categorici
• Basato su misure di similarità non metriche
Limiti degli algoritmi di clustering
tradizionali
• Algoritmi partizionanti:
• Non adatti ad attributi categorici
• Algoritmi gerarchici:
dati
dati
Dati
categorici
????
dati
MARKETING
• Non sempre adatti a trattare attributi categorici
• La distanza fra i centroidi dei cluster, nel caso di attributi
categorici, è una povera stima della similarità fra i clusters
• Ripple Effect
• Alcuni algoritmi usano delle misure di distanza diverse da quelle
euclidee (es. Jaccard coefficient), ma si concentrano solo su due
punti per volta ignorando il vicinato dei punti stessi (approccio
locale)
Concetti fondamentali
• Neighbors
• Links
• Criterion Function
• Goodness Measure
Neighbors
I vicini di un punto sono quei punti che possono essere
considerati ragionevolmente simili ad esso:
sim ( pi, pj ) ≥ θ
Dove:
• sim è una generica funzione di similarità che indica la vicinanza tra
coppie di punti;
• Θ è un valore di soglia.
Esempio: Market Basket Data
Date due transazioni T1, T2 una possibile funzione di similarità è:
sim(T 1, T 2) =
T1∩T 2
T1∪T 2
Links
Il concetto di links viene introdotto per definire il numero
di vicini in comune fra una coppia di punti pi, pj.
• Tale numero viene espresso da link(pi,pj).
• Questa proprietà permette all’algoritmo di individuare le coppie di punti
che potenzialmente possono essere unite in un unico cluster.
• In generale, punti appartenenti a un singolo cluster avranno un grande
numero di vicini in comune e conseguentemente un alto numero di links.
Esempio
Links: esempio
ID
Genere
Regista
Attore
Disponibilità
Disponibilità al noleggio
Mr e Mrs Smith
T1
adrenalina
Liman
Pitt
non disponibile
Troy
T2
adrenalina
Petersen
Pitt
disponibile
La Storia Infinita
T3
in famiglia
Petersen
Gunn
disponibile
The Bourne Identity
T4
adrenalina
Liman
Damon
disponibile
La Tempesta Perfetta
T5
adrenalina
Petersen
Clooney
disponibile
Air Force One
T6
adrenalina
Petersen
Ford
disponibile
I Fratelli Grimm
T7
in famiglia
Gilliam
Damon
non disponibile
Fonte: Blockbuster.it
sim(T1 , T2 ) =
m
= 0,5
p
sim(T1,T3)
sim(T1,T3)
0
sim(T2,T3)
sim(T2,T3)
0,5
sim(T3,T4)
sim(T3,T4)
0,25
sim(T4,T6)
sim(T4,T6)
0,5
sim(T1,T4)
sim(T1,T4)
0,5
sim(T2,T4)
sim(T2,T4)
0,5
sim(T3,T5)
sim(T3,T5)
0,5
sim(T4,T7)
sim(T4,T7)
0,25
sim(T1,T5)
sim(T1,T5)
0,25
sim(T2,T5)
sim(T2,T5)
0,75
sim(T3,T6)
sim(T3,T6)
0,5
sim(T5,T6)
sim(T5,T6)
0,75
sim(T1,T6)
sim(T1,T6)
0,25
sim(T2,T6)
sim(T2,T6)
0,75
sim(T3,T7)
sim(T3,T7)
0,25
sim(T5,T7)
sim(T5,T7)
0
sim(T1,T7)
sim(T1,T7)
0,25
sim(T2,T7)
sim(T2,T7)
0
sim(T4,T5)
sim(T4,T5)
0,5
sim(T6,T7)
sim(T6,T7)
0
Links: esempio (2)
Ponendo θ=0,5 i vicini sono:
T1
T2
T4
T2
T1
T3
T4
T3
T2
T5
T6
T4
T1
T2
T5
T6
T5
T2
T3
T4
T6
T6
T2
T3
T4
T5
T5
T6
Link(T3,T4)=3
Link(T1,T5)=2
…
Criterion Function
Obiettivo:
• Massimizzare il numero di links tra i punti appartenenti allo stesso
cluster
• Minimizzare il numero di links tra punti appartenenti a cluster
diversi
k
El = ∑ ni ∗
i =1
∑
pq , pr∈Ci
link ( pq , pr )
ni
1+ 2 f (θ )
Dove:
•k = n° di clusters,
•ni = n° di punti nel cluster Ci
•(ni)1+2f(θ) è il numero atteso di links tra coppie di punti in Ci
Goodness Measure
• La criterion function misura la bontà della soluzione trovata: il
clustering migliore è quello che ha il più alto valore della funzione
obiettivo.
• Ad ogni step è però necessaria una indicazione su quali sono i migliori 2
clusters da fondere.
• Per la coppia di cluster Ci,Cj si definisce la goodness measure g(Ci,Cj)
Intuitivamente possiamo pensare di unire due cluster che hanno molti
vicini in comune
link(Ci, Cj) =
∑ link( p , p )
q
pq∈Ci , pr∈Cj
r
Goodness Measure (2)
• E’ necessario anche un denominatore che rappresenti il numero atteso
di cross-links fra clusters.
g (Ci , C j ) =
(n + n )
link (Ci , C j )
1+ 2 f (θ )
i
j
− ni
1+ 2 f (θ )
− nj
1+ 2 f (θ )
Dove:
• (ni+nj)1+2f(θ) è il numero di links atteso tra coppie di punti nel cluster
unione dei singoli cluster Ci e Cj e composto da ni+nj elementi.
ROCK Clustering Algorithm
• Le fasi principali di questo algoritmo sono:
• L’algoritmo ROCK non lavora su tutti i punti del data set, ma ne
estrae un campione e esegue il clustering solo su di essi
• E’ necessario fornire a ROCK diversi parametri, tra cui il numero
di clusters desiderati
• La nozione di links tra punti permette un approccio globale al
problema del clustering
• I restanti punti sono inseriti nei clusters trovati da ROCK in un
secondo momento
ROCK Clustering Algorithm (2)
Dati di input: (k,S)
1. Viene richiamata la procedura
compute-links(S)
Procedura compute-links
• Con questa procedura viene calcolato, per ogni coppia di punti, il numero di vicini
in comune
• L’idea di base è che se considero un punto (A) e calcolo quali sono i suoi vicini (ad
esempio B e C) allora ogni coppia di vicini (B e C in questo caso) avrà sicuramente
un vicino in comune che è il punto stesso (A)
• La procedura deve essere ripetuta per ogni punto campionato e il contatore deve
essere incrementato per ogni coppia di vicini
Procedura compute-links : esempio
Ponendo θ=0,5 i vicini sono:
T1
T2
T4
T2
T1
T3
T4
T3
T2
T5
T6
T4
T1
T2
T5
T6
T5
T2
T3
T4
T6
T6
T5
T6
Link(T2,T4)= 1
1
Link(T5,T6)= 2
Link(T1,T3)= 1
Link(T2,T5)= 1
Link(T1,T4)= 1
Link(T2,T6)= 1
Link(T1,T5)= 1
Link(T1,T6)= 1
Link(T3,T4)= 1
Link(T3,T5)= 1
T2
T3
T4
T5
Link(T3,T6)= 1
Link(T4,T5)= 1
Link(T4,T6)= 1
ROCK Clustering Algorithm (2)
Dati di input: (k,S)
1. Viene richiamata la procedura
compute-links(S)
2. For each-loop
Per ogni valore campionato s
viene costruita una pila locale
q[s] contenente tutti i punti j
con link[s,j]≠0, ordinati in
maniera decrescente secondo
la goodness measure rispetto a
s.
4. Viene inoltre costruita una
pila globale Q contenente
tutti i clusters/punti ordinati
in modo decrescente secondo
la loro miglior goodness
measure.
ROCK Clustering Algorithm (3)
5. While-loop
Mediante
questo
loop
si
effettua la vera e proprio
operazione di clustering.
Vengono identificati i clusters u
e v come clusters che più si
prestano a diventare un unico
cluster.
Viene creato un nuovo cluster w
che contiene tutti i punti di u e
v.
Esempio
Esempio: scelta dei miglior
clusters da unire
q[3]
1
3
5
2
4
Q
1
3
1
2
4
5
4
5
q[4]
3
1
2
…
w
1U3
Q
Q
v
1
Q
2
4
5
1
2
4
5
u
3
u
v
q[u]
1
4
5
ROCK Clustering Algorithm (4)
10. for each sub-loop
E’ ora necessaria una fase in
cui viene considerato il cluster
unico w invece che i singoli
clusters u e v.
Tutti i clusters x che
precedentemente
avevano
relazioni con i singoli clusters u
o v devono ora prendere in
considerazione il cluster unico
w.
16. Infine viene aggiornato Q
con il nuovo custer w in base
alla sua miglior goodness
measure
(locale).
Inoltre
vengono deallocate le memorie
che contenevano i local heap
dei singoli cluster u e v.
Labeling dei dati
• Non tutti i punti del data set sono stati forniti in input a ROCK
• Sono stati generati dei cluster a partire da un sottoinsieme del data set
• Come assegnare i punti che sono sul disco ai clusters individuati?
1. Estraggo da ogni cluster i un frazione dei punti (Li)
2. Per ogni punto p del data set letto da disco calcolo per ogni cluster i:
(L
Ni
i
+ 1)
f (θ
)
3. Il punto p è assegnato al cluster i dove la funzione precedentemente
calcolata assume valore massimo
Complessità spaziale e temporale
Nel caso peggiore la complessità temporale dell’algoritmo ROCK è:
(
Ο n 2 + nmm ma + n 2 log n
)
Dove:
• n è il numero di punti in input
• mm è il numero massimo di vicini
• ma è il numero medio di vicini
La complessità spaziale è:
(
{
Ο min n 2 , nm m m a
})
Risultati Sperimentali
L’algoritmo ROCK è stato testato su diversi data set:
Sono stati confrontati i risultati dell’algoritmo ROCK e di altri algoritmi di
clustering gerarchico, applicati agli stessi data set.
Risultati Sperimentali