
2.5 矩阵乘法第二视角
下面,我们聊一聊矩阵乘法的第二视角。
两个2×2矩阵相乘
还是以式(2.20)为例,A和B相乘,把左侧矩阵A写成两个列向量a1和a2,把右侧矩阵B写成两个行向量b(1)和b(2),即

这样AB乘积可以展开写成

在这个视角下,我们惊奇地发现矩阵乘法竟然变成了“加法”!
用符号代替数字,可以写成

更一般情况
将矩阵Am×p写成一系列左右排列的列向量,即

其中:列向量ai元素数量为m,即行数为m。
将矩阵Bp×n写成上下叠放的行向量,即

其中:行向量b(i)元素数量为n,即列数为n。
矩阵A和矩阵B相乘,可以展开写成p个m×n矩阵相加,即

我们可以把akb(k)的结果矩阵写成Ck,这样A和B的乘积C可以写成Ck(k=1, 2,…,p)之和,即

在这个视角下,矩阵的乘法变成了若干矩阵的叠加。这是一个非常重要的视角,数据科学和机器学习很多算法都离不开它。
热图
图2.12所示给出的是图2.11所示矩阵乘法第二视角的热图。图2.12中三个形状相同矩阵C1、C2、C3相加得到C。

图2.12 矩阵乘法第二视角
如图2.13所示,从图像角度来看,好比若干形状相同的图片,经过层层叠加,最后获得了一幅完整的热图。式(2.38)中的p决定了参与叠加的矩阵层数。矩阵乘法中,p所在维度被“消去”,这也相当于一种“压缩”。

图2.13 三幅图像叠加得到矩阵C热图
图2.14、图2.15、图2.16所示分别展示了如何获得图2.12中矩阵C1、C2、C3的热图。
鸢尾花书《矩阵力量》一册会讲解张量积。

图2.14 获得C1

图2.15 获得C2

图2.16 获得C3
观察热图可以发现一个有意思的现象,列向量乘行向量好像张起了一幅平面。张量积用的就是类似于图2.14、图2.15、图2.16的运算思路。
代码文件Bk3_Ch2_10.py中Bk3_Ch2_10_B部分为绘制图2.12。
主成分分析(Principal Component Analysis, PCA)是机器学习中重要的降维算法。这种算法可以把可能存在线性相关的数据转化成线性不相关的数据,并提取数据中的主要特征。
图2.17中,X为原始数据,X1、X2、X3分别为第一、第二、第三主成分。根据热图颜色色差可以看出:第一主成分解释了原始数据中最大的差异;第二成分则进一步解释剩余数据中最大的差异,以此类推。
图2.17实际上就是本节介绍的矩阵乘法第二视角。鸢尾花书会在《矩阵力量》《统计至简》《数据有道》三本书中以不同视角介绍主成分分析。
《矩阵力量》将从矩阵分解、空间、优化等视角讲解PCA;《统计至简》将从数据、中心化数据、Z分数、协方差矩阵、相关性系数矩阵这些统计视角来讨论PCA不同技术路线之间的差异;《数据有道》则侧重讲解如何在实践中使用PCA分析数据,并使用PCA结果进行回归分析。

图2.17 用数据热图叠加看主成分分析