(七)奇异值分解 线性代数
机器学习基础
SVD的代数表达式 之前大致总结线性代数中的各个重要的知识点,现在,有了前边的简单总结(有些还需要后续逐步完善),对于SVD的说明也就简单了。奇异值分解(Singular Value Decomposition)可以被应用到所有的实数矩阵(当然复数矩阵也可以进行奇异值分解,但是这里只讨论实数矩阵)当中,不像特征值分解只能够应用于方阵,奇异值分解可以应用于任意 的矩阵。
对于任意 的实数矩阵 来说,通过前边 的总结我们已经知道, 的实对称矩阵可以找到 个标准正交的特征向量,而再结合之前矩阵的转置 的描述,可以知道 和 都是实对称矩阵,所以我们总是可以把它们对角化成如下所示的形式:
的形式,其中,
是由
个标准正交的向量构成的方阵,
是由
个标准正交的向量构成的另外一个方阵,虽然矩阵
不一定为实对称矩阵,但是它和它的转置进行左乘或者是右乘却可以得到这样的实对称矩阵,所以可以得到上边的两个表达等式。
奇异值分解的标准定义如下:
就单从等式1和2好像无法给出等式3,但是如果以等式3成立的情况下推导出等式1和2却是容易的,比如此时此刻有
同时
那样,很容易可以得到等式1和2,不过如果在等式1和2满足的情况下,似乎还需要
也满足的情况下,才可以推导出等式3,但是这里也没有说为什么
和
会有这样的联系,但其实直接通过等式1和2就可以推导出3了,等式6只不过是副产品罢了,把等式2做一下变换可以得到
若把两边乘以矩阵
,那么
但是从等式1又可以得到
它们之间似乎具有某种联系,但是还不能画上等号。对于等式7,如果两边都乘以
可以得到
由于
只有对角线上有元素,所以可以知道,矩阵
的列向量之间是两两正交的,而且这些列向量的平方和,刚好都在对角矩阵
的对角线上,即
一共有
个这样的列向量,长度的平方分别位于
的对角线元素上。但这又可以说明什么呢?这个时候再看等式8,此时矩阵
的列向量实际上都是矩阵
的特征向量,而且两两正交,只不过并非标准正交的罢了。这个时候,对比等式8和9,等式9中的
是标准正交的矩阵,此时,如果把
标准正交化,不久可以从
得到
了吗?或者说,把矩阵
乘以各个长度,不就得到了矩阵
了吗?我们从式10已经知道了矩阵
的长度的平方实际上都在矩阵
的对角线上了,所以利用它不久可以得到关系了吗?但是维度关系不正确啊!
是
的矩阵,但是
是
的矩阵,它们之间没办法取得关联,但是从另外一个角度来说,本质上,等式9中
的特征向量实际上在
的列空间中,对于
的矩阵,它的秩
,所以
中的至少
个特征向量是在
的零空间里边的(选择这些在零空间里边的特征向量可以构成完整的
个向量),也就是说,我们可以构造一个
的对角矩阵
,它在
的左上角区域的对角线上包含长度,其它元素均为
,这个时候,结合
是一个
个列向量之间正交的矩阵,它的列空间本质上也是
的列空间,所以如果
,那么必然
中会有一些列是全零,不过这没有关系,如果我们的这
个非零向量的长度依次摆放到
的
个对角线上,那么它们的单位向量构成的矩阵
完全可以通过乘以这个矩阵得到
,即
成立,需要注意的是,这里边
怎么摆放的完全就是可以自行定义的,只要对角矩阵跟着变就行了。通常会把长度越大的值放到越靠近左上角。
这样,上边就从实对称矩阵的性质出发,结合一个矩阵乘以它的转置可以得到对称矩阵,然后再利用行列空间的概念,以及代数表达式的技巧,得到了SVD的通用表达式。我这里边的角度,主要是从特征分解到实对称矩阵,然后到奇异值分解这个整个过程出发,得到了SVD的标准表达式,和一般直接上来就给出SVD定义不同,这样我认为可以更为清晰的反映出整个脉络以及SVD的由来等。
SVD在数据压缩上的应用 SVD的一个最常用的地方其实是数据压缩降维,SVD可以用下图来直观的描述:
当一个矩阵经过SVD后,中间得到的对角矩阵如果仅有前边 区域的对角线上的元素数值比较大,其它的都接近 ,那么实际上,完全可以省略掉其它的元素,此时:
也就是说,相比于原来
个数据需要记录,我们可以通过SVD分解后,记录
个数据即可,相当于减少了不必要的信息,但这也仅仅只是在
可以取得较小值的情况下才具有良好的压缩率。
@fsfzp888
2018 年 04月 15日