文章目录
3.线性代数回顾(Linear Algebra Review)
3.1 矩阵和向量(Matrices and Vectors)
矩阵是由数字组成的矩形阵列。
A
=
[
1402
191
1371
821
949
1437
147
1448
]
A=\left[ \begin{matrix} 1402 & 191 \\ 1371 & 821 \\ 949 & 1437 \\ 147 & 1448 \\ \end{matrix} \right]
A=⎣⎢⎢⎡1402137194914719182114371448⎦⎥⎥⎤
上面矩阵的是一个4x2矩阵,即矩阵的维数是4x2(行数x列数)
A
i
j
A_{ij}
Aij指第
i
i
i行,第
j
j
j列的元素,例如
A
32
=
1437
A_{32}=1437
A32=1437
向量是只有一列的矩阵(讲义中的向量通常是指列向量),例如:
y
=
[
460
232
315
178
]
y=\left[ \begin{matrix} 460 \\ 232 \\ 315 \\ 178 \\ \end{matrix} \right]
y=⎣⎢⎢⎡460232315178⎦⎥⎥⎤
有4x1个元素,称为四维(列)向量。
3.2 加法和标量乘法(Addition and Scalar Multiplication)
矩阵的加法:相同维度(行数列数都相同)的两个矩阵可以相加,
例:
[
1
0
2
5
3
1
]
+
[
4
0.5
2
5
0
1
]
=
[
5
0.5
4
10
3
2
]
\left[\begin{matrix}1&0\\ 2&5\\ 3&1\\ \end{matrix}\right] +\left[\begin{matrix}4&0.5\\ 2&5\\ 0&1\\ \end{matrix}\right]= \left[\begin{matrix}5&0.5\\ 4&10\\ 3&2\\ \end{matrix}\right]
⎣⎡123051⎦⎤+⎣⎡4200.551⎦⎤=⎣⎡5430.5102⎦⎤
矩阵和标量(这里指实数)的乘法:实数乘每一个元素,
例:
3
∗
[
1
0
2
5
3
1
]
=
[
3
0
6
15
9
3
]
=
[
1
0
2
5
3
1
]
∗
3
3*\left[\begin{matrix}1&0\\ 2&5\\ 3&1\\ \end{matrix}\right] =\left[\begin{matrix}3&0\\ 6&15\\ 9&3\\ \end{matrix}\right]= \left[\begin{matrix}1&0\\ 2&5\\ 3&1\\ \end{matrix}\right]*3
3∗⎣⎡123051⎦⎤=⎣⎡3690153⎦⎤=⎣⎡123051⎦⎤∗3
3.3 矩阵向量乘法(Matrix-Vector Multiplication)
矩阵和向量的乘法:
m
×
n
m \times n
m×n的矩阵乘以
n
×
1
n \times 1
n×1的向量,得到的是
m
×
1
m \times 1
m×1的向量。
例1:
[
1
3
4
0
2
1
]
[
1
5
]
=
[
16
4
7
]
\left[\begin{matrix}1&3\\ 4&0\\ 2&1\\ \end{matrix}\right] \left[\begin{matrix}1\\ 5\\ \end{matrix}\right]= \left[\begin{matrix}16\\ 4\\ 7\\ \end{matrix}\right]
⎣⎡142301⎦⎤[15]=⎣⎡1647⎦⎤
计算过程:
1
×
1
+
3
×
5
=
16
4
×
1
+
0
×
5
=
4
2
×
1
+
1
×
5
=
7
1 \times 1 + 3 \times 5 = 16\\ 4 \times 1 + 0 \times 5 = 4\\ 2 \times 1 + 1 \times 5 = 7
1×1+3×5=164×1+0×5=42×1+1×5=7
例2:
[
1
2
1
5
0
3
0
4
−
1
−
2
0
0
]
[
1
3
2
1
]
=
[
14
13
−
7
]
\left[\begin{matrix}1&2&1&5\\ 0&3&0&4\\ -1&-2&0&0\\ \end{matrix}\right] \left[\begin{matrix}1\\ 3\\ 2\\ 1\\ \end{matrix}\right]= \left[\begin{matrix}14\\ 13\\ -7\\ \end{matrix}\right]
⎣⎡10−123−2100540⎦⎤⎣⎢⎢⎡1321⎦⎥⎥⎤=⎣⎡1413−7⎦⎤
计算过程:
1
×
1
+
2
×
3
+
1
×
2
+
5
×
1
=
14
0
×
1
+
3
×
3
+
0
×
2
+
4
×
1
=
13
−
1
×
1
+
−
2
×
3
+
0
×
2
+
0
×
1
=
−
7
1 \times 1 + 2 \times 3 + 1 \times 2 + 5 \times 1 = 14\\ 0 \times 1 + 3 \times 3 + 0 \times 2 + 4 \times 1 = 13\\ -1 \times 1 + -2 \times 3 + 0 \times 2 + 0 \times 1 = -7\\
1×1+2×3+1×2+5×1=140×1+3×3+0×2+4×1=13−1×1+−2×3+0×2+0×1=−7
应用到之前讲到的房价预测问题,假设有四组数据:
h θ ( x ) = − 40 + 0.25 x h_\theta(x)=-40 + 0.25x hθ(x)=−40+0.25x
可以使用矩阵向量相乘的方法表示,并计算出所有房子的价格:
[
1
2104
1
1416
1
1534
1
852
]
[
−
40
0.25
]
=
[
−
40
×
1
+
0.25
×
2104
−
40
×
1
+
0.25
×
1416
−
40
×
1
+
0.25
×
1534
−
40
×
1
+
0.25
×
852
]
\left[\begin{matrix}1&2104\\ 1&1416\\ 1&1534\\ 1&852\\ \end{matrix}\right] \left[\begin{matrix}-40\\ 0.25\\ \end{matrix}\right]= \left[\begin{matrix}-40 \times 1 + 0.25 \times 2104\\ -40 \times 1 + 0.25 \times 1416\\ -40 \times 1 + 0.25 \times 1534\\ -40 \times 1 + 0.25 \times 852\\\end{matrix}\right]
⎣⎢⎢⎡1111210414161534852⎦⎥⎥⎤[−400.25]=⎣⎢⎢⎡−40×1+0.25×2104−40×1+0.25×1416−40×1+0.25×1534−40×1+0.25×852⎦⎥⎥⎤
具体到代码实现可以直接写成如下形式:
prediction = DataMatrix * parameters
这种写法不仅简洁,而且当数据量较大时,效率也高于for循环的写法。
3.4 矩阵乘法(Matrix-Matrix Multiplication)
m
×
n
m\times n
m×n矩阵乘以
n
×
o
n\times o
n×o,结果为
m
×
o
m\times o
m×o矩阵。
还是上面的房屋数据,此时有三组假设函数,那么用矩阵乘矩阵的计算方法如下:
编程时采用这种方式的好处是:
- 代码简洁,不用每次都写复杂的for循环结构。
- 计算效率高,一些开源线性代数库都对实现矩阵间的乘法的效率进行了高度优化。
3.5 矩阵乘法的性质(Matrix Multiplication Properties)
不满足交换律:
A
×
B
≠
B
×
A
A\times B \ne B\times A
A×B̸=B×A
满足结合律:
A
×
(
B
×
C
)
=
(
A
×
B
)
×
C
A\times (B \times C) = (A \times B) \times C
A×(B×C)=(A×B)×C
单位矩阵:主对角线元素全部为1,其他元素全部为0的矩阵。通常用I或E表示。
A
I
=
I
A
=
A
AI=IA=A
AI=IA=A
3.6 逆和转置(Inverse and Transpose)
如果A是一个
m
×
m
m\times m
m×m矩阵(方阵),并且有逆矩阵:
A
A
−
1
=
A
−
1
A
=
I
AA^{-1} = A^{-1}A = I
AA−1=A−1A=I
矩阵的转置:
若
B
i
j
=
A
j
i
B_{ij}=A_{ji}
Bij=Aji,则
A
T
=
B
A^T=B
AT=B。
直观来看,将
A
A
A的所有元素绕着一条从
A
11
A_{11}
A11出发的右下方45°的轴做镜面反转,即得到
A
A
A的转置。
例如:
A
=
[
1
2
0
3
5
9
]
A=\left[\begin{matrix}1&2&0\\ 3&5&9\\ \end{matrix}\right]
A=[132509]
B
=
A
T
=
[
1
3
2
5
0
9
]
B=A^T=\left[\begin{matrix}1&3\\ 2&5\\ 0&9\\ \end{matrix}\right]
B=AT=⎣⎡120359⎦⎤
矩阵转置的基本性质:
(
A
±
B
)
T
=
A
T
±
B
T
(
A
×
B
)
T
=
B
T
×
A
T
(
A
T
)
T
=
A
(
k
A
)
T
=
k
A
T
(A\pm B)^T=A^T\pm B^T\\ (A\times B)^T=B^T\times A^T\\ (A^T)^T=A\\ (kA)^T=kA^T
(A±B)T=AT±BT(A×B)T=BT×AT(AT)T=A(kA)T=kAT