Find points whose pairwise distances approximate a given distance matrix
Posted
by
Stephan Kolassa
on Programmers
See other posts from Programmers
or by Stephan Kolassa
Published on 2014-06-06T10:38:00Z
Indexed on
2014/06/06
15:41 UTC
Read the original article
Hit count: 319
algorithms
|geometry
Problem. I have a symmetric distance matrix with entries between zero and one, like this one:
D = ( 0.0 0.4 0.0 0.5 )
( 0.4 0.0 0.2 1.0 )
( 0.0 0.2 0.0 0.7 )
( 0.5 1.0 0.7 0.0 )
I would like to find points in the plane that have (approximately) the pairwise distances given in D. I understand that this will usually not be possible with strictly correct distances, so I would be happy with a "good" approximation.
My matrices are smallish, no more than 10x10, so performance is not an issue.
Question. Does anyone know of an algorithm to do this?
Background. I have sets of probability densities between which I calculate Hellinger distances, which I would like to visualize as above. Each set contains no more than 10 densities (see above), but I have a couple of hundred sets.
What I did so far.
- I did consider posting at math.SE, but looking at what gets tagged as "geometry" there, it seems like this kind of computational geometry question would be more on-topic here. If the community thinks this should be migrated, please go ahead.
- This looks like a straightforward problem in computational geometry, and I would assume that anyone involved in clustering might be interested in such a visualization, but I haven't been able to google anything.
- One simple approach would be to randomly plonk down points and perturb them until the distance matrix is close to D, e.g., using Simulated Annealing, or run a Genetic Algorithm. I have to admit that I haven't tried that yet, hoping for a smarter way.
- One specific operationalization of a "good" approximation in the sense above is Problem 4 in the Open Problems section here, with k=2. Now, while finding an algorithm that is guaranteed to find the minimum l1-distance between D and the resulting distance matrix may be an open question, it still seems possible that there at least is some approximation to this optimal solution. If I don't get an answer here, I'll mail the gentleman who posed that problem and ask whether he knows of any approximation algorithm (and post any answer I get to that here).
© Programmers or respective owner