• Nenhum resultado encontrado

5. Conclus˜ ao

3.7 Pseudo-c´ odigo do algoritmo minCentropy

importar dados inicializar vari´aveis

obter parti¸c˜ao inicial com k-m´edias

calcular a matriz com a similaridade entre os pares de objetos

calcular a matriz de similaridade objeto-a-cluster flag = verdadeiro

enquantoflag = verdadeirofazer flag = falso

para cada objeto fazer calcular entropia se entropia >0 ent˜ao

mudar objeto de cluster

parti¸c˜ao). Algumas vari´aveis s˜ao inicializadas e s˜ao constru´ıdas duas matrizes espe-ciais para efetuar o c´alculo da entropia:

• Matriz de similaridade entre pares de objetos (Pairwaise Similarity Matrix) - consiste numa matriz N ×N onde s˜ao guardados os valores da semelhan¸ca entre pares de objetos.

• Matriz de similaridade objeto-a-cluster (Point-to-Cluster Similarity Matrix) -consiste num vetor N×K onde s˜ao guardados os valores da semelhan¸ca entre um objeto e os objetos contidos num cluster.

Muito semelhante ao algoritmo descrito em [28] , o algoritmominCentropy per-corre atrav´es de ciclos todos os objetos dos dados, verificando a entropia do objeto num cluster e a entropia mudando o objeto para um cluster diferente. A condi¸c˜ao para a mudan¸ca implica que a entropia seja maior que 0. Determinados parˆametros tˆem de ser definidos pelo utilizador:

• k - n´umero de parti¸c˜oes inicial.

• σ - tamanho da janela de Parzen.

• nrun - n´umero de vezes que o algoritmo dever´a ser corrido.

3.5. Spectral Clustering 29

• C - este parˆametro ´e opcional, consiste na parti¸c˜ao inicial, caso n˜ao seja for-necido, o algoritmo elabora uma parti¸c˜ao.

3.5 Spectral Clustering

Os algoritmos de spectral clustering descritos em [34] , [41] e [42] , demonstraram obter bons resultados, raz˜ao pela qual tamb´em foram escolhidos para serem usados neste trabalho. Trˆes implementa¸c˜oes diferentes de spectral clustering s˜ao usadas.

Estes trˆes algoritmos implementados em MATLAB podem ser encontrados em [43].

3.5.1 Shi & Malik - Normalized Cut

O agrupamento dos dados ´e feito com base na teoria de grafos. O conjunto de dados ´e interpretado como um aglomerado de pontos todos conectados, onde cada ponto ´e visto como um v´ertice (edge) da rede formada pelas liga¸c˜oes. Os autores prop˜oem um crit´erio para fazer a parti¸c˜ao dos dados baseado em grafos, denominado normalized cut. Usando este crit´erio em conjunto com vetores pr´oprios da matriz Laplaciana o algoritmo consegue efetuar parti¸c˜oes nos dados. Enumeram-se abaixo os passos que o algoritmo percorre at´e encontrar osclusters.

1. Criar um grafo G a partir de um conjunto de dados.

2. Atribuir uma etiqueta (label) aos v´ertices do gr´afico (weighted graph).

3. Sumarizar grafo em duas matrizes W e D.

4. Encontrar os menores valores pr´oprios atrav´es de (D−W)x=λDx.

5. Usando o segundo menor valor pr´oprio na matriz Laplaciana, encontrar o ponto de corte onde Ncut ´e m´ınimo e fazer parti¸c˜ao.

6. Verificar se a parti¸c˜ao atual deve ser repartida, atrav´es da estabilidade do corte.

W ´e uma matriz sim´etrica de dimens˜oesN×N, onde s˜ao guardadas as distˆancias entre os v´ertices. D ´e uma matriz diagonal de dimens˜oes N ×N, preenchida por 0 exceto na sua linha diagonal, onde s˜ao guardados os valores de d, somat´orio das liga¸c˜oes do v´ertice a todos os outros v´ertices do grafo. Ncut ´e definido pela equa¸c˜ao 3.21. Esta equa¸c˜ao representa o crit´erio normalized cut, onde cut(A, B) representa

30 Cap´ıtulo 3. Algoritmos de Clustering

um corte fazendo duas parti¸c˜oesA eB, e assoc(A, V) representa o total de liga¸c˜oes dos v´ertices emAcom todos os v´ertices do grafo. Por sua vez,assoc(B, V) representa as liga¸c˜oes de B com todos os v´ertices do grafo. Ao utilizador ´e apenas pedido o n´umero de clustersque deseja encontrar.

