1. 程式人生 > >ISOMAP演算法和MDS(mutiple dimensional scaling)多維縮放

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】