Você está na página 1de 10

FUNDAO EDUCACIONAL DE DUQUE DE CAXIAS

CURSO DE BACHARELADO EM SISTEMAS DE INFORMAO

PROJETO DE PESQUISA: UM EFICIENTE ALGORITMO DE CLUSTERIZAO KMEANS: ANLISE E IMPLEMENTAO

Alunos:

Emmanoel Jefferson dos Santos Jefferson Pita dos Santos caro Figueira Martins de Oliveira

Coordenao: Prof. Renan Souza

Duque de Caxias, 01 de Junho de 2009

FUNDAO EDUCACIONAL DE DUQUE DE CAXIAS

CURSO DE BACHARELADO EM SISTEMAS DE INFORMAO

PROJETO DE PESQUISA: Um eficiente Algoritmo de Clusterizao k-Means: Anlise e Implementao

_______________________________________ Emmanoel Jefferson dos Santos


(Aluno)

_________________

_______________________________________ Jefferson Pita dos Santos


(Aluno)

_________________

_______________________________________ caro Figueira Martins de Oliveira


(Aluno)

_________________

_______________________________________ Renan Souza


(Coordenador Responsvel)

_________________

NDICE
Resumo ...........................................................................................................................pg 4 Introduo .....................................................................................................................pg 4 O Algoritmo de Filtragem ............................................................................................pg 5 Anlise Emprica ...........................................................................................................pg 6 Dados Sintticos .................................................................................................pg 6 Anexos........ ....................................................................................................................pg 8 Bibliografia ..................................................................................................................pg 10

Um eficiente Algoritmo de Clusterizao k-Means: Anlise e Implementao


Resumo: Na clusterizao com k-means, nos dado um conjunto de n pontos de dados em um espao dimensional Rd e um inteiro k e o problema determinar um conjunto de k pontos em Rd, chamados centros, de modo a minimizar a distncia mdia de cada ponto de dados para o seu centro mais prximo. Uma popular descoberta para o k-means o algoritmo de Lloyd's. Nesta pesquisa, apresentamos uma implementao simples e eficiente do algoritmo de clusterizao Lloyd's k-means, que ns chamamos de algoritmo de filtragem. Este algoritmo de fcil implementao, exigindo uma kd-tree como nica estrutura de dados importante.

1. Introduo
Problemas de clusterizao surgem em muitas aplicaes diferentes, como a minerao de dados e descoberta de conhecimento, a compresso de dados e quantizao vetorial, e reconhecimento de padres e classificao de padres. A noo do que constitui um bom cluster depende da aplicao e existem muitos mtodos para encontrar clusters sujeitos a vrios critrios, como ad hoc e sistemtica. Entre as formulaes de clusterizao que se baseiam na minimizao dos dados, a mais amplamente utilizada e estudada o k-means. Dado um conjunto de n pontos de dados no espao real ddimensional, Rd, e um inteiro k, o problema determinar um conjunto de pontos de k na Rd, chamadas de centros, de modo a minimizar a distncia mdia do quadrado de cada ponto de dados para o seu centro mais prximo. Esta medida muitas vezes chamada de distoro de erro-quadrado, e este tipo de agrupamento se insere na categoria geral de varincia baseada em clusterizao. Clusterizao baseada em k-means est estreitamente relacionada com o nmero de clusters e outros problemas de localizao. Estes incluem o k-means Euclidiano, em que o objetivo minimizar a soma das distncias para o prximo centro e o problema k-center geomtrico em que o objetivo minimizar a distncia mxima de todos os pontos ao seu centro mais prximo. No existem solues eficientes conhecidas a qualquer um destes problemas e algumas formulaes so NPhard. Uma aproximao eficiente para o problema de clusterizao k-means foi apresentado pela Matousek, mas grande fatores constantes sugerem que no um bom candidato para a aplicao prtica. Uma das mais populares descobertas para resolver o problema do k-means baseado em um esquema simples e iterativo para encontrar localmente uma soluo mnima. Este algoritmo freqentemente chamado de algoritmo K-means. H uma srie de variantes para esse algoritmo, assim, para esclarecer qual a verso que estamos usando, ns iremos nos referir a ele como algoritmo de Lloyd's. Algoritmo de Lloyd's baseado na observao simples que o melhor posicionamento de um centro est no baricentro dos clusters associados. Dado qualquer conjunto k de centros Z, para cada centro de z Z, deixe V(z) denotar sua vizinhana, isto , o conjunto de pontos de dados para que Z o vizinho mais prximo. Em terminologia geomtrica, V(z) o conjunto de pontos de dados situados na clula de Voronoi de z. Cada etapa do algoritmo de Lloyd's move cada ponto central em z para o baricentro de V(z) e em seguida atualiza V(z) recalculando a distncia de cada ponto para seu centro mais prximo. Estes passos so repetidos at que alguma condio de convergncia satisfeita. Para os pontos em posies gerais (em particular, se nenhum ponto de dados prximo dos dois centros), o algoritmo ir eventualmente convergir para um ponto que um local mnimo para a distoro. No entanto, o resultado no necessariamente um mnimo global. O algoritmo de Lloyd's pressupe que os dados esto presentes na memria. Note que o algoritmo de Lloyd's no especifica o colocao inicial dos centros.

