数学基础系列(六)----特征值分解和奇异值分解(SVD)

1、介绍

  特征值和奇异值在大部分人的印象中,每每是停留在纯粹的数学计算中。并且线性代数或者矩阵论里面,也不多讲任何跟特征值与奇异值有关的应用背景。html

  奇异值分解是一个有着很明显的物理意义的一种方法,它能够将一个比较复杂的矩阵用更小更简单的几个子矩阵的相乘来表示,这些小矩阵描述的是矩阵的重要的特性。就像是描述一我的同样,给别人描述说这我的长得浓眉大眼,方脸,络腮胡,并且带个黑框的眼镜,这样寥寥的几个特征,就让别人脑海里面就有一个较为清楚的认识,实际上,人脸上的特征是有着无数种的,之因此能这么描述,是由于人天生就有着很是好的抽取重要特征的能力,让机器学会抽取重要的特征,SVD是一个重要的方法。算法

  在机器学习领域,有至关多的应用与奇异值均可以扯上关系,好比作feature reduction的PCA,作数据压缩(以图像压缩为表明)的算法,还有作搜索引擎语义层次检索的LSI(Latent Semantic Indexing) 机器学习

  特征值分解和奇异值分解在机器学习领域都是属于满地可见的方法。二者有着很紧密的关系,接下来会谈到特征值分解和奇异值分解的目的都是同样,就是提取出一个矩阵最重要的特征学习

  首先来看看向量的表示及基变换搜索引擎

  向量能够表示为(3,2),实际上表示线性组合:$x(1,0)^{T}+y(0,1)^{T}$spa

  

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

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

  

  基变换:数据与一个基作内积运算,结果做为第一个新的坐标份量,而后与第二个基作内积运算,结果做为第二个新坐标的份量索引

  数据(3,2)映射到基中坐标:$\begin{pmatrix}\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\\ -\frac{1}{\sqrt{2}} & \frac{1}{\sqrt{2}}\end{pmatrix}\begin{pmatrix}3\\ 2\end{pmatrix}=\begin{pmatrix}\frac{5}{\sqrt{2}}\\ -\frac{1}{\sqrt{2}}\end{pmatrix}$get

2、特征值分解

  在前面一篇博客详细的理解了特征值和特征向量。

  若是说一个向量v是方阵A的特征向量,那么必定能够表示成下面的形式子 : Av = λv

  这时候λ就被称为特征向量v对应的特征值,一个矩阵的一组特征向量是一组正交向量。特征值分解是将一个矩阵分解成下面的形式:A = Q∑Q-1

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

  当矩阵是$N\times N$的方阵且有N个线性无关的特征向量时就能够来玩啦

  反过头来看看以前特征值分解的式子,分解获得的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。

  总结一下,特征值分解能够获得特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,能够将每个特征向量理解为一个线性的子空间,咱们能够利用这些线性的子空间干不少的事情。不过,特征值分解也有不少的局限,好比说变换的矩阵必须是方阵。

3、奇异值分解(SVD)

  特征值分解是一个提取矩阵特征很不错的方法,可是它只是对方阵而言的,在现实的世界中,咱们看到的大部分矩阵都不是方阵,

  好比说有N个学生,每一个学生有M科成绩,这样造成的一个N * M的矩阵就不多是方阵,咱们怎样才能描述这样普通的矩阵呢的重要特征呢?

  奇异值分解能够用来干这个事情,奇异值分解是一个能适用于任意的矩阵的一种分解的方法: A = UΣVT

  特征值分解不挺好的嘛,可是它被限制住了,若是个人矩阵形状变了呢?

  可是问题来了,若是M和N都很大且M不等N呢?

  

  照样按照特征值的大小来进行筛选,通常取前10%的特征(甚至更少)的和就占到了整体的99%了。

  取前K个来看看吧

  

  简单推导一下

  在这里顺便解释一下为何要进行推导,在机器学习领域、深度学习领域,具体的数学推导其实不是那么重要,重要的是要知道这个东西究竟是什么意思,不必定须要把数学原理搞得十分清楚。在这里只是简单的推导一下而已。

  前提:对于一个二维矩阵M能够找到一组标准正交基v1和v2是的Mv1和Mv2是正交的。

  

  使用另外一组正交基u1和u2来表示Mv1和Mv2的方向,其长度分别为:$|MV_{1}|=\sigma _{1},|MV_{2}|=\sigma _{2}$。可得:$\begin{matrix}MV_{1}=\sigma _{1}u_{1}\\ MV_{2}=\sigma _{2}u_{2}\end{matrix}$

  

  对于向量X在这组基中的表示:$x=(v_{1}\cdot x)v_{1}+(v_{2}\cdot x)v_{2}$,(点积表示投影的长度,可转换成行向量乘列向量$v\cdot x=v^{T}x$

  可得:$\begin{matrix}Mx=(v_{1}\cdot x)Mv_{1}+(v_{2}\cdot x)Mv_{2}\\ Mx=(v_{1}\cdot x)\sigma _{1}u_{1}+(v_{2}\cdot x)\sigma _{2}u_{2}\end{matrix}$

  从而:$\begin{matrix}Mx=u_{1}\sigma _{1}{v_{1}}^{T}x+u_{2}\sigma _{2}{v_{2}}^{T}x\\ M=u_{1}\sigma _{1}{v_{1}}^{T}+u_{2}\sigma _{2}{v_{2}}^{T}\end{matrix}$

  化简得:$M=U\sum V^{T}$

  奇异值σ跟特征值相似,在矩阵Σ中也是从大到小排列,并且σ的减小特别的快,在不少状况下,前10%甚至1%的奇异值的和就占了所有的奇异值之和的99%以上了。

参考资料:

  一、http://www.javashuo.com/article/p-wsknocfc-ce.html

  二、https://www.zhihu.com/collection/143068858?page=1

  三、https://zhuanlan.zhihu.com/p/36546367

  四、http://www.javashuo.com/article/p-xkghdfxn-du.html

  五、https://www.jianshu.com/p/bcd196497d94

  六、https://zhuanlan.zhihu.com/p/32600280

这篇博客写的不好,里面包含本身理解的内容不多,SVD很难理解,包括我如今也是只知其一;不知其二,如今记录下来,后面若是有机会用到了,再来回过头来看看,争取温故而知新。

相关文章
相关标签/搜索