矩阵是一个非常抽象的数学概念,很多同学都对其望而生畏。但是,如果能够具体的理解了内部含义,就如同打开了一扇新的大门。
本文主要讲的是特征向量(Eigenvector)和特征值(Eigenvalue)。
01 特征向量(Eigenvector)是什么?
基向量
我们一般研究数学,都是在直角坐标系中,这就造就了两个基向量:v(0,1)和 u(1,0)。
为了说明特征向量,我们先看一下矩阵A和向量B(1,-1):
矩阵A
如果将A和B相乘,结果如下:
AB和2B
AB
矩阵实际上可以被看作为一个变换,AB实际上表达的意思是 向量B 通过矩阵A完成了一次变换,有可能只是拉伸,有可能是旋转,有可能两者都有。
2B
上图中,2B的理解就简单很多,是将向量B拉长2倍。
那么,特征向量的定义如下:
任意给定一个矩阵A,并不是对所有的向量B都能被A拉长(缩短)。凡是能被A拉长(缩短)的向量称为A的特征向量(Eigenvector);拉长(缩短)量就为这个特征向量对应的特征值(Eigenvalue)。
上例中,B就是矩阵A的特征向量,2是特征值。
特征值的求法
02 怎么求矩阵的平方和多次方
矩阵A
还是矩阵A,如果让你求矩阵A的平方,你可能会觉得挺容易的。
但是,如果让你求A的100次方呢?
还有那么容易吗?
按照上面的方法,一点规律没有,只能硬着头皮算。
补充一个概念:对角矩阵
对角矩阵
对角矩阵,顾名思义,只有对角线上有值,其他位置都是0。为什么对角矩阵特殊,如上图,C的平方就是对角线上数的平方,多次方也一样。
那么,怎么才能将矩阵A转变成矩阵C呢?
这就用到特征值和特征向量了。
A的特征值
A有两个特征值,对应两个特征向量:(1,0)和(1,-1)。
如果我们将两个特征向量看作是一个新的坐标系的基向量,并组合成矩阵D:
在机器学习领域也广泛使用的一个概念——矩阵的特征值与特征向量。[1]
我们先来看它的定义,定义本身很简单,假设我们有一个n阶的矩阵A以及一个实数lambda,使得我们可以找到一个非零向量x,满足:
如果能够找到的话,我们就称lambda是矩阵A的特征值,非零向量x是矩阵A的特征向量。[2]
几何意义
光从上面的式子其实我们很难看出来什么,但是我们可以结合矩阵变换的几何意义,就会明朗很多。
我们都知道,对于一个n维的向量x来说,如果我们给他乘上一个n阶的方阵A,得到Ax。从几何角度来说,是对向量x进行了一个线性变换。变换之后得到的向量y和原向量x的方向和长度都发生了改变。
但是,对于一个特定的矩阵A来说,总存在一些特定方向的向量x,使得Ax和x的方向没有发生变化,只是长度发生了变化。我们令这个长度发生的变化当做是系数lambda,那么对于这样的向量就称为是矩阵A的特征向量,lambda就是这个特征向量对应的特征值。
求解过程
我们对原式来进行一个很简单的变形:
这里的I表示单位矩阵,如果把它展开的话,可以得到一个n元的齐次线性方程组。这个我们已经很熟悉了,这个齐次线性方程组要存在非零解,那么需要系数行列式
不为零,也就是系数矩阵的秩小于n。
我们将这个行列式展开:
这是一个以lambda为未知数的一元n次方程组,n次方程组在复数集内一共有n个解。我们观察上式,可以发现 lambda 只出现在正对角线上,显然,A的特征值就是方程组的解。因为n次方程组有n个复数集内的解,所以矩阵A在复数集内有n个特征值。
我们举个例子,尝试一下:
假设:
那么
我们套入求根公式可以得出使得 f(lambda) = 0 的两个根 lambda1 lambda2,有:
这个结论可以推广到所有的n都可以成立,也就是说对于一个n阶的方阵A,都可以得到:
使用数学软件求解矩阵的特征值与特征向量,具体运算过程如下: