如何理解线性代数中的秩(rank)?

  • 更新时间: 2018-06-29
  • 来源: 原创或网络
  • 浏览数: 8次
  • 字数: 4783
  • 发表评论

秩的定义: 一个矩阵A的列秩是 A的线性无关的纵列的极大数目。类似地,行秩是 A的线性无关的横行的极大数目。 矩阵的列秩和行秩总是相等的,因此它们可以简单地称作矩阵 A的秩。通常表示为 rk(A) 或 rank A。 m× n矩阵的秩最大为 m和 n中的较小者。有尽可能大的秩的矩阵被称为有满秩;类似的,否则矩阵是秩不足的。 所以矩阵列空间、行空间的维度相等,并且为矩阵的秩不是偶合而是必然的。任意一个矩阵都可以经过一系列的初等行变换为阶梯形矩阵,而阶梯形矩阵的秩对于其中非零行的个数。 所以矩阵秩的计算方法:用初等行变换把矩阵化为阶梯形,则该阶梯形矩阵中的非零行数就是所求矩阵的秩。 例子如下: 如何理解线性代数中的秩(rank)?,by 5lulu.com


 

1.把矩阵当做样本集合,每一行(或每一列,这个无所谓)是一个样本,那么矩阵的秩就是这些样本所张成的线性子空间维数。如果矩阵秩远小于样本维数(即矩阵列数),那么这些样本相当于只生活在外围空间中的一个低维子空间,这样就能实施降维操作。举个例子,同一个人在不同光照下采得的正脸图像,假设每一张都是192x168的,且采集了50张,那构成的数据矩阵就为50行192x168列的,但是如果你做SVD分解就会发现,大概只有前10个奇异值比较大,其他的奇异值都接近零,因此实际上可以将接近零的奇异值所对应的那些维度丢掉,只保留前10个奇异值对应的子空间,从而将数据降维到10维的子空间了。

2.把矩阵当做一个映射,既然是映射,那就得考虑它作用在向量x上的效果Ax。注意Ax相当于A的列的某个线性组合,如果矩阵是低秩的,这意味着这些列所张成的空间是外围空间的一个低维子空间,这个空间由Ax表达(其中x任意)。换句话说,这个矩阵把R^n空间映射到R^m空间,但是其映射的像只在R^m空间的一个低维子空间内生活。从SVD理解的话,Ax=USV'x,因此有三个变换:第一是V'x,相当于在原始的R^n空间旋转了一下坐标轴,这样只是坐标的变化,不改变向量本身(例如长度不变);第二是S(V'x),这相当于沿着各个坐标轴做拉伸,并且如果S的对角线上某些元素为零,那么这些元素所对应的那些坐标轴就相当于直接丢掉了;最后再U(SV'x),还是一个坐标轴旋转。总的来看,Ax就相当于把一个向量x沿着某些特定的方向做不同程度的拉伸(附带上一些不关乎本质的旋转),甚至丢弃,那些没被丢弃的方向个数就是秩了。

这样就有很多很直接的应用。例如考虑第一个意义。给定一堆数据,这些数据可能本身只是在一个低维子空间内生活(即可以用一个低秩矩阵表示),但是由于噪声存在,我们拿到这些数据时它们看起来像是外围空间中的点,没有任何可以降维的迹象(即矩阵是满秩的)。设我们拿到的数据是X,那么根据这个设定,X应该能分解为一个低秩矩阵L和一个噪声矩阵E的叠加,即X=L+E。现在问题是如何恢复出L,因为一旦找到L,就相当于去除了噪声,同时降低了数据的复杂度(即维度)。怎么恢复?可以通过求解min rank(L)+\|E\|_F^2, subject to X=L+E来恢复出L和E。秩就显式地被用在这个问题里了。当然,这个问题往往只是引子,无数论文在写出类似问题后不到三行就会把rank(L)换成\|L\|_*,这个就是另外一些故事了。。。

按我的经验,跟秩有关的问题以及几何意义,只需要仔细分析矩阵的SVD分解就能解决。但很可惜,大学里的线性代数更喜欢去介绍SVD的兄弟——特征值分解,而这个兄弟又往往只偏好对称阵,不像SVD这样所有实矩阵都可以分析,导致处理一般矩阵的秩时没有一个趁手的工具。


标签: 矩阵

我来评分 :6
0

转载注明:转自5lulu技术库

本站遵循:署名-非商业性使用-禁止演绎 3.0 共享协议