版权声明:转载请注明出处! PS:欢迎大家提出疑问或指正文章的错误! https://blog.csdn.net/zhuqiang9607/article/details/84069587
介绍
主成分分析(Principal Component Analysis,PCA)是一种常用的数据降维算法,可以将高维度的数据降到低维度,并且保留原始数据中最重要的一些特征,同时去除噪声和部分关联特征,从而提高数据的处理效率,降低时间成本。
数据降维优点:
- 低维数据更容易使用
- 数据之间相互独立
- 减少了变量的个数
- 提高了算法的效率
- 去除了噪声
- 结果的解释性更强
在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′=[2
12
1],w2′=[2
1−2
1]
- 按照特征值大小排序,选择最大的部分特征,这里选取
λ1,此时矩阵
W1∗2=[2
12
1]
- 降维矩阵
Y1∗5=W1∗2X2∗5=[2
12
1][−1−2−10002101]=[−2
3−2
102
32
1]