Eu tenho uma matriz (simétrica) M
que representa a distância entre cada par de nós. Por exemplo,
ABCDEFGHIJKL A 0 20 20 20 40 60 60 60 100 120 120 120 B 20 0 20 20 60 80 80 80 120 140 140 140 C 20 20 0 20 60 80 80 80 120 140 140 140 D 20 20 20 0 60 80 80 80 120 140 140 140 E 40 60 60 60 0 20 20 20 60 80 80 80 F 60 80 80 80 20 0 20 20 40 60 60 60 G 60 80 80 80 20 20 0 20 60 80 80 80 H 60 80 80 80 20 20 20 0 60 80 80 80 I 100 120 120 120 60 40 60 60 0 20 20 20 J 120 140 140 140 80 60 80 80 20 0 20 20 K 120 140 140 140 80 60 80 80 20 20 0 20 L 120 140 140 140 80 60 80 80 20 20 20 0
Existe algum método para extrair clusters M
(se necessário, o número de clusters pode ser corrigido), de modo que cada cluster contenha nós com pequenas distâncias entre eles. No exemplo, os clusters seria (A, B, C, D)
, (E, F, G, H)
e (I, J, K, L)
.
Eu já tentei UPGMA e k
-means, mas os clusters resultantes são muito ruins.
As distâncias são os passos médios que um caminhante aleatório tomaria para ir de nó A
em nó B
( != A
) e voltar ao nó A
. É garantido que M^1/2
é uma métrica. Para rodar k
-means, eu não uso o centróide. Defino a distância entre o n
cluster de nós c
como a distância média entre n
e todos os nós c
.
Muito obrigado :)