向量 (vector)和矩阵是机器学习 (machine learning)中表示数据和线性变换的基本工具。单个矩阵 A 可以包含复杂的关系或操作,但其内部结构和属性可能不易直接看出。进行诸如求解线性系统 (Ax=b) 或理解 A 所代表变换的几何效应等计算,有时会比较困难或计算量大,特别是对于大型矩阵。
矩阵分解,又称矩阵因子分解,提供了一种有效方法来解决这些难题。主要思想类似于将整数分解为质因子。我们不直接处理原始的、可能复杂的矩阵 A,而是将其表示为两个或更多“更简单”矩阵的乘积。这些组成矩阵通常具有特定结构,例如对角、三角或正交矩阵,这使得它们在分析和计算上更易于处理。
矩阵 A 通常可以表示为具有特殊性质的其他矩阵的乘积(例如 A=BC),从而简化分析和计算。
为何进行这种分解有用?
- 显示性质: 分解可以显现矩阵及其所代表变换的深层特征。例如,它们有助于确定矩阵的秩,识别数据中的主要方向(如PCA所示),或检查矩阵是否可逆。
- 简化计算: 许多标准运算在分解后的因子上执行时会更高效。使用LU分解求解 Ax=b 通常更快,特征值问题也与特定因子分解有关。
- 数据近似与压缩: 某些分解,如SVD,使我们能够使用较少的信息构建原始矩阵的近似。这是降维和有损数据压缩(例如图像压缩)等方法的基础。
本章将侧重介绍在机器学习应用中非常实用的几种矩阵分解方法:
- 奇异值分解 (SVD): 一种适用于任意 m×n 矩阵的多用途分解,它将矩阵分解为正交矩阵和奇异值对角矩阵。它是PCA、推荐系统和降噪的关键组成部分。
- LU分解: 将方阵 A 分解为下三角矩阵 L 和上三角矩阵 U 的乘积 (A=LU)。其主要用途在于高效地数值求解线性方程组。
- QR分解: 将矩阵 A 分解为正交矩阵 Q 和上三角矩阵 R (A=QR)。这种分解常用于求解最小二乘问题和某些特征值算法。
了解这些方法能让人更清楚地看到线性代数如何支撑各种机器学习算法。我们将考察每种技术的数学依据、几何直观和具体运用,包括如何使用NumPy和SciPy等Python库实现它们。