主要思路
MDS(Multi-dimensional Scaling)是一种经典的降维方法。本文主要参考这个PPT。
给定样本集
X
=
[
x
1
,
⋯
,
x
n
]
∈
R
D
×
n
X=[x_1,\cdots,x_n]\in \mathbb{R}^{D\times n}
X=[x1,⋯,xn]∈RD×n,其中
n
n
n表示样本数量,
D
D
D表示维度,每一列表示一个样本,以及一种满足如下条件的度量方式
d
a
b
d_{ab}
dab:
- d a b ≥ 0 d_{ab}\ge 0 dab≥0
- d a b = 0 , i f a = b d_{ab}=0,\ if\ a=b dab=0, if a=b
- d a b = d ( b , a ) d_{ab}=d(b,a) dab=d(b,a)
- d a c ≤ d a b + d b c d_{ac}\le d_{ab}+d_{bc} dac≤dab+dbc
一般假设
d
d
d取欧氏距离。MDS希望寻找到降完维后的结果
Y
=
[
y
1
,
⋯
,
y
n
]
∈
R
d
×
n
Y=[y_1,\cdots,y_n]\in \mathbb{R}^{d\times n}
Y=[y1,⋯,yn]∈Rd×n尽可能满足:
d
i
j
=
∥
y
i
−
y
j
∥
2
d_{ij}=\| y_i-y_j \|_2
dij=∥yi−yj∥2
而 d i j d_{ij} dij由 x i , x j x_i,x_j xi,xj的欧氏距离定义。
经典MDS的解
假设现在已经找到了
Y
Y
Y使得其中恰好能满足:
d
i
j
=
∥
y
i
−
y
j
∥
2
d_{ij}=\|y_i-y_j\|_2
dij=∥yi−yj∥2
然而对于任意
c
∈
R
d
×
1
c\in \mathbb{R}^{d\times 1}
c∈Rd×1都有:
∥
(
y
i
+
c
)
−
(
y
j
+
c
)
∥
2
=
d
i
j
=
∥
y
i
−
y
j
∥
2
=
d
i
j
\|(y_i+c)-(y_j+c) \|_2=d_{ij}=\|y_i-y_j\|_2=d_{ij}
∥(yi+c)−(yj+c)∥2=dij=∥yi−yj∥2=dij
也就是说只要有一组解满足条件,通过平移就一定能得到无限多组解满足条件,因此MDS加了一个限制来避免这种情况:
∑
i
=
1
n
Y
i
j
=
0
,
f
o
r
a
l
l
j
\sum_{i=1}^n Y_{ij}=0,for\ all\ j
i=1∑nYij=0,for all j
即限制 Y Y Y的行之和为0,这就是要让求出的 Y Y Y是经过中心化的。
在求解时,MDS构造矩阵
B
=
Y
T
Y
B=Y^TY
B=YTY,这样优化目标就变成了:
d
i
j
2
=
∥
y
i
−
y
j
∥
2
2
=
y
i
T
y
i
+
y
j
T
y
j
−
2
y
i
T
y
j
=
b
i
i
+
b
j
j
−
2
b
i
j
d_{ij}^2=\|y_i-y_j\|_2^2=y_i^Ty_i+y_j^Ty_j-2y_i^Ty_j=b_{ii}+b_{jj}-2b_{ij}
dij2=∥yi−yj∥22=yiTyi+yjTyj−2yiTyj=bii+bjj−2bij
其中 b i j b_{ij} bij是 B B B的第 ( i , j ) (i,j) (i,j)个元素。现在希望把 b i j b_{ij} bij用 d i j d_{ij} dij表示出来。
有如下的等式关系是成立的:
∑
i
=
1
n
d
i
j
2
=
∑
i
=
1
n
y
i
T
y
i
+
n
y
j
T
y
j
−
2
(
∑
i
=
1
n
y
i
T
)
y
j
=
t
r
(
B
)
+
n
b
j
j
∑
j
=
1
n
d
i
j
2
=
∑
i
=
1
n
y
j
T
y
j
+
n
y
i
T
y
i
−
2
y
i
(
∑
i
=
1
n
y
j
)
=
t
r
(
B
)
+
n
b
i
i
∑
i
=
1
n
∑
j
=
1
n
d
i
j
2
=
∑
i
=
1
n
∑
j
=
1
n
(
y
i
T
y
i
+
y
j
T
y
j
−
2
y
i
T
y
j
)
=
2
n
t
r
(
B
)
\sum_{i=1}^n d_{ij}^2=\sum_{i=1}^ny_i^Ty_i+ny_j^Ty_j-2(\sum_{i=1}^ny_i^T)y_j=tr(B)+nb_{jj} \\ \sum_{j=1}^n d_{ij}^2 = \sum_{i=1}^ny_j^Ty_j+ny_i^Ty_i-2y_i(\sum_{i=1}^ny_j)=tr(B)+nb_{ii} \\ \sum_{i=1}^n\sum_{j=1}^nd_{ij}^2=\sum_{i=1}^n\sum_{j=1}^n(y_i^Ty_i+y_j^Ty_j-2y_i^Ty_j)=2ntr(B)
i=1∑ndij2=i=1∑nyiTyi+nyjTyj−2(i=1∑nyiT)yj=tr(B)+nbjjj=1∑ndij2=i=1∑nyjTyj+nyiTyi−2yi(i=1∑nyj)=tr(B)+nbiii=1∑nj=1∑ndij2=i=1∑nj=1∑n(yiTyi+yjTyj−2yiTyj)=2ntr(B)
这主要是因为
Y
Y
Y是中心化的,因此各向量之和
∑
i
=
1
n
y
i
T
,
∑
j
=
1
n
y
j
T
\sum_{i=1}^n y_i^T,\sum_{j=1}^n y_j^T
∑i=1nyiT,∑j=1nyjT为全0向量。进一步有:
t
r
(
B
)
=
1
2
n
∑
i
=
1
n
∑
j
=
1
n
d
i
j
2
b
i
i
=
1
n
∑
j
=
1
n
d
i
j
2
−
1
2
n
2
∑
i
=
1
n
∑
j
=
1
n
d
i
j
2
b
j
j
=
1
n
∑
i
=
1
n
d
i
j
2
−
1
2
n
2
∑
i
=
1
n
∑
j
=
1
n
d
i
j
2
tr(B)=\frac{1}{2n}\sum_{i=1}^n\sum_{j=1}^nd_{ij}^2 \\ b_{ii} =\frac{1}{n} \sum_{j=1}^n d_{ij}^2 - \frac{1}{2n^2}\sum_{i=1}^n\sum_{j=1}^nd_{ij}^2 \\ b_{jj} = \frac{1}{n} \sum_{i=1}^n d_{ij}^2-\frac{1}{2n^2}\sum_{i=1}^n\sum_{j=1}^nd_{ij}^2
tr(B)=2n1i=1∑nj=1∑ndij2bii=n1j=1∑ndij2−2n21i=1∑nj=1∑ndij2bjj=n1i=1∑ndij2−2n21i=1∑nj=1∑ndij2
因此:
b
i
j
=
−
1
2
(
d
i
j
2
−
b
i
i
−
b
j
j
)
=
−
1
2
(
d
i
j
2
−
1
n
∑
j
=
1
n
d
i
j
2
−
1
n
∑
i
=
1
n
d
i
j
2
+
1
n
2
∑
i
=
1
n
∑
j
=
1
n
d
i
j
2
)
b_{ij}=-\frac{1}{2}(d_{ij}^2-b_{ii}-b_{jj})=-\frac{1}{2}(d_{ij}^2-\frac{1}{n} \sum_{j=1}^n d_{ij}^2 -\frac{1}{n} \sum_{i=1}^n d_{ij}^2+\frac{1}{n^2}\sum_{i=1}^n\sum_{j=1}^nd_{ij}^2)
bij=−21(dij2−bii−bjj)=−21(dij2−n1j=1∑ndij2−n1i=1∑ndij2+n21i=1∑nj=1∑ndij2)
这样就能求出
B
B
B矩阵了。而
B
=
Y
T
Y
B=Y^TY
B=YTY,对
B
B
B做特征值分解得:
B
=
V
Λ
V
T
=
V
Λ
1
/
2
Λ
1
/
2
V
T
=
Y
T
Y
B=VΛV^T=VΛ^{1/2}Λ^{1/2}V^T=Y^TY
B=VΛVT=VΛ1/2Λ1/2VT=YTY
其中
Λ
=
d
i
a
g
(
λ
1
,
⋯
,
λ
n
)
Λ=diag(\lambda_1,\cdots,\lambda_n)
Λ=diag(λ1,⋯,λn)为特征值从大到小排列构成的对角矩阵,
V
V
V是特征向量矩阵。因此可知:
Y
=
Λ
1
/
2
V
T
Y=Λ^{1/2}V^T
Y=Λ1/2VT
降维的时候,就选择前 d d d大的特征值及其对应的特征向量构成 Λ Λ Λ和 V V V即可。
MDS总结
B
B
B是
n
×
n
n\times n
n×n的矩阵,特征分解
B
=
V
Λ
V
T
B=VΛV^T
B=VΛVT,最多也就
n
n
n个特征值,因此
V
×
R
n
×
n
V\times \mathbb{R}^{n\times n}
V×Rn×n,也就是说做到这里的时候
V
V
V就是
n
n
n维的,是满足
b
i
j
=
d
i
j
b_{ij}=d_{ij}
bij=dij的,是把
D
D
D维的
X
X
X变成了
n
n
n维的
B
B
B。
如果要寻求维度低于
n
n
n的
d
d
d维的
Y
Y
Y的话,“取前
d
d
d大的特征值及其对应的特征向量”这种选法相当于在对
B
B
B做PCA,因为对称矩阵
B
B
B的特征分解和SVD分解是等价的,其奇异值是特征值的平方。
所以MDS真的有点奇怪,为什么要先求
B
B
B再做PCA呢,难道原矩阵
X
X
X不就是维持样本间距离的最好最原始的表达么,为什么不直接做PCA。
MDS的推导与其他降维方法不同,是直接推出来的,没有迭代或乘子法。
ISOMAP等度量映射
ISOMAP构建 D D D的方法与MDS不同,后面的步骤都一样。它会先寻找每个样本的 k k k近邻,样本与其近邻之间的距离用欧氏距离度量,与非近邻之间的距离为无穷大,然后用最短路径算法(Dijkstra或者Floyd)来构建 D D D矩阵。然后再做MDS。这种度量方法叫做“测地线距离”,相比于MDS,可以更好的控制数据信息的流失,能够在低维空间中更加全面的将高维空间的数据表现出来。