机器学习基础(二):降维

一、前言

大量的特征有助于模型对训练样本的拟合,但随着特征空间维度的增加,导致数据稀疏且分布不均匀,出现维度灾难。较高的特征空间维度学习了训练样本中的噪声,即使训练误差较小,但由于产生过拟合,泛化误差有所增加。因此可考虑降维的方式去除噪声,提升模型的泛化能力。除此之外,可以采用降维的方式实现高维数据的可视化、数据的压缩和异常点的检测。

二、主成分分析

1.样本均值和方差

x 1 , x 2 , . . , x N x_1,x_2,..,x_N 是取自总体 X N × p X_{N\times p} 的样本,其中 x i x_i 是一个 p p 维向量, x i = ( x i 1 , x i 2 , . . . , x i p ) T x_i=\left(x_{i1},x_{i2},...,x_{ip}\right)^T
X p × 1 = 1 N i = 1 N X i S p × p 2 = 1 N 1 i = 1 N ( X i X ) 2 = 1 N 1 i = 1 N ( X i X ) ( X i X ) T \begin{aligned} {\overline X}_{p\times1} & =\frac1N\sum_{i=1}^NX_i\\ S_{p\times p}^2 & =\frac1{N-1}\sum_{i=1}^N\left(X_i-\overline X\right)^2\\ & =\frac1{N-1}\sum_{i=1}^N\left(X_i-\overline X\right)\left(X_i-\overline X\right)^T \end{aligned}

对样本 X X 进行矩阵中心化,即 x i = x μ x_i'=x-\mu 后, X X 的协方差矩阵为 1 N 1 X X T \frac1{N-1}XX^T
主成分分析(Principle Component Analysis,PCA)在实现高维空间向低维进行转换时,可以从最大投影方差的方面建模,同时可以从最小重构距离考虑降维后的重构代价。

2.最大投影方差

降维的过程是减少噪声,减少投影之后使样本分布较集中的坐标轴,使得将 p p 维样本点转换为 k k 维后,每一维上的样本方差都很大。假设降维后的坐标向量为 u i , i = 1 , 2 , . . . , p u_i,i=1,2,...,p u = u T u = 1 \left\|u\right\|=u^Tu=1 ,则 x i x_i u u 上的投影为 ( x i x ) T u \left(x_i-\overline x\right)^Tu ,样本在新坐标轴上的方差为:
J = 1 N 1 i = 1 N ( ( x i x ) T u ) 2 = 1 N 1 i = 1 N ( ( x i x ) T u ) 2 = 1 N 1 i = 1 N u T ( x i x ) ( x i x ) T u = u T 1 N 1 i = 1 N ( x i x ) ( x i x ) T u = u T S 2 u \begin{aligned} J&=\frac1{N-1}\sum_{i=1}^N\left(\left(x_i-\overline x\right)^Tu\right)^2 \\ & =\frac1{N-1}\sum_{i=1}^N\left(\left(x_i-\overline x\right)^Tu\right)^2\\ & =\frac1{N-1}\sum_{i=1}^Nu^T\left(x_i-\overline x\right)\left(x_i-\overline x\right)^Tu\\ & =u^T\frac1{N-1}\sum_{i=1}^N\left(x_i-\overline x\right)\left(x_i-\overline x\right)^Tu\\ & =u^TS^2u \end{aligned}
可知需求的优化问题为:
{ m a x    u T S 2 u s . t .    u T u = 1 \left\{\begin{array}{l}max\;u^TS^2u\\s.t.\;u^Tu=1\end{array}\right.
由拉格朗日乘子法求解,构造拉格朗日函数:
L ( u , α ) = u T S 2 u + λ ( 1 u T u ) L\left(u,\alpha\right)=u^TS^2u+\lambda \left(1-u^Tu\right)
L ( u , α ) L\left(u,\alpha\right) 关于 u u 求偏导:
L u = 2 S 2 u 2 λ u = 0 S 2 u = λ u \frac{\partial L}{\partial u}=2S^2u-2\lambda u=0\Rightarrow S^2u=\lambda u
由此可以看出 λ \lambda 就是协方差矩阵 S 2 S^2 的特征值(eigen-value), u u 就是协方差矩阵 S 2 S^2 的特征向量,求解出协方差均值的特征向量和特征值后,选择最大的p个特征值对应的特征向量为低维空间的坐标轴。

三、奇异值分解

奇异值分解(SVD)适用于任意矩阵,通过奇异值分解得到奇异值矩阵:
A m × n = U m × m m × n V n × n T A_{m\times n}=U_{m\times m}\sum\nolimits_{m\times n}V_{n\times n}^T
其中 A A 是一个 m n m*n 的矩阵, U U 是一个 m m m*m 的矩阵, \sum 是一个 m n m*n 的矩阵,V是一个n*n的矩阵。对角矩阵 \sum 对角线上的元素称为矩阵A的奇异值,矩阵 U U 的列向量称为左奇异向量,矩阵 V V 的列向量称为右奇异向量。
奇异值跟我们特征分解中的特征值类似,从大到小排列。而且奇异值的减少十分迅速,通常前10%的奇异值的和就占了所有奇异值之和的99%以上。因此,可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵:
A m × n = U m × m m × n V n × n T = U m × k k × k V k × n T A_{m\times n}=U_{m\times m}\sum\nolimits_{m\times n}V_{n\times n}^T=U_{m\times k}\sum\nolimits_{k\times k}V_{k\times n}^T

奇异值分解按行或列分别对数据进行降维(左奇异向量是用来压缩行数,右奇异向量是用来压缩列数,目的是要压缩特征数)。对于样本量为 m m 特征维度为 n n 的样本 X m × n X_{m\times n} ,有些SVD的实现算法可以在不求协方差矩阵的情况下求出右奇异矩阵 V k × n T V_{k\times n}^T ,实现降维:
X m × k = X m × n V n × k X_{m\times k}'=X_{m\times n}V_{n\times k}
同样的,对于样本量为 n n 特征维度为 m m 的样本 X m × n X_{m\times n} ,求出左奇异矩阵 U m × k U_{m\times k} ,实现降维:
X k × n = U k × m T X m × n X_{k\times n}'=U_{k\times m}^TX_{m\times n}

四、总结

本文引基于样本均值和方差的概念,以最大投影方差为优化方向推导出主成分分析的降维思路,可通过对协方差矩阵进行特征分解选择特征值较高的p个特征值对应的特征向量为低维空间的坐标轴,也可以采用奇异值分解的方式实现维度的降低。主成分分析可看作奇异值分解的特殊情况,在协方差求解困难或者分解矩阵为非正阶矩阵时可考虑奇异值分解进行降维的方式。

参考资料
[1]机器学习-白板推导系列(五)-降维(Dimensionality Reduction)
[2]【中文字幕】Stanford CS229: 机器学习 Machine Learning | 2008
[3]数据降维(PCA、KPCA、PPCA)及C++实现
[4]PCA主成分分析(最大投影方差)
[5]【机器学习】降维——PCA(非常详细)
[6]机器学习算法总结(九)——降维(SVD, PCA)
[7]奇异值分解(SVD)原理与在降维中的应用

发布了6 篇原创文章 · 获赞 6 · 访问量 286

猜你喜欢

转载自blog.csdn.net/lygeneral/article/details/104217211