数据降维是机器学习领域中非常重要的内容,所谓的降维就是指采用某种映射方法,将高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数 f : x → y f:x\rightarrow y f:x→y,其中x是原始数据点的表达,目前多使用向量表达形式。y是数据点映射后的低维向量表达,通常y的维度小于x的维度。
对于 k k k近邻法,最好要求采样点比较密集。理论上给定测试样本 x ⃗ \vec x x,我们希望在 x ⃗ \vec x x附近很近的距离 δ > 0 \delta > 0 δ>0返回内总能找到一个训练样本 z ⃗ \vec z z。假设 δ = 0.001 \delta =0.001 δ=0.001,且所有特征的取值范围都是[0,1]。
如果特征维度成千上万,则需要的训练样本的数据数量几乎是不可能满足。而且高维空间距离也比较麻烦。在高维情形下出现的数据样本稀疏、距离计算困难等问题是所有机器学习方法共同面临的严重障碍,称为维度灾难(curse of dimensionlity)
。可以通过降维(dimension reduction)来缓解这个问题。
若要求原始空间中样本之间的距离在低维空间中得以保持,如上图所示,多维缩放(Multiple Dimensional Scaling,MDS)是一种经典的降维方法。
假设 m m m个样本在原始空间的距离矩阵为 D ∈ R m × m D\in \mathbb{R}^{m\times m } D∈Rm×m,其中第 i i i行第 j j j列的元素 d i s t i j dist_{ij} distij为样本 x i x_i xi到 x j x_j xj的距离。我们的目标是获得样本在 d ′ d^{'} d′维空间的表示 Z ∈ R d ′ × m Z\in \mathbb{R}^{d^{'}\times m} Z∈Rd′×m, d ′ ≤ d d^{'}\le d d′≤d且任意两个样本在 d ′ d^{'} d′维空间中的欧式距离等于原始空间中的距离,即 ∣ ∣ z i − z j ∣ ∣ = d i s t i j ||z_i-z_j||=dist_{ij} ∣∣zi−zj∣∣=distij。
令 B = Z T Z ∈ R m × m B=Z^TZ\in \mathbb{R}^{m\times m} B=ZTZ∈Rm×m,其中 B B B为降维后样本的内积矩阵, b i j = z i T z j b_{ij}=z_i^Tz_j bij=ziTzj,有
d i s t 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} dist^2_{ij} & = ||z_i||^2 + ||z_j||^2 - 2z_i^Tz_j \\ & = b_{ii} + b_{jj} -2b_{ij} \end{aligned} distij2=∣∣zi∣∣2+∣∣zj∣∣2−2ziTzj=bii+bjj−2bij
为了便于讨论,令降维后的样本 Z Z Z被中心化,即 ∑ i = 1 m z i = 0 \sum_{i=1}^m 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 s t i j 2 = t r ( B ) + m b j j ∑ j = 1 m d i s t i j 2 = t r ( B ) + m b i i ∑ i = 1 m ∑ j = 1 m d i s t i j 2 = = 2 m t r ( B ) \sum_{i=1}^m dist_{ij}^2 = tr(B) + mb_{jj} \\ \sum_{j=1}^m dist_{ij}^2 = tr(B) + mb_{ii} \\ \sum_{i=1}^m\sum_{j=1}^m dist^2_{ij} == 2m\ tr(B) i=1∑mdistij2=tr(B)+mbjjj=1∑mdistij2=tr(B)+mbiii=1∑mj=1∑mdistij2==2m tr(B)
其中 t r ( ⋅ ) tr(\cdot) tr(⋅) 表示矩阵的迹(trace), t r ( B ) = ∑ i = 1 m ∣ ∣ z i ∣ ∣ 2 tr(B)=\sum_{i=1}^m ||z_i||^2 tr(B)=∑i=1m∣∣zi∣∣2
d i s t i ⋅ 2 = 1 m ∑ j = 1 m d i s t i j 2 d i s t ⋅ j 2 = 1 m ∑ i = 1 m d i s t i j 2 d i s t ⋅ ⋅ 2 = 1 m 2 ∑ i = 1 m ∑ j = 1 m d i s t i j 2 dist^2_{i\cdot} = \frac{1}{m} \sum_{j=1}^m dist^2_{ij } \\ dist^2_{\cdot j} = \frac{1}{m} \sum_{i=1}^m dist^2_{ij } \\ dist^2_{\cdot \cdot} = \frac{1}{m^2} \sum_{i=1}^m \sum_{j=1}^m dist^2_{ij} disti⋅2=m1j=1∑mdistij2dist⋅j2=m1i=1∑mdistij2dist⋅⋅2=m21i=1∑mj=1∑mdistij2
所以
b i j = − 1 2 ( d i s t i j 2 − d i s t i ⋅ 2 − d i s t ⋅ j 2 + d i s t ⋅ ⋅ 2 ) b_{ij} = -\frac{1}{2}(dist^2_{ij} - dist^2_{i \cdot} - dist^2_{\cdot j} + dist^2_{\cdot \cdot}) bij=−21(distij2−disti⋅2−dist⋅j2+dist⋅⋅2)
推导:
由上述公式可得
b i j = − 1 2 ( d i s t i j 2 − b i i − b j j ) b_{ij} = -\frac{1}{2}(dist^2_{ij}-b_{ii}-b_{jj}) bij=−21(distij2−bii−bjj)
可得
t r ( B ) = 1 2 m ∑ i = 1 m ∑ j = 1 m d i s t i j 2 = m 2 d i s t ⋅ ⋅ 2 \begin{aligned}tr(B) &= \frac{1}{2m} \sum_{i=1}^m\sum_{j=1}^m dist^{2}_{ij} \\& = \frac{m}{2} dist^2_{\cdot \cdot}\end{aligned} tr(B)=2m1i=1∑mj=1∑mdistij2=2mdist⋅⋅2
可以得到 b j j b_{jj} bjj
b j j = 1 m ∑ i = 1 m d i s t i j 2 − 1 m t r ( B ) = d i s t ⋅ j 2 − 1 2 d i s t ⋅ ⋅ 2 \begin{aligned}b_{jj} &= \frac{1}{m}\sum_{i=1}^m dist^2_{ij} - \frac{1}{m} tr(B) \\& = dist^2_{\cdot j} - \frac{1}{2} dist_{\cdot \cdot}^2\end{aligned} bjj=m1i=1∑mdistij2−m1tr(B)=dist⋅j2−21dist⋅⋅2
得到 b i i b_{ii} bii
b i i = 1 m ∑ j = 1 m d i s t i j 2 − 1 m t r ( B ) = d i s t i ⋅ 2 − 1 2 d i s t ⋅ ⋅ 2 \begin{aligned}b_{ii}& = \frac{1}{m}\sum_{j=1}^m dist^2_{ij} - \frac{1}{m}tr(B) \\&= dist^2_{i\cdot} -\frac{1}{2} dist^2_{\cdot \cdot}\end{aligned} bii=m1j=1∑mdistij2−m1tr(B)=disti⋅2−21dist⋅⋅2
综合可得
b i j = − 1 2 ( d i s t i j 2 − b i i − b j j ) = − 1 2 ( d i s t i j 2 − d i s t i ⋅ 2 + 1 2 d i s t ⋅ ⋅ 2 − d i s t ⋅ j 2 + 1 2 d i s t ⋅ ⋅ 2 ) = 1 2 ( d i s t i j 2 − d i s t i ⋅ 2 − d i s t 2 ⋅ j + d i s t 2 ⋅ ⋅ ) \begin{aligned}b_{ij} &= -\frac{1}{2} (dist^2_{ij}-b_{ii}-b_{jj}) \\&= -\frac{1}{2}(dist_{ij}^2 - dist^2_{i \cdot} + \frac{1}{2}dist^2_{\cdot\cdot}-dist^2_{\cdot j} + \frac{1}{2}dist^2_{\cdot \cdot}) \\&=\frac{1}{2}(dist^2_{ij}-dist^2_{i\cdot}-dist^2{\cdot j} + dist^2{\cdot \cdot})\end{aligned} bij=−21(distij2−bii−bjj)=−21(distij2−disti⋅2+21dist⋅⋅2−dist⋅j2+21dist⋅⋅2)=21(distij2−disti⋅2−dist2⋅j+dist2⋅⋅)
由此可通过降维前后保持不变的距离矩阵D求取内积矩阵B
对矩阵B做特征分解(eigenvalue decomposition), 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,\cdots,\lambda_d) Λ=diag(λ1,λ2,⋯,λd)为特征值构成的对角矩阵。 λ 1 ≥ λ 2 ⋯ ≥ λ d \lambda_1 \ge \lambda_2\cdots \ge\lambda_d λ1≥λ2⋯≥λd, V V V为特征向量矩阵。假定其中有 d ∗ d^{*} d∗个非零特征值,他们构成对角矩阵 Λ ∗ = d i a g ( λ 1 , λ 2 , ⋯ , λ ∗ ) \Lambda_{*} = diag(\lambda_1,\lambda_2,\cdots,\lambda_{*}) Λ∗=diag(λ1,λ2,⋯,λ∗),令 V ∗ 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=Λ∗21V∗T∈Rd∗×m
在实际的降维后,往往需要降维后的距离与原始空间中的距离仅可能的接近,而不必严格相等。此时可取 d ′ ≤ d d^{'}\le d d′≤d个最大特征值构成对角矩阵 A ∼ = d i a g ( λ 1 , λ 2 , ⋯ , λ d ′ ) \overset{\sim}{A}=diag(\lambda_1,\lambda_2,\cdots,\lambda_{d^{'}}) A∼=diag(λ1,λ2,⋯,λd′),令 V ∼ \overset{\sim}{V} V∼表示相应的特征向量矩阵,则Z可表达为
Z = Λ ∼ 1 2 V ∼ T ∈ R d ′ × m Z=\overset{\sim}{\Lambda}^{\frac{1}{2}}\overset{\sim}{V}^T\in \mathbb{R}^{d^{'}\times m} Z=Λ∼21V∼T∈Rd′×m
MDS算法描述
给定d维空间的样本 X = ( x 1 , x 2 , ⋯ , x m ) ∈ R d × m X=(x_1,x_2,\cdots,x_m)\in \mathbb{R}^{d\times m} X=(x1,x2,⋯,xm)∈Rd×m,变换之后得到 d ′ ≤ d d^{'}\le d d′≤d维空间中的样本
Z = W T X Z = W^TX Z=WTX
其中 W ∈ R d × d ′ W\in \mathbb{R}^{d\times d^{'}} W∈Rd×d′是变换矩阵, Z ∈ R d ′ × m Z\in \mathbb{R}^{d^{'}\times m} Z∈Rd′×m是样本在新空间中的表达。