机器学习数学基础: 线性代数篇

2,300 阅读6分钟

 

机器学习中涉及大量的矩阵运算,线性代数知识对学习机器学习非常关键,本文对机器学习中所涉及到的线性代数部分进行总结

一. 基本符号概念

1.1 标量(scalar)

标量, 是只有大小、没有方向、可用实数表示的一个量

 

1.2 向量(vector)

向量,是同时具有大小和方向的几何对象。向量可以表示为行向量或者列向量

a=[abc]\vec{a} = \begin{bmatrix} a&b&c \end{bmatrix}

or

a=[abc]\vec{a} = \begin{bmatrix} a \\ b \\ c \end{bmatrix}

 

1.3 矩阵(matrix)

一个的矩阵是一个由 m 行 n 列 元素排列成的矩形阵列。通常用大写字母表示,一个矩阵 AA 从左上角数起的第 ii 行第 jj 列上的元素称为第 i,ji, j 项,通常记为 AijA_{ij} 。如下是一个3行4列的矩阵:

A=[144912480911]A= \begin{bmatrix} 1 & 4& 4 & 9 \\ -1 & 2& 4 & 8 \\ 0& 9 & -1 & 1 \end{bmatrix}

方阵:行数与列数相同的矩阵称为方阵

对角矩阵:如果一个方阵只有主对角线上的元素不是0,其它都是0,那么称其为对角矩阵

单位矩阵:如果一个对角矩阵的主对角线元素都是1, 那么该矩阵就是单位矩阵

 

1.4 张量(tensor)

张量可以看作是多维数组,它们是标量,1维矢量和2维矩阵的多维推广。 参考TensorFlow文档,可认为:

  • 标量可称为 "0 秩" 张量,包含单个值,没有轴
  • 标量可称为 "1 秩" 张量, 包含一个值得列表,有一个轴
  • 矩阵可称为 "2 秩" 张量,有 2 个轴

下图非常形象的阐述了上述内容:

而张量的可视化,下图是同一个3轴张量的3种可视化方式:

 

二. 运算

2.1 向量内积

内积 (dot product),也称点积,数量积,其结果是一个标量 两个 向量 a=[a1,a2,,an]{\displaystyle {\vec {a}}=[a_{1},a_{2},\cdots ,a_{n}]}b=[b1,b2,,bn]{\displaystyle {\vec {b}}=[b_{1},b_{2},\cdots ,b_{n}]} 的点积定义为:

ab=i=1naibi=a1b1+a2b2++anbn{\displaystyle {\vec {a}}\cdot {\vec {b}}=\sum _{i=1}^{n}a_{i}b_{i}=a_{1}b_{1}+a_{2}b_{2}+\cdots +a_{n}b_{n}}

 

2.2 向量外积

外积 (outer product),在线性代数中一般指两个向量的张量积,其结果为一矩阵,举例如下:

[b1b2b3b4][a1a2a3]=[a1b1a2b1a3b1a1b2a2b2a3b2a1b3a2b3a3b3a1b4a2b4a3b4]\begin{bmatrix}b_1 \\ b_2 \\ b_3 \\ b_4\end{bmatrix} \otimes \begin{bmatrix}a_1 & a_2 & a_3\end{bmatrix} = \begin{bmatrix}a_1b_1 & a_2b_1 & a_3b_1 \\ a_1b_2 & a_2b_2 & a_3b_2 \\ a_1b_3 & a_2b_3 & a_3b_3 \\ a_1b_4 & a_2b_4 & a_3b_4\end{bmatrix}

 

2.3 矩阵乘法

A{\displaystyle A}m×n{\displaystyle m\times n} 矩阵,B{\displaystyle B}n×p{\displaystyle n\times p} 矩阵,则他们的乘积 AB{\displaystyle AB} 会是一个 m×p{\displaystyle m\times p} 矩阵。其乘积矩阵的元素如下面式子得出:

(AB)ij=r=1nairbrj=ai1b1j+ai2b2j++ainbnj{\displaystyle (AB)_{ij}=\sum _{r=1}^{n}a_{ir}b_{rj}=a_{i1}b_{1j}+a_{i2}b_{2j}+\cdots +a_{in}b_{nj}}

用图示来表示即为:

可以认为,矩阵乘法是向量内积的一个拓展,对相对应的行和列向量进行内积(点积),即可得到矩阵在相应位置的元素

 

2.4 矩阵转置

转置(transpose),表示为 ATA^T ,即把矩阵 AA 的横行写为其纵列,把 AA 的纵列写为其横行。数学表示为:

