一、前言
大量的特征有助于模型对训练样本的拟合,但随着特征空间维度的增加,导致数据稀疏且分布不均匀,出现维度灾难。较高的特征空间维度学习了训练样本中的噪声,即使训练误差较小,但由于产生过拟合,泛化误差有所增加。因此可考虑降维的方式去除噪声,提升模型的泛化能力。除此之外,可以采用降维的方式实现高维数据的可视化、数据的压缩和异常点的检测。
二、主成分分析
1.样本均值和方差
设
x1,x2,..,xN是取自总体
XN×p的样本,其中
xi是一个
p维向量,
xi=(xi1,xi2,...,xip)T则
Xp×1Sp×p2=N1i=1∑NXi=N−11i=1∑N(Xi−X)2=N−11i=1∑N(Xi−X)(Xi−X)T
对样本
X进行矩阵中心化,即
xi′=x−μ后,
X的协方差矩阵为
N−11XXT。
主成分分析(Principle Component Analysis,PCA)在实现高维空间向低维进行转换时,可以从最大投影方差的方面建模,同时可以从最小重构距离考虑降维后的重构代价。
2.最大投影方差
降维的过程是减少噪声,减少投影之后使样本分布较集中的坐标轴,使得将
p维样本点转换为
k维后,每一维上的样本方差都很大。假设降维后的坐标向量为
ui,i=1,2,...,p且
∥u∥=uTu=1,则
xi在
u上的投影为
(xi−x)Tu,样本在新坐标轴上的方差为:
J=N−11i=1∑N((xi−x)Tu)2=N−11i=1∑N((xi−x)Tu)2=N−11i=1∑NuT(xi−x)(xi−x)Tu=uTN−11i=1∑N(xi−x)(xi−x)Tu=uTS2u
可知需求的优化问题为:
{maxuTS2us.t.uTu=1
由拉格朗日乘子法求解,构造拉格朗日函数:
L(u,α)=uTS2u+λ(1−uTu)
L(u,α)关于
u求偏导:
∂u∂L=2S2u−2λu=0⇒S2u=λu
由此可以看出
λ就是协方差矩阵
S2的特征值(eigen-value),
u就是协方差矩阵
S2的特征向量,求解出协方差均值的特征向量和特征值后,选择最大的p个特征值对应的特征向量为低维空间的坐标轴。
三、奇异值分解
奇异值分解(SVD)适用于任意矩阵,通过奇异值分解得到奇异值矩阵:
Am×n=Um×m∑m×nVn×nT
其中
A是一个
m∗n的矩阵,
U是一个
m∗m的矩阵,
∑是一个
m∗n的矩阵,V是一个n*n的矩阵。对角矩阵
∑对角线上的元素称为矩阵A的奇异值,矩阵
U的列向量称为左奇异向量,矩阵
V的列向量称为右奇异向量。
奇异值跟我们特征分解中的特征值类似,从大到小排列。而且奇异值的减少十分迅速,通常前10%的奇异值的和就占了所有奇异值之和的99%以上。因此,可以用最大的k个的奇异值和对应的左右奇异向量来近似描述矩阵:
Am×n=Um×m∑m×nVn×nT=Um×k∑k×kVk×nT
奇异值分解按行或列分别对数据进行降维(左奇异向量是用来压缩行数,右奇异向量是用来压缩列数,目的是要压缩特征数)。对于样本量为
m特征维度为
n的样本
Xm×n,有些SVD的实现算法可以在不求协方差矩阵的情况下求出右奇异矩阵
Vk×nT,实现降维:
Xm×k′=Xm×nVn×k
同样的,对于样本量为
n特征维度为
m的样本
Xm×n,求出左奇异矩阵
Um×k,实现降维:
Xk×n′=Uk×mTXm×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)原理与在降维中的应用