机器学习笔记05-矩阵基础知识

前言

矩阵的相关操作在机器学习中很重要,为了给之后打下坚实的基础,在此对矩阵的基础知识进行总结学习。主要包括矩阵的四则运算(加减乘除)以及矩阵的转置与逆矩阵。

什么是矩阵

在数学中,矩阵(Matrix)是一个按照长方阵列排列的复数或实数集合 ,最早来自于方程组的系数及常数所构成的方阵。这一概念由19世纪英国数学家凯利首先提出。直观解释就是由中括号包起来的一组二维数据,如下所示即就是一个2*2的矩阵。

A = [ 1 2 3 4 ] A = \left[\begin{array}{ll} 1 & 2 \\ 3 & 4 \end{array}\right] A=[1324]

常见的表示方法
一般情况下,由大写字母(如:A、B)表示一个矩阵,此处用A来表示上述矩阵。则:

A i j 即 表 示 矩 阵 中 的 元 素 , 其 中 i 表 示 第 i 行 , j 表 示 第 j 列 。 A_{i j}即表示矩阵中的元素,其中i表示第i行,j表示第j列。 Aijiijj

A 11 A_{1 1} A11即表示A矩阵中第1行第1列的元素,即就是1; A 22 A_{2 2} A22即表示A矩阵中第2行第2列的元素,即就是4; A 32 A_{3 2} A32即表示A矩阵中第3行第2列的元素,结果发现是未定义的,因为A矩阵中不存在第3行,因此该结果是未定义的。所以在使用矩阵过程中,一定要避免出现未定义的情况。

此图像的alt属性为空;文件名为image-1.png

向量:向量是一种特殊的矩阵,因为它只有1列。可表示为 n ∗ 1 n*1 n1的矩阵。以下就是一个4*1的矩阵,也可称为4维向量。

B = [ 5 6 7 8 ] B = \left[\begin{array}{l} 5 \\ 6 \\ 7 \\ 8 \end{array}\right] B=5678

说明:一般情况下,矩阵的下标都从1开始。除非特定情况或已经说明,矩阵的下标从0开始。

矩阵的加法/减法

矩阵和矩阵相加,首先要求两个矩阵必须是同一维度的。只有同维度的两个矩阵才能进行加法操作。比如矩阵A为32维,矩阵B为32维,此时两个矩阵可以相加;若B矩阵为2*3维,则两个矩阵不能相加。

方法:对应元素依次相加, A 11 + B 11 , A 12 + B 12 . . . . . . A_{1 1} + B_{1 1},A_{1 2} + B_{1 2}...... A11+B11A12+B12......

A = [ 3 2 0 5 7 9 ] , B = [ 6 11 2 7 4 5 ] A = \left[\begin{array}{lll} 3 & 2 & 0 \\ 5 & 7 & 9 \end{array}\right], B = \left[\begin{array}{lll} 6 & 11 & 2 \\ 7 & 4 & 5 \end{array}\right] A=[352709]B=[6711425]

令矩阵 C = A + B C = A + B C=A+B,那么 C C C为:

C = [ 3 + 6 2 + 11 0 + 2 5 + 7 7 + 4 9 + 5 ] = [ 9 13 2 12 11 14 ] C = \left[\begin{array}{lll} 3+6 & 2+11 & 0+2 \\ 5+7 & 7+4 & 9+5 \end{array}\right] =\left[\begin{array}{lll} 9 & 13 & 2 \\ 12 & 11 & 14 \end{array}\right] C=[3+65+72+117+40+29+5]=[9121311214]

矩阵的减法和加法一样,此处就不再赘述了。

矩阵和标量的乘法/除法

矩阵和标量相乘,即就是一个矩阵和数字相乘,可表示为 k ∗ A k*A kA A ∗ k A*k Ak,其中 k k k为常数。这个很简单,就是用 k k k和矩阵中的所有元素相乘即可。

A = 3 ∗ [ 1 2 3 4 ] = [ 1 2 3 4 ] ∗ 3 = [ 1 ∗ 3 2 ∗ 3 3 ∗ 3 4 ∗ 3 ] = [ 3 6 9 12 ] A = 3 * \left[\begin{array}{ll} 1 & 2 \\ 3 & 4 \end{array}\right] =\left[\begin{array}{ll} 1 & 2 \\ 3 & 4 \end{array}\right] * 3 =\left[\begin{array}{ll} 1*3 & 2*3 \\ 3*3 & 4*3 \end{array}\right] =\left[\begin{array}{ll} 3 & 6 \\ 9 & 12 \end{array}\right] A=3[1324]=[1324]3=[13332343]=[39612]

