机器学习笔记13-降维

机器学习笔记13-降维

  1. 低维嵌入
    在高维情形下数据样本会出现稀疏、距离计算困难等问题,称为“维数灾难”,缓解维数灾难的一个重要途径是降维,即通过数学变换将原始高维属性空间转变为一个低维子空间,在这个子空间中样本密度大幅提高,距离计算也变得更为容易。若要求原始空间中样本之间的距离在低维空间中得以保持,即得到“多维缩放”(MDS)这一经典的降维方法。
    MDS算法
    假定m个样本在原始空间的距离矩阵为 D R m × m D \in {R^{m \times m}} ,其第i行第j列的元素 d i s t i j dist_{ij} 为样本 x i x_i x j x_j 的距离。我们的目标是获得样本在 d d' 维空间的表示 Z R d × m Z \in {R^{d' \times m}} d d d' \le d ,且任意两个样本在 d d' 维空间中的欧式距离等于原始空间中的距离,即 z i z j = d i s t i j \left\| {{z_i} - {z_j}} \right\| = dis{t_{ij}} 。令 B = Z T Z R m × m B = {Z^T}Z \in {R^{m \times m}} ,其中 B B 为降维后样本的内积矩阵, b i j = z i T z j b_{ij}=z_i^Tz_j ,有
    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 dist_{ij}^2 = {\left\| {{z_i}} \right\|^2} + {\left\| {{z_j}} \right\|^2} - 2z_i^T{z_j} = {b_{ii}} + {b_{jj}} - 2{b_{ij}} 令降维后的样本 Z Z 被中心化,即 i = 1 m z i = 0 \sum\limits_{i = 1}^m {{z_i} = 0} ,可得
    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_{ij}^2 - dist_{i \cdot }^2 - dist_{ \cdot j}^2 + dist_{ \cdot \cdot }^2) 其中, d i s t i 2 = 1 m j = 1 m d i s t i j 2 dist_{i \cdot }^2 = \frac{1}{m}\sum\limits_{j = 1}^m {dist_{ij}^2} d i s t j 2 = 1 m i = 1 m d i s t i j 2 dist_{ \cdot j}^2 = \frac{1}{m}\sum\limits_{i = 1}^m {dist_{ij}^2} d i s t 2 = 1 m 2 i = 1 m j = 1 m d i s t i j 2 dist_{ \cdot \cdot }^2 = \frac{1}{{{m^2}}}\sum\limits_{i = 1}^m {\sum\limits_{j = 1}^m {dist_{ij}^2} } 。由此即可通过降维前后保持不变的距离矩阵 D D 求取内积矩阵 B B 。对矩阵 B B 做特征值分解, B = V Λ V T B = V\Lambda {V^T} ,其中 Λ = d i a g ( λ 1 , λ 2 , . . . , λ d ) \Lambda = diag({\lambda _1},{\lambda _2},...,{\lambda _d}) 为特征值构成的对角矩阵, λ 1 λ 2 . . . λ d {\lambda _1} \ge {\lambda _2} \ge ... \ge {\lambda _d} V V 为特征向量矩阵。假定有 d d^* 个非零特征值,他们构成对角矩阵 Λ = d i a g ( λ 1 , λ 2 , . . . , λ d ) {\Lambda _*} = diag({\lambda _1},{\lambda _2},...,{\lambda _{d*}}) ,令 V V_* 表示相应的特征向量矩阵,则 Z Z 可表示为:
    Z = Λ 1 / 2 V T R d × m Z = \Lambda _*^{1/2}V_*^T \in {R^{d* \times m}} 在现实应用中,为了有效降维,往往仅需降维后的距离与原始空间中的距离尽可能接近,而不必严格相等。此时可取 d d d' \le d 个最大特征值构成对角矩阵。

    一般来说,获得低维子空间最简单的方法时对高维空间进行线性变换。d维空间中的样本 X = ( x 1 , x 2 , . . . , x m ) R d × m X=(x_1,x_2,...,x_m) \in R^{d \times m } ,变换到 d d d' \le d 维中,
    Z = W T X Z=W^TX 其中 W R d × d W \in R^{d \times d'} 是变换矩阵, Z R d × m Z \in R^{d' \times m} 是样本在新空间中的表达。基于这种线性变换来进行降维的方法称为线性降维方法。

  2. 主成分分析(PCA)
    PCA是最常用的一种降维方法。对于正交属性空间中样本点,若想要用一个超平面对所有样本进行恰当表达,这种超平面需满足两点:(1)最近重构性:样本点到这个超平面的距离都足够近;(2)最大可分性:样本点在这个超平面上的投影能尽可能分开。而这两个条件会得到等价的优化目标:
    max W t r ( W T X X T W ) \mathop {\max }\limits_W {\rm{ }}tr({W^T}X{X^T}W) W T W = I {W^T}W=I 对上式使用拉格朗日乘子法可得:
    X X T w i = λ i w i X{X^T}{w_i} = {\lambda _i}{w_i} 于是只需对协方差矩阵 X X T XX^T 进行特征值分解,将求得的特征值排序: λ 1 λ 2 , . . . , λ d {\lambda _1} \ge {\lambda _2} \ge ,..., \ge {\lambda _d} ,再取前 d d' 个特征值对应的特征向量构成 W = ( w 1 , w 2 , . . . , w d ) {W^*} = ({w_1},{w_2},...,{w_{d'}}) 。这就是主成分分析的解。其具体过程如下:
    (1)对所有样本进行中心化: x i x i 1 m i = 1 m x i {x_i} \leftarrow {x_i} - \frac{1}{m}\sum\limits_{i = 1}^m {{x_i}}
    (2)计算样本的协方差矩阵 X X T XX^T
    (3)对协方差矩阵 X X T XX^T 做特征值分解
    (4)取最大的 d d' 个特征值所对应的特征向量 ( w 1 , w 2 , . . . , w d ) ({w_1},{w_2},...,{w_{d'}})
    (5)输出投影矩阵 W = ( w 1 , w 2 , . . . , w d ) {W^*} = ({w_1},{w_2},...,{w_{d'}})
    降维后低维空间的维数 d d' 通常是由用户事先指定,或通过交叉验证来选取最佳 d d' 值。对PCA,还可以从重构的角度设置一个重构阈值,例如 t = 95 % t=95\% ,使下式成立:
    i = 1 d λ i i = 1 d λ i t \frac{{\sum\limits_{i = 1}^{d'} {{\lambda _i}} }}{{\sum\limits_{i = 1}^d {{\lambda _i}} }} \ge t PCA仅需保留 W W^* 与样本均值向量即可通过简单的向量减法和矩阵-向量乘法将新样本投影到低维空间中。运算过程中, d d d'-d 个特征值向量会被舍弃。这样做一方面可以使样本的采样密度增大,这正是降维的重要动机;另一方面,当数据受到噪声影响时,最小的特征值所对应的特征向量往往与噪声有关,舍弃这些可达到去噪的目的。

  3. 核化线性降维
    在不少任务中,需要非线性映射才能找到恰当的低维嵌入。非线性降维的一种常用方法,是基于核技巧对线性降维方法进行核化。以下介绍核主成分分析(KPCA)。
    假定将数据投影到 W = ( w 1 , w 2 , . . . , w d ) W = ({w_1},{w_2},...,{w_d}) 确定的超平面上,对于 w j w_j
    ( i = 1 m z i z T ) w j = λ j w j (\sum\limits_{i = 1}^m {{z_i}{z^T}} ){w_j} = {\lambda _j}{w_j} 其中 z i z_i 是样本点 x i x_i 在高维空间中的像。易知
    w j = 1 λ j ( i = 1 m z i z i T ) w j = i = 1 m z i z i T w j λ j = i = 1 m z i α i j {w_j} = \frac{1}{{{\lambda _j}}}(\sum\limits_{i = 1}^m {{z_i}z_i^T} ){w_j} = \sum\limits_{i = 1}^m {{z_i}\frac{{z_i^T{w_j}}}{{{\lambda _j}}}} = \sum\limits_{i = 1}^m {{z_i}\alpha _i^j} 其中 α i j = z i T w j λ j {\alpha _i^j = \frac{{z_i^T{w_j}}}{{{\lambda _j}}}} α i \alpha_i 的第j个分量。假定 z i z_i 是由原始属性空间中的样本点 x i x_i 通过映射 ϕ \phi 产生,即 z i = ϕ ( x i ) z_i=\phi(x_i) 。若 ϕ \phi 能够被显示地表达出来,则通过它将样本映射至高维空间,再在高维空间中实施PCA即可。有:
    ( i = 1 m ϕ ( x i ) ϕ ( x i ) T ) w j = λ j w j (\sum\limits_{i = 1}^m {\phi ({x_i})\phi {{({x_i})}^T}} ){w_j} = {\lambda _j}{w_j} 于是 w j w_j 可写为 w j = i = 1 m ϕ ( x i ) α i j {w_j} = \sum\limits_{i = 1}^m {\phi ({x_i})\alpha _i^j} 。一般情形下,并不清楚 ϕ \phi 的具体形式,于是引入核函数
    κ ( x i , x j ) = ϕ ( x i ) T ϕ ( x j ) \kappa ({x_i},{x_j}) = \phi {({x_i})^T}\phi ({x_j}) 于是有
    K α j = λ j α j {\rm{K}}{\alpha ^j} = {\lambda _j}{\alpha ^j} K是 κ \kappa 对应的核矩阵, K i j = κ ( x i , x j ) K_{ij}=\kappa(x_i,x_j) α j = ( α 1 j ; α 2 j ; . . . ; α m j ) \alpha^j=(\alpha_1^j;\alpha_2^j;...;\alpha_m^j) 。显然上式是特征值分解问题,取K最大的 d d' 个特征值对应的特征向量即可。对新样本 x x ,其投影后的第j维坐标为
    z j = w j T ϕ ( x ) = i = 1 m α i j ϕ ( x i ) T ϕ ( x ) = i = 1 m α i j κ ( x i , x ) {z_j} = w_j^T\phi (x) = \sum\limits_{i = 1}^m {\alpha _i^j\phi {{({x_i})}^T}\phi (x)} = \sum\limits_{i = 1}^m {\alpha _i^j\kappa ({x_i},x)} 因此为了获得投影后的坐标,KCPA需对所有样本求和,因此它的计算开销很大。

参考:
周志华《机器学习》

猜你喜欢

转载自blog.csdn.net/zhennang1427/article/details/85328063