机器学习笔记之——降维(一)MDS

MDS(Multiple Dimensional Scaling)


关键思想:降维前后两点距离不变

假设 m 个 d 维样本在原始空间的距离矩阵为 D∈Rm×mD\in \mathbb{R}^{m\times m}DRm×m, 降维后的样本矩阵 Z∈Rd′×mZ\in \mathbb{R}^{d'\times m}ZRd×m, 其中 d′≪dd'\ll ddd, 每一列 ziz_izi 表示一个降维后的样本。

B=ZTZ∈Rm×mB=Z^TZ\in \mathbb{R^{m\times m}}B=ZTZRm×m, BBB 是降维后的内积矩阵,Bij=ziTzjB_{ij}=z_i^Tz_jBij=ziTzj,我们要求降维之后任意两点之间的距离仍然和原始空间一样,则
(1)Dij2=∥zi−zj∥2=∥zi∥2+∥zj∥2−2ziTzj=Bii+Bjj−2Bij\begin{aligned} D_{ij}^2 = \left \| z_i - z_j\right \|^2 & =\left \| z_i \right \|^2 + \left \| z_j \right \|^2-2z_i^Tz_j \\ & = B_{ii}+B_{jj}-2B_{ij} \end{aligned} \tag{1} Dij2=zizj2=zi2+zj22ziTzj=Bii+Bjj2Bij(1)

为了方便,假设降维后的样本被中心化,即 ∑i=1mzi=0\sum_{i=1}^mz_i=0i=1mzi=0,则 BBB 矩阵的行与列之和都为 0,比如第 i 行之和,以及第j列的和分别为:
∑j=1mBij=∑j=1mziTzj=ziT∑j=1mzj=ziT⋅0=0\sum_{j=1}^mB_{ij}=\sum_{j=1}^mz_i^Tz_j=z_i^T\sum_{j=1}^mz_j=z_i^T\cdot 0=0j=1mBij=j=1mziTzj=ziTj=1mzj=ziT0=0 ∑i=1mBij=∑i=1mziTzj=(∑i=1mzi)T⋅zj=0Tzj=0\sum_{i=1}^mB_{ij}=\sum_{i=1}^mz_i^Tz_j=(\sum_{i=1}^mz_i)^T\cdot z_j=0^Tz_j=0i=1mBij=i=1mziTzj=(i=1mzi)Tzj=0Tzj=0

利用公式(1),可求矩阵 D 的第 j 列的平方和为:
(2)∑i=1mDij2=∑i=1m(Bii+Bjj−2Bij)=∑i=1mBii+∑i=1mBjj−2∑i=1mBij=tr(B)+mBjj\begin{aligned} \sum_{i=1}^m D_{ij}^2 & = \sum_{i=1}^m (B_{ii}+B_{jj}-2B_{ij}) \\ & = \sum_{i=1}^mB_{ii}+\sum_{i=1}^mB_{jj}-2\sum_{i=1}^mB_{ij} \\ & = tr(B)+ mB_{jj} \\ \end{aligned} \tag{2}i=1mDij2=i=1m(Bii+Bjj2Bij)=i=1mBii+i=1mBjj2i=1mBij=tr(B)+mBjj(2)

同理,矩阵 D 的第 i 行的平方和为:
(3)∑j=1mDij2=∑j=1m(Bii+Bjj−2Bij)=∑j=1mBii+∑j=1mBjj−2∑j=1mBij=mBii+tr(B)\begin{aligned} \sum_{j=1}^m D_{ij}^2 & = \sum_{j=1}^m (B_{ii}+B_{jj}-2B_{ij}) \\ & = \sum_{j=1}^mB_{ii}+\sum_{j=1}^mB_{jj}-2\sum_{j=1}^mB_{ij} \\ & = mB_{ii}+tr(B) \end{aligned} \tag{3}j=1mDij2=j=1m(Bii+Bjj2Bij)=j=1mBii+j=1mBjj2j=1mBij=mBii+tr(B)(3)

矩阵 D 所有元素平方和为:
(4)∑i=1m∑j=1mDij2=∑i=1m(mBii+tr(B))=m∑i=1mBii+∑i=1mtr(B)=m⋅tr(B)+m⋅tr(B)=2m⋅tr(B)\begin{aligned} \sum_{i=1}^m \sum_{j=1}^m D_{ij}^2 & = \sum_{i=1}^m(mB_{ii}+tr(B)) \\ & = m\sum_{i=1}^mB_{ii} +\sum_{i=1}^mtr(B) \\ & = m\cdot tr(B) + m\cdot tr(B) \\ & = 2m\cdot tr(B) \end{aligned} \tag{4}i=1mj=1mDij2=i=1m(mBii+tr(B))=mi=1mBii+i=1mtr(B)=mtr(B)+mtr(B)=2mtr(B)(4)

avg(Drow_i2)avg(D^2_{row\_i})avg(Drow_i2) 表示 D 的第 i 行的平方和的平均值。即 avg(Drow_i2)=1/m∑j=1mDij2avg(D^2_{row\_i})=1/m\sum_{j=1}^m D_{ij}^2avg(Drow_i2)=1/mj=1mDij2 , 同理,令 avg(Dcol_j2)avg(D^2_{col\_j})avg(Dcol_j2) 表示 D 的第 j 列的平方和的平均值,令 avg(D2)avg(D^2)avg(D2) 表示 D 的所有元素平方和的平均值, 则由公式 (4) 分别可得:
tr(B)=∑i=1m∑j=1mDij22m=m2⋅∑i=1m∑j=1mDij2m2=m2avg(D2)tr(B)=\frac{\sum_{i=1}^m \sum_{j=1}^m D_{ij}^2}{2m}=\frac{m}{2}\cdot \frac{\sum_{i=1}^m \sum_{j=1}^m D_{ij}^2}{m^2} =\frac{m}{2}avg(D^2)tr(B)=2mi=1mj=1mDij2=2mm2i=1mj=1mDij2=2mavg(D2)
由上式和公式(2), (3) 分别可得:
Bii=∑j=1mDij2−tr(B)m=∑j=1mDij2m−tr(B)m=avg(Drow_i2)−tr(B)m=avg(Drow_i2)−12avg(D2) B_{ii}= \frac{\sum_{j=1}^m D_{ij}^2-tr(B)}{m}=\frac{\sum_{j=1}^m D_{ij}^2}{m}-\frac{tr(B)}{m}=avg(D^2_{row\_i})-\frac{tr(B)}{m}=avg(D^2_{row\_i})-\frac{1}{2}avg(D^2)Bii=mj=1mDij2tr(B)=mj=1mDij2mtr(B)=avg(Drow_i2)mtr(B)=avg(Drow_i2)21avg(D2) Bjj=∑i=1mDij2−tr(B)m=∑i=1mDij2m−tr(B)m=avg(Dcol_j2)−tr(B)m=avg(Dcol_j2)−12avg(D2) B_{jj}= \frac{\sum_{i=1}^m D_{ij}^2-tr(B)}{m}=\frac{\sum_{i=1}^m D_{ij}^2}{m}-\frac{tr(B)}{m}=avg(D^2_{col\_j})-\frac{tr(B)}{m}=avg(D^2_{col\_j})-\frac{1}{2}avg(D^2)Bjj=mi=1mDij2tr(B)=mi=1mDij2mtr(B)=avg(Dcol_j2)mtr(B)=avg(Dcol_j2)21avg(D2)
最后,根据公式(1)和上述两个式子,可以得出 BijB_{ij}Bij 的计算公式:
(5)Bij=Bii+Bjj−Dij22=avg(Drow_i2)−12avg(D2)+avg(Dcol_i2)−12avg(D2)−Dij22=avg(Drow_i2)+avg(Dcol_j2)−avg(D2)−Dij22\begin{aligned} B_{ij} & =\frac{B_{ii}+B_{jj}-D_{ij}^2}{2} \\ & =\frac{avg(D^2_{row\_i})-\frac{1}{2}avg(D^2)+avg(D^2_{col\_i})-\frac{1}{2}avg(D^2)-D_{ij}^2}{2} \\ & = \frac{avg(D^2_{row\_i})+avg(D^2_{col\_j})-avg(D^2)-D_{ij}^2}{2} \end{aligned} \tag{5}Bij=2Bii+BjjDij2=2avg(Drow_i2)21avg(D2)+avg(Dcol_i2)21avg(D2)Dij2=2avg(Drow_i2)+avg(Dcol_j2)avg(D2)Dij2(5)
经过上述一系列的计算,我们便可以在已知样本在原始空间的距离信息(D矩阵)的情况下,由公式(5)计算得到降维之后的内积矩阵 B=ZTZB=Z^TZB=ZTZ。由公式(1)我们可以知道,只要内积矩阵 B 一确定,任意两点之间的距离 ∥zi−zj∥2\left \| z_i - z_j\right \|^2zizj2也就确定了。 现在我们只要找到一个矩阵 ZZZ,使得其内积矩阵为 BBB , 即 ZTZ=BZ^TZ=BZTZ=B, 我们就可以保证其距离 ∥zi−zj∥2\left \| z_i - z_j\right \|^2zizj2 是等于 Dij2D_{ij}^2Dij2 的。

现在问题是如何找到满足 ZTZ=BZ^TZ=BZTZ=BZZZ ,只要利用特征值分解就能简单地做到。对矩阵 BBB 进行特征值分解,有 B=VΛVTB=V\Lambda V^TB=VΛVT, 其中 Λ\LambdaΛ 是特征值从大到小排列组成的对角矩阵,VVV 是特征向量矩阵。
(6)B=VΛVT=[v1⋯vm][λ1⋯0⋮⋱⋮0⋯λm][v1T⋮vmT]=λ1v1v1T+λ2v2v2T+⋯+λmvmvmTB=V\Lambda V^T= \begin{bmatrix}v_1 \cdots v_m\end{bmatrix} \begin{bmatrix} \lambda_1 & \cdots & 0 \\ \vdots & \ddots & \vdots \\ 0 & \cdots & \lambda_m \end{bmatrix} \begin{bmatrix} v_1^T \\ \vdots \\ v_m^T \end{bmatrix} = \lambda_1v_1v_1^T + \lambda_2v_2v_2^T+ \cdots + \lambda_mv_mv_m^T \tag{6}B=VΛVT=[v1vm]λ100λmv1TvmT=λ1v1v1T+λ2v2v2T++λmvmvmT(6)

从上式可以看出,若某个特征值 λi\lambda_iλi 为0,则其对应的项 λiviviT\lambda_iv_iv_i^TλiviviT 也为 0,去掉这些项之后和仍然不变。假设 Λ\LambdaΛ 中有 kkk 个非零的特征值, Λ∗=diag(λ1,λ2,...,λk)\Lambda_*=diag(\lambda_1,\lambda_2,...,\lambda_k)Λ=diag(λ1,λ2,...,λk)V∗V_*V 表示对应的特征向量矩阵,则 B=V∗Λ∗V∗TB=V_*\Lambda_* V_*^TB=VΛVT, 可以得出 ZZZ 为:
Z=Λ∗1/2V∗TZ=\Lambda_*^{1/2}V_*^TZ=Λ1/2VT 可以很简单地验证,ZTZ=(Λ∗1/2V∗T)TΛ∗1/2V∗T=V∗Λ∗1/2Λ∗1/2V∗T=V∗Λ∗V∗T=BZ^TZ=(\Lambda_*^{1/2}V_*^T)^T\Lambda_*^{1/2}V_*^T=V_*\Lambda_*^{1/2}\Lambda_*^{1/2}V_*^T=V_*\Lambda_*V_*^T=BZTZ=(Λ1/2VT)TΛ1/2VT=VΛ1/2Λ1/2VT=VΛVT=B, 至此,我们就找到了满足条件的 ZZZ。这样得到的向量 zi∈Rkz_i \in \mathbb{R}^kziRk 是 k 维的,有时候 k 还是很大。在实际中,为了有效地降维,不要求降维前后距离严格相等,只要距离大致接近即可。因此可以只取 d′d'd 个最大的特征值,相当于在公式(6)中只取前面 d′d'd 个项,将后面较小的项舍弃,其中 d′≪dd' \ll ddd。这样得到的 ZTZZ^TZZTZBBB 虽然不能严格相等,但是差距不大,也就意味着距离与原空间也比较接近。
Λ~=diag(λ1,λ2,...,λd′)\tilde{\Lambda}=diag(\lambda_1,\lambda_2,...,\lambda_{d'})Λ~=diag(λ1,λ2,...,λd), V~\tilde{V}V~ 表示对应的特征向量矩阵, 则
(7)Z=Λ~1/2V~T Z = \tilde{\Lambda}^{1/2}\tilde{V}^T \tag{7}Z=Λ~1/2V~T(7)
这得到的便是最终的结果,zi,⋯ ,zm∈Rd′z_i, \cdots , z_m \in \mathbb{R}^{d'}zi,,zmRd 是降维后的向量。

具体算法过程如下:

输入:距离矩阵 D, 降维后的维度 d'
过程:
    1. 根据公式(5)计算出内积矩阵 B
    2. 对矩阵 B 做特征值分解
    3. 取 B 最大的 d' 个特征值及特征向量,按公式(7)计算出 Z
输出:Z, Z 的每一列为样本降维后的结果
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值