矩阵和标量的除法其实一样,即就是乘以这个标量的倒数。例如 / 3 , 就 就 是 ∗ 1 / 3 /3,就就是*1/3 /31/3

矩阵和矩阵的乘法

两个矩阵相乘,必须满足以下规律:

第一个矩阵的列数 = 第二个矩阵的行数。
A = [ m ∗ n ] ∗ [ n ∗ k ] = [ m ∗ k ] A = \left[\begin{array}{lll} & & \\ & m*n & \\ & & \end{array}\right]* \left[\begin{array}{lll} & & \\ & n*k & \\ & & \end{array}\right]= \left[\begin{array}{lll} & & \\ & m*k & \\ & & \end{array}\right] A=mnnk=mk

其中第一个表示m行n列矩阵,第二个表示n行k列矩阵,则矩阵相乘得到m行k列矩阵。

方法说明:如下假设A为23维矩阵,B为33维矩阵,则我们可以知道,相乘以后的矩阵为23维,即C为23维矩阵。

A = [ 3 2 0 5 7 9 ] , B = [ 1 2 0 4 5 5 2 8 1 ] A = \left[\begin{array}{lll} 3 & 2 & 0 \\ 5 & 7 & 9 \end{array}\right], B = \left[\begin{array}{lll} 1 & 2 & 0 \\ 4 & 5 & 5 \\ 2 & 8 & 1 \end{array}\right] A=[352709]B=142258051

C = A ∗ B = [ 3 2 0 5 7 9 ] ∗ [ 1 2 0 4 5 5 2 8 1 ] C = A * B = \left[\begin{array}{lll} 3 & 2 & 0 \\ 5 & 7 & 9 \end{array}\right]* \left[\begin{array}{lll} 1 & 2 & 0 \\ 4 & 5 & 5 \\ 2 & 8 & 1 \end{array}\right] C=AB=[352709]142258051

分解步骤:

(1)首先将 B B B矩阵分解为3个3维向量,分别为 B 1 , B 2 , B 3 B1,B2,B3 B1,B2,B3,则:

B 1 = [ 1 4 2 ] B 2 = [ 2 5 8 ] B 3 = [ 0 5 1 ] B1= \left[\begin{array}{l} 1 \\ 4 \\ 2 \end{array}\right] B2 = \left[\begin{array}{l} 2 \\ 5 \\ 8 \end{array}\right] B3 = \left[\begin{array}{l} 0 \\ 5 \\ 1 \end{array}\right] B1=142B2=258B3=051

(2)分别将A与 B 1 , B 2 , B 3 B1,B2,B3 B1B2B3相乘,注意顺序不能反:

A ∗ B 1 = [ 3 2 0 5 7 9 ] ∗ [ 1 4 2 ] = [ 3 ∗ 1 + 2 ∗ 4 + 0 ∗ 2 5 ∗ 1 + 7 ∗ 4 + 9 ∗ 2 ] = [ 11 51 ] A*B1 = \left[\begin{array}{lll} 3 & 2 & 0 \\ 5 & 7 & 9 \end{array}\right]* \left[\begin{array}{l} 1 \\ 4 \\ 2 \end{array}\right]= \left[\begin{array}{lll} 3*1+2*4+0*2 \\ 5*1+7*4+9*2 \\ \end{array}\right]= \left[\begin{array}{l} 11 \\ 51 \\ \end{array}\right] AB1=[352709]142=[31+24+0251+74+92]=[1151]

A ∗ B 2 = [ 3 2 0 5 7 9 ] ∗ [ 2 5 8 ] = [ 3 ∗ 2 + 2 ∗ 5 + 0 ∗ 8 5 ∗ 2 + 7 ∗ 5 + 9 ∗ 8 ] = [ 16 117 ] A*B2 = \left[\begin{array}{lll} 3 & 2 & 0 \\ 5 & 7 & 9 \end{array}\right]* \left[\begin{array}{l} 2 \\ 5 \\ 8 \end{array}\right]= \left[\begin{array}{lll} 3*2+2*5+0*8 \\ 5*2+7*5+9*8 \\ \end{array}\right]= \left[\begin{array}{l} 16 \\ 117 \\ \end{array}\right] AB2=[352709]258=[32+25+0852+75+98]=[16117]

