PCA

投影误差和最小:投影误差即每一个样本点到投影向量或者投影平面的距离。而投影误差和即为所有样本点到投影向量或投影平面的距离的和。

方差最大投影误差最小这两个优化目标其实本质上是一样的

PCA算法思路:
数据从原来的坐标系转换到新的坐标系,由数据本身决定。转换坐标系时,以方差最大的方向作为坐标轴方向,因为数据的最大方差给出了数据的最重要的信息。第二个新坐标轴选择的是与第一个新坐标轴正交且方差次大的方向。重复该过程,重复次数为原始数据的特征维数。
通过这种方式获得的新的坐标系,发现,大部分方差都包含在前面几个坐标轴中,后面的坐标轴所含的方差几乎为0.于是可以忽略余下的坐标轴,只保留前面的几个含有绝大部分方差的坐标轴。事实上,这样也就相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,也就实现了对数据特征的降维处理。
 

优点:使得数据更易使用,并且可以去除数据中的噪声,使得其他机器学习任务更加精确。该算法往往作为预处理步骤,在数据应用到其他算法之前清洗数据。
缺点:数据维度降低并不代表特征的减少,因为降维仍旧保留了较大的信息量,对结果过拟合问题并没有帮助。不能将降维算法当作解决过拟合问题方法。如果原始数据特征维度并不是很大,也并不需要进行降维。

 

 

 

PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取数据的主要特征分量。

降维意味着信息的丢失,不过鉴于实际数据本身常常存在的相关性,我们可以想办法在降维的同时将信息的损失尽量降低。

标准正交基,但可以称为一组基的唯一要求就是线性无关,非正交的基也是可以的,不过因为正交基有较好的性质,所以一般使用的基都是正交的。

我们希望投影后投影值尽可能分散,而这种分散程度,可以用数学上的方差来描述。首先我们希望找到一个方向使得投影后方差最大,这样就完成了第一个反向的选择,继而我们选择第二个投影方向。如果还是单纯只选择方差最大的方向,很明显,这个方向与第一个方向应该是几乎重合在一起,显然这样的维度是没有用的。从直观上说,让两个字段尽可能表示更多的原始信息,我们是不希望它们之间存在(线性)相关性的,因为相关性意味着两个字段不是完全独立,必然存在重复表示的信息。

我们可以用两个特征的协方差表示其相关性,当协方差为0时,表示两个字段完全独立,为了让协方差为0,我们选择第二个基时只能在与第一个基正交的方向上选择。

协方差矩阵的对角化:我们要达到优化目的,等价于将协方差矩阵对角化;即除对角线外的其他元素为0,并且在对角线上将元素按大小从上到下排列,这样我们就达到了优化目的。

协方差矩阵C是一个对称矩阵,在线性代数上,是对阵矩阵有一系列非常好的性质:

1 实对称矩阵不同特征值对应的特征向量必然正交

2 设特征向量lambda重数为r,则必然存在r个线性无关的特征向量对应于lambda,因此可以将这r个特征向量单位正交化。

所以一个n行n列的实对称矩阵一定可以找到n个单位正交特征向量,组成矩阵将C对角化

 

 

PCA算法步骤:

设有m条n维数据

1)将原始数据按列组成n行m列矩阵X
2)将X的每一行(代表一个属性字段)进行零均值化,即减去这一行的均值
3)求出协方差矩阵C=1/m*XX^T
4)求出协方差矩阵的特征值及对应的特征向量
5)将特征向量按对应特征值大小从上到下按行排列成矩阵,取前k行组成矩阵P
6)Y=PX即为降维到k维后的数据

进一步讨论:

PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。

PCA也存在一些限制,如它可以很好的解除线性相关,但是对于高阶相关性就没有办法了,对于存在高阶相关性的数据,可以考虑kernel PCA,通过kernel函数将非线性相关性转为线性相关

 

奇异值分解:

奇异值分解是一个有着很明显的物理意义的一种方法,它可以将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。

在讨论SVD之前,先了解矩阵的特征值分解,这里选择特殊的矩阵,对角阵。对称矩阵有一个性质就是总能相似对角化,对称矩阵不同特征值的特征向量两两正交。特征值分解是提取矩阵特征很不错的方法,但这只是针对方阵而言,现实世界中,大部分矩阵并不是方阵,这时描述这些普通矩阵的重要特征时就会用到奇异值分解。

在很多的情况下前10%甚至1%的奇异值之和就占了全部奇异值之和的99%以上。也就是说可以用前r个大的奇异值来近似的描述矩阵,这里定义奇异值的分解:

 

SVD与PCA,奇异值分解与主成分分析的比较:

一般来说,想要获得低维的子空间,最简单的是对原始的高维空间进行线性变换(非线性也是可以的,如加入核函数,kPCA)。SVD与PCA都实现了降维与重构,但是思路不太一样。

SVD大多数情况下用来提取一个矩阵的主特征值,可以用于图像的压缩和去噪。

区别与联系:

SVD可以获取另一个方向上的主成分,而PCA只能获得单个方向上的主成分。

SVD两个酉矩阵,左奇异矩阵和右奇异矩阵,SVD的两个酉矩阵可以分别看作原矩阵行和列的主成分,如果有m个n维特征的样本,具有维度为m*m和n*n的酉矩阵,如果取前r个奇异值,则m*r可以实现行压缩,而n*r可以实现列压缩。

通过SVD可以得到PCA相同的结果,但是SVD通常比直接使用PCA更稳定,因为PCA需要计算X^T*X的值,对于某些矩阵,求协方差时很可能会丢失一些精度。

PCA降维需要找到样本协方差矩阵X^T*X的最大的d个特征向量,然后用这最大的d个特征向量张成的矩阵来做低维投影降维。当样本数多,样本特征数也多的时候,这个计算量是很大的。而SVD中求解非方阵矩阵,就是要求这个值,有一些SVD的实现算法可以不先求出协方差矩阵X^X,也能求出右奇异矩阵V。也就是说,我们的PCA算法可以不用做特征分解,而是做SVD来完成。这个方法在样本量很大的时候很有效。实际上,scikit-learn的PCA算法的背后真正的实现就是用的SVD,而不是我们认为的暴力特征分解。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值