机器学习笔记(四)PCA主成分分析
首先先复习一下要用到的基础的知识:
(一)、协方差和方差
样本均值:
样本方差:
样本X和样本Y的协方差:
协方差代表了两个变量之间的相关关系,协方差为正时,说明X和Y是正相关关系;协方差为负时,说明X和Y是负相关关系;协方差为0时,说明X和Y是相互独立。Cov(X,X)就是X的方差。当样本是n维数据时,它们的协方差实际上是协方差矩阵(对称方阵)。例如,对于3维数据(x,y,z),计算它的协方差就是:
(二)、特征值与特征向量
如果向量v与变换A满足Ax=λx,则称向量x是变换A的一个特征向量,λ是相应的特征值。
描述正方形矩阵的特征值的重要工具是特征多项式,λ是A的特征值等价于线性方程组(A – λI) x = 0 (其中I是单位矩阵)有非零解x (一个特征向量),因此等价于行列式|A – λI|=0 。
函数p(λ) = det(A – λI)是λ的多项式,因为行列式定义为一些乘积的和,这就是A的特征多项式。矩阵的特征值也就是其特征多项式的零点。一个矩阵A的特征值可以通过求解方程pA(λ) = 0来得到。 若A是一个n×n矩阵,则pA为n次多项式,因而A最多有n个特征值,包括虚数。但是如果是是对称矩阵的话他的特征值都是实数。Ax表示对向量x的旋转拉伸。如果Ax和x的方向一样,只是长度不一样,说明x是A的特征向量,拉伸倍数为λ。例如下图,x3是A的特征向量。
如果 有n个线性无关的特征向量
,与它们对应的特征值是
,以
为列向量组作成一个可逆矩阵T,对角矩阵
对角元素的分别是
,可以得到
(三)、PCA算法的数学原理。
先看下面这幅图:
先假定只有二维,即只有两个变量,它们由横坐标和纵坐标所代表;因此每个观测值都有相应于这两个坐标轴的两个坐标值;如果这些数据形成一个椭圆形状的点阵,那么这个椭圆有一个长轴和一个短轴。在短轴方向上,数据变化很少;在极端的情况,短轴如果退化成一点,那只有在长轴的方向才能够解释这些点的变化了;这样,由二维到一维的降维就自然完成了。上图中,u1就是主成分方向,然后在二维空间中取和u1方向正交的方向,就是u2的方向。则n个数据在u1轴的离散程度最大(方差最大),数据在u1上的投影代表了原始数据的绝大部分信息,即使不考虑u2,信息损失也不多。而且,u1、u2不相关。只考虑u1时,二维降为一维。
对给定的一组数据(下面的阐述中,向量一般均指列向量):
其数据中心位于:
数据中心化(将坐标原点移到样本点的中心点):
中心化后的数据在第一主轴u1方向上分布散的最开,也就是说在u1方向上的投影的绝对值之和最大(也可以说方差最大),计算投影的方法上面已经阐述,就是将x与u1做内积,由于只需要求u1的方向,所以设u1也是单位向量。
在这里,也就是最大化下式:
由矩阵代数相关知识可知,可以对绝对值符号项进行平方处理,比较方便。所以进而就是最大化下式:
两个向量做内积,可以转化成矩阵乘法:
所以目标函数可以表示为:
括号里面就是矩阵乘法表示向量内积,由于列向量转置以后是行向量,行向量乘以列向量得到一个数,一个数的转置还是其本身,所以又可以将目标函数化为:
去括号:
又由于u1和i无关,可以拿到求和符外面,上式化简为:
学过矩阵代数的同学可能已经发现了,上式括号里面求和后的结果,就相当于一个大矩阵乘以自身的转置,其中,这个大矩阵的形式如下:
X矩阵的第i列就是xi
于是有:
所以目标函数最终化为:
其中的就是一个二次型,
我们假设的某一特征值为λ,对应的特征向量为ξ,有
所以,
是半正定的对称矩阵,即
是半正定阵的二次型,由矩阵代数知识得出,目标函数存在最大值
由于我们做过均值化处理,正好为X的协方差矩阵,假设为C。此时优化目标变为
max
subject ,(我们只需要找到投影u的方向,因此将u的长度设为1,方便计算)
lagrange 函数为:
对u求导可得
可知
为C的特征值,u为C的特征向量。此时
因此u1就是C的最大特征值对应的特征向量。
总结一下PCA的算法步骤:
设有m条n维数据。
1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵C=1mXXTC=1mXXT
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PXY=PX即为降维到k维后的数据
声明:参考了大量文章并加入自己的理解,非完全原创
链接:https://blog.****.net/zhongkelee/article/details/44064401