从最大可分性理解PCA
最近看PCA时,学到了好几种从不同角度推导解释PCA技术的方法,下面要说的是最大可分性。也叫最大投影方差。
可能文章中文字比较多,需要了解过PCA和些许耐心。
三.基于最大可分性推导PCA
1.最大可分性:
样本点在这个超平面上的投影能尽可能分开。
2.计算投影长度
图中,红色点表示样例
x
i
x_{i}
xi ,蓝色点表示在坐标系
u
u
u上的投影,
u
u
u是直线的斜率也是直线的方向向量,而且是单位向量。(注意,我们只对
u
u
u的⽅向感兴趣,⽽对
u
u
u本⾝的大小不感兴趣),蓝色点是在
u
u
u上的投影点,离原点的距离即为投影长度。即原向量
x
i
x_{i}
xi,投影方向
u
u
u,投影长度为
x
i
T
u
x_{i}^{T}u
xiTu
注意:
这是网上较为流传的图片,理解图片的重要一点就是要理解这里的方差最大化指的是在每个维度上进行的方差最大化。正如周志华老师在《机器学习》中谈到,PCA 也可看作是逐一选取方差最大方向。其效果跟直接选取最大d’个特征值等价。详细的请见书本的231页。(多数时候我们是求极值对应的参数,此时1/m就无关紧要了。当然书中直接说
X
X
T
XX^{T}
XXT等价于协方差矩阵还是有写不严谨。应该是1/m
X
X
T
XX^{T}
XXT)
不过本文主要还是从逐一选取方差最大方向理解,你会发现好多有趣的东西。我们可以理解为先寻找最大方差对于的特征维度(我喜欢叫方向,维度有些绕人)。再寻找第二大的方差,…一直找下去,直到找到我们需要的降维到的维度数为止。
好了,回归到图片问题,此时的直线u就是代表一个方向(在n维空间中,直线方向当然要 u 1 u_{1} u1到 u n u_{n} un表示)。一个直线方向的投影值当然可以理解为一个标量啦,这时的方差就是标量的平方了。u就构成一个投影变换后的新坐标系中的一员,或者说是投影矩阵的一员,也就是一个主成分。
3.数据中心化:
对给定m个d维( 指有d个特征的m个样本点)的数据
X
X
X中心化。结果仍然用
X
X
X表示
(虽然好多书,如PRML中并没有进行中心化处理,但中心化的优点,比如方便计算,观察直观,避免样本的单位的影响等等不言而喻,对了,PRML中的推导也相当好,也希望大家多看看一些专业书籍,里面的错误可能比较少,避免走偏)。
4.问题引入:
从最大化投影后数据之间的方差这个角度出发,及最大可分性。假设矩阵
X
X
X∈
R
d
×
m
R^{d×m}
Rd×m为原矩阵 ( 指有d个特征的m个样本点),矩阵
Z
Z
Z∈
R
d
′
×
m
R^{d'×m}
Rd′×m为投影后得到的矩阵,矩阵
W
W
W∈
R
d
×
d
′
R^{d×d'}
Rd×d′为投影矩阵。由之前的图可知,投影点之间的方差即为各点到原点间的距离(标量)的平方(中心点为0)。若令
w
1
w_{1}
w1为投影的第一主轴方向 ( 先从
w
1
w_{1}
w1方向逐一分析),则PCA的目标函数可以写做
上面的优化函数即为
w
1
w_{1}
w1方向的最大方差,先来介绍一下经典的方法,即目标函数 (即方差)也可以如下面所写。
其中的
Σ
\Sigma
Σ 为协方差矩阵,然后引入拉格朗日乘数求解。
通过令它关于u1的导数等于零,我们看到驻点满足
因此当我们将w1设置为与具有最大的特征值λ1的特征向量相等时,方差会达到最大值(注意仔细看公式,最后有
w
1
T
Σ
w
1
=
λ
w_{1}^{T}\Sigma w_{1} = \lambda
w1TΣw1=λ,表示方差等于特征值)。这个特征向量被称为第⼀主成分。是不是很神奇。
5.另一种版本:
好吧,我再来说一下常出现的版本吧,虽然大同小异,但其中的一些数学知识值得一说。再贴一下图片。
其中
Σ
i
=
1
m
(
x
i
T
w
1
)
2
\Sigma_{i=1}^{m}(x_{i}^{T}w_{1})^{2}
Σi=1m(xiTw1)2 经过如下变化
那么原目标函数变为
其中,
好了,至此我们就得到了这个版本的目标函数,其中再强调一下, X X T XX^{T} XXT是不等价于协方差矩阵的,之前有提过。那么到底有没有最值呢。好吧,我直接截了博主的图,(在这还要感谢各位博主。)
6.另一种版本的求目标函数的最大值:
方法一 拉格朗日乘数法
目标函数和约束条件构成了一个最大化问题:
构造拉格朗日函数再求导,跟经典方法类似:
所以,如果取最大的那个特征值,那么得到的目标值就最大。有可能你会有疑问,为什么一阶导数为0就是极大值呢?那么再求二阶导数:
二阶导数半负定,所以,目标函数在最大特征值所对应的特征向量上取得最大值!所以,第一主轴方向即为第一大特征值对应的特征向量方向。第二主轴方向为第二大特征值对应的特征向量方向,以此类推,证明类似。
方法二 伸缩比例最大化
这是我要说一下这个版本的主要原因,数学真奇妙。
上式的一个重要理论是:
对称矩阵的特征向量两两正交,否则
x
x
x无法由这组基构成。(关于证明,后面会详谈)
此时有:
可以将原目标函数转化为求得一个向量
w
1
w_{1}
w1使得上式得到最大化,转化为伸缩比例问题,进而可以得知,最大值为
X
X
T
XX^{T}
XXT的最大的特征值,向量
w
1
w_{1}
w1即为该特征值对应的特征向量。
所以第一主轴已经找到,第二主轴为次大特征值对应的特征向量的方向,以此类推。
7.真的是以此类推吗?:
什么是以此类推?解释为:在所有与那些已经考虑过的方向正交的所有可能的方向中,将新的方向选择为最大化投影方差的方向。如果我们考虑M维投影空间的⼀般情形,那么最大化投影数据方差的最优线性投影由数据协方差矩阵 Σ \Sigma Σ的m个特征向量 u 1 , u 2 , . . . , u m u_{1},u_{2},...,u_{m} u1,u2,...,um定义,对应于m个最大的特征值 λ 1 , λ 2 , . . . , λ m \lambda _{1},\lambda _{2},...,\lambda _{m} λ1,λ2,...,λm。
想想看,我们在寻找协方差矩阵的特征向量时并没有考虑正交这个条件啊,只是找到最大特征值对应的特征向量就结束了,难道错了吗?
其实这就涉及到跟上文选择
A
A
T
AA^{T}
AAT的特征向量作为
x
x
x的基是同一样的问题,因为协方差矩阵是对称矩阵,而对称矩阵有:
对称矩阵的特征向量两两正交
证明如下:
链接: 对称矩阵的特征向量两两正交的证明.
所以,我们在选择时只需选择协方差矩阵特征值最大的前几个就行了,它们本身就已经正交了,可以构成一个坐标系。
(当然,严谨一点的话,可能相同的特征值会对应多个特征向量,那么可以通过正交化把他们变成一组相互正交的特征向量,即
求出
λ
\lambda
λ之后,顺序可求得相应的坐标维度,具体策略如下:
1)对于重根
λ
\lambda
λ,对应的特征向量需要先进行Schimidt正交,然后再进行单位化;
2)对于单根
λ
\lambda
λ,对应的特征向量直接进行单位化即可;
}
然而好多代码中并未处理,不知是不是出现重根的几率太小了,还是别的什么?
8.这才是真正的逐步?
好吧,我又直接截图了,下面的正面是完全在正交的约束下寻找方差最大化的,结果就是协方差的特征向量。不得不感叹。
(其中的特征值重根问题也是直接跳过了)
10.你遇到过这样的问题吗?
协方差矩阵是mm,对这么大一个矩阵进行求取特征值操作,会是一个相当棘手的问题,我们使用苹果的服务器和iMac(内存6G)进行测试时,发现对降采样后200*200的样本都无法进行计算,会出现内存不足的问题。
这里先提及下,本人现在也不是太明白,等写到实践环节的时候再总结。
9.稍微总结下:
这篇的内容比较多了,不能再继续写了,关于PCA的问题肯定会有更好的发现和更好的改进。一直学习吧。
参考并感谢:
链接: 主成分分析(PCA)详解(附带详细公式推导).
链接: 主成分分析(PCA)原理及推导.
链接: 彻底学会PCA1-理解PCA原理.
链接: 主成分分析(PCA)原理总结.
链接: LDA_PCA_SVD导论.
链接: 如何通俗易懂地讲解什么是 PCA 主成分分析?.
《机器学习》周志华
《PRML》