C++,python,热爱算法和机器学习
全部博文(1214)
分类: 信息化
2020-10-12 10:06:27
特征向量和特征值在计算机视觉和机器学习中有许多重要的应用。众所周知的例子是PCA(主成分分析)进行降维或人脸识别是特征脸。特征向量和特征值的一个有趣应用在我的另一篇有关误差椭圆的博文中提到。此外,特征值分解形成协方差矩阵几何解释的基础。在这篇文章中,我将简单的介绍这个数学概念,并且展示如何手动获取二维方形矩阵的特征值分解。
特征向量是一个向量,当在它上面应用线性变换时其方向保持不变。考虑下面的图像,其中三个向量都被展示出来。绿色正方形仅说明施加到这三个向量上的线性变换。
在这种情况下变换仅仅是水平方向乘以因子2和垂直方向乘以因子0.5,使得变换矩阵A定义为:
通过应用这个变换向量被缩放为。上面的图表明一些向量(红色)的方向不受此线性变换的影响。这些向量被称为变换的特征向量,唯一地定义方形矩阵A。这个独特,确定的关系正是这些向量被称为“特征向量’(Eigen在德语意思是“明确的”)的原因。
在一般情况下,特征向量矩阵A的特征向量满足下列式子:
其中λ是所谓的“特征值”的一个标量值。这意味着,向量上的线性变换A完全由λ定义。
我们可以重写(1)式为:
其中I是和矩阵A有相同维数的单位矩阵。
然而,假定不是空向量,等式(2)只能在(A-λI)不可逆的时候才能被定义。如果一个方阵是不可逆的,这意味着它的行列式必须等于零。因此,要找到A的特征向量,我们只需要解决以下公式:
在下面的章节中我们将通过解等式(3)来确定矩阵A的特征向量和特征值。这个例子中的矩阵A被定义为:
为了确定这个例子中的特征值,我们将等式(4)代入到等式(3)中的矩阵A,得到:
计算行列式:
为了解决λ的二次方程,我们找到了判别式:
由于判别式严格为正,这意味着对于λ有两个不同的值:
现在我们已经确定了两个特征值λ1和λ2。需要注意的是大小为NxN的方阵总是具有N个特征值,每一个对应一个特征向量。特征值指定特征向量的大小。
现在,我们可以将等式(7)的特征值代入到等式(1)来确定特征向量。然后通过求解方程组得到特征向量。
我们首先对特征值λ1求解其对应的特征向量:
由于这仅仅是方程组的矩阵符号,我们可以写出它的等价形式:
并解决了用x12的一个函数解决了第一个等式:
因为特征向量仅仅代表一个方向(相应特征值表示幅度),特征向量的所有标量倍数是平行于该特征向量的向量,因此它们是等效的(如果我们标准化向量,它们将是相等的)。因此,进一步求解上面的方程组,我们可以自由地选择了x11或x12的真实值,并用等式(9)来确定另一个。
对于这个例子,我们随意地选择x12= 1,使得x11=-1。因此,对应于特征值λ的特征向量是
计算第二个特征向量类似于第一特征向量。我们现在将λ2= 4代入等式(1),得到:
写成方程组的形式:
用x21的函数式解决第一个等式得到:
然后,我们随意地选择x21= 2,并发现x22= 3。因此,对应于特征值λ2=4的特征向量是:
在这篇文章中,我们回顾了特征值和特征值的理论概念。这些概念对于计算机视觉和机器学习中使用的许多技术非常重要,例如用主成分分析来降维,或用特征脸进行脸部识别。