next up previous
Seguinte: Algoritmo DBSCAN Acima: Agrupamento e distribuição de Anterior: Algoritmo k-means

Algoritmo PAM

PAM também é um método por partição. Carlantonio [#!carlantonio01:cluster!#] explica o algoritmo: depois de uma seleção aleatória inicial de k medoids, o algoritmo repetidamente tenta fazer a melhor escolha de medoids. Todos os pares possíveis de objetos são analisados, onde um objeto em cada par é considerado um medoid e o outro um não-medoid. A qualidade do agrupamento resultante é calculada para cada uma de tais combinações. Um objeto, $O_{j}$, é substituído pelo objeto que causa a maior redução no erro-quadrado. O conjunto dos melhores objetos para cada cluster em uma iteração forma os medoids para a próxima iteração. Para valores muito grandes de $n$ e $k$, tal computação torna-se muito custosa. Segue um pseudo-código do PAM:


   def pam(objects, k):

medoids = sample(objects, k)
changed = True

while changed:
clusters = group(medoids,points)
newMedoids = reCalcMedoids(points)
changed = (medoids == newMedoids)
medoids = newMedoids

return clusters

A diferença entre ele e o kmeans é a forma como os novos centros são escolhidos. Em reCalcMedoids(), é calculado o novo centros de cada cluster como sendo o primeiro que tiver custo total menor que o custo do centro atual. Custo total de um ponto é a soma de todas as distâncias entre ele e os demais pontos do cluster.


next up previous
Seguinte: Algoritmo DBSCAN Acima: Agrupamento e distribuição de Anterior: Algoritmo k-means
Raul Henriques Cardoso Loopes 2005-02-25