版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Hemk340200600/article/details/85548344
主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
1.概率论基础
1.1 数学期望
数学期望又称为均值。在概率论中,数学期望用来反映一个随机变量平均取值的大小,记为E(x)。具有如下性质:
-
E(a)=a
-
E(aX)=aE(X)
-
E(aX+b)=aE(X)+b
1.2 方差(Variance)
方差是各个数据与平均数之差的平方的平均数。用来度量随机变量和其数学期望之间的偏离程度。定义为
var(x)=E((x−E(x))2)。具有如下性质:
-
var(X+b)=var(X)
-
var(aX+b)=a2var(X)
- X,Y独立的情况下,
var(aX+bY)=a2var(X)+b2var(Y)
当方差比较小时,说明数据离均值比较近,相对集中。
当方差比较大时,说明数据离均值比较远且分散。
1.3 协方差(Covariance)
协方差用于衡量两个变量的总体误差。方差只是协方差的一种特殊情况。期望值为E(X)和E(Y)的协方差定义如下:
cov(X,Y)=E((X−E(X))×(Y−E(Y)))=E(XY)−2E(Y)E(X)+E(X)E(Y)=E(XY)−E(X)E(Y)
如果X与Y是统计独立的,那么二者之间的协方差就是0,因为两个独立的随机变量满足
E(XY)=E(X)E(Y),此时协方差等价于方差。
如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
协方差具有以下性质:
-
Cov(X,Y)=Cov(Y,X)
-
Cov(aX,bY)=abCov(X,Y)
-
Cov(X1+X2,Y)=Cov(X1,Y)+Cov(X2,Y)
当两个随机变量不是相互独立时,具有以下性质:
- var(X+Y)=var(X)+var(Y)+2Cov(X,Y)
- var(X-Y)=var(X)+var(Y)-2Cov(X,Y)
2.线性代数基础
2.1 矩阵
形如
[1324]的被称为矩阵。在解方程组的时候,我们可以将每个方程的系数当做矩阵的一行。在研究图像时,一张
256×256的图片在计算机中就是以矩阵的方式存储,矩阵的每一个位置代表一个像素。
2.2 特征值与特征向量
对矩阵A,若有Ax=λx,则λ为特征值,x为对应的特征向量。对于矩阵A乘上
x
,可以看成
x
在经过由矩阵A的列向量表示的线性变换后得到的向量。如矩阵
[1324]可以看做是将标准基
[10]
[01]线性变换到新的坐标系
[13]
[24]下。而
Ax
则会得到
x
在新坐标系下的坐标。大部分新的
x
在矩阵A的作用下都会偏离原来的方向,而少部分
x
只会沿着原来的方向进行缩放,方向不变,这样特殊的向量被称为特征向量,其缩放的比例被称为特征值。因此有Ax=λx。
2.3 对称矩阵
形如
[1223],
⎣⎡1232343410⎦⎤等沿着主对角线对称的矩阵被称为对称矩阵,对于对称矩阵的元素,有
Aij=Aji。对于整个矩阵来说,有
AT=A。并且对称矩阵的特征向量之间互相垂直,因此特征向量组成的矩阵是正交矩阵。证明可参考对称矩阵的特征向量两两正交的证明
2.4 正交矩阵
形如
[1001],
⎣⎡001100010⎦⎤等各列之间互相正交(垂直)的矩阵被称为正交矩阵。对于正交矩阵来说,有
AAT=I,AT=A−1。
2.5 矩阵对角化
对矩阵A,B,如果存在可逆矩阵P使得
A=P−1BP,则称矩阵A和B相似。如果m*n的矩阵A有n个线性无关的特征向量,那么可以将其组成一个可逆矩阵,进而将矩阵分解。令S表示由矩阵A的特征向量组成的矩阵,则:
AS=A[x1,x2,x3,...,xn]=[λ1x1,λ2x2,λ3x3,...,λnxn]=[x1,x2,x3,...,xn]Λ=SΛ,
其中
Λ表示由
λ1,λ2,...,λn组成的对角矩阵。同时右乘
S−1得
A=SΛS−1。
如果从几何的角度来解释矩阵的对角化,可以将矩阵A是一种线性转换,但是这种线性转换是在我们正常的以
[10]
[01]为标准基的空间上进行的。如果将其映射到特征向量组成的基上,也就是S矩阵,对于原空间上的向量
x
,如果执行
S−1AS的话,代表的变换是,先将
x
的坐标映射到特征基组成的空间里,然后进行A矩阵的线性变换,再将得到的新坐标映射回原坐标系下。而
S−1AS得到的新矩阵必然是对角矩阵,并且对角元为对应的特征值。也就是
Λ矩阵。这也是矩阵对角化的原理。
2.6奇异值分解SVD(Singular Value Decomposition)
SVD是在机器学习广泛应用的算法。当一个矩阵较大时,我们可能希望对它进行分解。对于任意的m*n矩阵A,对其应用SVD后,可以得到三个较小的矩阵,有
A=UΣVT,其中U和V都是正交矩阵,他们都满足
UTU=I,VTV=I。
求解U: 计算
AAT=UΣVTVΣUT=UΣ2UT=UΣ2U−1,因为
AAT为实对称矩阵,因此其特征向量组成的矩阵为正交矩阵,由矩阵相似的知识可知,
Σ2为
AAT的特征值组成的对角矩阵,
U矩阵为
AAT的特征向量组成的矩阵。而
A矩阵是我们已知的,求出
AAT后,求出其特征值和特征向量即可得到
U,Σ2。
求解V: ** 计算
ATA=VΣUTUΣVT=VΣ2VT=VΣ2V−1,因为
ATA为实对称矩阵,因此其特征向量组成的矩阵为正交矩阵,由矩阵相似的知识可知,
Σ2为
ATA的特征值组成的对角矩阵,
V矩阵为
ATA的特征向量组成的矩阵。而
A矩阵是我们已知的,求出
ATA后,求出其特征值和特征向量即可得到
V,Σ2。
求解
Σ: 上述步骤已经求出
Σ2,因此求出
Σ2的求根即可。
2.7协方差矩阵
前面已经介绍过协方差。而协方差矩阵就是,假定有n个随机变量,使用矩阵来描述这n个随机变量之间的协方差。例如
⎣⎡Cov(x1,x1)Cov(x2,x1)Cov(x3,x1)Cov(x1,x2)Cov(x2,x2)Cov(x3,x2)Cov(x1,x3)Cov(x2,x3)Cov(x3,x3)⎦⎤
而由
Cov(X,Y)=Cov(Y,X)可知协方差矩阵是对称矩阵。
3.主成分分析PCA(Principal Component Analysis)
3.1 算法简介
PCA是寻找到一个低维的平面对数据进行投影,以便最小化投影误差的平方,即最小化每个点与投影后的对应点之间距离的平方值。
3.2 算法流程:
- 预处理数据,对数据进行均值化
- 计算协方差矩阵
Σ=m1i=1∑m(x(i))(x(i))T
- 使用SVD特征值分解计算
Σ得到U,S,V矩阵,U矩阵每一列是特征向量,取前k列作为降维后的特征向量矩阵
Ureduce。
- 计算
Z=UreduceTX得到
k×1的向量得到样本X降维后的特征表示。
3.3 算法分析
一个样本有n个特征,通过计算协方差矩阵
Σ=m1i=1∑m(x(i))(x(i))T得到特征之间的相关强度。由于特征可能很多,当维度达到很高的时候,计算往往很困难。而PCA可以帮助我们选出较为重要的特征,为我们的数据降维。比如1000维的特征,最终可能只有100维的特征是我们需要的。
得到协方差矩阵
Σ后,我们用SVD对
Σ进行分解。将特征值按照从高到低排序,选择特征值最大的前k个(也即方差最大,因为数据的最大方差给出了数据的最重要的信息。)的N个特征所对应的特征向量组成的矩阵。由于
Σ是对称矩阵,所以计算过程中的
AAT和
ATA是一样的,最终得到的U矩阵的V矩阵也应该是一样的。所以我们简单取U矩阵即可。取分解后的U矩阵的前k列作为新维度的特征向量,将原先的样本映射到k维特征基组成的新空间中。
使用降维后的样本执行我们的机器学习算法。
3.3 重构rebuilding
降维后的样本
Z=UreduceTX,则重构回原样本空间得到的近似样本为
Xapprox=UreduceZ,可以通过映射得到在原来的高维度下样本X的近似位置。
3.4 参数K的选择:
定义均方误差:
m1i=1∑m∣∣x(i)−xapprox(i)∣∣2
定义数据总方差:
m1i=1∑m∣∣x(i)∣∣2
参数k的选择通常要满足(保留99%的偏差):
m1i=1∑m∣∣x(i)∣∣2m1i=1∑m∣∣x(i)−xapprox(i)∣∣2≤0.01or1−i=1∑nSiii=1∑kSii≤0.01
3.5 总结
降维就是一种对高维度特征数据预处理方法。降维是将高维度的数据保留下最重要的一些特征,去除噪声和不重要的特征,从而实现提升数据处理速度的目的。在实际的生产和应用中,降维在一定的信息损失范围内,可以为我们节省大量的时间和成本。降维也成为应用非常广泛的数据预处理方法。