类似方法还有MetricMap(个人觉得这个还是比较难理解的)[2], Landmark MDS[3]等,而且Platt已经证明这三种方法均可归结于Nystrom方法[4]。
从实现的角度来说,FastMap方法和Landmark MDS均不难,而MetricMap可能会麻烦点。
本人参照[5]实现了FastMap方法,源代码见
fastmap.py,该源代码比[5]中多了对out of sample对象的处理,而且采用了统一的方法。
本人认为FastMap方法虽然速度比较快,但精度不算太高(做过大量的实验,以后会贴出相关结果),不过可以结合MDS一块来使用。目前初始化MDS比较不错的方法是classical MDS,但classical MDS速度特别慢,因此可以采用FastMap、MetricMap或Landmark MDS得到的输出来初始化MDS,让MDS通过迭代的方法找到最优解(当然一般是局部最优解)。
参考文献:
[1] Christos Faloutsos and King-Ip (David) Lin, 1995. FastMap: a fast algorithm for indexing, data-mining and visualization of traditional and multimedia datasets. Proceedings of the ACM SIGMOD International Conference on Management of Data, Michael J. Carey and Donovan A. Schneider, eds., San Jose, California, 163-174.
[2] Jason Tsong-Li Wang, Xiong Wang, Dennis Shasha, Kaizhong Zhang, 2005. MetricMap: An Embedding Technique for Processing Distance-based Queries in Metric Spaces. IEEE Transactions on Systems, Man, and Cybernetics: Part B: Cybernetics, Vol. 35, No. 5, pp. 973--987.
[3] Vin de Silva, Joshua B. Tenenbaum, 2004. Sparse Multidimensional Scaling using Landmark Points. Technical Report, Stanford University.
[4] John C. Platt, 2005. FastMap, MetricMap, and landmark MDS are all Nystrom Algorithms. Proceedings of the 10th International Workshop on Artificial Intelligence and Statistics, pp. 261-268.