CR 分解:用列空间与行空间理解低秩矩阵

从列空间和行空间的基出发理解 CR decomposition,并把低秩矩阵写成列基与行基的乘积。

这个系列将主要介绍矩阵方法在数据分析中的应用,更为基础的线性代数细节请查阅线性代数笔记

CR 分解

对于下面这个矩阵

A=[2133145712]\mathbf{A} = \begin{bmatrix} 2 & 1 & 3 \\ 3 & 1 & 4 \\ 5 & 7 & 12 \end{bmatrix}

我们很容易发现它的 22,因为第三列是第一列和第二列之和

[235]+[117]=[3412]\begin{bmatrix} 2 \\ 3 \\ 5 \end{bmatrix} + \begin{bmatrix} 1 \\ 1 \\ 7 \end{bmatrix} = \begin{bmatrix} 3 \\ 4 \\ 12 \end{bmatrix}

也就是说只有两个 线性无关 的列来张成 列空间,所以 列空间22;我们知道,如果是这样的话,那么 行空间 也应该为 22,但是我们却没法轻易的一眼看出哪两行的什么线性组合是另一行,虽然它一定存在

如果我们转换思路,将矩阵 A\mathbf{A} 线性无关 的两列单独构成一个矩阵

C=[213157]\mathbf{C} = \begin{bmatrix} 2 & 1 \\ 3 & 1 \\ 5 & 7 \end{bmatrix}

我们知道这是一个 3×23 \times 2 的矩阵,要想得到原先 3×33 \times 3 的矩阵 A\mathbf{A},我们需要右乘以一个 2×32 \times 3 的矩阵,我们称它为 R\mathbf{R}

R=[??????]\mathbf{R} = \begin{bmatrix} ? & ? & ? \\ ? & ? & ? \end{bmatrix}

要想求出这个 R\mathbf{R} 实际上并不困难,我们只需要采用矩阵相乘的 列视角 (线性代数笔记中有记录)

对于 A\mathbf{A} 的第一列,我们显然只需要 C\mathbf{C} 的第一列,所以

R=[1??0??]\mathbf{R} = \begin{bmatrix} 1 & ? & ? \\ 0 & ? & ? \end{bmatrix}

对于 A\mathbf{A} 的第二列,我们显然只需要 C\mathbf{C} 的第二列,所以

R=[10?01?]\mathbf{R} = \begin{bmatrix} 1 & 0 & ? \\ 0 & 1 & ? \end{bmatrix}

而对于 A\mathbf{A} 的第三列,我们知道它是 C\mathbf{C} 的两列之和,所以

R=[101011]\mathbf{R} = \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix}

我们得到了 R\mathbf{R},我们发现它的列存储的实际上是组合 C\mathbf{C} 的列来得到 A\mathbf{A} 的列的权重系数

当然,这一切反过来也说得通,只不过视角变成了 行视角 (线性代数笔记中有记录)

  • C\mathbf{C} 的第一行表示要用 22 倍的 R\mathbf{R} 的第一行和 11 倍的 R\mathbf{R} 的第二行来组合得到 A\mathbf{A} 的第一行

  • C\mathbf{C} 的第二行表示要用 33 倍的 R\mathbf{R} 的第一行和 11 倍的 R\mathbf{R} 的第二行来组合得到 A\mathbf{A} 的第二行

  • C\mathbf{C} 的第三行表示要用 55 倍的 R\mathbf{R} 的第一行和 77 倍的 R\mathbf{R} 的第二行来组合得到 A\mathbf{A} 的第三行

由此我们得到 A\mathbf{A}CR 分解

A=CR[2133145712]=[213157][101011]\begin{align*} \mathbf{A} &= \mathbf{C}\mathbf{R} \\ \begin{bmatrix} 2 & 1 & 3 \\ 3 & 1 & 4 \\ 5 & 7 & 12 \end{bmatrix} &= \begin{bmatrix} 2 & 1 \\ 3 & 1 \\ 5 & 7 \end{bmatrix} \begin{bmatrix} 1 & 0 & 1 \\ 0 & 1 & 1 \end{bmatrix} \end{align*}

可以发现

  • C\mathbf{C} 的列是 A\mathbf{A} 列空间 的基
  • R\mathbf{R} 的行是 A\mathbf{A} 行空间 的基