Python机器学习 PCA降维(主成分分析)

用途:降维中最常用的一种手段
目标:提取最有价值的信息(基于方差)
主成分分析(PCA)
问题:降维后的数据的意义?

这里我们先明确几个概念:

概念1:内积 


其解释为:


我们可以看个例子:

假设设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度,如下图

概念2:向量的表示及基变换
我们看到下面这个例子,向量可以表示为(3,2)

实际上表示线性组合:


基:(1,0)和(0,1)叫做二维空间中的一组基

所以(3,2)是以(1,0)和(0,1)作为基

基变换
基是正交的(即内积为0,或直观说相互垂直)
要求:线性无关

基变换就是把基进行修改,因此(3,2)可以在用另外一组基来表示,虽然数值不同,但是代表的意思其实是一样的


其变换方法为:

  数据与一个基做内积运算,结果作为第一个新的坐标分量, 然后与第二个基做内积运算,结果作为第二个新坐标的分量

如下可以的带:

数据(3,2)映射到基中坐标:


因此基变换为:


两个矩阵相乘的意义是将右边矩阵中的每一列列向量变换到 左边矩阵中每一行行向量为基所表示的空间中去

概念3:协方差矩阵
方向:如何选择这个方向(如何选择另外一组基)才能尽量保留最多的原始信息呢?

一种直观的看法是:希望投影后的投影值尽可能分散(离散化),因为对于原有的数据我们希望降维后能够尽量的离散,这样能保留原有信息,方差可以衡量离散程度
我们知道方差的公式:

而寻找一个一维基,使得所有数据变换为这个基上的坐标表示后,要使得投影后的投影值尽可能分散,即方差值最大

对于两个数值的两两直接的方法,我们用协方差表示(假设均值为0时):

如果单纯只选择方差最大的方向,后续方向应该会和方差最大的方向接近重合。
当协方差为0时,表示两个字段完全独立。为了让协方差为0,选择第二个基时 只能在与第一个基正交的方向上选择。因此最终选择的两个方向一定是正交的

将一组N维向量降为K维(K大于0,小于N),目标是选择K个单位正交基,使原始数据变换到这组基上后,各字段两两间协方差为0,字段的方差则尽可能大

协方差矩阵:


矩阵对角线上的两个元素分别是两个字段的方差,而其它元素是a和b的协方差。

优化目标
 

协方差矩阵对角化:即除对角线外的其它元素化为0,并且在对角线上 将元素按大小从上到下排列
协方差矩阵对角化:


实对称矩阵:一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量


实对称阵可进行对角化:


根据特征值的从大到小,将特征向量从上到下排列,则用前K行组成的矩阵 乘以原始数据矩阵X,就得到了我们需要的降维后的数据矩阵Y

这里弄一个实例:

猜你喜欢

转载自blog.csdn.net/qq_41686130/article/details/88978392