开发者学堂课程【人工智能必备基础:线性代数: SVD 矩阵分解】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/543/detail/7390
SVD 矩阵分解
内容介绍
一、特征值分解当中的限制
二、SVD 推导
三、基变换
一、特征值分解当中的限制
首先 N 乘 N 向量,普遍的问题来说,他也绝对不只是一个 N 乘 N 的,拿到任何的一个数据,基本都不是一个样本数,比如说一个 N 乘 N 的样本数表示 M,样本数 N 非常大,表示特征数 N 小一些。所以说拿到一个矩阵 M 乘 N 的一,而不是一个 N 乘 N 的,这个时候怎么办?
此时就要用到一个 SVD 一个矩阵分解,在一个 SVD 矩阵分解当中,如果在正常情况下,正常情况下 M 乘 N 的一个矩阵应该等于什么?能分解成一个 M 乘以 M 这是第一个矩阵,第二矩阵,一个 M 乘以 N 的,第三个矩阵的 N 乘上一个 N 的。然后现在来看矩阵分解完之后,原来 M 乘 N 的,现在就看这个矩阵的大小,现在分解完之后是比原来还大,这样效果不是很好么办?给他进行了一个筛选,有中间的一个矩阵,中间的矩阵当中存的都是特征值,那特征值可以选一些大的,因为它对应的特征向量越重要,所以说能代替原始的一个矩阵。
若矩阵形状发生改变
矩阵 M 和 N 非常大
M×N 的矩阵可以分解为 M×M、M×N 和 N×N 的矩阵
分解后计算量反而增大,所以继续对特征值进行分解
照样按照特征值的大小来进行筛选,一般前 10% 的特征值(甚至更少)
的和就占到了总体的 99% 了。
取前 K 个进行分析
但现在想找的是什么?可能并不想找原始 a 这个矩阵所有的一些信息,想找出来他绝大多数信息做这样一个代表,所以说 SVD,做了这么一件事儿,对于中间来说,对特征值大小进行筛选了,比如现在一共有 100 个特征值,第一个可能特征值大小是七,第二可能是六,然后五四,再从第五开始,他可能是一,一然后后面是零点儿零三然后是 0.005,然后 0.0000 一非常小的一个值,我们发现如果取前五个,它占所有多少,取了之后发现前五个特征值就能占到总体的 99%,那就足够了,因为特征值的大小是一个重要程度,把前 99% 都拿出来之后,这就是一个进货代表了。一般情况下,前 10% 的特征值,甚至更少的情况下,就能占到总体的百分之百分之非常多了,一般是取百分之九十五为界限都可以,主要的情况下就去前几个就可以,对于这样一个问题,如果说取前 K 个之后,原来 M 乘 N 就变成了一个 M 乘以 K 的矩阵中间变成了对角阵,那他就是一个 K 乘 K 的,最后这就是一个 K 乘 N 的,把它们乘在一起之后就能还原成一个 M 乘 N 的一个矩阵,这样就帮我们完成了一个矩阵的近似了。所以说 SVD 最重要的一个点就是他想让帮助我们得到矩阵的一个近似。一方面尽量减少了主要的信息,SVD 在很多方面都是能用到的,比如特征压缩,特征降维,尤其现在有推荐系统,比如说用户量,想去推荐的时候,提取出一些主要的信息就可以了。
二、SVD 推导
SVD 简单的一个推倒。在这里对于 SD 推倒,只需要简单的了解一下可以并不需要把这个东西背下来,比如现在有这样一个二维矩阵 M,然后可以找到一组标准正交基 V1 和 V2,使得 MV1 和 MV2 是一个正交的,这是当前的一个前提,就是有这样一个二维矩阵,并且可以找到这样一组标准正交基使得他们之间是一个正交的。既然现在有这样一组正交基,那有这组正交基之后,相当给了一个坐标轴,那我用这个 V1 和 V2 代表这样的一个单位方向。现在 MV1 和 NV 是个向量,光有一个方向还不行,还得有一个长度,但它的长度假设出,长度乘上单位一个方向,这样我就先把 V1 和 V2 分别表示出来了。那表示出来之后,在这组基当中,比如说一个向量 X,他应该是怎么在这组基进行表现的。正常情况下,X,Y 在 M 点做投影,看看 X 轴上多长,看 Y 轴多长,这样就把他的一个值算出来。现在要去求当前这个 X 向量在 V1 这个方向上它的一个投影是等于多少,这是它的一个投影没问题是当前他在这个方向投影,然后 V2 方向的一个投影这就是他的一个向量的表示。所以现在做这样一件事,对于 X 在这组基当中表示,适用于它的投影,投影表示它的一个长度,就可以做的,然后为了使得方便,比如说这个内积是,是一个点积,这个东西你看像是一个行向量,一个三二乘上乘上一个列向量三三,这一个行向量乘列向量是八三乘三加上二乘三,所以现在求这个点乘可求内积,可以转换成一个行向量乘列向量,那行向量乘列向量,就把它给表达出来。前提:对于一个二维矩阵 M 可以找到一组标准正交基 V1 和 V2 使得 Mv1 和 Mv2 是正交的。
使用另一组正交基 u1 和 u2 来表示 Mv1 和 Mv2 的方向
其长度分别为:
可得:
对于向量 X 在这组基中的表示:
(点积表示投影的长度,可转换成行向量乘列向量)
可得
从而
简化得
向量的表示及基变换
向量可以表示为(3,2)
实际上表示线性组合:
基:(1,0)和(0,1)叫做二维空间中的一组基
三、基变换
基是正交的(即内积为 0,或直观说相互垂直)
要求:线性无关
在这里,给大家简单的进行了一个解释,这是 S 怎么样来的?在学习过程当中,如果大家对这个 S 推导不太感兴趣简单看一下就可以,因为一般情况下工具包一行代码就能求出来,并不需要我们自己来去实际的进行一个求解。一个基当中,基为什么要做 SVD 以及最终 SVD 的一个结果是长什么样子。在补充强调下基的一个性质,就是它有一个要求,要求是个正交的,这样的情况下,如果说 Y 轴它不是一个正交的,Y 轴和 X 轴之间夹角小于 90 度意味着什么?一旦他们内急为零吗?有相就是一旦内积为零意思垂直,垂直的时候内积为 0,所以说这个时候他们两个之间就是线性无关了,这样一个前提基必须是线性无关的,因为不希望一个指标能用另一个指标来表示