AijT=AjiA_{ij}^{\mathrm {T} }=A_{ji}

举例如下:

[123456]T=[135246]{\displaystyle {\begin{bmatrix}1&2\\3&4\\5&6\end{bmatrix}}^{\mathrm {T} }={\begin{bmatrix}1&3&5\\2&4&6\end{bmatrix}}}

 

2.5 逆矩阵

逆矩阵 (inverse matrix),给定一个n阶方阵 A{{A} } ,若存在一n阶方阵 B{{B} } ,使得 :

AB=BA=In{{AB} = {BA} = {I} _{n}}

其中 In{\displaystyle {I} _{n}} nn 阶单位矩阵,则称 A{\displaystyle {A} } 是可逆的,且 B{\displaystyle {B} } A{\displaystyle {A} } 的逆矩阵,记作 A1{\displaystyle {A} ^{-1}} 只有方阵(n×nn×n 的矩阵)才可能有逆矩阵。若方阵 A{\displaystyle {A} } 的逆矩阵存在,则称 A {\displaystyle {A} } 为非奇异方阵或可逆方阵

 

三. 矩阵分解

3.1 特征值和特征向量

给定一个方阵 AAλ\lambda 被称为 AA 的一个特征值(eigenvalue),当存在一个向量 vv 满足 Av=λv{\displaystyle Av=\lambda v}, 此时, vvAA 的特征向量(eigenvector)

 

3.2 奇异值分解

奇异值分解(singular value decomposition, SVD) 分解能够用于任意 m×n{\displaystyle m\times n} 矩阵,而特征分解只能适用于特定类型的方阵,故奇异值分解的适用范围更广

假设 AA 是一个 m×nm×n 阶矩阵,我们定义 AA 的奇异值分解为 A=UΣV,{\displaystyle A=U\Sigma V^{*},\,} 其中 UU 是 m×m 阶矩阵;Σ\Sigma 是 m×n 阶; VV^{*} 是 n×n 阶矩阵; UUVV^{*} 都是酋矩阵,即满足 UTU=IU^TU=I , VTV=IV^{*T}V^{*}=IΣ\Sigma 是除了主对角线上的元素以外全为0,主对角线上的元素称为奇异值。

下图很形象的展示了SVD: 在机器学习中,用于降维的算法PCA非常常用,其在计算过程中可以转化为SVD,从而降低计算复杂度。除此之外,SVD在推荐系统中也几乎不可缺少

 

3.3 奇异值分解的计算

给定一个 MM 的奇异值分解,根据上面的论述,两者的关系式如下 (其中 MM^{*} MM 的共轭转置矩阵(转置矩阵推广到复数)):

  • MM=VΣUUΣV=V(ΣΣ)V{\displaystyle M^{*}M=V\Sigma ^{*}U^{*}\,U\Sigma V^{*}=V(\Sigma ^{*}\Sigma )V^{*}\,}

  • MM=UΣVVΣU=U(ΣΣ)U{\displaystyle MM^{*}=U\Sigma V^{*}\,V\Sigma ^{*}U^{*}=U(\Sigma \Sigma ^{*})U^{*}\,}

关系式的右边描述了关系式左边的特征值分解。于是:

  • V{\displaystyle V} 的列向量(右奇异向量)是 MM{\displaystyle M^{*}M} 的特征向量。

  • U{\displaystyle U} 的列向量(左奇异向量)是 MM{\displaystyle MM^{*}} 的特征向量。

  • Σ{\displaystyle \Sigma } 的非零对角元(非零奇异值)是 MM{\displaystyle M^{*}M} 或者 MM{\displaystyle MM^{*}} 的非零特征值的平方根。

故通过计算出 MMM^{*}M 的特征向量和特征值, MMMM^{*} 的特征向量和特征值, 即完成了对 MM 的奇异值分解

 

四. 距离及相似度量

4.1 曼哈顿距离

也即 L1 范数,定义为:

x=i=1nxi {\displaystyle \|{\boldsymbol {x}}\|=\sum_{i=1}^{n}|x_i|} ,

其在机器学习中最常见的应用即 L1L1 正则化,也称 Lasso

 

4.2 欧氏距离

也称 L2 范数,定义为,各元素平方的和,表示为:

x2=i=1nxi2=x12++xn2{\displaystyle \|{\boldsymbol {x}}\|_{2}= \sqrt{\sum_{i=1}^{n}{x_i}^2}= {\sqrt {x_{1}^{2}+\cdots +x_{n}^{2}}}} ,