Devido sua simplicidade e flexibilidade, o algoritmo de Lloyd's muito popular na anlise estatstica. Em particular, dado qualquer outro algoritmo de clusterizao, o algoritmo de Lloyd's pode ser aplicado como um estgio de ps-processamento para melhorar a distoro final. Como veremos em nossas experincias, isso pode resultar em significativas melhorias. No entanto, uma aplicao simples do algoritmo de Lloyd's pode ser bastante lento. Isto principalmente devido ao custo de computao dos vizinhos mais prximos. Neste trabalho, apresentamos uma simples e eficiente execuo do algoritmo de Lloyd's, a que chamamos algoritmo de filtragem. Este algoritmo comea por armazenar os dados pontos em uma kd-tree. Lembre-se que, em cada fase do algoritmo Lloyd's, o centro mais prximo a cada ponto de dados computado e cada centro movido para o centride do vizinho associado. A idia manter, para cada n da rvore, um subconjunto de centros de candidatos. Os candidatos para cada n so podados, ou filtrados, eles so propagados para o filhos do n. Desde que a kd-tree computada para os pontos de dados em vez de para os centros, no h necessidade de atualizar esta estrutura, em cada etapa do algoritmo de Lloyd's. Alm disso, uma vez que existem normalmente muitos mais pontos de dados que centros, h grande economia de escala a ser realizado. Note-se que este no um mtodo de agrupamento novo, mas simplesmente uma aplicao eficaz de Lloyd's k-means. O objetivo deste trabalho apresentar uma anlise mais detalhada deste algoritmo. Em particular, ns apresentamos um teorema que quantifica a eficincia do algoritmo quando os dados so agrupados e, naturalmente, ns apresentamos uma srie detalhada de experimentos projetados para o avano da compreenso do desempenho do algoritmo.

