矩阵的特征值、特征向量的概念
这里,我们讨论的是n阶的方阵A
定义
从向量的定义可知,它是方向和长度的结合体。当一个线性变换A作用在n维线性空间V中的某一非零向量x上时,便是对该向量的长度和方向进行变化。然而,存在一些向量,线性变换A并没有改变其方向,而只是改变了长度,这种向量,叫做线性变换A的特征向量,它在变换中被改变的倍数,叫做它的特征值。用数学公式表示这一概念,即:
Ax=λx(1)
其中,
λ的个线性变换
A的某一个特征值。从公式上可以轻易发现,如果某一向量
x是线性变换
A的特征向量,那么与其方向相同的任意长度(不为零)向量,都是
A的特征向量,并且属于同一个特征值
λ。由于相同方向的特征向量具有相同特征值,我们可以同特征值来描述这一族向量(
同一个特征值,可以有多个方向的特征向量)。
从公式(1)中,可以看出特征向量和特征值的计算方法:
|λE−A|=0(2) (λE−A)x=0(3)
对应于同一个线性变换A,可以有多个特征向量(方向不同),但是有多个特征向量可以对应同一个特征值。 一个向量是一个方向,两个不同方向的向量就可以张成一个空间。在相同特征值的特征向量张成的空间内,任何一个向量在变换A下,都有相同的放大倍数λ。
公式(2)的左侧,总可以展成如下形式的多项式:
|λE−A|=λn−(a11+a22+⋯+ann)λn−1+⋯+(−1)n|A|
所以求特征值就是求下面方程的解:
λn−(a11+a22+⋯+ann)λn−1+⋯+(−1)n|A|=0(4)
关于从方程(4)得到的特征值,有几个比较重要的结论(参考资料1):
-
n阶矩阵在复数范围内,一定有n个特征值(重特征值按重数计算个数)。
-
n阶矩阵在实数范围内有多少个特征值是不一定的
-
n阶实对称矩阵可以看成是一个特例,因为它一定有n个实特征值(重特征值按重数计算个数)。如果其中一个特征值λ=0,矩阵的秩r(A)=k,(0<k<n,k是正整数),则λ=0恰为A的n−k重特征值。
- 如果 n阶矩阵A不是对称矩阵,那么,λ=0至少为A的n−k重特征值。
关于特征值和特征向量的理解,参考资料3写的也很好,知乎上有很多大神的回答直击要害,对问题的理解很有帮助。
作用
参考资料4中,认为矩阵的变换有三个作用:旋转,拉伸和投影。
当A是一个n×n方阵时,只涉及到旋转,拉伸。如果矩阵在实数域内可以得到n个特征值(重特征值按重数计算个数),那么利用其对应的特征向量(单位化后)组成矩阵正交Q可以使得:
A=QΛQ−1
其中正交矩阵
Q起到旋转作用(
旋转矩阵都是正交矩阵,且行列式都为1),对角矩阵
Λ起拉伸作用。
当矩阵不是方阵而是
m×n时,可以对其进行
SVD分解
在之前,想研究一下正交矩阵。
正交矩阵
按照定义,正交矩阵是QQT=E,它的行列式为1或者-1。
正交矩阵的性质
了解正交矩阵的性质,在很多计算方面,能够更深入了解所进行的运算的意义。
我们这里说的都是有限维欧式空间内的正交矩阵
- 正交矩阵的转置、伴随矩阵、之间的积矩阵都是正交矩阵;
- .每一行(列)都是单位向量
- 任意两行或两列相互垂直
- 其行列式等于±1
假设n维欧式空间Rn中,一个正交变换Q存在一个一一对应的正交矩阵Q。所以研究正交变换的性质,可以转为研究正交矩阵。
根据正交矩阵行列式的值,将其分为两类:|Q|=1,为第一类;|Q|=−1,为第二类。
第一类正交矩阵,当其左乘一个向量时,几何意义是使该量在Oxyz坐标系下旋转;
第一类正交矩阵,当其左乘一个向量时,几何意义是使该向量沿Oxyz某一轴(点)进行反射;[5]
无论是哪一类正交矩阵,其左乘向量,均不会改变向量的长度,即|Qv|=|Q|⋅|v|=|v|。
所以上面将矩阵A拆成A=QΛQ−1的形式后,由于Q是正交矩阵,它作用在向量v上,只是对其进行旋转或者反射,而对向量长度有影响的是矩阵Λ。其上的元素由矩阵A的特征值组成。
需要注意的是,只有当矩阵A能够在实数域内有n个特征值(重数也计入)的情况下,可以如此分解。但是,对更多的一般性矩阵A,在实数域内没有n个实特征根,或者是更一般的m×n维矩阵,此时,我们用SVD分解的方法进行研究。
SVD分解
协方差
假设有两个变量X和Y,他们的取值为X={x1,x2,⋯,xn},Y={y1,y2,⋯,yn},他们的平均值(期望)记为是E(X)=X¯=1n∑xi,E(Y)=Y¯=1n∑yi。X和Y的协方差就是研究两个变量之间的相关关系。比如当一个的取值不断增大时,另一个变量的取值如何变化,知乎上的一篇文章( 如何通俗易懂地解释「协方差」与「相关系数」的概念?)讲的很好。
根据奇异值分解
与n×n阶矩阵按特征值分解相似,任一m×n阶矩阵A也可以写成类似的形式:
A=UΣVT(5)
那么得到的U是一个
m×m的方阵(里面的向量是正交的,
U里面的向量称为左奇异向量),
Σ是一个
m×n的矩阵(除了对角线的元素都是0,对角线上的元素称为奇异值),
VT(
V的转置)是一个
n×n的矩阵,里面的向量也是正交的,
V里面的向量称为右奇异向量)。
求法
利用如下公式可以计算出各矩阵:
(ATA)vi=λivi(6)
δi=λi−−√(7)
ui=1δiAvi(8)
对方程计算,得到的
v,就是的
右奇异向量;
σ就是
奇异值,
u就是
左奇异向量。
作用
当矩阵A=UΣVT左乘一个向量v时,只有Σ对向量的长度进行了拉伸(收缩),而矩阵U、V都只是对其进行旋转或反射。当作用在图像上时,也只有Σ对图像进行了各个方向上的伸缩改变。
用奇异值分解图像

