矩阵分析

看了这个视频后觉得自己是个没有学习过线代的人啊,感谢七月算法讲解的矩阵应用。本篇博文完全用作个人学习笔记。

一.我们通过图形化来描述一下矩阵的行列和转置间的关系和特性

这里写图片描述

(1)矩阵的行视图
我们以矩阵的每一行为组合,会得到一个几何图案。比如下图中的直线和平面;对于每一个矩阵计算式来说我们各个图形的交点就是矩阵方程未知数的解。(这里的行视图还真是有点机器学习中特征的意思呢)

这里写图片描述

(2)矩阵的列视图
其实通过矩阵乘法规则我们发现进行组合的时候,第一列的2和1都与x进行组合,第二列的-1和1与y进行组合,我们把这种类别分开。发现通过列视图来进行衡量的时候我们就把矩阵问题展现的更像简单的向量问题了。那么我们的未知数求解就变成了向量间的矢量加减。

这里写图片描述

二.线性相关和线性无关

这里我自己已经非常熟练了就不再深究了
这里写图片描述

三.Span、基、子空间

Span : 生成子空间,从总空间中选取局部向量张成的一个部分空间。

基 :其实就是基础的意思,在线代中一个空间的基础其实是少部分的向量,这少部分向量间进行线性的组合就可以表示整个空间的向量。这个少部分的向量就是这个空间的基。那么线性代数对基是怎么衡量的呢?这就用到了前文中提到的“线性相关无关”的概念了。如果从总空间中找个n个线性无关的向量当再向其任意添加一个都相关了,这n个向量就构成空间的一组基。

子空间:见Span后几个字

(1)列空间(m维)——A

前文说到列视图是转换成向量叠加的形式,那么我们也通过这种方式来理解列空间。首先我们找到矩阵的一组基来构成这个矩阵的生成空间,观察下图发现我们只要给两个列向量不同的倍数就可以张成整个列空间。这个空间是存在于三维空间的一个平面。我们任意添加一个不在这个平面的向量就可以张成三维空间,这里也跟我们前文说的相关的概念相通了。

这里写图片描述

(2)零空间(n维)——Ax=0

零空间不是矩阵本身的空间,而是Ax =0的解构成的空间。

这里写图片描述

(3)行空间(A*)
左零空间( A* x=0 )

(4)四个空间间的关系。

这里写图片描述
只是学还没发现在机器学习中有什么用,先做一下标注吧。另外转载一篇关于写四个子空间的博文:
http://blog.csdn.net/suqier1314520/article/details/13294493

(5)利用子空间看待线性方程的解

首先我们前面说过Ax=b有解的话,则b与x都在同一平面上才可以。这个时候b——>C(A);无解时这个结果自然不在这个平面上。
我们仔细看一下有解的情况,解的结构为x=p+v,代入得到A(p+v) = Ap + Av(Ap = b,Av=0)当零空间不为零时,这个结果不管怎么乘都是零,所以可以任意取值。这个时候有无穷个解(这里就是线代的魅力了,空间中虽然有多种组合但是最终的结果其实是一个样的),当零空间为零的时候就没有向量来组合了这个时候只有p了。也就是只有一个解了。

这里写图片描述

四.方阵的特征值和特征向量

特征值和特征向量当初考研的时候就感觉很迷糊的,没想到到现在还是逃不开要被他折磨的命运,这几天也看了很多的博文。发现可以通过各个角度来分析它的含义。这里转述看到的一篇博文的内容。

1)特征值:

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

这里写图片描述

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

这里写图片描述

其中Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角阵,每一个对角线上的元素就是一个特征值。我这里引用了一些参考文献中的内容来说明一下。首先,要明确的是,“一个矩阵其实就是一个线性变换”,因为一个矩阵乘以一个向量后得到的向量,其实就相当于将这个向量进行了线性变换。比如说下面的一个矩阵:

这里写图片描述

它其实对应的线性变换是下面的形式:

这里写图片描述

因为这个矩阵M乘以一个向量(x,y)的结果是:

这里写图片描述

