Low-dimension Embedding详解(附带MDS算法)

Low-dimension Embedding详解

第四十二次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。机器学习任务中的“维数灾难”(Curse of Dimensionality)会导致高维样本空间中的样本稀疏与距离计算困难等问题,为了解决该问题,本文介绍一种被称为“多维缩放”(Multiple Dimensional Scaling,简称MDS)的降维手段。

  在k近邻学习中存在这样一条假设,“给定测试样本x\bf{x},若其最近邻样本为z\bf{z},则最近邻分类器出错的概率就是x\bf{x}z\bf{z}类别标记不同的概率,即

P(err)=1cyP(cx)P(cz)P(err)=1-\sum_{c\in{y}}{P(c|{\bf{x}})P(c|{\bf{z}})}

对于任意样本点,总能在任意近的范围内找到上式中的训练样本z\bf{z}”,要满足上述的假设条件需要训练样本的采样密度足够大,或者称为“密采样”,然而这个假设在现实任务中很难满足,尤其是当属性维数成千上万时,要满足密采样条件所需的样本数目是无法达到的“天文数字”,另外高维样本空间中的距离计算也是一个难点。
  上面提到的,在高维样本空间中的样本稀疏与距离计算困难等问题,是所有机器学习方法共同面临的严重障碍,被称为“维数灾难”(Curse of Dimensionality),缓解这种问题的一个重要途径就是“降维”(Dimension Reduction),也称为“维数约减”,即通过某种数学变换使得高维属性空间转变为一个低维“子空间”(Subspace),在这个样本空间中样本密度将大大提高,而且距离计算也变得更加容易,这是由于与学习任务密切相关的也许只是数据集的某个低维分布,即高维空间中的一个低维“嵌入”(Embedding),基于密度聚类算法中的子空间聚类可以看做是一种简单降维手段的应用。

Low-dimension Embedding详解(附带MDS算法)
图1 高维样本空间的子空间

为了将原始空间中样本点之间的距离在低维空间中得到保持,我们可以使用一种称为“多维缩放”(Multiple Dimensional Scaling,简称MDS)的降维手段,下面对MDS方法进行描述。
  假定mm个样本点在原始空间中的距离矩阵为DRm×mD\in{\Bbb{R}^{m\times{m}}},其中元素distijdist_{ij}为样本点xi{\bf{x}}_ixj{\bf{x}}_j之间的距离,MDS的目标是习得样本点在dd'维空间中的表示zRd×m{\bf{z}}\in{\Bbb{R}^{d'\times{m}}},其中ddd'\ll{d},且任意两个样本点在dd'维空间之间的欧氏距离等于原始空间中这两个样本点之间的距离,即zizj=distij||{\bf{z}}_{i}-{\bf{z}}_{j}||=dist_{ij}。如果令B=ZTZRm×m{\bf{B}}={\bf{Z}}^{T}{\bf{Z}}\in{\Bbb{R}^{m\times{m}}}表示dd'维空间中样本点的内积矩阵,其中元素bij=ziTzjb_{ij}={\bf{z}}_{i}^{T}{\bf{z}}_{j},那么上述条件可以表示为

(1)distij2=zi2+zj22ziTzj=bii+bjj2bijdist_{ij}^{2}=||{\bf{z}}_{i}||^{2}+||{\bf{z}}_{j}||^{2}-2{\bf{z}}_{i}^{T}{\bf{z}}_{j} \\ =b_{ii}+b_{jj}-2b_{ij} \tag{1}

现在将降维后的样本点集Z\bf{Z}进行中心化,即i=1mzi=0\sum_{i=1}^{m}{{\bf{z}}_{i}}=0,那么矩阵B\bf{B}的行与列之和均为零,即i=1mbij=j=1mbij=0\sum_{i=1}^{m}{b_{ij}}=\sum_{j=1}^{m}{b_{ij}}=0,那么可以推出

(2)i=1mdistij2=tr(B)+mbjjj=1mdistij2=tr(B)+mbiii=1mj=1mdistij2=2mtr(B)\sum_{i=1}^{m}{dist_{ij}^{2}}={\rm{tr}}({\bf{B}})+mb_{jj} \\ \sum_{j=1}^{m}{dist_{ij}^{2}}={\rm{tr}}({\bf{B}})+mb_{ii} \\ \sum_{i=1}^{m}{\sum_{j=1}^{m}{dist_{ij}^{2}}}=2m{\rm{tr}}({\bf{B}}) \tag{2}