其应用为 L2L2 正则化,也称 Ridge L1L1L2L2 正则化在机器学习模型中应用极为广泛,主要用于降低模型复杂度,减小过拟合

 

4.3 Lp 范数

LpLp 范数定义为:

x=limp(i=1nxip)1/p=minixi{\displaystyle \lVert {\vec {x}}\rVert _{\infty }=\lim _{p\to -\infty }{\Bigl (}\sum \limits _{i=1}^{n}|x_{i}|^{p}{\Bigr )}^{1/p}=\min _{i}|x_{i}|} , 当 pp 取不同值时,我们可以得到不同的范数

  • p=1{\displaystyle p=1} 时:x1=i=1nxi{\displaystyle \lVert {\vec {x}}\rVert _{1}=\sum \limits _{i=1}^{n}|x_{i}|} ,即 L1 {\displaystyle L_{1}} ,范数是向量各分量绝对值之和,又称曼哈顿距离

  • p=2{\displaystyle p=2} 时: x2=i=1nxi2{\displaystyle \lVert {\vec {x}}\rVert _{2}={\sqrt {\sum \limits _{i=1}^{n}|x_{i}|^{2}}}} , 即 L2L2 ,此时为欧式距离

  • p=+{\displaystyle p=+\infty } 时: x=limp+(i=1nxip)1/p=maxixi{\displaystyle \lVert {\vec {x}}\rVert _{\infty }=\lim _{p\to +\infty }{\Bigl (}\sum \limits _{i=1}^{n}|x_{i}|^{p}{\Bigr )}^{1/p}=\max _{i}|x_{i}|} ,此即最大范数,也称切比雪夫距离

 

4.4 余弦相似性

给定两个向量 AABB ,其余弦相似性 θ\theta 由点积和向量长度给出,如下所示:

similarity=cos(θ)=ABAB=i=1nAi×Bii=1n(Ai)2×i=1n(Bi)2{\displaystyle {\text{similarity}}=\cos(\theta )={A\cdot B \over \|A\|\|B\|}={\frac {\sum \limits _{i=1}^{n}{A_{i}\times B_{i}}}{{\sqrt {\sum \limits _{i=1}^{n}{(A_{i})^{2}}}}\times {\sqrt {\sum \limits _{i=1}^{n}{(B_{i})^{2}}}}}}}

余弦相似度取值范围为 [1,1][-1, 1]1-1 意味着两个向量指向的方向正好相反,11 表示它们的指向是完全相同的,00 通常表示它们之间是独立的,而在这之间的值则表示中间的相似性或相异性,值越大,相似度越大

 

4.5 汉明距离

汉明距离(Hamming distance) 是指将一个字符串变换成另外一个等长字符串所需要替换的字符个数 例如 "touch" 和 "teach" 之间的汉明距离为 2

 

4.6 Jaccard 相似系数

其定义为两个集合交集大小与并集大小之比:

J(A,B)=ABAB=ABA+BAB{\displaystyle J(A,B)={{|A\cap B|} \over {|A\cup B|}}={{|A\cap B|} \over {|A|+|B|-|A\cap B|}}}

Jaccard 相似系数取值范围为:0J(A,B)1{\displaystyle 0\leq J(A,B)\leq 1}

Jaccard 距离 则用于量度样本集之间的不相似度,其定义为1减去雅卡尔系数,即:

dJ(A,B)=1J(A,B)=ABABAB{\displaystyle d_{J}(A,B)=1-J(A,B)={{|A\cup B|-|A\cap B|} \over |A\cup B|}}

 

4.7 皮尔逊相关系数

两个变量之间的皮尔逊相关系数定义为两个变量的协方差除以它们标准差的乘积:

ρX,Y=cov(X,Y)σXσY=E[(XμX)(YμY)]σXσY{\displaystyle \rho _{X,Y}={\mathrm {cov} (X,Y) \over \sigma _{X}\sigma _{Y}}={E[(X-\mu _{X})(Y-\mu _{Y})] \over \sigma _{X}\sigma _{Y}}}

皮尔逊相关系数的变化范围为 [1,1][-1, 1]

系数的值为 11 意味着 XXYY 可以很好的由直线方程来描述,所有的数据点都很好的落在一条直线上,且 YY 随着 XX 的增加而增加。

系数的值为 1−1 意味着所有的数据点都落在直线上,且 YY 随着 XX 的增加而减少。

系数的值为 00 意味着两个变量之间没有线性关系

持续总结和分享机器学习,数据科学方面的知识,欢迎小伙伴们交流讨论...