N cut(A, B) = cut(A, B)

assoc(A, V) + cut(A, B)

assoc(B, V) . (3.21)

3.5.2 Ng & Jordan - K-Eigenvectors

O algoritmo proposto em [34] tamb´em recorre ao uso de vetores pr´oprios da matriz Laplaciana. Introduz o uso de parti¸c˜oes atrav´es do algoritmo k-m´edias. Abaixo s˜ao enumerados os passos do algoritmo para um conjunto de dadosS ={s1, ...sn}s1, ...sn.

1. Criar matriz de afinidade definida por Aij =exp(− ksi−sjk2/2σ2).

2. Criar D, uma matriz diagonal onde o elemento (i, i) ´e a soma da linha i na matriz A.

3. Criar matriz LaplacianaL definida por D1/2AD−1/2. 4. Encontrar osk maiores vetores pr´oprios em L.

5. Criar vetor X colocando osk maiores vetores pr´oprios numa coluna.

6. Criar matrizY atraves deX, aplicandoYij =Xij/(P

jXij2)12 a todas as linhas de X.

7. UsandoY, criar clusters com k-m´edias.

8. Atribuir o ponto original si ao cluster j se e s´o se a linha i da matriz Y pertencer ao clusterj.

A matriz de afinidade (affinity matrix) pode ser vista como um grafo, onde as linhas e as colunas est˜ao todas ligadas entre si, representando as liga¸c˜oes entre os v´ertices de um grafo, e o valor dos campos da matriz representa os pr´oprios v´ertices.

O parˆametro σ ´e encontrado de forma autom´atica pelo algoritmo. O utilizador apenas introduz o n´umero de clustersa encontrar.

3.6. K-M´edias 31

3.5.3 Perona & Freeman - Affinity Factorization

Em [42] os autores exploram o trabalho de Shi e Malik para desenvolver um algo-ritmo simples que fa¸ca uso do conceito de cria¸c˜ao de fatores a partir da matriz de afinidade. Seguidamente s˜ao enumerados os passos efetuados pelo algoritmo.

1. Criar matriz de afinidade Aij entre os pares de elementos.

2. Calcular p, associado ao maior valor pr´oprio de A.

3. Definir o primeiro planoF como o conjunto de objetosicujopi correspondente n˜ao seja igual a 0.

Aij ´e uma medida de similaridade entre dois objetos do conjunto de dados.

Quando os dois objetos s˜ao muito semelhantes, Aij tem um valor alto. Se a se-melhan¸ca entre os dois objetos ´e reduzida, consequentemente Aij ter´a um valor baixo, muito perto de zero. p´e uma fun¸c˜ao aplicada a todos os objetos, um por um.

A fun¸c˜ao ´e definida por: Os clusters s˜ao formados calculando p de cada objeto em Aij. Objetos com p iguais pertencem ao mesmo cluster. Com este algoritmo o utilizador n˜ao define nenhum parˆametro, o algoritmo encontra osclustersautomaticamente. No capitulo 4 ´e feita uma aprecia¸c˜ao desta caracter´ıstica analisando os resultados obtidos.

3.6 K-M´ edias

O algoritmo k-m´edias faz uma parti¸c˜ao dos dados em quantos clusters o utilizador desejar. O algoritmo ´e iterativo, o utilizador definek clustersque pretende encontrar e o algoritmo criak centr´oides no conjunto de dados. Atrav´es de v´arias itera¸c˜oes, os objetos s˜ao atribu´ıdos aos cluster dependendo da sua distˆancia a cada centr´oide. ´E usada a distˆancia Euclidiana para relacionar os objetos com os centr´oides. A cada itera¸c˜ao, tamb´em os centr´oides s˜ao recalculados. As itera¸c˜oes s˜ao feitas at´e que a soma de todas as distˆancias Euclidianas dos objetos aos seus centr´oides;

J =

32 Cap´ıtulo 3. Algoritmos de Clustering

seja m´ınima. Na tabela 3.8 ´e mostrado o pseudo-codigo do algoritmo k-m´edias.

Foi usada a implementa¸c˜ao do algoritmo de k-m´edias fornecida com o programa MATLAB. Em [44] pode ser encontrada a fun¸c˜ao que implementa este algoritmo.

Documentos relacionados