-1

I have a database where GPS Points are saved. They represent POI for customers. Now I want to group them by proximity for construct unified communications for the found groups. It's a marketing purpose ! I think that MCL approach can help me because it's a graph representation.

To do this, I have made a matrix of distance between each GPS points. For my 200 points, I have a 200x200 matrix. I have tried to call the MCL algorithm in R with :

mcl(dat, addLoops=TRUE, expansion=2, inflation=2, allow1=FALSE, max.iter=100, ESM=FALSE)

But no way ! It doesn't work, the result is always the same "only one cluster identified" even if I change the parameters (expansion and inflation). I have tried to normalize my matrix before call the process but same result.

I'm lost... If someone can help me to find a way to resolve this case, it would be very appreciated.

fabla
  • 1,806
  • 1
  • 8
  • 20
soprath
  • 1
  • 1

1 Answers1

0

Try with an affinity matrix, rather than a distance matrix.

If you make all the far points affine, everything connects into one cluster.

Has QUIT--Anony-Mousse
  • 76,138
  • 12
  • 138
  • 194
  • Thanks for your contribution. How can I transform (compute) a distance matrix to an affinity matrix ? I have a doubt on my matrix... Can you think that is wrong to have a full matrix i.e. each points-to-points have a distance (full-graph) or is it correct to represent it like this ? – soprath Jul 22 '19 at 09:17
  • I don't know the requirements of MCL well enough. It may be enough to use -1*dist, or max(dist)-dist, but it may also be necessary to have a probabilistic affinity (depends on how they defined affinity) where each row or column sums to 1. All of these variants exist, unfortunately. The only thing that is obvious is that a distance (low=related) is *not* an affinity (high=related). You'll need to check the manual, the papers, the code. – Has QUIT--Anony-Mousse Jul 22 '19 at 22:20