A ∗ B 3 = [ 3 2 0 5 7 9 ] ∗ [ 0 5 1 ] = [ 3 ∗ 0 + 2 ∗ 5 + 0 ∗ 1 5 ∗ 0 + 7 ∗ 5 + 9 ∗ 1 ] = [ 10 44 ] A*B3 = \left[\begin{array}{lll} 3 & 2 & 0 \\ 5 & 7 & 9 \end{array}\right]* \left[\begin{array}{l} 0 \\ 5 \\ 1 \end{array}\right]= \left[\begin{array}{lll} 3*0+2*5+0*1 \\ 5*0+7*5+9*1 \\ \end{array}\right]= \left[\begin{array}{l} 10 \\ 44 \\ \end{array}\right] AB3=[352709]051=[30+25+0150+75+91]=[1044]

(3)将3个矩阵合并,分别为矩阵的第一列,第二列,第三列。

C = [ 11 16 10 51 117 44 ] C = \left[\begin{array}{lll} 11 & 16 & 10\\ 51 & 117 & 44 \end{array}\right] C=[1151161171044]

说明:由上边的例子可以看出来,矩阵C的第1行第1列元素就是矩阵A中第1行所有元素与矩阵B中第1列所有元素一一对应相乘,然后相加。其余同理。

矩阵乘法的特性
(1)矩阵乘法不满足交换律,即 A ∗ B ≠ B ∗ A A*B≠B*A AB=BA,在绝大多数情况下都不可以。

假设 A A A为32维矩阵, B B B维23维矩阵,那么 A ∗ B A*B AB为33维矩阵; B ∗ A B*A BA为22维矩阵。明显这两个的结果是不同的。

(2)矩阵乘法满足结合律,即 A ∗ B ∗ C = ( A ∗ B ) ∗ C = A ∗ ( B ∗ C ) A*B*C = (A*B)*C = A*(B*C) ABC=(AB)C=A(BC)

单位矩阵

单位矩阵肯定是一个方阵,即行数和列数一样,是一个 n ∗ n n*n nn维的矩阵(n>=2)。单位矩阵常用 I I I表示。

单位矩阵的特性:AI = IA = A (假设 A A A为32维矩阵,则第一个 I I I默认为22维,第二个 I I I默认为3*3维)。

表示形式(只有对角线位置为1,其余元素均为0):

I = [ 1 0 0 0 1 0 0 0 1 ] , I = [ 1 0 0 1 ] I = \left[\begin{array}{lll} 1 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 1 \end{array}\right], I = \left[\begin{array}{ll} 1 & 0 \\ 0 & 1 \end{array}\right] I=100010001I=[1001]

逆矩阵

一个矩阵的逆矩阵乘以该矩阵,结果为单位矩阵。表示为 A − 1 A^{-1} A1,关系为:

A ⋅ A − 1 = A − 1 ⋅ A = I A \cdot A^{-1}=A^{-1} \cdot A=I AA1=A1A=I

假设矩阵: A = [ 1 3 2 4 ] A = \left[\begin{array}{ll} 1 & 3\\ 2 & 4 \end{array}\right] A=[1234]

则A的逆矩阵为:

A − 1 = [ − 2 1.5 1 − 0.5 ] A^{-1} = \left[\begin{array}{ll} -2 & 1.5\\ 1 & -0.5 \end{array}\right] A1=[211.50.5]

大家可以计算一下它们的乘积,看是不是为单位矩阵,此处就不再计算。逆矩阵的计算方法在Octave或Matlab中可以使用 p i n v ( ) pinv() pinv()函数来进行计算。

此图像的alt属性为空;文件名为image-2.png

转置矩阵

转置矩阵即就是将矩阵的第n行变成按顺序第n列。

假设矩阵A的转置矩阵为B,则满足关系: B i j = A j i B_{i j} = A_{j i} Bij=Aji

假设矩阵: A = [ 1 3 2 4 ] A = \left[\begin{array}{ll} 1 & 3\\ 2 & 4 \end{array}\right] A=[1234]

则转置矩阵: B = [ 1 2 3 4 ] B = \left[\begin{array}{ll} 1 & 2\\ 3 & 4 \end{array}\right] B=[1324]

可以看出,A的第一行变成了B的第一列,A的第二行变成了B的第二列。且满足 B i j = A j i B_{i j} = A_{j i} Bij=Aji

A 11 = 1 , B 11 = 1 A_{1 1} = 1 ,B_{1 1} = 1 A11=1B11=1

A 21 = 2 , B 12 = 2 A_{2 1} = 2,B_{1 2} = 2 A21=2B12=2

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值