svd自我学习

svd(singular value decomposition) 奇异值分解  2015-05-17 16:28:50

图和部分内容来自:http://blog.csdn.net/wangzhiqing3/article/details/7446444 和 http://blog.chinaunix.net/uid-20761674-id-4040274.html 和 http://www.cnblogs.com/LeftNotEasy/archive/2011/01/19/svd-and-applications.html[图(1) (2) (3) (4) (5) (6)]

奇异值分解(以下皆以svd代表)有很多前人的帖子,看过许多,但经常忘记,因此自己写一篇帖子,加深记忆。而且自己写的东西,将来翻看也更容易些。

SVD是矩阵的一种求解方法,区别于特征值分解只能分解方阵,SVD可以分解任意的矩阵。SVD可以用来求解PCA(主成分分析)和LSI等具体问题。

  • (1)特征值分解
  • (2)奇异值分解

(1)特征值分解

如果说一个向量v是方阵A的特征向量,将一定可以表示成下面的形式:

Av = λv

这个时候, λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是如下:

A=Q∑Q-1

其中Q是这个矩阵A的特征向量组成的矩阵,∑对角线上的每一个值是一个特征值,它是对角阵。

线性代数或者矩阵分解中,矩阵其实可以看作一个线性变换,一个矩阵乘以一个向量后,会形成新的向量,新的向量就是原向量经过线性变换后得到的。

如 (1),它对应的线性变换是如下形式:

(2)

因为M是对称矩阵,因此这个变换是对称的,即只是对目的向量在x和y这两个方向进行拉伸变换,当M非对称时,(3),它所描述的变化变为:

(4)

(2)奇异值分解,奇异值分解是一个能适用于任意矩阵的一种分解方法:

A = U∑VT

假设A是一个M*N的矩阵,那么得到的U是一个M*M的矩阵(里面的向量正交,U中向量称为左奇异向量),∑是一个N*M矩阵(对角线之外都为零,对角线上的元素称为奇异值),VT(V的转置)是一N*N的矩阵(里面向量也正交,V中向量称为右奇异向量),如下图:

(5)

那么奇异值如何与特征值对应?通过构建AT*A为方阵,求这一方阵的特征值可以得到:

(AT*A)viivi

这里得到的v,即右奇异向量,此外,还有:

σi=(λi1/2

ui=(1/σi)Avi

这里的σ为奇异值,u为左奇异向量。∑中奇异值从大到小排列,和特征值分解相同,且σ下降很快。多数情况下,前面有限个奇异值之和占了所有奇异值之和的99%,因此可以选r(r<<m&r<<n),用前r大的奇异值来近似描述矩阵。

Am*n ≈ Um*rr*rVr*n

(6)

时间: 2024-10-08 23:59:20

svd自我学习的相关文章

UFLDL深度学习教程翻译之自我学习

一.概述 假设我们有足够强大的学习算法,得到较好结果的其中一种最靠谱的方法是给算法提供更多的数据.这验证了在机器学习的那句格言:"有时候获胜的不是谁有最好的算法,而是谁有最多的数据." 也许有人总能得到有标记的数据,但这么做成本很高.特别地,研究人员已经采用极致的工具例如AMT(亚马逊土耳其机器人)来得到大量训练集.尽管拥有大量的人们人工标记的数据相比拥有大量的研究人员的工程性质的特征已经迈进了一步,但还能做的更好.特别地,自我学习以及无监督特征学习的方法是说,如果我们让我们的算法从无

计算机可以这样玩—自我学习,自我思维,自我工作(编程)

如果让计算机产生自我意识,那一定件很好玩的事情. 我在想,怎么让计算机产生自我意识和自我学习的思维能力呢,特别是在工业集群中的应用. 由这个问题,我们先问问人类是怎么自我产生意识的. 人类的自我意识主要是客观或主观环境刺激或引导而产生了自我神经思维能力的,对吧. 那么这样就很好理解了,机器同样可以产生自我意识和自我学习的过程. 现在我们来造这个机器,   首先是cpu的问题,如果以目前的二进制cpu来做,肯定是做不做的:因此我们首先否定现有的cpu所有的工艺方式.               那

智能机器人的高级阶段:不受人工控制的自我学习

文/辛东方,80后作家.专栏作者.专注互联网科技领域 "人工智能""一词的提出发展到现在,已经走过六十多个春秋.期间,各国的人工智能技术都在缓慢的进行着,发展虽然缓慢,但毕竟都是一直前进的. 按照一般的看法,人工智能是对人的意识.思维的信息过程的模拟.人工智能不是人的智能,但能像人那样思考.也可能超过人的智能.但初级阶段的人工智能是按照人的工程程序设置,到如果人工智能发展到高级阶段,有些模式可能会发生改变. 机器人技术是人工智能的体现,1920年,"机器人"

UFLDL教程笔记及练习答案三(Softmax回归与自我学习)

1:softmax回归 当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归.教程中已经给了cost及gradient的求法.需要注意的是一般用最优化方法求解参数theta的时候,采用的是贝叶斯学派的思想,需要加上参数theta. 习题答案: (1) 数据加载------代码已给 (2) %% STEP 2: Implement softmaxCost   得到计算cost和gradient M = theta

从自我学习到深层网络——建立你的第1个深度网络分类器

自我学习就是稀疏编码器串联一个Softmax分类器,上一节看到,训练400次,准确率为98.2% 在此基础上,我们可以搭建我们的第一个深度网络:栈式自编码(2层)+Softmax分类器 简单地说,我们把稀疏自编码器的输出作为更高一层稀疏自编码器的输入. 和自我学习很像,似乎就是新加了一层,但是其实不然: 新技巧在于,我们这里有个微调的过程,让残差从最高层向输入层传递,微调整个网络权重. 这个微调对于网络性能的提高非常明显,实际上后面将会看到. 网络结构如图所示: 图1 预先加载 minFunc

UFLDL教程笔记及练习答案三(Softmax回归与自我学习***)

1:softmax回归 当p(y|x,theta)满足多项式分布,通过GLM对其进行建模就能得到htheta(x)关于theta的函数,将其称为softmax回归. 教程中已经给了cost及gradient的求法.须要注意的是一般用最优化方法求解參数theta的时候,採用的是贝叶斯学派的思想,须要加上參数theta. softmax回归 习题的任务就是用原有的像素数据集构建一个softmax回归模型进行分类.准确率略低 92.6%,. 而自我学习是用5~9之间的数据集当做无标签的数据集,然后构建

自我学习(Self-Taught Learning)

自我学习就是把稀疏自编码器与Softmax回归分类器串联起来. 稀疏编码器是用来无监督学习的,使用无标签数据 回归分类器是有监督学习,使用标签数据 实际生活中,我们能轻松获得大量无标签数据(如从网上随机下载海量图片) 难以获得大量有标签数据(有标签的数据库通常不会太大,而且很贵 如果我们手头上只有少量标签数据,但是有大量的无标签数据,这是就可以采用自我学习的方式,得到有用的特征,进而获得比单纯Softmax好得多的效果. 我们还是用MINST数据库,我们把0~4这些手写体数据作为无标签数据:把5

自我学习规划

从2018年的实习开始算起,工作时间也接近两年,在两年的工作中,由于工作时间较长(基本996),所以一直以来留给自我学习及提升的时间并不多,在相当多零碎的时间里,也只学习了一些零散的东西,对技术的提升并不明显. 日常的工作基于C语言开发,开发内容与业务逻辑耦合性大,时常有种感觉,除了C写得熟练些外,离开这个业务背景,现在的开发工作貌似对今后的发展并无多大裨益.我认为关键问题在于,基础的数据结构与算法缺乏整理,相关能力难以提升,同时对于开发来说,与业务逻辑耦合过大,无相关领域业务涉及,会使得自己的

.net Core 自我学习随笔(三)——我们整个数据库如何?

第一篇文章就提到过,会给大家介绍数据库方面的知识.那好吧我们这回要好好学习学习数据库方面的知识了! 在学习数据库知识之前,我们先要了解一下,主流的数据库有哪一些: 1.MSSQL,也就是常说的 Microsoft SQL Server.对于 非 Windows 的系统来说,是不能安装使用的--至少在没出 Linux 版之前,但听说微软打算出品 For Linux,只不过功能要低一些. 2.MySQL / Maridb,这是各个公司最常用的数据库.为什么,免费呗,不花银子呗.不花钱的谁不喜欢.而他