多维度缩放——MDS

本文介绍了一种经典的降维算法——多维度缩放(MDS),该算法通过保持降维前后样本间的欧式距离不变,实现了从高维空间到低维空间的有效转换。文章详细阐述了MDS算法的数学推导过程,包括如何通过距离矩阵求取内积矩阵,以及如何利用特征值分解获取降维后的样本表示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

简介

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

数学推导

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

B=ZTZ∈Rm×mB = Z^{T}Z \in \mathbb{R}^{m \times m}B=ZTZRm×m,其中BBB为降维后样本的内积矩阵,bij=zizjb_{ij} = \mathbf{z}_i\mathbf{z}_jbij=zizj,有

dij2=∣∣zi∣∣2+∣∣zj∣∣2−2ziTzj=bii+bjj−2bij \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

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

∑i=1mdij2=tr(B)+mbjj∑j=1mdij2=tr(B)+mbii∑i=1m∑j=1mdij2=2m tr(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)

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

di⋅2=1m∑j=1mdij2d⋅j2=1m∑i=1mdij2d⋅⋅2=1m2∑i=1m∑j=1mdij2 \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

因此,综合上式,可得,

bij=−12(dij2−di⋅2−dj⋅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)

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

对矩阵BBB做特征值分解,

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

其中,Λ=diag(λ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λdVVV表示特征向量矩阵。假定其中有d∗d^{*}d个非零特征值,它们构成对角矩阵Λ∗=diag(λ1,λ2,…,λd∗)\Lambda_{*} = diag(\lambda_1, \lambda_2, \dots, \lambda_{d^{*}})Λ=diag(λ1,λ2,,λd),令V∗V_{*}V表示相应的特征向量矩阵,则ZZZ可表达为

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

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

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

参考文献

周志华,《机器学习》

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值