毫无疑问,数学是数据科学的灵魂。不管是机器学习或是统计学模型,从本质上讲都是数学模型,因此,扎实的数学知识对于理解模型假设和分析模型结果至关重要。可能很多读者会觉得“数学”这两个字就代表了枯燥和难以理解,事实也许有时如此,但正如“计算机之父”冯·诺依曼说的那样,我们并不理解数学,只是越来越习惯。在数据科学领域,数据和模型的存在形式都是矩阵,而后者则直观地表示为向量空间里的点。
首先通过一个简单例子来感性认识一下标量(scalar)、向量(vector)和矩阵(matrix)这 3 个数学概念。
假设我们设计了一款网络对战游戏,在游戏中,玩家选择自己的英雄与其他玩家对战。每个英雄的能力由 3 种属性描述:智力、敏捷和力量。为了方便表示,不妨用 i 表示智力、a 表示敏捷、s 表示力量。
对于英雄 A,它的设定是智力型英雄,智力被设定为 10,敏捷为 6 以及力量为 2,用数学式子表示为 i = 10, a = 6, s = 2。换句话说,我们用数字表表示各个属性具体的值,这在数学上就叫作标量,标量其实就是数字。
将这 3 个属性按照智力、敏捷和力量的顺序写在一起,就可以表示一个英雄的能力了。
比如用A = (10, 6, 2)表示英雄 A。在数学上A被称为向量,正确地说应该是行向量。直观上, 行向量是多个数字(标量)排成一行。与之类似的是列向量,即多个数字排成一列。
现在我们设计了另外 3 个英雄,分别为 B、C 和 D,向量表示为B = (3, 4, 10)、C = (5, 10, 4)和D = (6, 9, 5)。将这 4 个英雄的向量排列成矩形阵列,即每一行表示一个英雄,得到图 3-1 所示的矩阵,而这个矩阵就可以表示所有 4 个英雄的属性数据。
图3-1
用学术语言来定义矩阵:一个
的矩阵,是一个由
行
列元素排列成的矩形阵列。比如公式(3-1)表示的就是一个
的矩阵。从数学上来讲,标量和向量其实是比较特殊的矩阵。标量可以被看作一个
的矩阵,而包含
个数字行向量(也称为
维行向量)可以看作一个
的矩阵,而包含k个数字的列向量可以被认为是一个
的矩阵。
在数学上,通常如公式(3-1)所示表示向量和矩阵,其中
表示标量,也就是一个实数,
表示一个m维的行向量,
表示
的矩阵,
表示所有取值为实数的
矩阵全体。本书后面的章节也采用相同的记号。需要注意的是,列向量可以表示为行向量的转置,因此没有专门记号来表示列向量。转置运算的细节请参考 3.1.3 节。
3.1.2 特殊矩阵
在讨论矩阵运算之前,先来看一类特殊的矩阵:方阵(squared matrix)。它是行数等于列数的矩阵。从形状上来看,它就像一个正方形,因此被称为方阵。有 3 种方阵需要特别注意。
• 单位矩阵(identity matrix),矩阵的对角线元素等于 1,其他元素等于 0,记为
。

• 对角矩阵(diagonal matrix),除矩阵的对角线元素外,其他元素都等于 0,记为
。不难注意到,单位矩阵是一种特殊的对角矩阵。
• 三角矩阵(triangular matrix),它可以细分为上三角矩阵和下三角矩阵两种。上三角矩阵的对角线下方的元素全部为零,记为
;下三角矩阵的对角线上方的元素全部为零,记为
。不难发现,对角矩阵是一种特殊的三角矩阵。
3.1.3 矩阵运算
为了能像使用数字一样使用矩阵,我们为它定义了“加减乘除”四种运算。
1.矩阵的加减法
(1)与数字的加减法不同,并不是任何两个矩阵都可以进行加减运算,要求矩阵的形状是一样的,也就是它们的行数和列数都相等。假设矩阵
同为
的矩阵,则它们的和差仍为
的矩阵,具体的加减法定义如下:

(2)根据上面的定义,不难得出,矩阵的加法也满足结合律和交换律。假设
也是一个
的矩阵,可以得到如下的公式 :

