基于向量在线性变换 $A$ 下方向不变,仅由特征值 $\lambda$ 进行缩放(即 $Ax = \lambda x$)的原理,我们现在可以考察这些特殊向量和标量如何帮助我们分解矩阵 $A$ 本身。这个过程被称为特征分解,有时也称为谱分解,为理解 $A$ 所代表的线性变换的性质和作用提供了一种有效方法。特征分解公式对于特定类型的矩阵,即可对角化的方阵,我们可以将矩阵 $A$ 表示为其特征值和特征向量的乘积:$$A = PDP^{-1}$$我们来阐明此公式中每个矩阵的含义:P: 这是一个可逆矩阵,其列是 $A$ 的线性无关特征向量。如果 $A$ 是一个 $n \times n$ 矩阵,且拥有 $n$ 个线性无关的特征向量 $v_1, v_2, \dots, v_n$,则 $P$ 通过将这些特征向量作为其列构成:$P = [v_1 | v_2 | \dots | v_n]$。D: 这是一个对角矩阵,其主对角线上包含 $A$ 的特征值。每个特征值 $\lambda_i$ 在 $D$ 中的位置与它在 $P$ 中对应特征向量 $v_i$ 的位置一致。$D$ 中所有非对角线上的元素均为零。 $$ D = \begin{bmatrix} \lambda_1 & 0 & \dots & 0 \ 0 & \lambda_2 & \dots & 0 \ \vdots & \vdots & \ddots & \vdots \ 0 & 0 & \dots & \lambda_n \end{bmatrix} $$P⁻¹: 这表示矩阵 $P$ 的逆。由于 $P$ 的列是特征向量,因此 $P$ 可逆的要求等同于要求 $A$ 的特征向量构成向量空间 $\mathbb{R}^n$ 的一组基。这意味着特征向量必须线性无关。特征分解何时可行?需要注意的是,并非每个方阵都能以 $A = PDP^{-1}$ 的形式进行分解。这种因式分解仅当矩阵 $A$ 可对角化时才可行,这意味着它必须拥有完整的一组 $n$ 个线性无关的特征向量(其中 $A$ 是 $n \times n$ 矩阵)。好在,此条件对机器学习中常见的几种矩阵类型都适用:实对称矩阵: 如果矩阵 $A$ 是对称的($A = A^T$)且具有实数值,它总是可对角化的。一个很大的优点是,其特征向量可以被选为形成一个正交归一基。在这种情况下,矩阵 $P$ 成为一个正交矩阵,这意味着它的逆就是它的转置($P^{-1} = P^T$)。分解会精简为 $A = PDP^T$。协方差矩阵是PCA等方法的核心部分,它们是对称的,这使得此属性非常有用。具有不同特征值的矩阵: 如果一个 $n \times n$ 矩阵 $A$ 拥有 $n$ 个不同的特征值,那么其对应的特征向量必然线性无关。因此,任何具有不同特征值的矩阵都是可对角化的。不具备完整线性无关特征向量集的矩阵被称为亏格矩阵。这类矩阵无法使用 $PDP^{-1}$ 形式进行对角化。虽然有其他分解方法(如约旦标准型),但它们通常更为复杂,且在标准机器学习算法中较少使用。几何与计算作用特征分解 $A = PDP^{-1}$ 不仅是一种代数变换。它提供了丰富的几何理解和计算便利:几何地理解变换: 这种分解将 $A$ 的作用解释为三个基本步骤的序列:$P^{-1}$: 该矩阵将向量从标准坐标系变换到由 $A$ 的特征向量定义的坐标系中。可以将其视为一种“基变换”,使得变换更简单。$D$: 在这个特征向量基中,变换只是沿着每个特征向量轴的缩放。第 $i$ 个轴(对应于特征向量 $v_i$)被因子 $\lambda_i$ 缩放。$P$: 该矩阵将缩放后的向量从特征向量基变换回标准坐标系。简而言之,$A = PDP^{-1}$ 告诉我们,任何由可对角化矩阵 $A$ 表示的线性变换都等同于沿着其特征向量方向进行缩放。digraph G { rankdir=LR; node [shape=box, style=rounded, fontname="Helvetica", color="#495057", fillcolor="#e9ecef", style=filled]; edge [fontname="Helvetica", color="#495057"]; Input [label="输入向量\n(标准基)"]; EigenBasis [label="特征向量基中的\n向量"]; ScaledEigenBasis [label="特征向量基中\n缩放后的向量"]; Output [label="输出向量\n(标准基)"]; Input -> EigenBasis [label=" 应用 P⁻¹ \n (基变换) "]; EigenBasis -> ScaledEigenBasis [label=" 应用 D \n (沿轴缩放) "]; ScaledEigenBasis -> Output [label=" 应用 P \n (基变换回) "]; subgraph cluster_A { label = "等效变换 A"; style=filled; color="#ced4da"; Input -> Output [label=" 应用 A \n (直接变换) ", constraint=false, style=dashed, color="#1c7ed6"]; } }将矩阵 $A$ 应用于向量,等同于先转换到特征向量基 ($P^{-1}$),沿着这些轴进行缩放 ($D$),然后再转换回标准基 ($P$)。简化矩阵计算: 特征分解极大地简化了矩阵幂的计算。以计算 $A^2$ 为例: $$A^2 = (PDP^{-1})(PDP^{-1}) = PD(P^{-1}P)DP^{-1} = PDIDP^{-1} = PD^2P^{-1}$$ 其中 $I$ 是单位矩阵。推广此模式,对于任何正整数 $k$: $$A^k = PD^kP^{-1}$$ 计算 $D^k$ 在计算上非常高效,因为 $D$ 是对角矩阵。我们只需将每个对角线上的特征值提升到 $k$ 次幂: $$ D^k = \begin{bmatrix} \lambda_1^k & 0 & \dots & 0 \ 0 & \lambda_2^k & \dots & 0 \ \vdots & \vdots & \ddots & \vdots \ 0 & 0 & \dots & \lambda_n^k \end{bmatrix} $$ 这避免了直接计算 $A^k$ 所需的重复且通常耗时的矩阵乘法。该方法在分析随时间变化的系统(如马尔可夫链或人口模型)时很有用。机器学习方法的依据: 理解特征分解是掌握多种重要机器学习算法的基础。正如我们之后会介绍的,主成分分析(PCA)直接依赖于数据协方差矩阵的特征分解。特征向量表示方差最大的方向(即主成分),特征值则衡量此方差的大小。通过理解 $A = PDP^{-1}$ 如何分解一个变换(例如协方差矩阵所代表的变换),您可以很好地理解 PCA 是如何实现降维的。后续章节将介绍这些内容在实际中的应用,尤其是特征值和特征向量在 PCA 中的作用,并展示如何使用 NumPy 等 Python 库高效地进行这些分解。