距离计算问题的反问题
计算距离问题是小学时我们就会学习的,假设有一张地图,上面标示了数个城市,你需要求城市间的两两距离。这非常简单,尺子一量就知道了。如果是在多维坐标系下可以使用距离公式:
现在把问题改一下假设你只知道n个城市两两之间的距离,那么这n个城市的位置关系应该是怎样的呢?
已知距离计算位置的算法称为MDS,它是距离计算问题的反问题.它的解可能有很多,因为平移和旋转是不影响点之间的距离的,比如下面这一组镜像点:
MDS
设为样本到之间的距离, 即,设矩阵B为样本的协方差矩阵,即
为了便于讨论我们对样本进行中心化,即.可以推导出矩阵B的行与列之和均为零:
可得:
至此,我们根据距离求出了样本的协方差矩阵B.而协方差矩阵为样本的内积.
如果你对特征值分解比较了解的话,你会知道与的特征向量是相同的,而的特征值是特征值的平方.所以我们可以对进行特征值分解:
所以
其中是特征向量,为特征值矩阵.
另外需要提的是MDS也被用作降维,因为MDS会计算出的特征向量,只需要取前几个重要的特征向量就达到了降维的目的.
编程实现:
https://www.kaggle.com/swimmingwhale/multiple-dimensional-scaling
参考:
周志华<机器学习>
https://blog.csdn.net/Dark_Scope/article/details/53229427
http://www.datasciencelab.cn/dimensionreduction/mds