《机器学习线性代数基础》Python描述——第二章笔记

7 篇文章 0 订阅
6 篇文章 0 订阅

建议先看完上一篇内容再看此片

附上上篇链接:第一章笔记

“秩”——是映射后空间形态的决定因素

可以概况地说,由于矩阵乘法的作用,原始向量的空间位置甚至其所在空间的维度和形态都发生了变化,这便是矩阵乘法的空间映射作用。

对于m行n列的矩阵A,当m<n这种情况下,“矮胖”矩阵A压缩了原始空间。

第一种情况:如果这3个二维目标向量满足不全部共线,那么其所有的线性组合结果就能构成一个二维平面,即经过矩阵A的映射,整个三维空间被压缩成一个二维平面。
第二种情况:如果这3个二维向量是共线向量,即三者都在同一条直线上,那么其线性组合只能分布在二维平面中的一条穿过原点的直线上,也就是经过矩阵的映射作用,整个三维空间被压缩成了一维空间(一条直线)。

对于m行n列的矩阵A,当m>n这种情况下,“高瘦”矩阵无法覆盖目标空间。

第一种情况:如果两个向量线性无关,那么由这两个向量所张成的空间就是一个二维平面,尤其需要注意的是,这个二维平面不是那种前面见过的由x轴和y轴所构成的平面,而是一个“斜搭”在三维空间中,并且穿过原点的二维平面。虽然这个平面是二维的,但是这里面的每一个点都是三维的。
第二种情况:如果两个向量线性相关,那么二者的张成空间就是一条直线,同样地,这个直线是经过零点,并“斜穿”过三维空间的一条直线。

对于n行n列的方阵A,我们继续分情况讨论,核心问题依然是方阵A中各个列的线性相关性。

Rn空间中的向量经过A的映射,其目标空间的维度就是这n个n维列向量所张成空间的维度,其映射后所得到的空间的维度必然小于等于n,当且仅当这n个列线性无关时可以取等号。

矩阵各列所张成空间的维数被称为这个映射矩阵的秩,此外,秩也可以看作是该矩阵线性无关的列的个数。

利用Python来求解矩阵的秩:

A = np.array([[1, 0, 3],
              [0, 1, 4],
              [0, -1, 5]])
B = np.array([[1, -1, 0],
              [1, 1, 0]])
print(np.linalg.matrix_rank(A))
print(np.linalg.matrix_rank(B))

结果:
在这里插入图片描述

矩阵的本质就是映射

普通的矩阵A可以看作是一种正映射的过程,那与之对应的也就有逆映射,也就是A-1,这和函数与反函数有一定的类似。

零空间:对于给定的矩阵A,在映射的作用下满足灯饰Ax = 0成立的向量x 的集合,称为矩阵A零空间,记作N(A)。(如果一个矩阵满足可逆,则其零空间N(A)必须是零维的),如果矩阵A的各列满足线性无关,那么向量x就只有零向量这个唯一解;如果矩阵A的各列线性相关,那么x就有非零解。

左零空间:矩阵A的转置矩阵AT的零空间就是左零空间,既满足ATx=0等式成立的所有向量的集合,记作N(AT)。

行空间:对于m*n规模的矩阵A,其行空间是由矩阵各行的向量所张成的空间,哈u哪个角度来说,由于矩阵A的行向量就是转置矩阵AT的列向量,矩阵A的行空间也就是转置矩阵AT的列空间,记作C(AT)。

列空间:一个原始空间经过矩阵A的映射得到的对应空间,本质上就是该矩阵各列所线性组合的结果集合,记作C(A)。

不可逆矩阵也被称为“奇异矩阵”。

事实上,逆矩阵存在的前提条件是要保证矩阵是一个方阵,虽然不是所有的方阵都存在逆矩阵。
在映射方阵中,如果某个列向量可以写成其他列向量的线性组合,那么对应的矩阵映射一定是空间压缩的映射,一定不存在逆矩阵。

利用Python求解逆矩阵:

A = np.array([[1, 35, 0],
              [0, 2, 3],
              [0, 0, 4]])
A_n = linalg.inv(A)
print(A)
print(A_n)
print(np.dot(A, A_n))

结果:
在这里插入图片描述
向量空间的定义:一个向量空间是一个包含零向量的向量集和向量加法、实数标量乘法规则的综合。

对于线性方程组Ax=b,当且仅当向量b在矩阵A的列空间中时,方程组才有解。(对于有几个解甚至是无解的状态下又该如何处理,请看后面的章节)

行空间的维数 = 列空间的维数 = 矩阵A的秩
对于零空间,由矩阵A进行变换的原始空间是n维的,而映射后的列空间是r维的,两个空间的维数之差n-r就是空间压缩的维数,也就是零空间N(A)的维数。

决定方程组解的个数的因素:

设矩阵A的秩为r,行数为m,列数为n

  1. r = m = n 这种情况描述的是一个满秩方阵,不存在空间的压缩,同时,目标空间和列空间等维,意味着目标空间中的任意一个向量都在矩阵A的列空间上,也就是方程组一定有解,且仅有唯一解。
  2. r = m < n 方程组有解,但是有无数多个解。
  3. r = n < m 方程组要么无解要么有唯一解。
  4. r < n 且 r < m 可能无解,可能无数个解。

利用Python求解线性方程组:

要求线性方程组ax = b的解:
代码展示:

a = np.array([[1, 2, 3],
              [1, -1, 4],
              [2, 3, -1]])
b = np.array([14, 11, 5])
x = np.linalg.solve(a, b)
print(x)

结果:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值