上面的矩阵是对称的,所以这个变换是一个对x,y轴的方向一个拉伸变换(每一个对角线上的元素将会对一个维度进行拉伸变换,当值>1时,是拉长,当值<1时时缩短),当矩阵不是对称的时候,假如说矩阵是下面的样子:

这里写图片描述

它所描述的变换是下面的样子:
这里写图片描述

这其实是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最主要的变化方向(变化方向可能有不止一个),如果我们想要描述好一个变换,那我们就描述好这个变换主要的变化方向就好了。反过头来看看之前特征值分解的式子,分解得到的Σ矩阵是一个对角阵,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)

当矩阵是高维的情况下,那么这个矩阵就是高维空间下的一个线性变换,这个线性变化可能没法通过图片来表示,但是可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。也就是之前说的:提取这个矩阵最重要的特征。总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么,可以将每一个特征向量理解为一个线性的子空间,我们可以利用这些线性的子空间干很多的事情。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。
————————————————————–补充——————————————————————-
那么为什么矩阵的特征值就被用来表示矩阵的重要特征了呢?其实这个还是要回归到特征值的求解式中来看。其实对于特征向量来说是对矩阵每一行的一个基础变化,至于这个变化有多大呢,得看对应特征值的大小,特征值大的对矩阵的变换产生的影响就大。这样就对应起来了。

(2)特征值的分解 —— 矩阵的相似对角化

为了跟后文的SVD联系起来,这里关注一下最后求和的式子。什么用处在PVA中会有所说明。
这里写图片描述

下面我们来看一下今天的重头戏——- PCA降维

这里写图片描述

协方差矩阵的对角元表示的行向量的方差,负对角线上是行向量间的协方差。我们在机器学习的样本数据中,我们希望两条样本间的差异性大一点,相关性弱一点这样会训练出比较好的模型。所以我们现在的一个任务就是将协方差矩阵相似对角化。下图中展现的推导过程实际上就是将相似对角化引入了。

这里写图片描述

下面展示降维的实例:

这里写图片描述

下面是第二个重头戏————SVD
这里继续引用博文:

下面谈谈奇异值(SVD)分解。特征值分解是一个提取矩阵特征很不错的方法,但是它只是对方阵而言的,在现实的世界中,我们看到的大部分矩阵都不是方阵,比如说有N个学生,每个学生有M科成绩,这样形成的一个N * M的矩阵就不可能是方阵,我们怎样才能描述这样普通的矩阵呢的重要特征呢?奇异值分解可以用来干这个事情,奇异值分解是一个能适用于任意的矩阵的一种分解的方法:
这里写图片描述

假设A是一个N * M的矩阵,那么得到的U是一个N * N的方阵(里面的向量是正交的,U里面的向量称为左奇异向量),Σ是一个N * M的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),V’(V的转置)是一个N * N的矩阵,里面的向量也是正交的,V里面的向量称为右奇异向量),从图片来反映几个相乘的矩阵的大小可得下面的图片

这里写图片描述

那么奇异值和特征值是怎么对应起来的呢?首先,我们将一个矩阵A的转置 *A,将会得到一个方阵,我们用这个方阵求特征值可以得到:

这里写图片描述

这里得到的v,就是我们上面的右奇异向量。此外我们还可以得到:

这里写图片描述

这里的σ就是上面说的奇异值,u就是上面说的左奇异向量。奇异值σ跟特征值类似,在矩阵Σ中也是从大到小排列,而且σ的减少特别的快,在很多情况下,前10%甚至1%的奇异值的和就占了全部的奇异值之和的99%以上了。也就是说,我们也可以用前r大的奇异值来近似描述矩阵,这里定义一下部分奇异值分解:
这里写图片描述

r是一个远小于m、n的数,这样矩阵的乘法看起来像是下面的样子:
这里写图片描述

右边的三个矩阵相乘的结果将会是一个接近于A的矩阵,在这儿,r越接近于n,则相乘的结果越接近于A。而这三个矩阵的面积之和(在存储观点来说,矩阵面积越小,存储量就越小)要远远小于原始的矩阵A,我们如果想要压缩空间来表示原矩阵A,我们存下这里的三个矩阵:U、Σ、V就好了。

三、奇异值与主成分分析(PCA):

 主成分分析在上一节里面也讲了一些,这里主要谈谈如何用SVD去解PCA的问题。PCA的问题其实是一个基的变换,使得变换后的数据有着最大的方差。方差的大小描述的是一个变量的信息量,我们在讲一个东西的稳定性的时候,往往说要减小方差,如果一个模型的方差很大,那就说明模型不稳定了。但是对于我们用于机器学习的数据(主要是训练数据),方差大才有意义,不然输入的数据都是同一个点,那方差就为0了,这样输入的多个数据就等同于一个数据了。以下面这张图为例子:

这里写图片描述

这个假设是一个摄像机采集一个物体运动得到的图片,上面的点表示物体运动的位置,假如我们想要用一条直线去拟合这些点,那我们会选择什么方向的线呢?当然是图上标有signal的那条线。如果我们把这些点单纯的投影到x轴或者y轴上,最后在x轴与y轴上得到的方差是相似的(因为这些点的趋势是在45度左右的方向,所以投影到x轴或者y轴上都是类似的),如果我们使用原来的xy坐标系去看这些点,容易看不出来这些点真正的方向是什么。但是如果我们进行坐标系的变化,横轴变成了signal的方向,纵轴变成了noise的方向,则就很容易发现什么方向的方差大,什么方向的方差小了。

一般来说,方差大的方向是信号的方向,方差小的方向是噪声的方向,我们在数据挖掘中或者数字信号处理中,往往要提高信号与噪声的比例,也就是信噪比。对上图来说,如果我们只保留signal方向的数据,也可以对原数据进行不错的近似了。

PCA的全部工作简单点说,就是对原始的空间中顺序地找一组相互正交的坐标轴,第一个轴是使得方差最大的,第二个轴是在与第一个轴正交的平面中使得方差最大的,第三个轴是在与第1、2个轴正交的平面中方差最大的,这样假设在N维空间中,我们可以找到N个这样的坐标轴,我们取前r个去近似这个空间,这样就从一个N维的空间压缩到r维的空间了,但是我们选择的r个坐标轴能够使得空间的压缩使得数据的损失最小。

还是假设我们矩阵每一行表示一个样本,每一列表示一个feature,用矩阵的语言来表示,将一个m * n的矩阵A的进行坐标轴的变化,P就是一个变换的矩阵从一个N维的空间变换到另一个N维的空间,在空间中就会进行一些类似于旋转、拉伸的变化。

这里写图片描述

而将一个m * n的矩阵A变换成一个m * r的矩阵,这样就会使得本来有n个feature的,变成了有r个feature了(r < n),这r个其实就是对n个feature的一种提炼,我们就把这个称为feature的压缩。用数学语言表示就是:

这里写图片描述

但是这个怎么和SVD扯上关系呢?之前谈到,SVD得出的奇异向量也是从奇异值由大到小排列的,按PCA的观点来看,就是方差最大的坐标轴就是第一个奇异向量,方差次大的坐标轴就是第二个奇异向量…我们回忆一下之前得到的SVD式子:
这里写图片描述

在矩阵的两边同时乘上一个矩阵V,由于V是一个正交的矩阵,所以V转置乘以V得到单位阵I,所以可以化成后面的式子

这里写图片描述

将后面的式子与A * P那个m * n的矩阵变换为m * r的矩阵的式子对照看看,在这里,其实V就是P,也就是一个变化的向量。这里是将一个m * n 的矩阵压缩到一个m * r的矩阵,也就是对列进行压缩,如果我们想对行进行压缩(在PCA的观点下,对行进行压缩可以理解为,将一些相似的sample合并在一起,或者将一些没有太大价值的sample去掉)怎么办呢?同样我们写出一个通用的行压缩例子:

这里写图片描述

这样就从一个m行的矩阵压缩到一个r行的矩阵了,对SVD来说也是一样的,我们对SVD分解的式子两边乘以U的转置U’
这里写图片描述

终于结束、、、、、、

  • 8
    点赞
  • 51
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值