一、PCA
主成分分析(Principal components analysis,PCA)是一种分析、简化数据集的技术。主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。 ——来自维基百科
通俗地说,PCA就是压缩数据,降低维度,把重要的特征留下来。
二、为什么要用PCA
0.压缩数据
当你有上百上千个特征,它们可能来自不同的部门给的数据,可能这些来自不同的数据是可以互相推导的,或者某个特征是对结果没什么影响的,或者来自不同的部门的数据其实在描述同一个问题,那么这些冗余的特征是没有价值的。
我们可以通过降低维度(用机器学习的话来说就是去掉一些特征)来提高算法效率。
1.数据可视化
在解决机器学习问题时,如果能把数据可视化,可以大大帮助我们找到解决方案。但是,如果特征太多(即维数太多),你很难画出图,就算画出来了也不容易理解。
我们可以通过降低维度使数据反映在平面或者立体空间中,便于数据分析。
三、涉及的数学原理
每个算法的背后都是数学,PCA也不例外。既然用到了降维,自然是和线性代数有关。
在学习PCA算法前,务必理解:
特征值
特征向量
协方差矩阵
(本篇主要讲算法,这些数学概念的理解有空另起一篇:D)
四、算法
PCA减少n维到k维
1.均值归一化
我们需要计算出所有特征向量的均值,然后x(i)=x(i)-平均值。(x(i)为每一个特征值)
2.计算协方差矩阵
3.计算协方差矩阵的特征向量矩阵
4.选取k个特征值
5.将样本投影到矩阵特征向量
五、举个栗子
(还是那句话,学习一个算法最好的办法就是手动算一遍)
在这里,我在网上找到一个简单的例子,以供计算。
一个栗子
六、补充
在PCA中,我们要做的就是找到一个方向向量,当我们把所有数据都投影到该向量时,投影平均均方误差尽可能地小。
此时,似乎会想起之前学过的线性回归(Linear regression)
但是,二者是不同的!!!
左边的是线性回归的误差(垂直于x轴投影)
右边的是PCA的误差(垂直于红线)
七、算法评价
优点:
1.对数据进行降维的处理。
我们可以对主要特征的重要性重新排列,根据需要提取前面最重要的部分,将后面的维数省去,这样可以简化模型,压缩数据,同时最大程度地保持了原有数据的信息。
2.完全无参数限制
在计算过程中完全不需要人为的设定参数或是根据任何模型对计算进行干预,最后的结果只与数据有关,与用户独立。
缺点:
上面的2也是缺点,如果用户对数据有一定的经验,掌握了一些特征,却无法通过参数化等方法对处理过程进行干预,可能得不到预期的效果