线性代数基础
1、向量是什么
1.1、向量的定义
在数学中,向量(也称为欧几里得向量、几何向量、矢量

1.2、向量的表示
向量的记法:印刷体记作粗体的字母(如
$V = \left[\begin{aligned}&x_1\&x_2\&x_3\&x_4\&…\&x_n\end{aligned}\right]$
或者
$V^T = [x_1,x_2,x_3,x_4,…,x_n]$
向量中的每个元素
1.3、向量物理意义

$\vec{OM} = (P,Q,R)$
$\vec{OM} = \vec{OP} + \vec{OQ} + \vec{OR}$
向量的几何意义就是空间中的点,物理意义就是速度或者力这样的矢量。
向量的分量我们称之为维度,
2、行向量与列向量
行向量在线性代数中,是一个
行向量示例:
$V = [x_1,x_2,…,x_n]$
在线性代数中,列向量是一个
列向量示例:
$V = \left[\begin{aligned}&x_1\&x_2\&…\&x_n\end{aligned}\right]$
为简化书写、方便排版起见,有时会以加上转置符号
$V = [x_1,x_2,…,x_n]^T$
在机器学习中说道向量一般都是指列向量。
3、向量运算
3.1、向量加减法
等于它们的分量分别相加,显然两个向量的长度得是相等的,减法我们在这里不列举,很容易举一反三。
$\left[\begin{aligned}2\4\2\end{aligned}\right] + \left[\begin{aligned}3\1\7\end{aligned}\right] = \left[\begin{aligned}5\5\9\end{aligned}\right]$
3.2、向量数乘
$3 \times \left[\begin{aligned}3\1\2\end{aligned}\right] = \left[\begin{aligned}9\3\6\end{aligned}\right]$
3.3、转置
$\left[\begin{aligned}2\4\2\end{aligned}\right]^T = [2,4,2]$
$[7,0,-3]^T = \left[\begin{aligned}7\0\-3\end{aligned}\right] $
3.4、向量内积
两个列向量, $A^TB$,等于对应位置相乘再相加。
$[2,7,3] \cdot \left[\begin{aligned}3\1\7\end{aligned}\right] = 2\times 3 + 7\times 1 + 3 \times 7 = 34$
3.5、向量运算法则
1、实数与向量运算法则,设
-
结合律:$\lambda(\mu A) = (\lambda\mu)A$
-
分配律:$(\lambda + \mu)A = \lambda A + \mu A$ , $\lambda(A + B) = \lambda A + \lambda B$
2、向量内积运算法则
-
交换律:$A\cdot B = B\cdot A$
-
分配律:$(A + B)\cdot C = A\cdot C + B\cdot C$
-
结合律:$(\lambda A)\cdot B = \lambda(A\cdot B)$
4、向量的范数
范数的公式是向量每个分量绝对值
可以的。向量的范数就是把向量变成一个标量,范数的表示就是两个竖线来表示,然后右下角写上
$||A||P = \left [ \sum\limits{i = 1}^n|a_i|^P\right ]^{\frac{1}{P}}$

$||X||1 = \sum\limits{i = 1}^n|x_i|$
即向量元素绝对值之和,表示
$||X||2 = \sqrt{\sum\limits{i=1}^nx_i^2}$
即向量元素的平方和再开方,也叫欧几里得范数,常用计算向量长度,表示
$||X||P = \left [ \sum\limits{i = 1}^n|x_i|^P\right ]^{\frac{1}{P}}$
即向量元素绝对值的
$\infty $
$||X||{\infty} = \max\limits{i}|x_i|$
当

国际象棋棋盘上二个位置间的切比雪夫距离是指王要从一个位子移至另一个位子需要走的步数。由于王可以往斜前或斜后方向移动一格,因此可以较有效率的到达目的的格子。
$||X||{-\infty} = \min\limits{i}|x_i|$
当
5、特殊向量
就是分量全部为
$[0,0,…,0]$
单位向量
就是
向量
计算公式:
- 空间向量
(x,y,z) ,其中x,y,z 表示三个轴上的坐标,模长为:$\sqrt{x^2 + y^2 + z^2}$。 - 平面向量
(x,y) , 模长为:$\sqrt{x^2 + y^2}$
根据
$X^TX$
6、矩阵是什么
矩阵就是二维数组,下面是一个
$ A = \left{ \begin{matrix}a_{11} & \cdots & a_{1n} \ a_{21} & \cdots & a_{2n} \ \vdots & \ddots & \vdots \ a_{m1} & \cdots & a_{mn}\end{matrix} \right} $
注意
这
阵
7、常见矩阵
7.1、方阵
如果
$ A = \left [ \begin{matrix}1 & 11 & 3 \ 4 & 9 & 2 \ 7 & 5 & 1\end{matrix} \right ] $
7.2、对称矩阵
定义是
$ A = \left [ \begin{matrix}1 & 4 & 7 \ 4 & 9 & 2 \ 7 & 2 & 1\end{matrix} \right ] $
7.3、单位矩阵
主对角线都是
$ A = \left [ \begin{matrix}1 & 0 & 0 \ 0 & 1 & 0 \ 0 & 0 & 1\end{matrix} \right ] $
7.4、对角矩阵
对角矩阵,就是主对角线非
$A = \left[\begin{matrix}\lambda_1 &\cdots &0&0&0\0&\lambda_2&0&0&0\0&\cdots&\cdots&\cdots&0\0&0&\cdots&\cdots&\cdots\0&0&0&\cdots&\lambda_n\end{matrix}\right]$
对角矩阵一定是方阵。不然没有对角线!
8、矩阵运算
8.1、矩阵加减法
矩阵的加法就是矩阵的对应位置相加,减法也是一样就是对应位置相减。
$\left[\begin{matrix}1&3\2&7\5&4\end{matrix}\right] + \left[\begin{matrix}4&6\0&3\2&1\end{matrix}\right] = \left[\begin{matrix}5&9\2&10\7&5\end{matrix}\right]$
8.2、数乘
$3 \times \left[\begin{matrix}1&3&5\2&4&3\end{matrix}\right] = \left[\begin{matrix}3&9&15\6&12&9\end{matrix}\right]$
8.3、矩阵乘法
矩阵的乘法和一般的乘法是不太一样!
它是把第一个矩阵的每一行,和第二个矩阵的每一列拿过来做内积得到结果。

$\left[\begin{matrix}1&2&1\3&1&0\end{matrix}\right] \cdot\left[\begin{matrix}2&5\0&4\7&2\end{matrix}\right] = \left[\begin{matrix}9&15\6&19\end{matrix}\right] $
矩阵乘法运算结果
$\rm m \times n \ \cdot \ n\times k = m \times k$
8.4、矩阵转置
转置的操作和向量是一样的,就是把
$\left[\begin{matrix}1&2&1\3&1&0\end{matrix}\right]^T = \left[\begin{matrix}1&3\2&1\1&0\end{matrix}\right]$
8.4、矩阵运算法则
矩阵加减法
满足:分配律、结合律、交换律
$A + B + C = (A + C) + B$
矩阵乘法
- 满足结合律
$(AB)C = A(BC)$
- 满足分配律
$(A + B)C = AC + BC$ ,左分配律
$A(B + C) = AB + AC$ ,右分配律
- 不满足交换律
不一定相等,甚至
$AB \not= BA$
$\left[\begin{matrix}1&2&1\3&1&0\end{matrix}\right] \cdot\left[\begin{matrix}2&5\0&4\7&2\end{matrix}\right] = \left[\begin{matrix}9&15\6&19\end{matrix}\right] $
$\left[\begin{matrix}2&5\0&4\7&2\end{matrix}\right] \cdot \left[\begin{matrix}1&2&1\3&1&0\end{matrix}\right] = \left[\begin{matrix}17&9&2\12&4&0\13&16&7\end{matrix}\right] $
矩阵乘法
$(AB)^T = B^TA^T$
9、逆矩阵
9.1、逆矩阵定义
矩阵有
逆矩阵怎么定义的?
假设有个矩阵
那么我们称这里的
有个很重要的结论就是,如果这样的
$A = B^{-1}$
$B = A^{-1}$
9.2、逆矩阵作用
矩阵求逆有什么用呢?它可以帮助我们解线性方程组,比如
$X^{-1}XW = X^{-1}Y$
$(X^{-1}X)W = X^{-1}Y$
$IW = X^{-1}Y$
$W = X^{-1}Y$
就可以求解出方程的系数,它发明的目的也是干这样的事情用的。
举例说明:
# 三元一次方程
# 3x + 2y + 4z = 19
# 2x -y + 3z = 9
# x + y - z = 0
import numpy as np
X = np.array([[3,2,4],[2,-1,3],[1,1,-1]])
Y = np.array([19,9,0])
display(X,Y)
# np.linalg.inv表示矩阵求逆
# dot表示矩阵乘法
W = np.linalg.inv(X).dot(Y)
print('求解方程得x,y,z为:',W)
'''
array([[ 3, 2, 4],
[ 2, -1, 3],
[ 1, 1, -1]])
array([19, 9, 0])
求解方程得x,y,z为: [1. 2. 3.]
'''
从这里我们也可以看出来单位矩阵像我们乘法里面的
逆矩阵相关公式:
- $(AB)^{-1} = B^{-1}A^{-1}$
- $(A^{-1})^{-1} = A$
- $(A^T)^{-1} = (A^{-1})^T$
10、行列式
行列式其实在机器学习中用的并不多,一个矩阵必须是方阵,才能计算它的行列式
行列式是把矩阵变成一个标量
$\left |\begin{matrix}a_{11}&a_{12}\a_{21}&a_{22}\end{matrix}\right| = a_{11}a_{22} - a_{12}a_{21}$
import numpy as np
A = np.array([[1,3],[2,5]])
display(A)
print('矩阵A的行列式是:\n',np.linalg.det(A))
'''
array([[1, 3],
[2, 5]])
矩阵A的行列式是:
-1.0
'''
行列式在求解,逆矩阵的过程中,起到了作用,行列式不为
import numpy as np
A = np.array([[1,3],[2,6]])
display(A)
print('矩阵A的行列式是:\n',np.linalg.det(A))
'''
array([[1, 3],
[2, 6]])
矩阵A的行列式是:
0.0
'''
# 无法求解行列式,报错信息:LinAlgError: Singular matrix
print('矩阵A的逆矩阵为:\n',np.linalg.inv(A))
11、伴随矩阵
11.1、伴随矩阵定义
设有一矩阵

设

称为矩阵
11.2、代数余子式
1、代数余子式定义

2、代数余子式计算

计算过程如下:

11.3、伴随矩阵性质
$AA^* = A^*A = |A|E$
$AA^* = A^*A = |A|I$
11.4、伴随矩阵与逆矩阵
$AA^{-1} = I$
$AA^* = |A|I$ ,其中
$A\frac{A^*}{|A|} = I$
根据上式可得:
$A^{-1} = \frac{A^*}{|A|}$
import numpy as np
# 声明矩阵
A = np.array([
[1,2,3],
[2,2,1],
[3,4,3]])
A_bs = [] # 伴随矩阵
n = 3 # A方阵的行、列数量
for i in range(n):
for j in range(n):
row = [0,1,2] # 行索引
col = [0,1,2] # 列索引
row.remove(i) # 去除行
col.remove(j) # 去除列
# 代数余子式
A_ij = A[np.ix_(row,col)]
A_bs.append(((-1)**(i+j)) * np.linalg.det(A_ij))
A_bs = np.array(A_bs).reshape(3,3).T
print('根据伴随矩阵求逆矩阵:\n',A_bs/np.linalg.det(A))
print('用NumPy模块求逆矩阵 :\n',np.linalg.inv(A))
'''
根据伴随矩阵求逆矩阵:
[[ 1. 3. -2. ]
[-1.5 -3. 2.5]
[ 1. 1. -1. ]]
用NumPy模块求逆矩阵 :
[[ 1. 3. -2. ]
[-1.5 -3. 2.5]
[ 1. 1. -1. ]]
'''