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.