先简单回顾下主成分析PCA(principle component analysis)
与奇异值分解SVD(singular value decomposition)
。
一、主成分析PCA
1、所解决问题
给定
个
维样本
,通过变换
(其中
为变换矩阵),将样本
从
维降到
维
,计
,同时最大程度的减少降维带来的信息损失。
2、所依赖的原则
根据降维并减小信息损失的目标,可以得出以下两个原则
- 降维后的各个维度之间相互独立,即去除降维之前样本
中各个维度之间的相关性。
- 最大程度保持降维后的每个维度数据的多样性,即最大化每个维度内的方差
记降维后样本集
的协方差矩阵为
上述第一个条件要求协方差矩阵B除了对角线上元素外,其他均为0,也即
为对角矩阵。
将变换关系
代入Y的协方差矩阵B中,
--------(1)
其中,
是变换前数据
的协方差矩阵。
的特征值分解形式如下:
--------(2)
其中,
为对角矩阵。
明显的式(1)和式(2)除了维度不同,其他均一样。
结合上述第二条原则,变换矩阵
即是矩阵C的前k大的特征向量按行组成的矩阵。
3、问题求解方法
式2就是协方差矩阵
的特征值分解,变换矩阵
即是矩阵C的前k大的特征向量按行组成的矩阵。所以,PCA的求解步骤为:
- 求
均值
- 将
减去均值
- 计算协方差矩阵
- 对协方差矩阵
特征值分解
- 从大到小排列
的特征值
- 取前
个特征值对应的特征向量按行组成矩阵即为变换矩阵
这里的核心问题是协方差矩阵
二、奇异值分解SVD
1、所解决问题
--------(3)
其中
和
均为正交矩阵,
为对角矩阵
奇异值分解要解决的问题是将
矩阵分解为对角矩阵
,
中对角元素
称为矩阵
的奇异值
2、问题求解方法
所以
是
特征值分解的特征向量按列组成的正交矩阵,
是
特征值组成的对角矩阵,也可以看出
的奇异值
是是
特征值
的平方根。
--------(4)
假如
的特征向量为
,则根据式3和式4,
中对应的
则可以由下式求出 :
--------(5)
也即奇异值分解的关键在于对
进行特征值分解。
三、PCA与SVD的关系
由上述分析可知,
- PCA求解关键在于求解协方差矩阵
的特征值分解
- SVD关键在于
的特征值分解。
很明显二者所解决的问题非常相似,都是对一个实对称矩阵进行特征值分解,
如果取:
则有:
SVD与PCA等价,所以PCA问题可以转化为SVD问题求解,那转化为SVD问题有什么好处?
有三点:
- 一般
的维度很高,的计算量很大
- 方阵的特征值分解计算效率不高
- SVD除了特征值分解这种求解方式外,还有更高效且更准确的迭代求解法,避免了
的计算
其实,PCA只与SVD的右奇异向量的压缩效果相同。
- 如果取
的前行作为变换矩阵,则,起到压缩行即降维的效果
- 如果取
的前行作为变换矩阵,则,起到压缩列即去除冗余样本的效果。