主成分分析
主成分分析(Principal component Analysis, PCA)是一种分析、简化数据集的技术。
主成分分析经常用于减少数据集的维数,同时保持数据集中对方差贡献最大的特征。这是通过保证低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据最重要的方面。但是,这也不是一定的,主要视具体应用而定。
由于主成分分析依赖所给数据,所以数据的准确性对分析结果影响很大。
主成分分析的方法主要是通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)与它的权值(即特征值)。
PCA是最简单的以特征量分析多远统计分布的方法。其结果可以理解为对原数据中的方差做出解释:哪个方向上的数据值对方差的影响最大?换言之,PCA提供了一种降低数据维度的有效方法;如果分析者在原数据中除掉最小的特征值所对应的成分,那么所得的低维度数据必定是最优化的(也即,这样降低维度必定是失去信息最少的方法)。
主成分分析在分析复杂数据时尤为有用,比如人脸识别。
算法流程
假定我们需要将特征维度从n维降到k维。则PCA的执行流程如下:
1、特征标准化,平衡各个特征尺度:
为特征的均值,为特征的标准差。
2、计算协方差矩阵:
3、通过奇异值分解(SVD),求取的特征向量(eigenvectors):
4、从中取出前个左奇异向量,构成一个约减矩阵:
5、计算新的特征向量::
特征还原
因为PCA仅保留了特征的主成分,所以PCA是一种有损的压缩方式,假定我们获得新的特征向量为:
那么,还原后的特征 为:
降到多少维才合适?
从PCA的执行流程中,我们知道,需要为PCA指定目标维度。如果降维不多,则性能提升不大;如果目标维度太小,则又丢失许多信息。通常使用如下的流程来评估值选取优异:
1、求各样本的投影均方误差:
2、求数据的总变差:
3、评估下式是否成立:
其中,的取值可以为 0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯0.01,0.05,0.10,⋯,假设 ϵ=0.01=0.01ϵ=0.01=0.01,我们就说“特征间 99% 的差异性得到保留”。
不要提前优化
由于PCA减小了特征维度,因而也有可能带来过拟合的问题。PCA不是必须的,在机器学习中,一定谨记不要提前优化,只有当算法运行效率不尽如人意时,再考虑使用PCA或者其他特征降维手段来提升训练速度。
不只是加速学习
降维特征维度不止能加速模型的训练速度,还能帮助我们在低维度空间分析数据,例如,一个在三维空间完成的聚类问题,我们可以通过PCA将特征降低到二维平面进行可视化分析。
网友评论