线性代数的"基"情

线性代数是一门基情四射的学科。如果你理解了它的基情,你就更容易理解它。

龚升老师说过,线性代数中的线性可以理解为线性变换,代数可以理解为数的向量(线性)空间表示。因此线性代数就是研究向量空间和其上的线性变换的学科。这两个概念通过矩阵形式联系在一起。是一对好基友。没有向量空间,则线性变换无用武之地。没有线性变换,向量空间如一潭死水。

直观想象向量空间可以用来表示宇宙这个空间,而向量就是描述这个宇宙中任意一点的位置。任意不相关的一组向量都可以作为好基友。不相关是成为基的基础。这组基的每一个都是独一无二的。它们的线性组合可以表示这个向量空间中任意向量。一组基用列向量表示在一起,在一起,在一起就成了矩阵形式。这个基矩阵就可以用来表示这个向量空间。

这样的基组合有无穷组。不过它们并不相同,有好有坏。好基有一个共性,颜值高(其实是正交性),用x^T*x一看就知道这组基是好基。好基也有无穷个,在茫茫好基中如何找到最适合你的那一个呢,有个绝招叫投影法。

投影法不仅可以用来找好基,高维空间的一个点到子空间的投影,就成了著名的最小二乘法。将子空间的这组基变成函数形式,变成多项式,变成基函数,变成正交基函数,变成sin,cos。最后就得到了傅立叶级数。

通过观察傅立叶级数这组好基中的战斗机,我们发现一组好基在组织内部也有重要和不重要的区别。往往只需要前面几个重要的基函数就能近似表示出所需要的周期函数。往往只需要前面几个重要的基就能近似表示所需要的高维向量。问题来了,谁能体现基的重要性。。。那就是特征值。这个选大特征值对应的基的过程就叫做主成分分析PCA。

最后讲两句线性变换和向量空间之间的基情。

线性变换可以将向量在向量空间中任意转换,还可以在不同的向量空间之间转换。同一个向量空间的不同基可以通过线性变换进行转换。向量空间中的一个线性变换也可以用不同基进行表示,表示的结果是一组相似矩阵。

线性变换可以通过SVD分解成正交变换(和正交基形式类似)的组合。最后我们用Python编个程序画个图来帮助理解一下SVD过程。


import numpy as np
from matplotlib import pyplot as plt

M=np.array([[-0.2,-1],[1.1,0.5]])
U,s,V=np.linalg.svd(M)
S=np.array([[s[0],0],[0,s[1]]])
# plot process omit

将M(右上),V(左下),SV(右下)当作线性变换画出来。可以看出右上M这个不太规则的线性变换,被分解成两个正交变换U,V(翻转和旋转)和一个在x,y轴上进行拉伸或压缩的S变换。

左上 => 右上 M变换

等价于

      V变换   SV变换   USV变换

左上 => 左下 => 右下 => 右上

svd_demo