特征分解允许将矩阵分解为更简单的分量 — 其特征值和特征向量 — 它们揭示了原始矩阵的基本属性。在处理线性变换时,理解这种分解是基础,将有助于握更高级的概念,如奇异值分解 (SVD) 和矩阵对角化。
什么是特征分解?
特征分解涉及以以下形式表示方阵 A:
这里
- P 是特征向量矩阵,
- D 是特征值的对角矩阵,
- P^1 是 P 的倒数。
特征值是描述线性变换如何缩放向量的标量,而特征向量是在变换下不改变方向的向量。并非所有矩阵都有特征分解,但如果它们有,它就会提供更简单、更易解释的矩阵形式。
本征分解的应用
- 主成分分析 (PCA):特征分解有助于在 PCA 中查找主成分,这些主成分用于降低数据集的维度。
- 矩阵对角化:特征分解通过对矩阵进行对角化来简化复杂的矩阵运算。
- 求解线性方程组:特征值和特征向量提供了求解微分方程和动态系统的见解。
分步示例:手动计算特征分解
手动计算 2x2 矩阵的特征分解。
给定矩阵:
- 求特征值:
- 要找到特征值,请求解特征方程:
其中 λ 是特征值,I 是单位矩阵。对于此矩阵:
展开行列式得到特征方程:
因此,特征值为 λ = 0 和 λ = 5。
2. 求特征向量:
- 对于每个特征值,求解 (A — λI) v = 0 以找到相应的特征向量 v
当 λ = 0 时:
求解此系统得到 v = [1, 2]。
当 λ = 5 时:
解决这个问题得到 v = [2, 1]。
- 构造矩阵 P 和 D: 现在,我们可以使用特征向量构建 P,使用特征值构建 D。
Python 中的自定义分解
让我们使用 Python 计算同一矩阵的特征分解。
import numpy as np
# Define the matrix
A = np.array([[4, -2],
[-2, 1]])
# Perform eigen decomposition
eigenvalues, eigenvectors = np.linalg.eig(A)
print("Eigenvalues:", eigenvalues)
print("Eigenvectors:\n", eigenvectors)
输出:
Eigenvalues: [5. 0.]
Eigenvectors:
[[ 0.89442719 0.4472136 ]
[-0.4472136 0.89442719]]
重建原始矩阵:
使用特征值和特征向量,我们可以重建矩阵 A:
# Reconstruct A using P, D, and P^(-1)
P = eigenvectors
D = np.diag(eigenvalues)
P_inv = np.linalg.inv(P)
A_reconstructed = P @ D @ P_inv
print("Reconstructed Matrix A:\n", A_reconstructed)
输出:
Reconstructed Matrix A:
[[ 4. -2.]
[-2. 1.]]
这应该给我们原始矩阵 A。
对称矩阵的特征分解
对称矩阵(其中 A = AT)具有特殊性质:
- 特征值始终为实数。
- 特征向量是正交的。
让我们用 Python 中的对称矩阵来探讨这个问题。
B = np.array([[2, 1],
[1, 2]])
eigenvalues_B, eigenvectors_B = np.linalg.eig(B)
print("Eigenvalues of B:", eigenvalues_B)
print("Eigenvectors of B:\n", eigenvectors_B)
在对称矩阵的情况下,特征向量将是正交的,这可以简化 PCA 等机器学习任务中的许多计算。
结论
特征分解是线性代数中的强大工具,它将矩阵分解为其基本分量 — 特征值和特征向量。这种分解使我们能够对矩阵进行对角化,使其更易于使用,并且在机器学习中具有重要应用,包括 PCA、降维和求解线性方程组。