用奇异值的方法,将这幅图像进行分解,得形如A=UΣVT格式的矩阵。其中Σ是由矩阵奇异值由大到小排列组成的对角矩阵。
我们分别保留前10,30,100,300个奇异值,其余奇异值设为0,比较图像的变化:

奇异值保留前10

奇异值保留前30

奇异值保留前100

奇异值保留前300。
代码
import cv2
import numpy as np
from numpy import linalg as la
from scipy.misc import imsave
import scipy
im = cv2.imread('lena512.bmp')
print(im.shape)
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
U, Sigma, VT = la.svd(gray)
print('矩阵U的形状:', U.shape, ' 矩阵Sigma的形状:',
Sigma.shape, ' 矩阵VT的形状:', VT.shape)
se = np.eye(512, dtype=np.float64)
n = 512
i = 0
k = 30
while i < n:
if i > k - 1:
Sigma[i] = 0
se[i, i] = Sigma[i]
i += 1
svt = np.dot(se, VT)
usvt = np.dot(U, svt)
imsave('USVT_Sigma=30m.bmp', usvt)
参考资料
- 秦川, 李小飞. 方阵的秩与特征值的关系[J]. 课程教育研究:学法教法研究, 2015(27):120-120.
- 如何通俗易懂地解释「协方差」与「相关系数」的概念?
-
如何理解矩阵特征值?马同学的回答
- 矩阵的特征值分解与奇异值分解的几何意义
- 杜美华, 孙建英. 正交变换的几何意义及其应用[J]. 哈尔滨师范大学自然科学学报, 2014, 30(3):36-39.