Thursday, March 18, 2010

Spherical Multidimensional Scaling in RPM way

We have just released VisuMap version 3.0.844. In addition to many enhancements (like the map gallery view), this release includes the implementation of a new kind of MDS algorithm, called the manifold RPM algorithm. Manifold RPM works similarly as the original RPM (relational perspective map), except that it maps data to different 2-dimensional surfaces.

The manifold RPM service in this release supports following surfaces as image space:
  • Flat real projective plane.
  • Flat klein-bottle
  • Flat sphere;
  • 3D-sphere.
Whereas the first 3 image spaces so far didn't seem to produce significantly new results, the
3D-sphere surface (also termed as S2) has produced surprisingly good results.

The spherical RPM often produced better results than the original toroidal RPM in the sense
that spherical RPM maps often have less ad-hoc fragmentations. The main reason for this improvement is probably because that 3D-sphere is more symmetrical than torus. Flat torus is symmetrical in shifting (isometric), but not symmetrical in rotation (isotropic), so that some directions are treated differently as I have once blogged. Obviously, 3D-sphere is both isometric and isotropic.

From the point of view of MDS (multidimensional scaling), the spherical RPM algorithm
basically replaces the distance metric by angle metric in image space. Although many trigonometrical calculation are invoked in the algorithm, the implementation of the algorithm has turned out to be significantly faster than the original RPM algorithm.

The major disadvantage of the sphere map is that 3D sphere maps is a little difficult
to explore on 2D computer screens or printed papers. In this release we have implemented a 3D viewer, the sphere view, to help people to explore 3D sphere maps. With the growing popularity of tools like Google Earth, I hope people will find a easy and useful tool in sphere viewer. The following link is a short video demonstrating the 3D sphere viewer implemented in VisuMap: