多維標度法(MDS)的Python實現


多維標度法(multidimensional scaling,MDS)是一種在低維空間展示“距離”數據結構的多元數據分析技術,是一種將多維空間的研究對象( 樣本 或 變量 ) 簡化到低維空間進行定位、分析和歸類, 同時又保留對象間原始關系的數據分析方法。

多維標度法與主成分分析(Principle Component Analysis,PCA)、線性判別分析(Linear Discriminent Analysis,LDA)類似,都可以用來降維.(注:在PCA中,我們降維所用的方法依次尋找正交的並且variance最大的方向,因為variance能夠最大程度的保存原特征空間中的信息。在LDA中,因為數據有label,通過一個線性變換,把每個類的中心點 Mk映射到一個新的空間,使得在這個新的空間上,一方面各個中心點之間的距離(這里可稱之為類間距離)盡量保持足夠大,另一方面每個類里面的點到其中心點的距離(這里可稱之為類內距離)盡量小。更多細節略)

多維標度法的目標:當n 個對象中各對對象之間的相似性(或距離)給定時,確定這些對象在低維(歐式) 空間中的表示(稱為感知圖, Perceptual Mapping),並使其盡可能與原先的相似性(或距離)“大體匹配”,使得由降維所引起的任何變形達到最小。

低維(歐式) 空間中排列的每一個點代表一個對象,因此點間的距離與對象間的相似性高度相關。也就是說,兩個相似的對象由低維(歐式) 空間中兩個距離相近的點表示,而兩個不相似的對象則由低維(歐式) 空間兩個距離較遠的點表示。低維空間通常為二維或三維的歐氏空間,但也可以是非歐氏三維以上空間.

Classical MDS:

• 原始空間下的距離陣和低維空間下的距離陣都采用歐式距離陣
• 距離陣D 為歐式的, 即存在某個正整數p 以及Rp 空間的n個點x1, . . . , xn, 使得

目標在於: 尋找D 的(擬合) 構圖x1, . . . , xn, 其想法為
– 將平方的歐式距離陣D = (d2ij) 變換為一個非負定矩陣B
– 由B 的特征根和特征向量得到構圖X, X 的每一行表示低維空間的點.
• 為此, 記原始的p 維對象(觀測點) 為x1, . . . , xn(一般是未知的), 兩兩之間的距離平方為

B = −1/2*HDH,H = In − 1/n 11′

 其中, r 的確定: 事先確定r = 1, 2 或3; 或者通過計算前面特征根占全體特征根的比例確定.

 

import numpy as np

D=np.array([[0,411,213,219,296,397],
            [411,0,204,203,120,152],
            [213,204,0,73,136,245],
            [219,203,73,0,90,191],
            [296,120,136,90,0,109],
            [ 397,152,245,191,109,0]])

N = D.shape[0]
T = np.zeros((N,N))

#solution 1
#ss = 1.0/N**2*np.sum(D**2)
#for i in range(N):
#    for j in range(i,N):       
#        T[i,j] = T[j,i] = -0.5*(D[i,j]**2 -1.0/N*np.dot(D[i,:],D[i,:]) -1.0/N*np.dot(D[:,j],D[:,j])+ss)

#solution 2
#K = np.dot(D,np.transpose(D))
D2 = D**2
H = np.eye(N) - 1/N
T = -0.5*np.dot(np.dot(H,D2),H)

eigVal,eigVec = np.linalg.eig(T) 
X = np.dot(eigVec[:,:2],np.diag(np.sqrt(eigVal[:2]))) 

print('original distance','\tnew distance')
for i in range(N):
    for j in range(i+1,N):
        print(np.str(D[i,j]),'\t\t',np.str("%.4f"%np.linalg.norm(X[i]-X[j])))

運行結果:

 

參考文檔:典型相關分析和多維標度法-張偉平的講義


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM