ISOMAP算法和MDS(mutiple dimensional scaling)多维缩放

文章根据 https://blog.csdn.net/Dark_Scope/article/details/53229427 而来。

MDS降维

  • 降维算法中,像PCA主成分分析的提供点坐标进行降维的方法,还有一种是提供点之间距离就可完成降维的方法,那就是MDS。这种方法经常被用于流行学习中,例如经典的ISOMAP。
  • 假设D为距离矩阵,X为降维后的样本矩阵, B = X X T B=XX^T ,想要只通过距离矩阵还原数据X是不太可能的,因为只给了距离信息之后本身就丢掉了很多东西,但是是可以对数据进行降维的。而MDS的主要流程则是通过D得到B,再由B得到X,即D->B->X,D是距离矩阵,怎么得到B呢?他们看起来好像没有啥关系啊。-----因为MDS的目标是降维后数据之间的距离与原数据之间距离保持一致。即 x i x j = d i s t i j ||x_i-x_j||=dist_{ij} ,这样他们之间就有关联了。而 B = X X T B=XX^T ,那为什么不能通过B还原原始数据呢?这是因为:
    B = X X T ( n n ) B = XX^T(n*n)
    = ( X M ) ( X M ) T =(XM)(XM)^T
    = X M M T X =XMM^TX
    = X X T 1 =XX^T 【1】
    其中M是一组正交基,正交基与其转置相乘为单位阵。
    可以看出M对X做正交变换并不会影响B的值,而正交变换刚好就是对数据做旋转、翻转操作的。 所以如果我们想通过B反算出X,肯定是没法得到真正的X,而是它的任意一种正交变换后的结果。
  • D->B->X
    通过平移所有点不会对距离矩阵造成影响,因此可以通过将数据平移到原点,即对数据做零均值化处理(也叫中心化),这样可以得到矩阵元素之和相加为0的属性,即:
    i = 1 n x i k = 0 2 \sum_{i=1}^{n}x_{ik}=0【2】
    因为 B = X X T B=XX^T ,那么对于B中的元素行和列和都为0,有:
    j = 1 n b i j = j = 1 n k = 1 q x i k x j k = k = 1 q x i k ( j = 1 n x j k ) = 0 3 \sum_{j=1}^{n}b_{ij}=\sum_{j=1}^{n}\sum_{k=1}^{q}x_{ik}x_{jk} = \sum_{k=1}^qx_{ik}(\sum_{j=1}^nx_{jk})=0 【3】
    类似:
    i = 1 n b i j = j = 1 n k = 1 q x i k x j k \sum_{i=1}^{n}b_{ij}=\sum_{j=1}^{n}\sum_{k=1}^{q}x_{ik}x_{jk}
    i = 1 n b i j = k = 1 q x i k ( j = 1 n x j k ) = 0 4 \sum_{i=1}^{n}b_{ij}= \sum_{k=1}^qx_{ik}(\sum_{j=1}^nx_{jk})=0 【4】
    这两个性质对于该算法来说十分重要,后面由D->B也与这两个性质有较大关系。
    设B的迹为T:
    i = 1 n d i j 2 = i = 1 n ( b i i + b j j 2 b i j ) = T + n b j j + 0 5 \sum_{i=1}^{n}d_{ij}^2=\sum_{i=1}^{n}(b_{ii}+b_{jj}-2b_{ij}) = T + nb_{jj} + 0 【5】
    b j j = 1 n ( T i = 1 n d i j 2 ) 6 b_{jj} = - \frac{1}{n}(T - \sum_{i=1}^{n}d_{ij}^2) 【6】
    j = 1 n d i j 2 = j = 1 n ( b i i + b j j 2 b i j ) = T + n b i i + 0 7 \sum_{j=1}^{n}d_{ij}^2=\sum_{j=1}^{n}(b_{ii}+b_{jj}-2b_{ij}) = T + nb_{ii} + 0 【7】
    b i i = 1 n ( T j = 1 n d i j 2 ) 8 b_{ii} = - \frac{1}{n}(T - \sum_{j=1}^{n}d_{ij}^2) 【8】
    i = 1 n j = 1 n d i j 2 = i = 1 n ( T + n b i i ) = n T + n i = 1 n b i i = n T + n T = 2 n T 9 \sum_{i=1}^{n}\sum_{j=1}^{n}d_{ij}^2=\sum_{i=1}^{n}(T+nb_{ii})=nT+n\sum_{i=1}^{n}b_{ii} = nT+nT = 2nT 【9】
    因为 B = X X T B=XX^T
    b i j = k = 1 q x i k x j k 10 b_{ij} = \sum_{k=1}^q x_{ik}x_{jk} 【10】
    而距离矩阵D中的元素:
    d i j 2 = ( x i x j ) 2 d_{ij}^2 = (x_{i}-x_j)^2
    d i j 2 = k = 1 q ( x i k x j k ) 2 d_{ij}^2 = \sum_{k=1}^q(x_{ik}-x_{jk})^2
    d i j 2 = k = 1 q ( x i k 2 + x j k 2 2 x i k x j k ) d_{ij}^2 = \sum_{k=1}^q(x_{ik}^2+x_{jk}^2-2x_{ik}x_{jk})
    d i j 2 = b i i + b j j 2 b i j 11 d_{ij}^2 = b_{ii}+b_{jj}-2b_{ij} 【11】
    所以:
    b i j = 1 2 ( b i i + b j j d i j 2 ) 12 b_{ij} = \frac{1}{2}(b_{ii}+b_{jj}-d_{ij}^2) 【12】
    由【6、8、9】, 可得:
    b i j = 1 2 ( d i j 2 1 n i = 1 n d i j 2 1 n j = 1 n d i j 2 1 n 2 i = 1 n j = 1 n d i j 2 ) 12 b_{ij} = \frac{1}{2}(d_{ij}^2-\frac{1}{n}\sum_{i=1}^{n}d_{ij}^2-\frac{1}{n}\sum_{j=1}^{n}d_{ij}^2-\frac{1}{n^2}\sum_{i=1}^{n}\sum_{j=1}^{n}d_{ij}^2) 【12】
    这样,就可以通过D得到B了,然后通过B进行PCA就可以得到经过某种正交变换的X了。
    这就是MDS,通过距离矩阵获得降维后的数据矩阵。

ISOMAP算法

算法流程:

  • 使用最短路径算法获取数据的距离矩阵
  • 将距离矩阵通过MDS降维

参考

[1] https://blog.csdn.net/Dark_Scope/article/details/53229427
[2] 周志华,《机器学习》

猜你喜欢

转载自blog.csdn.net/LiGuang923/article/details/83576615