2.矩阵的乘法
(1)矩阵与数字的乘法。与数字的乘法类似,任意一个实数都能和任意一个矩阵相乘。假设
为实数,则它与矩阵
的乘法定义如下:
(2)矩阵与矩阵的乘法。它只有在第一个矩阵的列数和第二个矩阵的行数相同时才有定义。假设
为
的矩阵,
为
的矩阵,则它们之间的乘积为一个
的矩阵,记为
,具体的定义如下:
举个具体的例子:
为4 × 2的矩阵,
为2 × 3的矩阵,它们之间的乘法计算过程如图3-2a 所示。
不难证明,矩阵的乘法满足结合律, 即
,以及分配律, 即
,但不满足交换律(在通常情况下,两个矩阵交换顺序后,乘法运算的要求都不再满足)。这一点与数字的乘法有很大的不同。另外,任何一个矩阵与单位矩阵的乘积(前提条件是矩阵乘法的要求被满足)等于其本身,比如
。因此单位矩阵可以被看作矩阵中的 1。
在实际中,线性模型常常用矩阵乘法来表示。举个简单的例子,假设线性模型为:

(3)矩阵的 Hadamard 乘积(Hadamard product 或者element-wise multiplication)。假设矩阵
同为
的矩阵,则它们之间的Hadamard 乘积仍为
的矩阵,记为
。
计算过程如图3-2b 所示,具体的公式如下:
矩阵的Hadamard 乘积在数学上并不太常用,但在编程时,我们常用它来同时计算多组数据的乘积。
3.矩阵的除法:逆矩阵(inverse matrix)
(1)对矩阵求逆是专门针对方阵的,即行数等于列数的矩阵。假设
是一个
的矩阵,若存在一个
的矩阵
使得它们的乘积等于
阶单位矩阵,如公式(3-11)所示,则称矩阵
为矩阵
的逆矩阵,记为
,而
则被称为可逆矩阵。

(2)数学上可以证明,一个矩阵的逆矩阵如果存在,则逆矩阵唯一。所以对于方阵
,如果存在另一个方阵
,使得
,则一定有
,且
。
(3)关于逆矩阵,有如下几个常用的公式:
4.矩阵的转置(transpose)
(1)形象点理解,矩阵的转置就是将矩阵沿着对角线对调一下。假设
为
的矩阵,则它的转置为
的矩阵,记为
。具体的公式如下:
(2)关于矩阵的转置,有如下几个常用的公式,其中假设
为实数,而且公式中涉及的矩阵乘法和逆矩阵都是有意义的。
3.1.4 向量空间
向量空间(vector space)是一个比较深刻的数学概念。为了便于理解,我们抛开复杂的公理化定义,从直观上来理解向量空间的相关知识。
我们生活的世界在空间上是一个三维空间,在这个现实世界里建立长宽高坐标系,也就是
坐标系。这个现实中的每一个点都能被表示成一个三维行向量,如图3-3a 所示。
从数学上来看,任意一个三维的行向量
,可以被写为
。用学术一些的话来表述就是任意一个三维行向量可以被
这3 个行向量线性表示,而且反过来,
这3 个行向量的任意线性组合都对应着现实空间中的某一点。像这样的空间被称为向量空间,而
被称为向量空间的基。不难看出,其实
分别对应着
轴、
轴和
轴。
针对三维向量空间,定义行向量的内积(dot product)。假设行向量
和行向量
,它们之间的内积定义为:
其实
之间的内积可以表达为矩阵乘法,即
. 数学上可以证明公式(3-16),其中
为点
到原点的距离
的定义类似;
为向量
之间的夹脚,如图3-3b 所示。注意到当
到原点的距离等于1 时,
就是向量
在向量 B 方向上投影的长度:
有了内积定义后,就可以更加数理化地定义向量间的正交关系(对应到空间上,就是两个向量相互垂直)。若两个行向量
的内积等于0,则称它们是正交的。容易得到,上面提到的基
是相互正交的,被称为正交基。
既然行向量可以被看作三维空间里的一个点,那么
的矩阵
可以被看作三维空间里点的集合。现在我们想在这个空间里找到一条直线,使得矩阵中的点在这条直线的投影之和最长。结合内积的定义,假设
为行向量,将上面的目标表示为数学公式,其中向量
是长度为1 的向量,表示直线的方向。
为了解决这个问题,需要引入另一个很复杂的数学概念:特征向量(eigenvector)和特征值(eigenvalue)。假设
是一个三阶对称矩阵,即
(注意到公式(3-17)里,
就是一个三阶对称矩阵)。满足下面条件的非零行向量
被称为
的特征向量,对应的
被称为特征值。
数学上可以证明,对于三阶的对称矩阵,存在3 个相互正交的特征向量,而它们可以组成三维空间的一组基。有了上面的结论,公式(3-17)定义的问题就很好解决了:
就是最大特征值对应的特征向量。
上面有关向量空间、内积、向量间夹脚以及正交的定义可以推广到任意维度的空间。有关特征向量、特征值的定义和结论也如此。
领取 专属20元代金券
Get大咖技术交流圈