SVD



一、SVD概念

利用SVD实现,我们能够用小得多的数据集来表示原始数据集。这样做,实际上是去除了噪声和冗余数据。

当我们试图节省空间时,去除信息就是很有用了。但是在这里我们则是从数据中抽取信息。基于这个视角,我们就可以把SVD看成是从噪声数据中抽取相关特征。

二、SVD能够进行数据约减的原因

1、在很多情况下,数据中的一小段携带了数据集中的大部分信息,其他信息则要么是噪声,要么是毫不相关的信息。

2SVD是一种常见的矩阵分解技术,SVD将原始的数据集矩阵Data分解成三个矩阵,如下公式所示:




   由公式可以看出如果原始矩阵Datamn列,那么分解成的三个矩阵U V依次是mm列,mn列,nn列。

   矩阵的对角元素是从大到小排列的。这些对角元素成为奇异值(SingularValue),他们对应了原始数据集矩阵Data的奇异值。奇异值和特征值是有关系的,这里的奇异值就是矩阵Data*Data的转置)特征值的平方根。

    因为 矩阵的对角元素是从大到小排列的,在科学和工程中,一直存在这样一个普遍事实:在某个奇异值的数目(r个)之后,其他的奇异值都置为0。这就意味着数据集中仅有r个重要特征,而其余特征则都是噪声或者冗余特征。

   上面可以看到:Simga只有一行,这是因为,由于矩阵除了对角元素其他均为0,因此这种仅返回对角元素的方式能够节省空间,这就是由Numpy的内部机制产生的。我们所要记住的就是:一旦看到Sigma就知道他是一个矩阵。

上面可以看到:Simga中前三个数值比其他的值大多了,所以我们的原始数据集Data可以用如下结果近似:


问题:我们是如何知道保留前三个奇异值的呢?


策略1确保要保留的奇异值的数目有很多启发式的策略,其中一个典型的做法就是保留矩阵中90%的能量信息。为了计算总能量信息,我们将所有的奇异值求其平方和。于是可以将奇异值的平方和累加到总值的90%为止。

策略2当数据有上万的奇异值时,那么就保留前面的20003000


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值