其中,tr()\rm{tr}(\cdot)代表矩阵的迹(trace),tr(B)=i=1mzi2\rm{tr}({\bf{B}})=\sum_{i=1}^{m}{||{\bf{z}}_{i}||^{2}},令

(3)disti2=1mj=1mdistij2distj2=1mi=1mdistij2dist2=1m2i=1mj=1mdistij2dist_{i\cdot}^{2}=\frac{1}{m}\sum_{j=1}^{m}{dist_{ij}^{2}} \\ dist_{\cdot{j}}^{2}=\frac{1}{m}\sum_{i=1}^{m}{dist_{ij}^{2}} \\ dist_{\cdot\cdot}^{2}=\frac{1}{m^2}\sum_{i=1}^{m}{\sum_{j=1}^{m}{dist_{ij}^{2}}} \tag{3}

由式(1)~(3)可以求得

(4)bij=12(distij2disti2distj2+dist2)b_{ij}=-\frac{1}{2}(dist_{ij}^{2}-dist_{i\cdot}^{2}-dist_{\cdot{j}}^{2}+dist_{\cdot\cdot}^{2}) \tag{4}

由上式即可通过原始空间中的距离矩阵D\bf{D}求得降维后的内积矩阵B\bf{B},然后对B\bf{B}做特征分解,得到B=VΛVT{\bf{B}}={\bf{V}}{\bf{\Lambda}}{\bf{V}}^{T},其中Λ=diag(λ1,λ2,,λd){\bf{\Lambda}}={\rm{diag}}(\lambda_{1},\lambda_{2},\dots,\lambda_{d})是特征值(λ1λ2λd\lambda_{1}\geq\lambda_{2}\geq\dots\geq\lambda_{d})构成的对角矩阵,V\bf{V}是特征向量矩阵。假设有dd^{*}个非零的特征值,他们构成的对角矩阵Λ=diag(λ1,λ2,,λd){\bf{\Lambda}}_{*}={\rm{diag}}(\lambda_{1},\lambda_{2},\dots,\lambda_{d^{*}}),令V{\bf{V}}_{*}表示相应的特征向量矩阵,那么样本点在dd^{*}维空间下的表示可以写做

Z=Λ1/2VTRd×m{\bf{Z}}={\bf{\Lambda}}_{*}^{1/2}{\bf{V}}_{*}^{T}\in{\Bbb{R}^{d^*\times{m}}}

现实应用中为了有效的降维,可以仅仅取前ddd'\ll{d}个最大特征值构成的对角矩阵Λ~=diag(λ1,λ2,,λd){\tilde{\bf{\Lambda}}}={\rm{diag}}(\lambda_{1},\lambda_{2},\dots,\lambda_{d^{'}}),令V{\bf{V}}'表示相应的特征向量矩阵,那么样本点在dd'维空间下的表示可以写做

(5)Z=Λ~1/2V~TRd×m{\bf{Z}}={\tilde{\bf{\Lambda}}}^{1/2}{\tilde{\bf{V}}}^{T}\in{\Bbb{R}^{d'\times{m}}} \tag{5}

下面是MDS的伪代码

Low-dimension Embedding详解(附带MDS算法)
图2 MDS伪代码

  最简单的降维方法是采用线性变换,将原始空间(dd维)中的样本点xi{\bf{x}}_{i}属性向量通过下式转化为低维(dd'维)空间中的对应属性向量zi{\bf{z}}_{i}

zi=WTxi{\bf{z}}_{i}={\bf{W}}^{T}{\bf{x}}_{i}

其中WRd×d{\bf{W}}\in{\Bbb{R}^{d'\times{}d'}}是变换矩阵,若W{\bf{W}}中任意两个不同的向量wi{\bf{w}}_{i}wj{\bf{w}}_{j}正交,那么就成为正交变换,得到的新坐标系称为正交坐标系。对于降维效果的评估,一般是比较降维前后学习器的性能,还可以将维度约减到二维或者三维以便直接观察。


参考资料

【1】《机器学习》周志华