PCA降维技术
Time: 2017-2-28
主成分分析(PCA)
主成分分析(Principal Component Analysi)是一种掌握可以提取主要特征对的方法,它可以从多元失误中解析出主要影响因素。计算朱成福的目的是将高维数据投影到低维空间。主要是用于降维,提取数据的主要特征分量。
降维,当然以为着信息的丢失,但是鉴于数据本身常常存在相关性,我们可以想办法在降维的同时将信息的随时尽量降低。
PCA Algorithm
主要思想:
利用较少数据的特征对样本进行描述以达到降低特征空间维数的目的,根据样本点在多维空间的位置分布,以样本点在空间中变化最大方向,即方差最大方向,作为差别矢量来实现数据的特征提取。具体可以参考这篇文章 关于K-L变换的部分。
在PCA中,我们要做的是找到一个方向向量,当我们把所有的数据都投射到该向量上时,我们希望投射的平均均方误差尽可能的小。方向向量是一个经过原点的向量,而投射误差是从特征向量向该方向向量垂线的长度。大致的情形如下图
具体步骤:
step 1. 数据:
step 2. 零均值化
step 3. 计算出协方差矩阵
step 4. 计算出协方差矩阵的特征值与特征向量, 可以使用SVD分解来实现
step 5. 取特征值最大的前K个特征向量组成矩阵
step 6. 计算PCA:, Y为降维后的结果
-
在step 2, 对原始数据进行均值化处理后,不仅消除了指标量纲和数量的影响,而且能更加全面地反映原始数据中各指标的变异程度和相互影响程度的信息
-
而关于协方差矩阵主要是因为,对于
,当计算自相关(
)而协方差计算的主要是数据的相关性质,所以我们可以减少相关性,从而来实现对数据的降维。关于为什么需要使用协方差矩阵可以看这篇文章
-
需要注意的是PCA主要是减少投射的平均均方误差,这里需要和线性回归做区别,线性回归主要减少的是最小均方误差。如下图
实例
假设有5条数据,两个特征属性,矩阵的形式如下:
![](https://images2017.cnblogs.com/blog/970371/201710/970371-20171019101723521-2117349964.png)
按照上面的算法来实现:
[1]
![](https://images2017.cnblogs.com/blog/970371/201710/970371-20171019101723818-690595526.png)
[2] 均值化:我们可以知道
![](https://images2017.cnblogs.com/blog/970371/201710/970371-20171019101724646-1795510655.png)
[3] 计算协方差矩阵
![](https://images2017.cnblogs.com/blog/970371/201710/970371-20171019101725631-1195510252.png)
[4] 求特征值 以及特征向量可得
![](https://images2017.cnblogs.com/blog/970371/201710/970371-20171019101726177-1201700150.png)
[5] 这里我们取最大的一列,可得到
![](https://images2017.cnblogs.com/blog/970371/201710/970371-20171019101726427-315008451.png)
最后我们得到了最终的降维结果如下图
![投影结果 投影结果](https://dn-luyfuyu.qbox.me/PCA4.png)
为了更好的观察,把Andrew Ng的课件图拿了过来: