主成分分析

PCA(Principal Component Analysis)是一个非监督的机器学习算法。主要用于数据的降维。通过降维,可以发现更便于人类理解的特征,也可用于可视化和去噪。

1.介绍

这里用一个2维降到一维的例子引入PCA。
在一个二维平面中,有两个特征:
avatar
如何降到一维呢?方法是取1,2中的一个特征,把另一个特征扔掉。
左边是舍弃特征1,保留特征2;右边是舍弃特征2,保留特征1。
avatar
如果要选择一种,会选择第二种,因为样本间距离大,但这却不是最好。
找到一根直线,让点映射到上面,1个轴,1个维度,距离更大,区分更好。
avatar
avatar
如何找到这个样本间距最大的轴?如何定义样本间间距,使用方差(Variance)
avatar
找到一个轴,使得样本空间的所有点映射到这个轴后,方差最大。

  • 第一步,将样本的均值归0(demean),即所有的样本都减去样本的均值。
    avatar
  • 第二步,求一个轴的方向w=(w1,w2)
    avatar
    对于多维空间:
    avatar
    一个目标函数的最优化问题,使用梯度上升法解决。

2.数学方法

设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵C=1/mXX𝖳(X乘上X的转置)
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据

实例

用PCA方法将这组二维数据其降到一维。
(1)有5条记录组成的数据:
avatar
(2)每行的均值分别为2,3,减去后:
avatar
(3)求协方差矩阵:
avatar
(4)求出特征值和特征向量:
特征值:
avatar
特征向量:
avatar
正交化后:
avatar
(5)这n个特征向量为e1,e2,⋯,en
E=(e1e2⋯en)
P=E𝖳(转置)
所以P为:
avatar
(6)P就是我们要找的矩阵。
P乘上数据矩阵,就得到了降维后的数据:
avatar

降维后的投影结果:
avatar