机器学习基础——数据降维

数据降维

数据降维是机器学习领域中非常重要的内容,所谓的降维就是指采用某种映射方法,将高维空间中的数据点映射到低维度的空间中。降维的本质是学习一个映射函数 f : x → y f:x\rightarrow y f:xy,其中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]。

  • 若样本只有一个特征,则需要1000个均匀分布的训练样本,此时任何测试样本在其附近 δ \delta δ距离范围内总能找到一个训练样本
  • 若样本只有10个特征,则需要 ( 1 0 3 ) 10 = 1 0 30 (10^3)^{10}=10^{30} (103)10=1030个均匀分布的训练样本。此时任何测试样本在其附近$\delta $距离范围内总能找到一个训练样本。

如果特征维度成千上万,则需要的训练样本的数据数量几乎是不可能满足。而且高维空间距离也比较麻烦。在高维情形下出现的数据样本稀疏、距离计算困难等问题是所有机器学习方法共同面临的严重障碍,称为维度灾难(curse of dimensionlity)。可以通过降维(dimension reduction)来缓解这个问题。
机器学习基础——数据降维_第1张图片

若要求原始空间中样本之间的距离在低维空间中得以保持,如上图所示,多维缩放(Multiple Dimensional Scaling,MDS)是一种经典的降维方法。

假设 m m m个样本在原始空间的距离矩阵为 D ∈ R m × m D\in \mathbb{R}^{m\times m } DRm×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} ZRd×m d ′ ≤ d d^{'}\le d dd且任意两个样本在 d ′ d^{'} d维空间中的欧式距离等于原始空间中的距离,即 ∣ ∣ z i − z j ∣ ∣ = d i s t i j ||z_i-z_j||=dist_{ij} zizj=distij

B = Z T Z ∈ R m × m B=Z^TZ\in \mathbb{R}^{m\times m} B=ZTZRm×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=zi2+zj22ziTzj=bii+bjj2bij
为了便于讨论,令降维后的样本 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=1mdistij2=tr(B)+mbjjj=1mdistij2=tr(B)+mbiii=1mj=1mdistij2==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=1mzi2
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} disti2=m1j=1mdistij2distj2=m1i=1mdistij2dist2=m21i=1mj=1mdistij2
所以
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(distij2disti2distj2+dist2)
推导:

由上述公式可得
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(distij2biibjj)
可得
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=1mj=1mdistij2=2mdist2
可以得到 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=1mdistij2m1tr(B)=distj221dist2
得到 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=1mdistij2m1tr(B)=disti221dist2
综合可得
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(distij2biibjj)=21(distij2disti2+21dist2distj2+21dist2)=21(distij2disti2dist2j+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=Λ21VTRd×m
在实际的降维后,往往需要降维后的距离与原始空间中的距离仅可能的接近,而不必严格相等。此时可取 d ′ ≤ d d^{'}\le d dd个最大特征值构成对角矩阵 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=Λ21VTRd×m
MDS算法描述

  • 输入:距离矩阵 D ∈ R m × m D\in \mathbb{R}^{m\times m} DRm×m,其元素 d i s t i j dist_{ij} distij为样本 x i x_i xi x j x_j xj的距离,低维空间维数 d ′ d^{'} d
  • 过程
    1. 计算 d i s t i ⋅ 2 , d i s t ⋅ j 2 , d e s t ⋅ ⋅ dist_{i\cdot}^2 ,dist_{\cdot j}^2, dest_{\cdot \cdot} disti2,distj2,dest
    2. 计算矩阵B
    3. 对矩阵B做特征分解
    4. Λ ∼ \overset{\sim}{\Lambda} Λ d ′ d^{'} d个最大特征值所构成的对角矩阵, V ∼ \overset{\sim}{V} V为相应的特征向量矩阵。

给定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 dd维空间中的样本
Z = W T X Z = W^TX Z=WTX
其中 W ∈ R d × d ′ W\in \mathbb{R}^{d\times d^{'}} WRd×d是变换矩阵, Z ∈ R d ′ × m Z\in \mathbb{R}^{d^{'}\times m} ZRd×m是样本在新空间中的表达。

你可能感兴趣的:(机器学习)