简介
一般情况下,向量的各个分量之间可能存在一定的相关性。直接将向量送入机器学习算法中处理效率会很低,也会影响算法的精度。为了可视化显示数据,人们需要把向量变换到低维空间后再送入算法中进行处理。
目前大部分降维算法处理向量表达的数据,也有一些降维算法处理高阶张量表达的数据,之所以使用降维后的数据表示是因为在原始的高维数据空间中,包含冗余信息以及噪声信息,在实际应用例如图像识别中的误差,降低了精度;而通过降维处理,可以减少冗余信息造成的误差,提高模型的精度。又或者希望通过降维算法来寻找数据内部的本质结构特征。
在很多算法中,降维算法只是数据预处理的一部分,接下来讨论的主要是对于PCA降维算法的理论分析。
PCA算法的流程
维度灾难的几何解释
如图所示的超几何图像,数据处于D维空间中,r=1
通过上式可以看出,当空间维度D趋近于无穷大时,空间内的超球体的体积趋近于0,也就是说样本基本上都落于绿色的区域内,同理看右侧图:
同样可以看出,当数据维度D趋近于无穷大的时候,数据也落在绿色的区域内,也就是说深蓝色区域中基本上是空的,也就是说,当数据维度为很高的D维是,中间很多一部分是空的,导致数据维度很高,但是数据是稀疏的,也就造成了维度灾难。
PCA算法具体步骤的推导
1、数据中心化的解释
假设数据为如下定义的形式:
样本均值(Sample Mean)和样本方差(Sample Co-variance):
对于样本方差,继续进行推导可以得到:
等式的右边的前半部分
同理,等式右边的后半部分
于是可以的到样本协方差为:
其中
2、最大投影方差的解释
已知Sample Mean和Sample Co-variance分别为:
所谓的投影方差最大化,意思就是样本在低维空间尽可能地分离,从图2可以看出来,样本在基向量u1上投影得到的结果对于分类而言更容易分出结果,而在u2上的话很容易造成数据在低维空间的重合而形成本来没有的线性关系,造成有用的信息被清除,进而影响结果。
通过图3可以得到单个样本投影的方差为:
不妨设
可以看出投影方差最大化其实就是一个带约束的最优化问题,假设拉格朗日函数为:
对拉格朗日函数关于u1求导可以得到如下的等式:
于是便找到了最大投影向量和特征值的对应关系,至此推导完毕。
3、最小重构距离的解释
所谓的重构距离就是降维后的数据重新映射到原来的维度后与原始的数据点尽可能地接近,让损失地信息尽可能小。
已知基向量u和中心化后地数据,于是重构向量可以得到;
所以可以得到重构距离为:
可以看出和最大投影方差一样依然是一个带约束的优化问题,通过构造拉格朗日函数和求得可以得到:
于是找到对重构距离影响最小的(P-q)个维度。得证。
4、维度取舍问题的解释
依据就是方差,方差越大的特征,特征中的数据分布的离散程度就越大,特征所包含的信息量也就越大;反之,如果特征中的数据方差比较小,数据特征中包含的数据信息了也比较小;而我们设计模型时就是要求在数据维度一定的同时特征中包含的信息越多越好,而特征值越大所包含的数据分布信息越多,所以保留特征值大的队列。
PCA算法的优缺点
优点:降低数据的复杂度,识别最重要的多个特征;
缺点:不一定需要,且可能损失有用的信息。
PCA算法的改进和优化
1、KPCA算法
KPCA是一种改进的PCA非线性降维算法,它利用核函数的思想,把样本数据进行非线性变换,然后在变换空间进行PCA,这样即实现了非线性PCA;
2、局部PCA算法
局部PCA是一种改进的PCA局部降维算法,它在寻找主成分时加入一项具有局部光滑性的正则项,从而使主成分保留更多的局部性信息。
SKlearn算法的实践
1、PCA算法实践
2、KPCA算法实践
原文:集智书童
作者:ChaucerG
推荐阅读