多维度缩放——MDS

我们知道,缓解“维度灾难”的一个重要方法就是降维,即通过某种数学变换将原始高维属性空间转变为一个低维空间。而多维度缩放,就是其中的一个经典算法。

简介

多维度缩放,英文全称为Multiple Dimension Scaling,简称为MDS。其基本想法是: 降维后的低维空间 d ′ d^{'} d的欧式距离等于原始空间 d d d的欧式距离。然而,它又是如何实现的呢?

数学推导

假定 m m m个样本在原始空间的距离矩阵为 D ∈ R m × m D \in \mathbb{R}^{m \times m} DRm×m,其第 i i i j j j列的元素 d i j d_{ij} dij为样本 x i \mathbf{x}_i xi x j \mathbf{x}_j xj的距离。我们的目标是获得样本在 d ′ d^{'} d维空间的表示 Z ∈ R d ′ × m , d ′ ≤ d Z \in \mathbb{R}^{d^{'} \times m}, d^{'} \le d ZRd×m,dd,且任意两个样本在 d ′ d^{'} d维空间的欧式距离等于原始空间中的距离,即 ∣ ∣ z i − z j ∣ ∣ = d i j ||\mathbf{z}_i - \mathbf{z}_j|| = d_{ij} zizj=dij。是不是很神奇?!

B = Z T Z ∈ R m × m B = Z^{T}Z \in \mathbb{R}^{m \times m} B=ZTZRm×m,其中 B B B为降维后样本的内积矩阵, b i j = z i z j b_{ij} = \mathbf{z}_i\mathbf{z}_j bij=zizj,有

d i j 2 = ∣ ∣ z i ∣ ∣ 2 + ∣ ∣ z j ∣ ∣ 2 − 2 z i T z j = b i i + b j j − 2 b i j \begin{aligned} d_{ij}^{2} &= ||\mathbf{z}_i||^{2} + ||\mathbf{z}_j||^{2} - 2\mathbf{z}_i^T\mathbf{z}_j \\ &= b_{ii} + b_{jj} - 2b_{ij}\\ \end{aligned} dij2=zi2+zj22ziTzj=bii+bjj2bij

此外,为便于讨论,我们令降维后的样本 Z Z Z被中心化,即 ∑ i = 1 m z i = 0 \sum_{i = 1}^{m} \mathbf{z_i} = 0 i=1mzi=0。显然,矩阵 B B B的行与列之和均为零,即 ∑ i = 1 m b i j = ∑ j = 1 m b i j = 0 \sum_{i = 1}^{m}b_{ij} = \sum_{j = 1}^{m}b_{ij} = 0 i=1mbij=j=1mbij=0。因此,可有

∑ i = 1 m d i j 2 = t r ( B ) + m b j j ∑ j = 1 m d i j 2 = t r ( B ) + m b i i ∑ i = 1 m ∑ j = 1 m d i j 2 = 2 m   t r ( B ) \begin{aligned} \sum_{i = 1}^{m} d_{ij}^{2} &= tr(B) + mb_{jj} \\ \sum_{j = 1}^{m} d_{ij}^{2} &= tr(B) + mb_{ii} \\ \sum_{i = 1}^{m}\sum_{j = 1}^{m} d_{ij}^{2} &= 2m\ tr(B) \\ \end{aligned} i=1mdij2j=1mdij2i=1mj=1mdij2=tr(B)+mbjj=tr(B)+mbii=2m tr(B)

其中, t r ( ⋅ ) tr(\cdot) tr()表示矩阵的迹, t r ( B ) = ∑ i = 1 m ∣ ∣ z i ∣ ∣ 2 tr(B) = \sum_{i = 1}^{m}||\mathbf{z}_i||^{2} tr(B)=i=1mzi2。令,

d i ⋅ 2 = 1 m ∑ j = 1 m d i j 2 d ⋅ j 2 = 1 m ∑ i = 1 m d i j 2 d ⋅ ⋅ 2 = 1 m 2 ∑ i = 1 m ∑ j = 1 m d i j 2 \begin{aligned} d_{i\cdot}^{2} &= \frac{1}{m}\sum_{j = 1}^{m}d_{ij}^{2} \\ d_{\cdot j}^{2} &= \frac{1}{m}\sum_{i = 1}^{m}d_{ij}^{2} \\ d_{\cdot \cdot}^{2} &= \frac{1}{m^2}\sum_{i = 1}^{m}\sum_{j = 1}^{m}d_{ij}^{2} \\ \end{aligned} di2dj2d2=m1j=1mdij2=m1i=1mdij2=m21i=1mj=1mdij2

因此,综合上式,可得,

b i j = − 1 2 ( d i j 2 − d i ⋅ 2 − d j ⋅ 2 + d ⋅ ⋅ 2 ) b_{ij} = -\frac{1}{2}(d_{ij}^{2} - d_{i \cdot}^{2} - d_{j \cdot}^{2} + d_{\cdot \cdot}^{2}) bij=21(dij2di2dj2+d2)

由此即可通过降维前后保持不变的距离矩阵 D D D求取内积矩阵 B B B。那么,我们又如何求取降维后的样本点呢?答案是特征值分解

对矩阵 B B B做特征值分解,

B = V Λ V T B = V \Lambda V^{T} B=VΛVT

其中, Λ = d i a g ( λ 1 , λ 2 , … , λ d ′ ) \Lambda = diag(\lambda_1, \lambda_2, \dots, \lambda_{d^{'}}) Λ=diag(λ1,λ2,,λd)为特征值构成的对角矩阵, λ 1 ≥ λ 2 ≥ ⋯ ≥ λ d ′ \lambda_1 \ge \lambda_2 \ge \dots\ge \lambda_{d^{'}} λ1λ2λd V V V表示特征向量矩阵。假定其中有 d ∗ d^{*} d个非零特征值,它们构成对角矩阵 Λ ∗ = d i a g ( λ 1 , λ 2 , … , λ d ∗ ) \Lambda_{*} = diag(\lambda_1, \lambda_2, \dots, \lambda_{d^{*}}) Λ=diag(λ1,λ2,,λd),令 V ∗ V_{*} V表示相应的特征向量矩阵,则 Z Z Z可表达为

Z = Λ ∗ 1 2 V ∗ T Z = \Lambda_{*}^{\frac{1}{2}}V_{*}^{T} Z=Λ21VT

在现实生活中,为了有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近,而不必严格相等。此时,可取 d ′ ≪ d d^{'} \ll d dd个最大特征值构成对角矩阵 Λ ~ = d i a g ( λ 1 , λ 2 , … , λ d ′ ) \tilde{\Lambda} = diag(\lambda_1, \lambda_2, \dots, \lambda_{d^{'}}) Λ~=diag(λ1,λ2,,λd),令 V ~ \tilde{V} V~表示相应的特征向量矩阵,则 Z Z Z可表达为

Z = Λ 1 2 V T ∈ R d ′ × m Z = \Lambda^{\frac{1}{2}}V^{T} \in \mathbb{R}^{d^{'} \times m} Z=Λ21VTRd×m

参考文献

周志华,《机器学习》

郭嘉丰,《无监督学习 —— 维度约简》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值