矩阵的特征值怎么算 一个矩阵的特征值怎么算


今天我们来探索机器学习领域中的一个核心概念——矩阵的特征值与特征向量。[1]

先让我们明确一下其定义。假设我们有一个n阶的矩阵A以及一个实数lambda,如果存在一个非零向量x,满足以下条件:

当上述条件成立时,我们称lambda为矩阵A的特征值,而非零向量x为矩阵A的特征向量。[2]

单纯从上面的定义中,我们可能无法直观地理解其含义。如果我们结合矩阵变换的几何意义,就会更容易理解。

对于n维向量x,当我们用n阶方阵A乘以它,得到的结果Ax,从几何的角度来看,就是对向量x进行了一个线性变换。这个变换后得到的向量y与原向量x的方向和长度都发生了变化。

对于特定的矩阵A,总存在一些特定方向的向量x,这些向量在经过Ax变换后,其方向与原方向保持一致,仅长度发生变化。我们将这个长度变化的比例系数称为lambda。这样的向量我们称之为矩阵A的特征向量,而lambda则是这个特征向量对应的特征值

对原始等式进行简单的变形,我们可以得到:

这里的I表示单位矩阵。展开后,我们可以得到一个n元齐次线性方程组。对于这个方程组,若要存在非零解,其系数行列式必须不为零,即系数矩阵的秩小于n。

将行列式展开后,我们得到一个以lambda为未知数的一元n次方程组。这个方程组在复数集内共有n个解。观察上述等式,我们可以发现lambda只出现在正对角线上,因此矩阵A的特征值就是该方程组的解。由于n次方程组在复数集内有n个解,所以n阶矩阵A在复数集内有n个特征值。

为了更好地理解这一概念,我们通过一个实例来演示:

设:

则:

通过代入求根公式,我们可以得到使得f(lambda) = 0的根,即特征值。

这一结论可以推广到所有的阶数n。也就是说,对于任何一个n阶方阵A,我们都可以得到其特征值和特征向量的相关信息。

接下来,让我们看看如何在实践中运用这一概念。在之前的文章中,我们介绍了Python在计算科学中的强大能力,特别是在求解特征值和特征矩阵方面。通过使用numpy库中的函数,我们可以轻松地一行代码完成特征值和特征向量的计算。

下面我们来看一个代码示例:

np.linalg.eig方法返回两个值,第一个是特征值,第二个是特征向量。让我们看看计算结果:

为什么特征向量是0.707呢?这是因为Python自动为我们进行了单位化处理,返回的向量都是单位向量。

降维算法中广泛使用了矩阵的特征值和特征向量。对于算法工程师来说,理解它们的概念和几何意义比具体如何计算更为重要。因为这两者在机器学习的领域中有着广泛的应用。

关于降维算法的具体原理,这里不再赘述,我们将在后续的文章中更新相关内容。感兴趣的读者可以期待一下。

文章到这里就告一段落了,这也是线性代数专题的最后一篇。虽然这六篇文章未能涵盖线性代数这门学科的所有知识点,但它们确实涉及了实际应用中常用的内容。

[1] 《线性代数》(第五版): 上海交通大学出版社。