在线性代数中,我们都学过特征值与特征向量,但是对于这两者的意义以及应用却理解得不是那么深刻。机器学习中,我们也经常会遇到特征值与特征向量这两个概念,小编今天就给大家具体分享一下这两者的基本知识。
一、特征值和特征向量定义
设A为n阶方阵,如果数λ和n为非零列向量x,并使得Ax=λx成立,那么就把λ叫做方阵A的一个特征值,x就是方阵A的对应于特征值λ的一个特征向量。
需要注意:
1.A是方阵。(对于非方阵来说,是不存在特征值的,但是会存在条件数。)
2.特征向量x为非零列向量。
二、特征值和特征向量几何意义
如果把矩阵当做是运动,那么对于运动来说,最重要就是速度和方向了。
特征值表示运动的速度
特征向量表示运动的方向
接下来我们调整向量v的方向,使其看起来特殊一点
特征向量在一个矩阵的作用下作伸缩运动,特征值决定了伸缩的幅度。如果特征值大于1.那么所有属于此特征值的特征向量变长;当特征值大于0小于1时,那么特征向量就会缩短;当特征值小于0.这时特征向量缩过了界,就会反方向到达原点。
三、特征值、特征向量的性质
1.只有方阵才有特征值和特征向量 。因为总有特征多项式(特征方程),所以方阵总有特征值,但是并不是所有方阵都有实数特征解
2.实方阵一定有实数特征解
3.不同特征值对应的特征向量是线性无关的
4.对于实对称矩阵或埃尔米特矩阵来说,不同特征值对应的特征向量必定正交(相互垂直)
四、矩阵对角化
矩阵对角化的充要条件为:n阶矩阵有n个线性无关的特征向量。
推断出:如果n阶方阵A有n个互不相同的特征值,那么方阵A可对角化。
并且:
对角阵的主对角元素为A的特征值
可逆矩阵P由A的n个线性无关的特征向量作列向量构成。
五、python求解特征值和特征向量示例
>>> a=np.array([[1,2,3],[3,2,5],[1,10,8]])
>>> e,q=np.linalg.eig(a)
>>> e
array([ 13.50864036, -0.42667365, -2.0819667 ])
>>> q
array([[-0.27543318, -0.6534998 , -0.23748816],
[-0.44255955, -0.44847532, -0.67779488],
[-0.85339183, 0.60976053, 0.69584012]])
>>>
>>> E=np.diag(e) # 对角阵
>>> E
array([[ 13.50864036, 0. , 0. ],
[ 0. , -0.42667365, 0. ],
[ 0. , 0. , -2.0819667 ]])