介绍
主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维算法,可以将高维度的数据降到低维度,并且保留原始数据中最重要的一些特征,同时去除噪声和部分关联特征,从而提高数据的处理效率,降低时间成本。此外,在机器学习中,训练样本固定的情况下,特征维数增加到某个临界点后,再增加维数,反而会降低模型的预测能力(休斯现象,Hughes Phenomenon)。
降维的必要性:
- 机器学习是建立在统计学习上的,而数据稀疏(维度过高的情况下)对于统计学而言是一个问题
- 有大量模型需要依靠样本之间的相似度才能被判定,而多数时候样本的相似度由其在特征空间的相互距离决定,这使得样本密度影响了样本的属性
- 维度过多导致计算量增大,影响机器学习效率
数据降维优点:
- 增大了样本的采样密度
- 低维数据更容易使用
- 数据之间相互独立
- 减少了变量的个数
- 提高了算法的效率
- 去除了噪声
- 结果的解释性更强
在PCA中,数据从原来的座标系转换到新的座标系,在新的座标系中要求数据之间的协方差为0(即不同维度之间的数据线性不相关),而方差尽可能的大。因此,第一座标轴是原始数据中方差最大的方向,第二个座标轴是与第一个新座标轴正交且方差次大的方向,重复该过程,直到需要的降维数。在详细讲解PCA之前,有必要先介绍协方差。
协方差
统计学里最基本的概念有均值、方差、标准差,假设有n个样本:X1,X2,...,Xn,那么
均值:X=N∑i=1NXi
方差:S2=N−1∑i=1N(Xi−X)2
标准差:S=N−1∑i=1N(Xi−X)2
其中,方差和标准差是描述一维数据的离散程度,但现实中的数据往往是多维的,比如说学生的成绩,不一定只和学习时间有关,还涉及到学习效率,学习状态等等,这时便引入了协方差。协方差定义:
Cov(X,Y)=N−1∑i=1N(Xi−X)(Yi−Y)
- Cov(X,Y)>0,X和Y是正相关关系
- Cov(X,Y)<0,X和Y是负相关关系
- Cov(X,Y)>0,X和Y是线性不相关,但是不一定相互独立哦(sinx和cosx线性不相关,但是它们的平方是有关系的,sin2x+cos2x=1)
不过有的协方差用的是:
Cov(X,Y)=N∑i=1N(Xi−X)(Yi−Y)(除以N结果会偏小,得除以N−1才能得到无偏估计,可以参考“为什么样本方差(sample variance)的分母是 n-1?”)
数据如果有三维,协方差矩阵为:
C=⎣⎡cov(x,x)cov(y,x)cov(z,x)cov(x,y)cov(y,y)cov(z,y)cov(x,z)cov(y,z)cov(z,z)⎦⎤
PCA步骤
假设有m个样本数据,每个数据是n维的,按列组成矩阵Xnm,则PCA步骤如下:
- 均值化矩阵Xnm,得到X=Xnm−Xnm
- 求出协方差矩阵C=n−11XXT
- 求出协方差矩阵C的特征值λi和特征向量wi
- 选取k个最大的特征值对应的特征向量w1,w2,...,wk,组成矩阵Wkn(特征值选择方法:∑i=1nλi∑i=1kλi≥t,t越大保留的特征值越多,按实际要求)
- 降维矩阵Ykm=WknXnm
PCA实例
假设:
X2∗5=[2−121315232]
- 均值化:X=X2∗5−X2∗5=[−1−2−10002101]
- 协方差矩阵:C=5−11XXT=[231123]
- 特征值为:λ1=25,λ2=21,对应的特征向量w1=[11],w2=[1−1],特征向量单位化w1′=[2121],w2′=[21−21]
- 按照特征值大小排序,选择最大的部分特征,这里选取λ1,此时矩阵W1∗2=[2121]
- 降维矩阵Y1∗5=W1∗2X2∗5=[2121][−1−2−10002101]=[−23−2102321]