2. O Algoritmo de Filtragem
Nesta seo, descrevemos o algoritmo de filtragem. Como mencionado anteriormente, o algoritmo em baseado em armazenar o pontos de dados multidimensionais em uma kd-tree. Para completar, resumimos os elementos bsicos desta estrutura de dados. Definir uma caixa a ser um eixo alinhado hiper-retngulo. A caixa delimitadora de um conjunto de pontos a menor caixa que contm todos os pontos. Uma kd-tree uma rvore binria, o que representa um subdiviso hierrquica do conjunto de pontos da caixa delimitadora com eixo alinhado a hiperplanos divididos. Cada n da kd-tree est associado a uma caixa fechada, chamada de clula. A clula raiz a caixa delimitadora do conjunto de pontos. Se a clula contm mais um ponto, ento declarada para ser uma folha. Caso contrrio, ele dividido em dois hiper-retngulos por um eixohiperplano ortogonal. Os pontos da clula so, ento, particionadas para um lado ou para o outro deste hiperplano. As sub-clulas resultantes so filhas da clula original, conduzindo assim a uma estrutura de rvore binria. H uma srie de maneiras de selecionar a diviso do hiperplano. Uma maneira simples dividir ortogonalmente ao lado mais longo da clula atravs da mediana coordenada dos pontos associados. Dado n pontos, isso produz uma rvore com O(n) ns e O(log n) profundidade. Comeamos a calcular uma kd-tree para os pontos de dados. Para cada n interno u na rvore, podemos calcular o nmero de pontos de dados associados u.count e ponderada ao centride u.wgtCent, que definido como a soma vetorial de todos os pontos associados. O centride atual apenas u.wgtCent/u.count. fcil de modificar a construo da rvore kd-tree para calcular esta informao adicional no mesmo espao e limites de tempo acima indicados. Os centros iniciais podem ser escolhidos por qualquer mtodo desejado. (Algoritmo Lloyd's no especifica como eles devero ser selecionados. Um mtodo comum a amostra ao acaso dos centros dos pontos de dados.) Lembre-se que, para cada fase do algoritmo Lloyd's, para cada um dos centros de k, temos que calcular o centride do conjunto de pontos de dados para que este centro mais prximo. Em seguida, mover este centro para o centride calculado e avanar para a prxima fase. Para cada n da kd-tree, mantemos um conjunto de centros candidatos. Isto definido como um subconjunto dos pontos centrais que poderiam servir como o vizinho mais prximo de algum ponto inserido dentro da clula associada. Os centros candidatos para a raiz consistem de todos os centros k. Em seguida, devemos propagar os candidatos para baixo da rvore da seguinte forma: Para cada n u, deixe C denotar sua clula e deixe Z denotar seu conjunto de candidatos. Primeiro, calcule o candidato z* Z que est mais prximo do

ponto mdio de C. Ento, para cada um dos restantes candidatos z* Z \{z*}, se nenhuma parte do C est mais perto de z do que a z*, podemos inferir que z no o mais prximo ao centro que qualquer ponto de dados associados com u e, portanto, podemos podar, ou filtrar, z da lista de candidatos. Se u associado com uma nico candidato (que deve ser z*), ento z* mais vizinho prximo de todos os seus pontos de dados. Podemos atribu-los a z* e adicionar ao centride associado e contar em z*. Caso contrrio, se u um n interno, ns corremos seus filhos. Se u um n folha, vamos calcular as distncias dos seus pontos de dados associados a todos os candidatos em Z e atribuir o dados apontam para o seu centro mais prximo. (Veja Fig. 1.) Ela continua a descrever como determinar se h qualquer parte da clula C, que est mais prximo do candidato z do que a z*. Permitindo H ser o hiperplano divide o segmento de linha ZZ. (Veja Fig. 2) H define dois halfspaces; um que esteja mais prximo a z e outro para z*. Se C est totalmente ao lado de H, ento deve estar no lado que est mais prximo de z* (j que o ponto mdio de C prximo de z*) e assim z pode ser podada. Para determinar qual o caso, considere o vetor u = z z*, dirigido a partir de z* para z. Para v(H) denotar o vrtice de C que extrema neste direo, isto , o vrtice C que maximize o ponto produto (v(H)*u). Assim, z podado se e somente se dist(z,v(H))>=dist(z*,v(H)). ( Distncias quadradas podem ser usadas para evitar tomar razes quadradas.) Para calcular v(H), vamos [C (min) i, C (max) i] denotando a projeo de C para o i-simo eixo de coordenadas. Ns tomamos a i-sima coordenada de v(H) para ser de C (min) i se a i-sima coordenada de u negativa e C (max) i o contrrio. Este clculo implementado atravs do procedimento z.isFather(z*,C), que retorna verdadeiro se todas as partes C est mais longe de z que z*. A chamada inicial Filter(r,Z0), onde r a raiz da rvore e Z0 o conjunto atual de centros. No fim, o centro z movido para o centride de seus pontos associados, isto , z<-z.wgtCent/z.count. Nossa implementao difere um pouco das de Alsabti, Pelleg e Moore. A implementao do algoritmo de filtragem de Alsabti usa um mtodo menos eficaz de poda baseado no clculo das distncias mximas e mnimas de cada clula, ao contrrio do critrio que atravessa o hiperplano. A implementao de Pelleg e Moore usa o hiperplano dividido, mas define z* (o chamado proprietrio) para ser o candidato que minimiza a distncia para o clula em vez do ponto mdio da clula. Nossa abordagem tem a vantagem que, se dois candidatos encontram-se dentro da clula, ele selecionar o candidato que est mais prximo do ponto mdio da clula.

3. Anlise Emprica
Para estabelecer a eficincia prtica do algoritmo de filtragem, temos implementado e testado o seu desempenho em um nmero de conjuntos de dados. Estes incluram tanto dados gerados sinteticamente e os dados utilizados em aplicaes reais. O algoritmo foi implementado em C + + utilizando o compilador Dev C++. A estrutura de dados implementada foi uma kd-tree, que foi construda a partir da biblioteca ANN usando a regra do ponto mdio deslizante. Este mtodo de decomposio foi escolhido porque os nossos estudos demonstraram que funciona melhor do que o padro de decomposio kd-tree para os conjuntos de dados em cluster. Essencialmente, ns realizamos dois tipos diferentes de experincias. No primeiro tipo, comparamos o tempo de execuo do algoritmo de filtragem contra duas diferentes implementaes do algoritmo de Lloyd's. O segundo tipo de comparao de distores de cluster so obtidos para o algoritmo de filtragem com aqueles obtidos para o esquema de clusterizao BIRCH. O primeiro tipo de testes apresentado neste trabalho, mas a segunda etapa de testes dever ser especificada em outro documento. Dados Sintticos

Ns fizemos trs experimentos para determinar as variaes no tempo de durao em funo da separao de cluster, conjunto de dados de tamanho, e dimenso. O primeiro experimento testou a validade do Teorema 1. Ns geramos n=10000 pontos de dados em R. Estes pontos foram distribudos uniformemente entre os 50 grupos da seguinte forma: Os 50 centros de cluster foram amostradas em um uniforme distribuio ao longo do hipercubo [-1,1]^d. A distribuio de Gaussiana foi gerada em torno de cada centro, onde cada coordenada foi gerada independentemente a partir de uma nica varivel Gaussiana com desvio-padro. O desvio padro variou de 0,01 (muito bem separadas) at 0,7 (virtualmente clusterizado). Porque a mesma distribuio foi utilizada para

os centros de cluster por toda parte, as distncias esperadas entre os centros de cluster permaneceram constantes. Assim, o valor esperado do parmetro p de separao cluster variou inversamente com o desviopadro. Os centros iniciais foram escolhidos, tomando uma amostra aleatria de pontos de dados. Para cada desvio padro, rodamos cada um dos algoritmos (brute-force, kd-center, e filter) trs vezes. Para cada uma dos trs testes, um novo conjunto de pontos de centro inicial foi gerada e todos os trs algoritmos foram executados utilizando o mesmos dados e pontos de centro inicial. O algoritmo funcionou para um mximo de 30 estgios ou at de convergncia. A mdia de tempo de CPU por etapa, para todos os trs mtodos, so mostrados para k=50 na fig. 2a e para k = 20 na fig. 3a. Os resultados destes experimentos mostram que o algoritmo de filtragem executa significativamente mais rpido que os outros dois algoritmos. Ignorando o vis introduzido pelo prprocessamento, seu funcionamento em tempo melhora quando os clusters so mais bem separados (para menores desvios-padro). A melhoria em tempo de CPU previsto pelo Teorema 1 no realmente evidente para desvios-padro muito pequenos, pois a inicializao e os custos de pr-processamento dominam. No entanto, esta melhoria indicada nas figuras 2b e 3b, que o enredo (inicializao independente) o nmero de ns candidatos pares. O nmero de ns pares candidatos para os outros dois mtodos no so mostrados, mas variou de 4 a 10 vezes superiores s do algoritmo de filtragem. Nossa anlise terica no prev que o algoritmo de filtragem ser particularmente eficiente para conjuntos de dados no-clusterizados, mas no exclui essa possibilidade. No entanto, observa-se neste experimento que o algoritmo de filtragem funcionou muito mais rpido do que os algoritmos brute-force e kd-center, mesmo para grandes desvios-padro. Isto pode ser atribudo, em parte, ao fato de que o algoritmo de filtragem simplesmente fazer um trabalho melhor em explorar as economias de escala por armazenar o conjunto muito maior de pontos de dados em uma kd-tree (ao invs de pontos de centro como de kd-center faz). O objetivo do segundo experimento foi estudar os efeitos do tamanho dos dados sobre o tempo de execuo. Geramos conjuntos de pontos de dados, cujo tamanho variava de n=1000 a n=2000 e onde cada conjunto de dados consistiu de 50 clusters Gaussianos. O desvio-padro foi fixado em 0,10 e os algoritmos foram funcionaram com k=50. Novamente, as buscas foram encerradas quando estabilidade foi conseguida, ou depois de 30 etapas. Como antes, rodamos cada caso, trs vezes, com diferentes centros de partida e mdia dos resultados. Os tempos de CPU por estgio e nmero de ns pares candidatos para todos os trs mtodos so mostrados na figura 4. Os resultados deste experimento mostram que, para k fixo e grandes n, todos os trs algoritmos tm executando vezes que variam linearmente com n, com o algoritmo de filtragem fazendo o melhor. Repetimos um experimento similar a um usado por Pelleg e por Moore. Para cada dimenso d, ns criamos um conjunto de dados aleatrios com 20.000 pontos. Os pontos foram amostra de uma distribuio Gaussiana agrupados com 72 grupos e um desvio padro de 0,05 ao longo de cada coordenada. (O desvio padro o dobro da utilizada por Pelleg e Moore porque usaram um unidade hipercubo e o nossa hipercubo tem lado de comprimento 2.) Os trs algoritmos k-means foram executados com um k=40 centros. Na figura 5, marcamos a mdia de vezes tomadas por estgio para os trs algoritmos. Vimos que para esta configurao, o algoritmo de filtragem supera os algoritmos brute-force e kd-center em dimenses que variam at a 20s. Estes resultados confirmam a tendncia geral, mas o desempenho do algoritmo de filtragem em moderadas dimenses 10-20 consideravelmente melhor.

4. Anexos

Figura 1 O Algoritmo de Filtragem

Figura 2 Mdia de tempo de processamento e pares de ns candidatos por estgio versus desvio padro de um cluster n=10000 e k=50.

Figura 3 - Mdia de tempo de processamento e pares de ns candidatos por estgio versus desvio padro de um cluster n=10000 e k=20.

Figura 4 Testando tempos e pares de ns candidatos versus tamanhos de dados para k=50 e =0,10

Figura 5 Mdia de tempo de processamento por estgio versus dimenses para n=20000, =0,05, e k=40 5.

BIBLIOGRAFIA
On Lloyds k-means Method 2007 Sariel Har-Peled Bardia, Sariel Har-peled, Bardia Sadri http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.2480 K-Means Clustering Algorithms: Implementation and Comparison - 2007 The University of Iowa, Iowa City, Iowa, USA Gregory A. Wilkin, Xiuzhen Huang http://www2.computer.org/portal/web/csdl/doi/10.1109/IMSCCS.2007.51

10

Você também pode gostar