趋近智
在前面的章节中,我们研究了向量 (vector)空间、子空间以及线性独立性的重要概念。现在,我们介绍矩阵的秩,这是一个单一的数值,它概括了关于矩阵行与列之间关系以及与之相关的基本子空间维度的许多信息。可以将秩看作是衡量矩阵“有效维度”或矩阵所包含的非冗余信息量的指标。
矩阵 的秩,通常记作 ,可以通过几种等价的方式定义,每种方式都提供略微不同的视角:
线性代数中的一个基本结果是,对于任何给定矩阵,这两个维度总是相等的:
因此,秩同时说明了线性独立列的数量和线性独立行的数量。
思考一个数据集,它表示为一个矩阵 ,其中行是样本,列是特征。
虽然秩与列空间和行空间的维度相关联,但直接根据定义通过寻找基来计算秩可能会很繁琐。
一种思考秩计算的方式是通过高斯消元法。当您将矩阵化为行阶梯形时,非零行的数量(或等效地,主元或主导1的数量)等于矩阵的秩。在消元过程中,每个主元都对应于一个线性独立的行(和列)。
然而在实际操作中,特别是在编程环境中,我们依赖数值计算库来可靠地计算秩。数值方法,通常基于像奇异值分解(SVD,我们将在第6章讲解)这样的技术,之所以被使用,是因为它们在浮点运算存在的情况下更为稳定。
在 Python 中,NumPy 的线性代数模块提供了一个直接的函数:
import numpy as np
# 示例 1:线性独立的列/行
A = np.array([[1, 0, 1],
[0, 1, 1],
[1, 1, 0]])
rank_A = np.linalg.matrix_rank(A)
# rank_A 将为 3
# 示例 2:线性相关的行(第3行 = 第1行 + 第2行)
B = np.array([[1, 2, 3],
[4, 5, 6],
[5, 7, 9]])
rank_B = np.linalg.matrix_rank(B)
# rank_B 将为 2
# 示例 3:线性相关的列(第3列 = 第1列 + 第2列)
C = np.array([[1, 4, 5],
[2, 5, 7],
[3, 6, 9]])
rank_C = np.linalg.matrix_rank(C)
# rank_C 将为 2
print(f"矩阵 A:\n{A}\n秩: {rank_A}\n")
print(f"矩阵 B:\n{B}\n秩: {rank_B}\n")
print(f"矩阵 C:\n{C}\n秩: {rank_C}")
秩与线性独立性之间的联系是直接的:
这在处理机器学习 (machine learning)中的特征矩阵时尤其相关。如果特征矩阵的秩小于特征数量,这表明存在多重共线性或冗余特征。一些算法可能难以处理秩亏矩阵,并且这通常表明降维可能有所帮助。
一个维度为 的矩阵 被称为具有满秩,如果其秩是根据其维度能达到的最大可能值,即 。
如果 ,该矩阵被称为秩亏。
理解矩阵的秩有助于理解数据结构和模型属性:
总而言之,矩阵的秩是一个包含重要信息的简单数值。它量化 (quantization)了行和列中线性独立的程度,决定了基本子空间的维度,并对求解线性系统、理解数据冗余以及评估机器学习模型的属性有直接影响。当我们学习到像SVD这样的矩阵分解时,秩的观点将再次成为核心内容。
简洁的语法。内置调试功能。从第一天起就可投入生产。
为 ApX 背后的 AI 系统而构建
这部分内容有帮助吗?
© 2026 ApX Machine LearningAI伦理与透明度•