Método Hierárquico Aglomerativo de Clusterização Algoritmo CURE Sandra de Amo AULA 21 DATA MINING
Clustering Using REpresentatives (CURE) No início, cada amostra é um cluster. número de clusters = número de amostras Calcula-se distância entre os clusters. Clusters próximos são reunidos num único cluster. Repete-se o processo de cálculo da distância entre clusters e reunião de clusters próximos. O processo termina quando se atinge o número pré-fixado de clusters.
Como medir a distância entre clusteres Enfoque baseado em centróide Distância entre clusteres C1 e C2 = dmean(C1,C2) = d(m1,m2) mi = centróide de Ci Enfoque MST (Minimum Spanning Tree) dmin(C1,C2) = min d(p,q) p ɛ C1, q ɛ C2
Como medir a distância entre clusteres Média dmedia(C1,C2) = 1 Σ Σ d(p,q) ni nj ni = tamanho do cluster Ci Max d(C1,C2) = max d(p,q) p ɛ C1 q ɛ C2 p ɛ C1, q ɛ C2
Distância entre Clusters Centróides MST Média MAX
Cálculo da Distância em CURE Política mista: centróides e MST Determina um número N de objetos em cada cluster que são mais representativos do cluster. Elementos bem distribuídos Representam zonas distintas do cluster Calcula a mínima distância entre estes elementos mais representativos.
Distância entre Clusters CURE Elementos representativos do Cluster C2 Elementos representativos do Cluster C1
Cálculo da Distância entre Clusters CURE + + Parâmetros de Entrada Coeficiente de Retração Número de representantes escolhidos em cada cluster
Parâmetros de Ajuste Representantes : capturam o formato do cluster Retração em direção do centro de gravidade: Diminuir a influência de ruídos Coeficientes de retração : Valores pequenos : favorecem clusters de formato não convexo, menos compacto Valores grandes : aproximam os representantes do centro do cluster, favorecem clusters convexos, de forma esférica.
Algoritmo CURE Entrada Saída Banco de Dados BD K = número de clusters α = fator de retração ( 0 ≤ α < 1) N = número de representantes em cada cluster Saída K clusters disjuntos
Algoritmo CURE Duas estruturas de dados Uma para armazenar os clusters a cada iteração (heap sequencial) Uma para armazenar os representantes dos clusters a cada iteração (kd-tree – estrutura de dados utilizada para armazenamento e consulta eficientes de dados multidimensionais)
Apresentação simplificada Q = arquivo para armazenar os clusters id1 u1 2 u = cluster = {a1, a2, ..., an} u.mp = cluster mais próximo de u id2 u2 2 u3 3 id3 id4 u4 4 u2 = u1.mp clusters d(u, u.mp) Arquivo Q ordenado pela terceira coluna T = arquivo para armazenar os representantes de cada cluster id1 {p1,p2,p3} u1. rep id2 {q1,q2,q3} u2. rep id3 {w1,w2,w3} u3. rep id4 {v1,v2,v3} u4. rep
Criação dos Clusteres ui = {pi}, onde BD = {p1,...,pm} Repeat Inicialmente cada objeto é um cluster Clusteres são ordenados em Q segundo a menor distância a seus clusteres mais próximos. Arquivo T contém m registros, cada registro é um conjunto unitário {pi}. Repeat Considera-se o primeiro cluster u em Q e v = u. mp Retira u e v de Q w = u U v ; w.rep = representantes de w Remove de T os registros u.rep e v.rep Calcula w.mp Atualiza a terceira coluna do arquivo Q Insere em Q o cluster w na posição adequada e w.rep em T Until Q contém k clusteres
Exemplo: cálculo de w.rep Cluster v Cluster u p1 q1 N = 3 α = 0.5 q2 p2 p3 Centro de gravidade de w = u U v w = {p1, p2, p3, q1, q2} Repr. 1 = o que está mais afastado do centro = q1 Repr. 2 = o que está mais afastado de q1 = p2 Repr. 3 = o que está mais afastado de {q1, p2} d(p1,{q1,p2}) = min {d(p1,q1), d(p1,p2)} = d(p1,p2) d(p2,{q1,p2}) = 0 d(p3,{q1,p2}) = d(p3,p2) d(q1,{q1,p2}) = 0 d(q2,{q1,p2}) = d(q1,q2)
Exemplo: cálculo de w.rep Cluster v Cluster u p1 q1 N = 3 N = 3 α = 0.5 q2 p2 p3 Centro de gravidade de w = u U v w = {p1, p2, p3, q1, q2} w.rep = representantes do cluster w
Cálculo de w.mp (mais próximo de w) Considera-se x = o primeiro cluster de Q – {u,v} Fazemos w.mp = x Para cada y em Q – {u,v} 3.1 Se d(y,w) < d(w,w.mp) então w.mp:= y 3.2 Se y.mp = u ou v 3.2.1 Se d(y,y.mp) < d(y,w) 3.2.1.1 Existe z em Q – {u,v}tal que d(y, z) < d(y,w) ? Sim : y.mp := z Não : y.mp := w 3.2.2 Se d(y,y.mp) ≥ d(y,w) y.mp:= w 3.3 Se y.mp é diferente de u e v 3.3.1 Se d(y,y.mp) > d(y, w) Para cada cluster y atualiza seu cluster mais próximo
Vantagens e Desvantagens CURE detecta clusters de formato arbitrário K-means detecta clusters de formato esférico CURE é robusto quanto a outliers Desvantagem de CURE : complexidade O(n2), n = tamanho do banco de dados
Referência S. Guha, R. Rastogi, K. Shim: CURE – An Efficient Clustering Algorithm for Large Databases. ACM/SIGMOD 1998.