突然忘记特征值和特征向量是啥了,怎么求也忘记了,然后看了一下别人的博文,觉得写的太TM牛逼了,很有必要搬运一下。改了这个大佬后面的内容,因为我感觉他最后那部分写的让我不是很懂,应该是v向量在X特征向量方向上拉伸特征值倍,但是作者却用的是w向量在X特征向量方向上拉伸特征值倍。大佬后面的例子有点过于巧合了,w和v向量算出来的值都是(1,1)很容易造成误解认为就是在w向量上沿着X特征向量方向上拉伸特征值倍的,实际上是在v上操作的。大佬的思路真的很通透!
特征值特征向量是基于矩阵的,所以先来说说矩阵。
矩阵到底在干嘛?
以经典的\(Ax=b\)为例,假设\(A\)是一个\(nxn\)的矩阵,\(x\) 和 \(b\) 都是\(nx1\)的向量。
\(A = \left[ \begin{matrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{matrix} \right], x = \left[ \begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{matrix} \right], b = \left[ \begin{matrix} b_1 \\ b_2 \\ \vdots \\ b_n \end{matrix} \right]\)不难看出,矩阵就是由很多列向量组成的,所以在说矩阵之前先来简单说一下向量。
向量有长度有方向,但这个长度方向要有意义,或者说可度量,就必须要有参考系,也就是坐标系,这样它在哪(方向),长度是多少(与原点的距离)等就都确定了。
坐标系不是唯一的,但有一个标准坐标,叫笛卡尔坐标,简称 I 坐标。
那由一系列向量组成的矩阵到底代表什么意思呢?可以从2个角度理解矩阵:
1. 矩阵是一个变换,经过变换A,向量 x 变成了向量b。在这里,坐标系始终是I,不变,你可以把A想象成一个传送门,任何向量经过这个传送门,嗖的一下就被瞬间传送到了另一个点成为另一个向量,而你到底能被传送到哪跟你本身的位置有关,也跟这个传送门的性能有关,换句话说同一个传送门,不同的向量被传送到不同的位置,同一个向量,换一个传送门,也会被传送到不同的位置。
2. 矩阵本身就是一个坐标系。这个不难理解,常见的I坐标系,比如二维坐标,他的两个坐标轴就是(1,0),(0,1)两个向量,把这两个向量按列排列就是一个矩阵,所以矩阵就代表了坐标系,每一个行向量就是他的一个坐标轴。
那一个矩阵乘以一个向量,比如 Ax 代表什么意思呢?之前说一个向量单看是没有意义的,你要放在一个坐标系下才能度量,而左乘一个矩阵A就代表它的坐标系是A,这个向量在A坐标系下的坐标为x,也就是这个向量投影到A的第1, 2, …, n列坐标轴的长度为\(x_1, x_2, \cdots, x_n\)。
\(A = \left[ \begin{matrix} a_{11} & a_{12} & \cdots & a_{1n} \\ a_{21} & a_{22} & \cdots & a_{2n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{n1} & a_{n2} & \cdots & a_{nn} \end{matrix} \right] \left[ \begin{matrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{matrix} \right] = x_1 \left[ \begin{matrix} a_{11} \\ a_{21} \\ \vdots \\ a_{n1} \end{matrix} \right] + x_2 \left[ \begin{matrix} a_{12} \\ a_{22} \\ \vdots \\ a_{n2} \end{matrix} \right] + \cdots + x_n \left[ \begin{matrix} a_{1n} \\ a_{2n} \\ \vdots \\ a_{nn} \end{matrix} \right] \)我们再来看Ax=b,发现什么了吗?我们之前说一个向量单看是没有意义的,你要放在一个坐标系下才能度量,b 前面没有任何矩阵,但它也需要坐标系,没有指定坐标系的时候坐标系是I,所以 b 前面其实被略去了一个I,也就是 Ax=Ib 。 Ax 描述的是一个向量,它在A坐标系下的坐标是 x, Ib 描述的也是一个向量,它在 I 坐标系下的坐标是 b ,二者相等,说明 x 和 b 其实是一个向量啊,他们只不过是在不同坐标系下的不同表示而已。你可以理解为这个点从来没动过,它只是换了一个坐标系来看这个点而已。就好像拍照,你从正面拍侧面拍,仰拍俯拍,你拍的都是一个对象,但拍照角度不一样,你会得到不同的照片。
来看个数学上的例子
\(A = \left[ \begin{matrix} 1 & -1 \\ 1 & 1 \end{matrix} \right], x = \left[ \begin{matrix} 2 \\ 1 \end{matrix} \right], I = \left[ \begin{matrix} 1 & 0 \\ 0 & 1 \end{matrix} \right], b = \left[ \begin{matrix} 1 \\ 3 \end{matrix} \right]\)(2, 1)和(1, 3)就是同一个向量,只不过前者是在A下的表示,后者是在I下的表示。
那矩阵乘以矩阵,比如A * B,又代表什么意思呢?我们说向量需要坐标系,而矩阵就是由向量组成的啊,所以矩阵也需要坐标系。所以A * B的意思是B这个坐标系的坐标系是A,那A的坐标系是什么呢?是 I,有没有点像套娃一样?所以A * B实际上是I * A * B,A * B得到的就是这个坐标系在 I 下的表示。
有了上面的基础,我们来看特征值和特征向量。
特征值和特征向量是什么?
数学上定义当 Ax=λx 时 x 是A的特征向量, λ 是A的特征值。
我们用坐标系的角度来理解,那么 Ax=λx 代表的意思是有一个向量,在A坐标下是 x ,我换 I 坐标去看它,发现它看着还是 x 这个方向,只不过伸缩了λ倍。
空间中无数的向量,绝大部分向量从A坐标看是一个样子,从 I 坐标看就面目全非(方向长度都变了),而某些很特殊的向量,你会发现无论在A坐标下看还是I坐标下看都是那个样子,只不过缩放了λ倍。
无需改变方向,只需要伸缩就可以在两个坐标系间来去自如,如此稳定可靠,那一个向量在两个坐标系间穿梭的时候,我是不是可以把这些特征向量作为锚点或者说桥梁。也就是说一个向量,我知道它在A坐标系下的表示 w ,我可以先求其在A的特征向量组成的坐标系 X 下的表示 v ,然后按对应的特征值伸缩后再结合 X 就可以转换到I坐标系。
简单用数学表示一下(Ib是在I坐标系下,即笛卡尔坐标系下的向量b):
Aw=A(Xv)=XΣv=Ib
这里的Σ是特征值对角矩阵,为什么AX=XΣ呢,举个例子:
假设\(X=[x_1 \quad x_2], Σ = [x_1 \quad x_2] \left[ \begin{matrix} \lambda_1 & 0 \\ 0 & \lambda_2 \end{matrix} \right]\)
\(AX=[Ax_1 \quad Ax_2],XΣ = [\lambda_1 x_1 \quad \lambda_2 x_2]\),因为Ax=λx,所以AX=XΣ。
也就是说,你知道了 A 所有互相独立的特征向量和特征值,你可以完全抛开A, w 和 X 无论在哪个坐标系下位置都是相对的,你就可以假设 I 坐标系下也有一个向量坐标为 w ,然后它沿着各个特征向量方向伸缩对应的特征值倍,比如沿着 I 坐标系下的 x 方向伸缩 λ 倍,就能得到目标向量在 I 坐标系下的表示。
来看个数学上的例子
\(A = \left[ \begin{matrix} 4 & 1 \\ 2 & 3 \end{matrix} \right]\)来求它的特征向量和特征值(det表示求行列式)。
\(det(A-\lambda I)=det \left[ \begin{matrix} 4-\lambda & 1 \\ 2 & 3-\lambda \end{matrix} \right]=0 \\ (4-\lambda)(3-\lambda) – 2 \times 1 = \lambda^2 – 7 \lambda + 10 =0\)求得\(\lambda=2\)或\(\lambda=5\)
对于\(\lambda=2\),求特征向量:
\((A-2I)x=\left[ \begin{matrix} 2 & 1 \\ 2 & 1 \end{matrix} \right] \left[ \begin{matrix} x_1 \\ x_2 \end{matrix} \right] = 0\)解得:\(2x_1+x_2 = 0 \Rightarrow x = c \left[ \begin{matrix} 1 \\ -2 \end{matrix} \right] (c \not= 0, c是整数)\)
同理对于\(\lambda=2\),求特征向量\( x = c \left[ \begin{matrix} 1 \\ 1 \end{matrix} \right] (c \not= 0, c是整数)\)
因此\(X=\left[ \begin{matrix} 1 & 1 \\ -2 & 1 \end{matrix} \right]\)(两列来自两个特征向量)。\(Σ=\left[ \begin{matrix} 2 & 0 \\ 0 & 5 \end{matrix} \right]\)(特征值组成对角矩阵)
假设在A得坐标系下存在一个向量\(w=\left[ \begin{matrix} 1 \\ 1 \end{matrix} \right]\),把这个w转换到X得坐标系下计算v:
\(w=\left[ \begin{matrix} 1 \\ 1 \end{matrix} \right]=Xv=\left[ \begin{matrix} 1 & 1 \\ -2 & 1 \end{matrix} \right]v\)求得\(v=\left[ \begin{matrix} 0 \\ 1 \end{matrix} \right]\)
验证Aw=A(Xv)=XΣv=Ib:
\(Aw=\left[ \begin{matrix} 4 & 1 \\ 2 & 3 \end{matrix} \right]\left[ \begin{matrix} 1 \\ 1 \end{matrix} \right]=\left[ \begin{matrix} 5 \\ 5 \end{matrix} \right]\) \(XΣv=\left[ \begin{matrix} 1 & 1 \\ -2 & 1 \end{matrix} \right]\left[ \begin{matrix} 2 & 0 \\ 0 & 5 \end{matrix} \right]\left[ \begin{matrix} 0 \\ 1 \end{matrix} \right]=\left[ \begin{matrix} 5 \\ 5 \end{matrix} \right]\)所以Aw=A(Xv)=XΣv满足,那么w转换在 I 坐标系下对应坐标就是(5, 5)。
为什么这里明明可以用Aw直接求出在I坐标系下的对应坐标,还有绕远路用XΣv来算呢?可以做降维和压缩。维度越多,计算量存储量就越大,为了节省计算量和空间,通常需要进行压缩。A的维度是n维,我不知道我该丢掉哪个维度。可是换成 X 就不一样了,每个维度(对应 X 的一列,也就是某一个特征向量)变换到 I 坐标系下要伸缩λ倍,如果我要丢掉一些维度,我肯定丢掉λ值小的维度啊。著名的主成分分析PCA就是用到了特征分解。
参考来源
1.Dorothy. 简单易懂,说人话理解矩阵和特征值特征向量. 知乎