博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Deep Learning 的阅读笔记(一)
阅读量:5204 次
发布时间:2019-06-13

本文共 1018 字,大约阅读时间需要 3 分钟。

1. 什么叫做矩阵分解?

满足于 Av = λv ,矩阵分解又分为:特征分解和奇异值分解

特征分解:只限于方征,Av = λv 其中的 v 是 矩阵 A 的特征向量,如果公式成立的话,那么 λ 就是对应的特征值,每个矩阵不只含有唯一的特征向量和对应的特征值。

奇异值分解:任何矩阵,常用于个性化推荐、PCA 降维和 NLP,公式为 A = U∑VT ,其中 U 是一个 m\times m 的矩阵, \Sigma 是一个 m\times n 的矩阵,除了主对角线上的元素以外全为0,主对角线上的每个元素都称为奇异值, V 是一个 n\times n 的矩阵。

如何求解 U,Σ,V这三个矩阵

如果我们将A的转置和A做矩阵乘法,那么会得到n×n的一个方阵 A^{T}A 。既然 A^{T}A 是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

这样我们就可以得到矩阵 A^{T}A 的n个特征值和对应的n个特征向量v了。将 A^{T}A 的所有特征向量张成一个n×n的矩阵V,就是我们SVD公式里面的V矩阵了。一般我们将V中的每个特征向量叫做A的右奇异向量。

如果我们将A和A的转置做矩阵乘法,那么会得到m×m的一个方阵 AA^{T} 。既然 AA^{T} 是方阵,那么我们就可以进行特征分解,得到的特征值和特征向量满足下式:

这样我们就可以得到矩阵 AA^{T} 的m个特征值和对应的m个特征向量u了。将 AA^{T} 的所有特征向量张成一个m×m的矩阵U,就是我们SVD公式里面的U矩阵了。一般我们将U中的每个特征向量叫做A的左奇异向量。

U和V我们都求出来了,现在就剩下奇异值矩阵Σ没有求出了.

由于Σ除了对角线上是奇异值其他位置都是0,那我们只需要求出每个奇异值σ就可以了。

我们注意到:

这样我们可以求出我们的每个奇异值,进而求出奇异值矩阵Σ。

上面还有一个问题没有讲,就是我们说 A^{T}A 的特征向量组成的就是我们SVD中的V矩阵,而

AA^{T} 的特征向量组成的就是我们SVD中的U矩阵,这有什么根据吗?这个其实很容易证明,我们以V矩阵的证明为例。

上式证明使用了 U^{U}=I,\Sigma^{T}= \Sigma 。可以看出 A^{T}A 的特征向量组成的的确就是我们SVD中的V矩阵。类似的方法可以得到 AA^{T} 的特征向量组成的就是我们SVD中的U矩阵。

进一步我们还可以看出我们的特征值矩阵等于奇异值矩阵的平方,也就是说特征值和奇异值满足如下关系:

这样也就是说,我们可以不用 \sigma_{i}=\frac{Av_{i}}{u_{i}} 来计算奇异值,也可以通过求出 A^{T}A 的特征值取平方根来求奇异值。

SVD 常用于推荐算法,数据降维和降噪,实现并行化

 

转载于:https://www.cnblogs.com/elkan/p/10991207.html

你可能感兴趣的文章
[原创]zabbix工具介绍,安装及使用
查看>>
转 Warning:MongoDB Replica Sets配置注意事项
查看>>
hdu 1023 Train Problem II 解题报告
查看>>
大数据运算问题
查看>>
冒泡排序
查看>>
屏蔽apache php版本号
查看>>
MS12-020 RDP DoS From Metasploit
查看>>
python脚本 随机定位坐标
查看>>
Python绘制3d螺旋曲线图实例代码
查看>>
详细讲解 java 中的synchronized 转自 http://www.cnblogs.com/devinzhang/archive/2011/12/14/2287675.htm...
查看>>
『Numpy学习指南』Matplotlib绘图
查看>>
基于webpack的react的环境项目搭建
查看>>
Python处理验证码第一篇(pytesser初探及报错处理)
查看>>
日志整理
查看>>
3.tomcat
查看>>
HeadFirst之设计模式 觀察者模式
查看>>
关于sql for xml path 的用法
查看>>
向服务器发送josn字符串,服务器端解析
查看>>
win10如何修改host文件
查看>>
spring security 学习(一)spring boot 中开启spring security
查看>>