此博文markdown原文链接,猛戳这里!!
文章目录
标量、向量、矩阵和张量
- 标量 ( s c a l a r ) \rm (scalar) (scalar):一个单独的数,一般用斜体表示标量,通常是小写字母。定义标量时,通常会指出其所属类型。比如定义自然数标量时,会这样定义" 令 n ∈ N 令 n \in \mathbb{N} 令n∈N表示元素数目"。
- 向量 ( v e c t o r ) \rm (vector) (vector):一列数,并且有序排列。通过索引可以定位到每个单独的数。通常用小写的斜粗体字母表示。通常也会指出其所属类型。若每个元素都属于 R \mathbb{R} R,并且该向量有 n n n个元素,那么该向量输入实数集 R \mathbb{R} R的 n n n次笛卡尔积构成的集合,记为 R n \mathbb{R}^n Rn,即: x ∈ R n \boldsymbol x \in \mathbb{R}^n x∈Rn。
x = [ x 1 x 2 ⋮ x n ] \boldsymbol x = \begin{bmatrix} x_1 \\ x_2 \\ \vdots \\ x_n \end{bmatrix} x=⎣⎢⎢⎢⎡x1x2⋮xn⎦⎥⎥⎥⎤
可以将向量看做空间中的点,每个元素是不同坐标轴上的坐标。
- 矩阵 ( m a t r i x ) \rm (matrix) (matrix):一个二维数组,每个元素被两个索引唯一确定。通常用斜粗体大写来表示矩阵,如 A \boldsymbol A A。如果矩阵的高度为 m m m,宽度为 n n n。则说 A ∈ R m × n \boldsymbol A \in \mathbb{R}^{m \times n} A∈Rm×n。 A m , n A_{m,n} Am,n来表示矩阵中 m m m行 n n n列的元素。表示 i i i行元素用 A i , : A_{i, :} Ai,:,表示 j j j列元素用 A : , j A_{:,j} A:,j。
A = [ A 1 , 1 A 1 , 2 A 2 , 1 A 2 , 2 ] \boldsymbol A = \begin{bmatrix} A_{1, 1} & A_{1, 2} \\ A_{2, 1} & A_{2, 2} \end{bmatrix} A=[A1,1A2,1A1,2A2,2]
有时需要对矩阵逐元素进行操作,可以用 f ( A ) i , j f(\boldsymbol A)_{i,j} f(A)i,j表示 f f f作用在矩阵元素 A i , j A_{i,j} Ai,j上。
- 张量 ( t e n s o r ) \rm (tensor) (tensor):多于二维的数组。用 A \mathsf{A} A表示张量, A i , j , k \mathsf{A}_{i,j,k} Ai,j,k表示其元素。
import numpy as np
# 标量
s = 5
print(s)
# 向量
v = np.array([1, 2])
print(v)
# 矩阵
m = np.array([[1, 3], [2, 4]])
print(m)
# 张量
t = np.array([
[[1,2,3], [2,3,4]],
[[3,4,5], [4,5,6]],
[[5,6,7], [6,7,8]]
])
print(t)
矩阵转置
矩阵转置就是将原矩阵沿主对角线翻转,矩阵
A
\boldsymbol A
A的转置表示为
A
=
A
T
\boldsymbol A = \boldsymbol A^\mathrm{T}
A=AT,定义如下
(
A
T
)
i
,
j
=
A
j
,
i
(\boldsymbol A^{\mathrm {T}})_{i, j} =\boldsymbol A_{j,i}
(AT)i,j=Aj,i
向量可以看做只有一列的矩阵,那么向量的转置就可以视为只有一行的矩阵。标量可以视为一行一列的矩阵,其转置等于自身。
a
T
=
a
a^{\mathrm{T}} = a
aT=a.
A = np.array([[1, 2, 3],[1, 0, 2]])
A_t = A.transpose()
矩阵加法
加法对应元素相加,要求两个矩阵必须形状相同。
C
=
A
+
B
,
C
i
,
j
=
A
i
,
j
+
B
i
,
j
\boldsymbol C = \boldsymbol A +\boldsymbol B, C_{i,j} = A_{i,j} + B_{i, j}
C=A+B,Ci,j=Ai,j+Bi,j
标量和矩阵相乘,或者和矩阵相加时,只需要将其与矩阵的每个元素相乘或者相加。
D
=
a
⋅
B
+
c
,
其
中
D
i
,
j
=
a
⋅
B
i
,
j
+
c
\boldsymbol D = a \cdot \boldsymbol B + c, 其中 D_{i,j} = a \cdot B_{i,j} +c
D=a⋅B+c,其中Di,j=a⋅Bi,j+c
A = np.array([
[1, 2, 3], [4, 5, 6]
])
B = np.array([
[1, 2, 3], [4, 5, 6]
])
C = A + B
print(C)
# [[ 2 4 6]
# [ 8 10 12]]
D = 2 * B + 1
print(D)
# [[ 3 5 7]
# [ 9 11 13]]
矩阵和向量相乘
向量内积:两个向量的对应元素相乘并相加。
a
⋅
b
=
∣
a
∣
∣
b
∣
cos
θ
,
θ
是
两
个
向
量
的
夹
角
\boldsymbol a \cdot \boldsymbol b = \left| \boldsymbol a \right| |\boldsymbol b| \cos \theta, \theta是两个向量的夹角
a⋅b=∣a∣∣b∣cosθ,θ是两个向量的夹角
从上述表达式中我们可以看出,向量内积的物理含义就是向量
a
\boldsymbol a
a在
b
\boldsymbol b
b方向上的投影长度,若
b
\boldsymbol b
b的模是
1
1
1,则
a
⋅
b
=
∣
a
∣
cos
θ
\boldsymbol a \cdot \boldsymbol b = \left| \boldsymbol a \right|\cos \theta
a⋅b=∣a∣cosθ,该结论同样可以适用于矩阵相乘,在后面的矩阵线性变换中我们会用到该结论。
矩阵相乘:矩阵
A
m
×
p
\boldsymbol A_{m \times p}
Am×p和矩阵
B
p
×
n
\boldsymbol B_{p \times n}
Bp×n的乘积可以表示为
C
m
×
n
=
A
m
×
p
B
p
×
n
\boldsymbol C_{m \times n} = \boldsymbol A_{m \times p} \boldsymbol B_{p \times n}
Cm×n=Am×pBp×n
其中,矩阵
A
\boldsymbol A
A的列数和矩阵
B
\boldsymbol B
B的行数必须相同,得到的矩阵
C
\boldsymbol C
C是
m
m
m行
n
n
n列。具体的乘法操作如下
C
i
,
j
=
∑
k
A
i
,
k
B
k
,
j
C_{i,j} = \sum_{k} A_{i, k}B_{k, j}
Ci,j=k∑Ai,kBk,j
该矩阵乘积不是矩阵对应元素相乘,但是这种操作也确实存在,被称为元素对应乘积或者叫Hadamard乘积,记为
A
⨀
B
\boldsymbol A \bigodot \boldsymbol B
A⨀B。
矩阵相乘服从分配律和结合律,但并不满足交换律。两个向量的点积满足交换律:
x
T
y
=
y
T
x
\boldsymbol x^{\rm{T}} \boldsymbol y = \boldsymbol y^{\rm{T}} \boldsymbol x
xTy=yTx
其中
x
\bf \it x
x是
n
n
n行
1
1
1列,转置之后是
1
1
1行
n
n
n列,乘以
y
\bf \it y
y是
n
n
n行
1
1
1列,最终结果是
1
1
1行
1
1
1列,和右边结果相同。
矩阵乘积的转置有
(
A
B
)
T
=
B
T
A
T
(\boldsymbol {AB})^{\rm{T}} = \boldsymbol B^{\rm{T}} \boldsymbol A^{\rm{T}}
(AB)T=BTAT
两个向量的点积是标量,标量转置的结果是自身,可以通过上述结论得到
x
T
y
=
(
x
T
y
)
T
=
y
T
x
\boldsymbol x^{\rm{T}} \boldsymbol y = (\boldsymbol x^{\rm{T}} \boldsymbol y)^{\rm T} = \boldsymbol y^{\rm{T}} \boldsymbol x
xTy=(xTy)T=yTx
了解矩阵乘积之后,我们就可以用矩阵乘积的方式来表示线性方程组
A
x
=
b
\boldsymbol {Ax} = \boldsymbol b
Ax=b. 其中
A
∈
R
m
×
n
\boldsymbol A \in \mathbb{R}^{m \times n}
A∈Rm×n是一个已知矩阵
m
m
m行
n
n
n列,
x
∈
R
n
\boldsymbol x \in \mathbb{R}^{n}
x∈Rn是一个求解
n
n
n行未知向量,
b
∈
R
m
\boldsymbol b \in \mathbb{R}^m
b∈Rm是一个已知向量。这样就可以提供一个更紧凑的表示。
A = np.array([
[1, 2, 3], [4, 5, 6]
])
A1 = np.array([
[1, 2, 3], [2, 3, 4]
])
B = np.array([
[1, 2, 3], [3, 4, 5], [5, 6, 7]
])
C = A.dot(B) # 点乘 矩阵乘积
C = np.dot(A, B)
# C = np.dot(B, A) # 不满足交换律
print("矩阵(点)乘积: \n", C)
# [[22 28 34]
# [49 64 79]]
print("矩阵逐元素乘积: \n", np.multiply(A, A1))
print("矩阵逐元素乘积: \n", A * A1)
# [[1 4 9]
# [8 15 24]]
v1 = np.array([1, 2, 3])
v2 = np.array([4, 5, 6])
v = v1.dot(v2) # 向量内积 结果为标量
v = np.dot(v1, v2)
v = np.dot(v2, v1) # 满足交换律
print("向量内积: ", v)
# 32
逆矩阵和单位矩阵
单位矩阵
(
i
d
e
n
t
i
t
y
m
a
t
r
i
x
)
(\rm identity \ matrix)
(identity matrix),所有沿主对角线的元素都是1,其他所有位置的元素都是0。任何矩阵和单位矩阵乘积都不会变。单位矩阵记作
I
n
∈
R
n
×
n
\boldsymbol I_{n} \in \mathbb{R}^{n \times n}
In∈Rn×n。
矩阵
A
\boldsymbol A
A的矩阵逆记作
A
−
1
\boldsymbol A^{-1}
A−1,满足
A
−
1
A
=
I
n
\boldsymbol A^{-1} \boldsymbol A = \boldsymbol I_{n}
A−1A=In
因此,
A
x
=
b
\boldsymbol {Ax} = \boldsymbol b
Ax=b中可求得
x
=
A
−
1
b
\boldsymbol x = \boldsymbol A^{-1} \boldsymbol b
x=A−1b.
A = [[1.0,2.0],[3.0,4.0]]
A_inv = np.linalg.inv(A)
print(A_inv)
# [[-2. 1.]
# [1.5 - 0.5]]
线性相关和生成子空间
线性相关:若
a
=
[
a
1
,
a
2
,
⋯
,
a
n
]
\boldsymbol a = [\boldsymbol {a_1, a_2, \cdots, a_n}]
a=[a1,a2,⋯,an]中每个向量都能由其他向量线性表示,则
a
\boldsymbol a
a是线性相关的。也就是说,存在不全为
0
0
0的数
k
1
,
k
2
,
⋯
,
k
n
k_1, k_2, \cdots, k_n
k1,k2,⋯,kn,使得
k
1
a
1
+
k
2
a
2
+
⋯
+
k
n
a
n
=
0
k_1 \boldsymbol a_1 + k_2 \boldsymbol a_2 + \cdots + k_n \boldsymbol a_n = 0
k1a1+k2a2+⋯+knan=0
成立,那么
a
\boldsymbol a
a中的向量线性相关。否则,线性无关。若它们两两正交,那么也是线性无关。
如果逆矩阵
A
−
1
\boldsymbol A^{-1}
A−1存在,那么对于每个向量
b
\boldsymbol b
b,必然存在一个解。但是对于方程组而言,对于向量
b
\boldsymbol b
b的某些值可能不存在解,或者存在无限多解。存在多于一个解但是少于无限个解的情况不可能存在。因为如果x和y都是都方程解,那么
z
=
α
x
+
(
1
−
α
)
y
\boldsymbol z = \alpha\boldsymbol x + (1- \alpha)\boldsymbol y
z=αx+(1−α)y
也是该方程的解。
矩阵必须是一个方阵,并且所有的列向量线性无关,一个列向量线性相关的方阵被称为奇异的。如果矩阵A不是一个方阵或者是一个奇异的方阵,该方阵可能任然有解,但不能用矩阵逆法求解。
范数
范数
(
n
o
r
m
)
\rm (norm)
(norm)用于衡量向量大小。形式上
L
P
L^P
LP范数定义如下:
∥
x
∥
p
=
(
∑
i
∣
x
i
∣
p
)
1
p
\left\| \boldsymbol x \right\| _p = \left(\sum_i |x_i|^p\right)^{\frac{1}{p}}
∥x∥p=(i∑∣xi∣p)p1
其中
p
∈
R
,
p
≥
1
p \in \mathbb{R},p \ge 1
p∈R,p≥1。
范数是将向量映射到非负值的函数。直观来说,向量 x \boldsymbol x x的范数衡量源点到点 x x x的距离。
L
2
L^2
L2范数:也叫作欧几里得范数,
∣
∣
x
∣
∣
2
||x||_2
∣∣x∣∣2为欧几里得距离。有时也用
L
2
L^2
L2范数的平方来衡量向量:
x
T
x
\boldsymbol x^T \boldsymbol x
xTx。平方
L
2
L^2
L2范数在计算上更为便利。例如它对
x
\boldsymbol x
x的梯度的各个分量只依赖于x对应的各个分量,而
L
2
L^2
L2范数则对
x
\boldsymbol x
x的梯度的各个分量要依赖于整个
x
x
x向量。
∥
x
∥
2
=
∑
i
x
i
2
\left \| \boldsymbol x\right \|_2 = \sqrt{\sum_i x_i^2}
∥x∥2=i∑xi2
L
1
L^1
L1范数:
L
2
L^2
L2范数并不一定适用于所有情况,他在原点附近就增长十分缓慢,因此不适用于需要区别
0
0
0和非常小但是非
0
0
0值的情况。
L
1
L^1
L1范数就是一个比较好的选择,它在所有方向的增长速度是一样的。定义如下
∥
x
∥
1
=
∑
i
∣
x
i
∣
\left\|x\right\|_1 = \sum_i \left| x_i \right|
∥x∥1=i∑∣xi∣
L
∞
L^{\infty}
L∞范数:在数学意义上来说是向量元素绝对值的最大值,也叫作
m
a
x
n
o
r
m
\rm max \ norm
max norm。
∥
x
∥
∞
=
max
i
∣
x
i
∣
\left \| \boldsymbol x\right \|_{\infty} = \max_{i} \left| x_i \right |
∥x∥∞=imax∣xi∣
衡量矩阵在机器学习中使用的是
F
F
F范数
(
F
r
o
b
e
n
i
u
s
n
o
r
m
)
(\rm Frobenius \ norm)
(Frobenius norm),定义如下:
∥
A
∥
F
=
∑
i
,
j
A
i
,
j
2
\left \| \boldsymbol A \right \| _{F} = \sqrt{\sum_{i,j} A_{i,j}^2}
∥A∥F=i,j∑Ai,j2
其类似于
L
2
L^2
L2范数,两个向量的点积也可以用范数来表示,
x
T
y
=
∥
x
∥
2
∥
y
∥
2
cos
θ
\boldsymbol x^{\rm T} \boldsymbol y = \left \| \boldsymbol x \right \|_2 \left \| \boldsymbol y \right \|_2 \cos\theta
xTy=∥x∥2∥y∥2cosθ
v = np.array([1, 2, 3, 4])
print("向量1范数: ", np.linalg.norm(v, ord=1))
print("向量2范数: ", np.linalg.norm(v, ord=2))
print("向量无穷范数: ", np.linalg.norm(v, ord=np.inf))
m = np.array([
[1, 2],
[3, 4]
])
print("矩阵F范数: ", np.linalg.norm(m, ord="fro"))
# 向量1范数: 10.0
# 向量2范数: 5.477225575051661
# 向量无穷范数: 4.0
# 矩阵F范数: 5.477225575051661
线性空间
- 定义:设 V V V 是非空集合, R \mathbf{R} R 为实数域,如果对任意两个元素 α , β ∈ V \boldsymbol{\alpha}, \boldsymbol{\beta} \in V α,β∈V, 总有唯一的一个元素 γ ∈ \gamma \in γ∈ V V V 与之对应,称为 α \boldsymbol{\alpha} α 与 β \boldsymbol{\beta} β 的和, 记为 γ = α + β \boldsymbol{\gamma}=\boldsymbol{\alpha}+\boldsymbol{\beta} γ=α+β; 对任一数 λ ∈ R \lambda \in \mathbf{R} λ∈R 与任一元素 α ∈ V \boldsymbol{\alpha} \in V α∈V,总有唯一一个元素 δ ∈ V \boldsymbol{\delta} \in V δ∈V 与之对应,称为 λ \lambda λ 与 α \boldsymbol{\alpha} α 的积,记为 δ = λ α \boldsymbol{\delta}=\lambda \boldsymbol{\alpha} δ=λα. 这两种运算满足下面各条运算规律:
-
交换律 α + β = β + α \quad \boldsymbol{\alpha}+\boldsymbol{\beta}=\boldsymbol{\beta}+\boldsymbol{\alpha} α+β=β+α;
-
结合律 ( α + β ) + r = α + ( β + γ ) \quad(\boldsymbol{\alpha}+\boldsymbol{\beta})+\boldsymbol{r}=\boldsymbol{\alpha}+(\boldsymbol{\beta}+\boldsymbol{\gamma}) (α+β)+r=α+(β+γ);
-
有零元 0 ∈ V 0 \in V 0∈V. 使任意 α ∈ V \boldsymbol{\alpha} \in V α∈V 有 0 + α = α \mathbf{0}+\boldsymbol{\alpha}=\boldsymbol{\alpha} 0+α=α;
-
有负元素 对任一 α ∈ V \boldsymbol{\alpha} \in V α∈V, 都有 α \boldsymbol{\alpha} α 的负元素 β ∈ V \boldsymbol{\beta} \in V β∈V, 使 α + β = 0 \boldsymbol{\alpha}+\boldsymbol{\beta}=\mathbf{0} α+β=0;
-
有单位元 1 ⋅ α = α 1 \cdot \boldsymbol{\alpha}=\boldsymbol{\alpha} 1⋅α=α;
-
乘法结合律 λ ( μ α ) = ( λ μ ) α \quad \lambda(\mu \boldsymbol{\alpha})=(\lambda \mu) \boldsymbol{\alpha} λ(μα)=(λμ)α;
-
对数的分配律 ( λ + μ ) α = λ α + μ α ; \quad(\lambda+\mu) \boldsymbol{\alpha}=\lambda \boldsymbol{\alpha}+\mu \boldsymbol{\alpha} ; (λ+μ)α=λα+μα;
-
对元素的分配律 λ ( α + β ) = λ α + λ β \quad \lambda(\boldsymbol{\alpha}+\boldsymbol{\beta})=\lambda \boldsymbol{\alpha}+\lambda \boldsymbol{\beta} λ(α+β)=λα+λβ.
则称 V V V 为线性空间(或向量空间), V V V 中的元素统称为向量.
-
线性空间的基:若线性空间 V V V中存在 n n n个元素 [ α 1 , α 2 , ⋯ , α n ] [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] [α1,α2,⋯,αn],它们线性无关且 V V V中任意一个元素 α \boldsymbol \alpha α可由 [ α 1 , α 2 , ⋯ , α n ] [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] [α1,α2,⋯,αn]线性表示,则称 [ α 1 , α 2 , ⋯ , α n ] [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] [α1,α2,⋯,αn]为线性空间 V V V的一个基, n n n表示空间的维数。
-
坐标:假设 [ α 1 , α 2 , ⋯ , α n ] [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] [α1,α2,⋯,αn]为线性空间 V V V的一个基,对于 V V V中的任意一个元素 α \boldsymbol \alpha α,可以用一组有序数 ( x 1 , x 2 , x 3 , ⋯ , x n ) (x_1, x_2, x_3, \cdots, x_n) (x1,x2,x3,⋯,xn),使得
α = x 1 α 1 + x 2 α 2 + ⋯ + x n α n \boldsymbol \alpha = x_1 \boldsymbol \alpha_1 + x_2 \boldsymbol \alpha_2 + \cdots + x_n \boldsymbol \alpha_n α=x1α1+x2α2+⋯+xnαn
则 ( x 1 , x 2 , x 3 , ⋯ , x n ) T (x_1, x_2, x_3, \cdots, x_n)^{\rm T} (x1,x2,x3,⋯,xn)T成为元素 α \boldsymbol \alpha α在基 [ α 1 , α 2 , ⋯ , α n ] [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] [α1,α2,⋯,αn]下的坐标。记作
α = ( x 1 , x 2 , ⋯ , x n ) T \boldsymbol{\alpha}=\left(x_{1}, x_{2}, \cdots, x_{n}\right)^{\mathrm{T}} α=(x1,x2,⋯,xn)T -
基变换:设 [ α 1 , α 2 , ⋯ , α n ] [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] [α1,α2,⋯,αn]和 [ β 1 , β 2 , ⋯ , β n ] [\boldsymbol \beta_{1}, \boldsymbol{\beta}_{2}, \cdots, \boldsymbol{\beta}_{n}] [β1,β2,⋯,βn]都是线性空间下的基,且
{ β 1 = p 11 α 1 + p 21 α 2 + ⋯ + p n 1 α n β 2 = p 12 α 1 + p 22 α 2 + ⋯ + p n 2 α n ⋮ β n = p 1 n α 1 + p 2 n α 2 + ⋯ + p n n α n \left\{\begin{array}{l} \boldsymbol{\beta}_{1}=p_{11} \boldsymbol{\alpha}_{1}+p_{21} \boldsymbol{\alpha}_{2}+\cdots+p_{n1} \boldsymbol{\alpha}_{n} \\ \boldsymbol{\beta}_{2}=p_{12} \boldsymbol{\alpha}_{1}+p_{22} \boldsymbol{\alpha}_{2}+\cdots+p_{n2} \boldsymbol{\alpha}_{n} \\ \vdots \\ \boldsymbol{\beta}_{n}=p_{1n} \boldsymbol{\alpha}_{1}+p_{2n} \boldsymbol{\alpha}_{2}+\cdots+p_{n n} \boldsymbol{\alpha}_{n} \end{array}\right. ⎩⎪⎪⎪⎨⎪⎪⎪⎧β1=p11α1+p21α2+⋯+pn1αnβ2=p12α1+p22α2+⋯+pn2αn⋮βn=p1nα1+p2nα2+⋯+pnnαn
等价于
[ β 1 β 2 ⋮ β n ] = P T [ α 1 α 2 ⋮ α n ] \begin{bmatrix} \boldsymbol \beta_1 \\ \boldsymbol \beta_2 \\ \vdots \\ \boldsymbol\beta_n \end{bmatrix} = \boldsymbol P^{\rm T} \begin{bmatrix} \boldsymbol \alpha_1 \\ \boldsymbol\alpha_2 \\ \vdots \\ \boldsymbol \alpha_n \end{bmatrix} ⎣⎢⎢⎢⎡β1β2⋮βn⎦⎥⎥⎥⎤=PT⎣⎢⎢⎢⎡α1α2⋮αn⎦⎥⎥⎥⎤
或者
( β 1 , β 2 , ⋯ , β n ) = ( α 1 , α 2 , ⋯ , α n ) P \left ( \boldsymbol \beta_1, \boldsymbol \beta_2, \cdots, \boldsymbol\beta_n\right) = \left ( \boldsymbol \alpha_1, \boldsymbol \alpha_2, \cdots, \boldsymbol\alpha_n\right) \boldsymbol P (β1,β2,⋯,βn)=(α1,α2,⋯,αn)P
上式称为基坐标变换公式, P \boldsymbol P P称为过渡矩阵,由于 ( β 1 , β 2 , ⋯ , β n ) \left( \boldsymbol \beta_1, \boldsymbol \beta_2, \cdots, \boldsymbol\beta_n\right) (β1,β2,⋯,βn)线性无关,因此矩阵 P \boldsymbol P P可逆。 -
坐标变换:假设线性空间 V V V中的向量 a \boldsymbol a a在基 [ α 1 , α 2 , ⋯ , α n ] [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] [α1,α2,⋯,αn]下的坐标为 ( x 1 , x 2 , x 3 , ⋯ , x n ) T (x_1, x_2, x_3, \cdots, x_n)^{\rm T} (x1,x2,x3,⋯,xn)T,在基 [ β 1 , β 2 , ⋯ , β n ] [\boldsymbol \beta_{1}, \boldsymbol{\beta}_{2}, \cdots, \boldsymbol{\beta}_{n}] [β1,β2,⋯,βn]下的坐标为 ( x 1 ′ , x 2 ′ , x 3 ′ , ⋯ , x n ′ ) T (x_1', x_2', x_3', \cdots, x_n')^{\rm T} (x1′,x2′,x3′,⋯,xn′)T,且两个基满足上述基变换关系,则有
( x 1 x 2 ⋮ x n ) = P ( x 1 ′ x 2 ′ ⋮ x n ′ ) , 或 ( x 1 ′ x 2 ′ ⋮ x n ′ ) = P − 1 ( x 1 x 2 ⋮ x n ) \left(\begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{array}\right)=\boldsymbol{P}\left(\begin{array}{c} x_{1}^{\prime} \\ x_{2}^{\prime} \\ \vdots \\ x_{n}^{\prime} \end{array}\right), \quad \text { 或 } \quad\left(\begin{array}{c} x_{1}^{\prime} \\ x_{2}^{\prime} \\ \vdots \\ x_{n}^{\prime} \end{array}\right)=\boldsymbol{P}^{-1}\left(\begin{array}{c} x_{1} \\ x_{2} \\ \vdots \\ x_{n} \end{array}\right) ⎝⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎞=P⎝⎜⎜⎜⎛x1′x2′⋮xn′⎠⎟⎟⎟⎞, 或 ⎝⎜⎜⎜⎛x1′x2′⋮xn′⎠⎟⎟⎟⎞=P−1⎝⎜⎜⎜⎛x1x2⋮xn⎠⎟⎟⎟⎞
证明:令 x = ( x 1 , x 2 , ⋯ , x n ) T , x ′ = ( x 1 ′ , x 2 ′ , ⋯ x n ′ ) T , A = [ α 1 , α 2 , ⋯ , α n ] , B = [ β 1 , β 2 , ⋯ , β n ] \boldsymbol x = (x_1, x_2, \cdots, x_n)^{\rm T}, \boldsymbol x' = (x_1', x_2',\cdots x_n')^{\rm T},\Alpha = [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}],\Beta = [\boldsymbol \beta_{1}, \boldsymbol{\beta}_{2}, \cdots, \boldsymbol{\beta}_{n}] x=(x1,x2,⋯,xn)T,x′=(x1′,x2′,⋯xn′)T,A=[α1,α2,⋯,αn],B=[β1,β2,⋯,βn]. ( A 是 大 写 的 α 并 不 是 英 文 字 母 A ) (\mathrm{\Alpha}是大写的\alpha并不是英文字母A) (A是大写的α并不是英文字母A)则
A x = α = B x ′ = A P x ′ x = P x ′ \Alpha \boldsymbol x = \boldsymbol \alpha = \Beta \boldsymbol x' = \Alpha \boldsymbol P x' \\ \boldsymbol x = \boldsymbol P \boldsymbol x' Ax=α=Bx′=APx′x=Px′
上式成立。 -
线性映射(变换):设 V n , U m V_n, U_m Vn,Um分别是两个线性空间, T T T是一个从 V n V_n Vn到 U m U_m Um的映射,若映射 T T T满足:
对 ∀ α 1 , α 2 ∈ V n \forall \boldsymbol \alpha_1, \boldsymbol \alpha_2 \in V_n ∀α1,α2∈Vn,有 T ( α 1 + α 2 ) = T ( α 1 ) + T ( α 2 ) T(\boldsymbol \alpha_1 + \boldsymbol \alpha_2) = T(\boldsymbol \alpha_1) + T(\boldsymbol \alpha_2) T(α1+α2)=T(α1)+T(α2);
对 ∀ α ∈ V n , λ ∈ R \forall \boldsymbol \alpha \in V_n, \lambda \in \mathbb{R} ∀α∈Vn,λ∈R,有 T ( λ α ) = λ T ( α ) T(\lambda \boldsymbol \alpha) = \lambda T (\boldsymbol \alpha) T(λα)=λT(α) .
那么 T T T被称为从 V n V_n Vn到 U m U_m Um的线性映射或者线性变换。
矩阵变换的几何意义:要想准确描述一个向量,我们必须明确该向量所在的基,并且找出该向量在基每个分量上的投影长度。假设以二维笛卡尔直角坐标系为基础研究,将 x = ( 1 , 0 ) T , y = ( 0 , 1 ) T \boldsymbol x = (1, 0)^{\rm T}, \boldsymbol y = (0,1)^{\rm T} x=(1,0)T,y=(0,1)T作为空间中的一组基。表示成矩阵的形式就是
[ 1 0 0 1 ] \begin{bmatrix} 1 & 0 \\ 0 & 1 \end{bmatrix} [1001]
由向量内积的物理含义可知,二维笛卡尔直角坐标系中的向量 ( 4 , 2 ) (4, 2) (4,2)就表示为:
( 4 , 2 ) x = 4 ( 4 , 2 ) y = 2 ( 1 0 0 1 ) T ( 4 2 ) = ( 4 2 ) (4, 2) \boldsymbol x = 4\\ (4,2) \boldsymbol y = 2 \\ \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}^{\rm T} \begin{pmatrix} 4 \\ 2 \end{pmatrix} = \begin{pmatrix} 4 \\ 2 \end{pmatrix} (4,2)x=4(4,2)y=2(1001)T(42)=(42)
可以看出,将该向量在基的每个分量上求投影值,就可以得到它在该基定义的空间中的坐标。一般地我们希望基的模是 1 1 1,由向量内积几何意义可知,此时直接可以求出向量在基上的坐标。
同样的,假设我们要把 m m m个 n n n维向量,映射到一个新的基表示的空间中,其中基是 k k k个 n n n维向量,可以表示如下: X n × m = [ x 1 , x 2 , ⋯ , x m ] \boldsymbol X_{n \times m} = [\boldsymbol x_1, \boldsymbol x_2, \cdots, \boldsymbol x_m] Xn×m=[x1,x2,⋯,xm], x i \boldsymbol x_i xi是一个 n n n维列向量, P n × k = [ p 1 , p 2 , ⋯ , p k ] \boldsymbol P_{n \times k} = [\boldsymbol p_1, \boldsymbol p_2, \cdots, \boldsymbol p_k] Pn×k=[p1,p2,⋯,pk], p i \boldsymbol p_i pi是一个 n n n维列向量,每个列向量是一个基向量。
P n × k T X n × m = [ p 1 T p 2 T ⋮ p k T ] [ x 1 , x 2 , ⋯ , x m ] = [ p 1 T x 1 p 1 T x 2 ⋯ p 1 T x m p 2 T x 1 p 2 T x 2 ⋯ p 2 T x m ⋮ ⋮ ⋱ ⋮ p k T x 1 p k T x 2 ⋯ p k T x m ] k × m = Z k × m \boldsymbol P_{n \times k}^{\rm T} \boldsymbol X_{n \times m} = \begin{bmatrix} \boldsymbol p_1^{\rm T} \\ \boldsymbol p_2^{\rm T} \\ \vdots \\ \boldsymbol p_k^{\rm T} \end{bmatrix} \begin{bmatrix} \boldsymbol x_1, \boldsymbol x_2, \cdots, \boldsymbol x_m \end{bmatrix} = \begin{bmatrix} \boldsymbol p_1^{\rm T} \boldsymbol x_1 & \boldsymbol p_1^{\rm T} \boldsymbol x_2 & \cdots &\boldsymbol p_1^{\rm T} \boldsymbol x_m \\ \boldsymbol p_2^{\rm T} \boldsymbol x_1 & \boldsymbol p_2^{\rm T} \boldsymbol x_2 & \cdots &\boldsymbol p_2^{\rm T} \boldsymbol x_m \\ \vdots & \vdots & \ddots &\vdots \\ \boldsymbol p_k^{\rm T} \boldsymbol x_1 & \boldsymbol p_k^{\rm T} \boldsymbol x_2 & \cdots &\boldsymbol p_k^{\rm T} \boldsymbol x_m \\ \end{bmatrix}_{k \times m} = \boldsymbol Z_{k \times m} Pn×kTXn×m=⎣⎢⎢⎢⎡p1Tp2T⋮pkT⎦⎥⎥⎥⎤[x1,x2,⋯,xm]=⎣⎢⎢⎢⎡p1Tx1p2Tx1⋮pkTx1p1Tx2p2Tx2⋮pkTx2⋯⋯⋱⋯p1Txmp2Txm⋮pkTxm⎦⎥⎥⎥⎤k×m=Zk×m
由上述表达式可知,最终计算出的 Z k × m \boldsymbol Z_{k \times m} Zk×m矩阵就是矩阵 X \boldsymbol X X经过基 P \boldsymbol P P变换之后的结果,其中 p i T x j \boldsymbol p_i^{\rm T} \boldsymbol x_j piTxj是标量 。矩阵相乘实质就是将右边矩阵中的每一列向量变换到以左边矩阵行向量为基表示的空间中去。通过观察变换后的矩阵,我们发现该矩阵的维度可能发生改变,因此可以实现矩阵降维。当然,要想将该矩阵变换到原先基表示的空间中,只需要在变换之后的矩阵左乘 P − 1 \boldsymbol P^{-1} P−1即可。 P \boldsymbol P P通常被假设为一组标准正交基,这样一来更加方便计算。比如可以利用性质 P − 1 P = I , P T P = I , P − 1 = P T \boldsymbol{P^{-1}P} = \boldsymbol I,\boldsymbol {P}^{\rm T}\boldsymbol P = \boldsymbol I, \boldsymbol P^{\rm -1} = \boldsymbol P^{\rm T} P−1P=I,PTP=I,P−1=PT。但只要矩阵 P \boldsymbol P P是的列向量线性无关即可进行坐标变换。
特殊矩阵和向量
-
对角矩阵 ( d i a g o n a l m a t r i x ) (\rm diagonal \ matrix) (diagonal matrix):只在主对角线上含有非零元素,其他位置都是零。单位矩阵就是对角矩阵。用 d i a g ( v ) \rm diag(\it \boldsymbol v) diag(v)表示一个对角元素由向量 v \boldsymbol v v中元素给定的对角方阵。
-
对角矩阵的乘法非常方便,计算 d i a g ( v ) x \rm diag(\it \boldsymbol v) \boldsymbol x diag(v)x,只需要将 x \boldsymbol x x中的每个元素 x i x_i xi放大 v i v_i vi倍。
-
不是所有的对角矩阵都是方阵,长方形矩阵也可能是对角矩阵。非方阵的对角阵没有逆矩阵,但仍然可以高效计算矩阵乘法。
-
对称矩阵 ( s y m m e t r i c m a t r i x ) (\rm symmetric \ matrix) (symmetric matrix)是转置和自己相等的矩阵。
-
单位向量 ( u n i t v e c t o r ) \rm (unit \ vector) (unit vector)是具有单位范数的向量,也就是2范数为 1 1 1。
-
标准正交:若是向量的点积为 0 0 0,那么两个向量正交。如果两个向量都有非零范数,那么这两个向量之间的夹角是 9 0 ∘ 90^{\circ} 90∘。在 R n \mathbb{R}^n Rn中,至多有 n n n个范数非零的向量互相正交,若这些向量不仅互相正交,而且范数都为 1 1 1,则为标准正交。
-
正交矩阵 ( o r t h o g o n a l m a t r i x ) (\rm orthogonal \ matrix) (orthogonal matrix):指行向量和列向量分别标准正交的方阵,也就是
A T A = A A T = I A − 1 = A T \boldsymbol A^{\rm T} \boldsymbol A = \boldsymbol A \boldsymbol A^{\rm T} = \boldsymbol I \\ \boldsymbol A^{-1} = \boldsymbol A^{\rm T} ATA=AAT=IA−1=AT
正交矩阵求逆计算代价小。 ∣ A ∣ = 1 |\boldsymbol A| = 1 ∣A∣=1假设矩阵 A \boldsymbol A A是一个列向量矩阵 A = [ x 1 , x 2 , x 3 , ⋯ , x n ] \boldsymbol A = \left[ \boldsymbol x_1, \boldsymbol x_2, \boldsymbol x_3, \cdots, \boldsymbol x_n \right] A=[x1,x2,x3,⋯,xn]。
则有
A T A = [ x 1 T x 2 T x 3 T ⋮ x n T ] [ x 1 , x 2 , x 3 , ⋯ , x n ] = [ x 1 T x 1 x 1 T x 2 x 1 T x 3 ⋯ x 1 T x n x 2 T x 1 x 2 T x 2 x 2 T x 3 ⋯ x 2 T x n x 3 T x 1 x 3 T x 2 x 3 T x 3 ⋯ x 3 T x n ⋮ ⋮ ⋮ ⋱ ⋮ x n T x 1 x n T x 2 x n T x 3 ⋯ x n T x n ] = I = [ 1 0 0 ⋯ 0 0 1 0 ⋯ 0 0 0 1 ⋯ 0 ⋮ ⋮ ⋮ ⋱ ⋮ 0 0 0 ⋯ 1 ] \begin{aligned} \boldsymbol A^{\rm T} \boldsymbol A & = \begin{bmatrix} \boldsymbol x_1^{\rm T}\\ \boldsymbol x_2^{\rm T}\\ \boldsymbol x_3^{\rm T}\\ \vdots \\ \boldsymbol x_n^{\rm T}\\ \end{bmatrix} \begin{bmatrix} \boldsymbol x_1, \boldsymbol x_2, \boldsymbol x_3, \cdots, \boldsymbol x_n \end{bmatrix} = \begin{bmatrix} \boldsymbol x_1^{\rm T} \boldsymbol x_1 & \boldsymbol x_1^{\rm T} \boldsymbol x_2 & \boldsymbol x_1^{\rm T} \boldsymbol x_3 & \cdots & \boldsymbol x_1^{\rm T} \boldsymbol x_n \\ \boldsymbol x_2^{\rm T} \boldsymbol x_1 & \boldsymbol x_2^{\rm T} \boldsymbol x_2 & \boldsymbol x_2^{\rm T} \boldsymbol x_3 & \cdots & \boldsymbol x_2^{\rm T} \boldsymbol x_n \\ \boldsymbol x_3^{\rm T} \boldsymbol x_1 & \boldsymbol x_3^{\rm T} \boldsymbol x_2 & \boldsymbol x_3^{\rm T} \boldsymbol x_3 & \cdots & \boldsymbol x_3^{\rm T} \boldsymbol x_n \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ \boldsymbol x_n^{\rm T} \boldsymbol x_1 & \boldsymbol x_n^{\rm T} \boldsymbol x_2 & \boldsymbol x_n^{\rm T} \boldsymbol x_3 & \cdots & \boldsymbol x_n^{\rm T} \boldsymbol x_n \\ \end{bmatrix} \\ & = \boldsymbol I =\begin{bmatrix} 1 & 0 & 0 & \cdots & 0 \\ 0 & 1 & 0 & \cdots & 0 \\ 0 & 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & 0 & \cdots & 1 \end{bmatrix} \end{aligned} ATA=⎣⎢⎢⎢⎢⎢⎡x1Tx2Tx3T⋮xnT⎦⎥⎥⎥⎥⎥⎤[x1,x2,x3,⋯,xn]=⎣⎢⎢⎢⎢⎢⎡x1Tx1x2Tx1x3Tx1⋮xnTx1x1Tx2x2Tx2x3Tx2⋮xnTx2x1Tx3x2Tx3x3Tx3⋮xnTx3⋯⋯⋯⋱⋯x1Txnx2Txnx3Txn⋮xnTxn⎦⎥⎥⎥⎥⎥⎤=I=⎣⎢⎢⎢⎢⎢⎡100⋮0010⋮0001⋮0⋯⋯⋯⋱⋯000⋮1⎦⎥⎥⎥⎥⎥⎤
由上述推到可以看出,对于 ∀ i ≠ j , x i T x j = 0 \forall \ i \neq j, \boldsymbol x_i^{\rm T} \boldsymbol x_j = 0 ∀ i=j,xiTxj=0且对于 ∀ i = j , x i T x j = 1 \forall i = j, \boldsymbol x_i^{\rm T} \boldsymbol x_j = 1 ∀i=j,xiTxj=1,说明如果矩阵的各列向量都是单位向量,并且两两正交,那么该矩阵是正交矩阵。对于行向量来说,也是如此。
n n n阶正交矩阵的 n n n个行向量或列向量构成向量空间 R n \mathbb{R}^{n} Rn的一个标准正交基。v = np.array([1, 2, 3]) print("以v为对角元素的对角阵: \n", np.diag(v)) # [[1 0 0] # [0 2 0] # [0 0 3]] v2 = np.arange(1, 10).reshape(3, 3) print(v2) # [[1 2 3] # [4 5 6] # [7 8 9]] print("二维矩阵的对角元素: \n", np.diag(v2)) # 二维矩阵的对角元素: # [1 5 9]
-
相似矩阵:设 A , B \boldsymbol A, \boldsymbol B A,B都是 n n n阶矩阵,若存在可逆矩阵 P \boldsymbol P P,使得 P − 1 A P = B \boldsymbol{P^{-1}AP = B} P−1AP=B,则称 B \boldsymbol B B是 A \boldsymbol A A的相似矩阵,或者说两者相似。通俗一点来说,两矩阵相似,本质就是同一线性变换在不同基下的矩阵表示相似。
证明:假设存在线性变换 T T T,存在两组不同的基 α = [ α 1 , α 2 , ⋯ , α n ] , β = [ β 1 , β 2 , ⋯ , β n ] \boldsymbol \alpha = [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}], \boldsymbol{\beta} = [\boldsymbol \beta_{1}, \boldsymbol{\beta}_{2}, \cdots, \boldsymbol{\beta}_{n}] α=[α1,α2,⋯,αn],β=[β1,β2,⋯,βn],两者之间的关系通过过渡矩阵来关联,也就是之前在"基变换中提到的 P \boldsymbol P P",则有
β = α P T ( α ) = α A T ( β ) = β B ⇒ T ( α P ) = β B ⇒ T ( α ) P = α P B ⇒ α A P P − 1 = α P B P − 1 ⇒ α A = α P B P − 1 ⇒ A = P B P − 1 ⇒ P − 1 A P = B \boldsymbol \beta = \boldsymbol \alpha \boldsymbol P \\ T(\boldsymbol \alpha) = \boldsymbol \alpha \boldsymbol A \\ T(\boldsymbol \beta) = \boldsymbol \beta \boldsymbol B \Rightarrow T(\boldsymbol \alpha \boldsymbol P) = \boldsymbol \beta \boldsymbol B \Rightarrow T(\boldsymbol \alpha)\boldsymbol P = \boldsymbol \alpha \boldsymbol P \boldsymbol B \\ \Rightarrow \boldsymbol \alpha \boldsymbol A \boldsymbol P\boldsymbol P^{-1} = \boldsymbol \alpha \boldsymbol P \boldsymbol B \boldsymbol P^{-1} \Rightarrow \boldsymbol \alpha \boldsymbol A = \boldsymbol \alpha \boldsymbol P \boldsymbol B \boldsymbol P^{-1} \Rightarrow \boldsymbol A = \boldsymbol P \boldsymbol B \boldsymbol P^{-1} \\ \Rightarrow \boldsymbol{P^{-1}AP = B} β=αPT(α)=αAT(β)=βB⇒T(αP)=βB⇒T(α)P=αPB⇒αAPP−1=αPBP−1⇒αA=αPBP−1⇒A=PBP−1⇒P−1AP=B
得证。同一线性变换,在不同基下的矩阵,称为相似矩阵。
还有一种更通俗的证明方法,
证明:假设线性空间 V V V中的向量 a \boldsymbol a a在基 α = [ α 1 , α 2 , ⋯ , α n ] \boldsymbol \alpha = [\boldsymbol \alpha_{1}, \boldsymbol{\alpha}_{2}, \cdots, \boldsymbol{\alpha}_{n}] α=[α1,α2,⋯,αn]下的坐标为 x = ( x 1 , x 2 , x 3 , ⋯ , x n ) T \boldsymbol x = (x_1, x_2, x_3, \cdots, x_n)^{\rm T} x=(x1,x2,x3,⋯,xn)T,在基 β = [ β 1 , β 2 , ⋯ , β n ] \boldsymbol \beta = [\boldsymbol \beta_{1}, \boldsymbol{\beta}_{2}, \cdots, \boldsymbol{\beta}_{n}] β=[β1,β2,⋯,βn]下的坐标为 x ′ = ( x 1 ′ , x 2 ′ , x 3 ′ , ⋯ , x n ′ ) T \boldsymbol x' = (x_1', x_2', x_3', \cdots, x_n')^{\rm T} x′=(x1′,x2′,x3′,⋯,xn′)T,两个基满足 β = α P \boldsymbol \beta= \boldsymbol \alpha \boldsymbol P β=αP.
- 在 β \boldsymbol \beta β下, x ’ \boldsymbol x’ x’通过 P \boldsymbol P P变成 α \boldsymbol \alpha α下的向量— P x ′ \boldsymbol {P x'} Px′;
- 在 α \boldsymbol \alpha α下,通过矩阵 A \boldsymbol A A完成线性变换— A P x ′ \boldsymbol {AP x'} APx′;
- 通过 P − 1 \boldsymbol P^{-1} P−1变回 β \boldsymbol \beta β下的向量— P − 1 A P x ′ \boldsymbol {P^{-1}APx'} P−1APx′;
- 因此在 β \boldsymbol \beta β下, B x ′ = P − 1 A P x ′ \boldsymbol {Bx'} = \boldsymbol {P^{-1}APx'} Bx′=P−1APx′
- 得到 B = P − 1 A P \boldsymbol {B} = \boldsymbol {P^{-1}AP} B=P−1AP
得证。
或者
根据上面的假设条件,有
A x = P B x ′ x = P x ′ ⇒ A P x ′ = P B x ′ ⇒ B = P − 1 A P \boldsymbol {Ax} = \boldsymbol {PBx'} \\ \boldsymbol x = \boldsymbol{Px'} \\ \Rightarrow \boldsymbol {APx'} = \boldsymbol {PBx'} \Rightarrow \boldsymbol {B} = \boldsymbol {P^{-1}AP} Ax=PBx′x=Px′⇒APx′=PBx′⇒B=P−1AP
从几何方面理解
从上图可以看出,向量 x \boldsymbol x x和 x ′ \boldsymbol x' x′同一个向量 a \boldsymbol a a在不同基下的不同坐标,但本质上两者是相同的。从不同的角度看到的事物不同罢了。 A x \boldsymbol {Ax} Ax是 x \boldsymbol x x在基 α \boldsymbol \alpha α下通过矩阵进行线性变换之后的坐标, B x ′ \boldsymbol {Bx'} Bx′是 x ′ \boldsymbol x' x′在基 β \boldsymbol \beta β下进行通过矩阵进行线性变换之后的坐标,两个基定义的坐标空间又可以通过过渡矩阵 P \boldsymbol P P进行转换,因此有 A x = P B x ′ \boldsymbol {Ax} = \boldsymbol {PBx'} Ax=PBx′。
特征向量和特征值
矩阵相乘的实质就是空间变换。
特征向量:从几何意义上来理解就是空间变换前后方向没有改变的向量。指示变换的方向,比如伸缩变换就是指伸缩的方向。由此可知,
特征值:从几何意义上来理解就是空间变换的程度。指示变换的程度,比如某个方向上伸缩多少倍。
特征分解:将矩阵分解成一组特征向量和特征值。假设
A
\boldsymbol A
A是一个
n
n
n阶矩阵,数
λ
\lambda
λ和
n
n
n维非零向量
x
\boldsymbol x
x满足
A
x
=
λ
x
(
x
≠
0
)
\boldsymbol {Ax} = \lambda \boldsymbol x (\boldsymbol x \neq \boldsymbol 0)
Ax=λx(x=0)
则称
λ
\lambda
λ为矩阵
A
\boldsymbol A
A的特征值,非零向量
x
\boldsymbol x
x称为矩阵
A
\boldsymbol A
A的特征向量。
直观理解该公式,就是相当于向量 x \boldsymbol x x在经过矩阵 A \boldsymbol A A进行空间线性变换之后,只是进行了方向上的伸缩,并没有进行其它改变,这也就是特征向量和特征值的真正含义所在。求解矩阵特征值和特征向量就是看该矩阵能使哪些向量只发生方向上的伸缩改变(特征向量),并且改变的程度有多大(特征值)。其意义就是我们可以根据提取出来特征向量进行讨论和研究。
从几何意义理解:
从上图可以看出,从左边的正方形经过一个矩阵
A
\boldsymbol A
A进行线性变换之后,变成了右边的长方形,但是我们可以很容易就发现,向量
i
\boldsymbol i
i和
j
\boldsymbol j
j只是发生了方向上的变换,显而易见,它们便是矩阵
A
\boldsymbol A
A的特征向量。该变换表示如下:
A
=
[
2
0
0
4
]
\boldsymbol A = \begin{bmatrix} 2 & 0 \\ 0 & 4\\ \end{bmatrix}
A=[2004]
A [ 0 1 ] = [ 0 4 ] = 4 [ 0 1 ] ⇒ j ′ = 4 j \boldsymbol A \begin{bmatrix} 0 \\ 1 \\ \end{bmatrix}= \begin{bmatrix} 0 \\ 4 \end{bmatrix}= 4 \begin{bmatrix} 0 \\ 1 \\ \end{bmatrix} \Rightarrow \boldsymbol j' = 4 \boldsymbol j A[01]=[04]=4[01]⇒j′=4j
A [ 1 0 ] = [ 2 0 ] = 2 [ 1 0 ] ⇒ i ′ = 2 i \boldsymbol A \begin{bmatrix} 1 \\ 0 \\ \end{bmatrix}= \begin{bmatrix} 2 \\ 0 \end{bmatrix} = 2 \begin{bmatrix} 1 \\ 0 \\ \end{bmatrix} \Rightarrow \boldsymbol i' = 2 \boldsymbol i A[10]=[20]=2[10]⇒i′=2i
那么 2 2 2和 4 4 4便是它们对应的特征值。
特征分解的另一种定义:假设矩阵
A
\boldsymbol A
A有
n
n
n个线性无关的特征向量
V
=
[
v
(
1
)
,
v
(
2
)
,
⋯
,
v
(
n
)
]
\boldsymbol V = [ \boldsymbol v^{(1)},\boldsymbol v^{(2)} , \cdots, \boldsymbol v^{(n)}]
V=[v(1),v(2),⋯,v(n)],对应的特征值分别为
λ
=
[
λ
(
1
)
,
λ
(
2
)
,
⋯
,
λ
(
n
)
]
T
\boldsymbol \lambda =[ \lambda^{(1)}, \lambda^{(2)} , \cdots, \lambda^{(n)}]^{\rm T}
λ=[λ(1),λ(2),⋯,λ(n)]T,则矩阵
A
\boldsymbol A
A的特征分解可以记为
A
=
V
d
i
a
g
(
λ
)
V
−
1
\boldsymbol A = \boldsymbol V \rm diag(\boldsymbol \lambda) \it \boldsymbol V^{-1}
A=Vdiag(λ)V−1
并不是所有的矩阵都可以分解特征值;在某些情况下,实矩阵的特征值分解可能会出现复矩阵。
m = np.array(
[[1, 2, 3],
[4, 5, 6],
[7, 8, 9]])
print("特征值: \n", np.linalg.eigvals(m))
eigvals, eigvecs = np.linalg.eig(m)
print("特征值: \n", eigvals)
print("特征向量: \n", eigvecs)
# 特征值:
# [ 1.61168440e+01 -1.11684397e+00 -1.30367773e-15]
# 特征值:
# [ 1.61168440e+01 -1.11684397e+00 -1.30367773e-15]
# 特征向量:
# [[-0.23197069 -0.78583024 0.40824829]
# [-0.52532209 -0.08675134 -0.81649658]
# [-0.8186735 0.61232756 0.40824829]]
奇异值分解
矩阵的奇异值分解 ( S V D ) \rm (SVD) (SVD),将矩阵分解为奇异向量 ( s i n g u l a r v e c t o r ) (\rm singular \ vector) (singular vector)和奇异值 ( s i n g u l a r v a l u e ) (\rm singular \ value) (singular value)。奇异值分解会得到一些与特征分解相同类型的信息。但是奇异值分解应用更为广泛。每个实数矩阵都有一个奇异值分解,但不一定都有特征分解。比如,非方阵的矩阵没有特征分解,此时只能使用奇异值分解。
奇异值分解的形式为
A
=
U
Σ
V
T
\boldsymbol A = \boldsymbol {U \Sigma V }^{\rm T}
A=UΣVT
若
A
\boldsymbol A
A是
m
×
n
m \times n
m×n的矩阵,那么
U
\boldsymbol U
U是
m
×
m
m \times m
m×m的,其列向量成为左奇异向量,而
V
\boldsymbol V
V是
n
×
n
n \times n
n×n的,其列向量称为右奇异向量,而
Σ
\boldsymbol \Sigma
Σ是
m
×
n
m \times n
m×n的对角矩阵,其对角元素为矩阵
A
\boldsymbol A
A的奇异值。
奇异值往往对应着矩阵中隐含的重要信息,且重要性和奇异值大小成正相关。
在图像处理领域,奇异值不仅可以应用在数据压缩上,还可以对图像去噪。如果一副图像包含噪声,我们有理由相信那些较小的奇异值就是由于噪声引起的。当我们强行令这些较小的奇异值为0时,就可以去除图片中的噪声。
主要应用领域包括:
- 隐性语义分析 (Latent Semantic Analysis, LSA) 或隐性语义索引 (Latent Semantic Indexing, LSI);
- 推荐系统 (Recommender system),可以说是最有价值的应用点;
- 矩阵形式数据(主要是图像数据)的压缩。
奇异矩阵必然是方阵,若矩阵的行列式是0,则该矩阵为奇异矩阵,否则为非奇异矩阵。非奇异矩阵可逆,可逆矩阵就是非奇异矩阵,若矩阵 A \boldsymbol A A为非奇异矩阵,则 A x = 0 \boldsymbol {Ax} = \boldsymbol 0 Ax=0有唯一零解, A x = b \boldsymbol {Ax} = \boldsymbol b Ax=b有唯一解。
m = np.array([
[1, 2, 3, 4],
[4, 5, 6, 8]
])
U, Sigma, V = np.linalg.svd(m)
print("左奇异向量矩阵U: \n", U)
print("奇异值对角矩阵Sigma: \n", Sigma)
print("右奇异向量矩阵V: \n", V)
# 左奇异向量矩阵U:
# [[-0.41523775 -0.90971293]
# [-0.90971293 0.41523775]]
# 奇异值对角矩阵Sigma:
# [13.04656085 0.88727114]
# 右奇异向量矩阵V:
# [[-0.31074009 -0.41229564 -0.51385119 -0.68513492]
# [ 0.84668379 0.28938495 -0.26791389 -0.35721851]
# [-0.25916053 0.51832106 0.54670221 -0.60439705]
# [-0.34554737 0.69109474 -0.60439705 0.19413726]]
线性代数应用之主成分分析 ( P C A ) \rm (PCA) (PCA)
数据降维:就是将高维度特征数据降到低维度,保留一些比较重要的维度特征数据,去除噪声和不重要的信息,达到提升数据处理速度的目的。虽然降维以损失一些信息为代价,但是它尽可能地保留了原始数据的重要信息,这样就可以节省计算的时间成本、数据集更易使用、更易理解。
主成分分析 ( P r i n c i p a l C o m p o n e n t A n a l y s i s ) \rm (Principal \ Component \ Analysis) (Principal Component Analysis):该算法的主要思想就是将原始数据的 n n n维特征降到 k k k维。这 k k k维正交特征也被称为主成分,是在原始 n n n维特征上重构出来的 k k k维特征。 P C A \rm PCA PCA的主要工作就是在空间中找出一组两两互相正交的 k k k个基向量,使得原始数据经过该新基的映射(变换)之后变成 k k k维特征。新基的选取取决于原始数据的分布。
提出问题:如何选取 k k k个正交基使得在变换之后能最大程度地保留原始数据的信息呢?如何才能使信息的损失度最小呢?通俗一点说,就是如何选取原始数据的投影方向,才能最大程度保留原始信息呢?
初步想法:原始数据投影之后,在投影方向上应该使得数据尽可能分散,其分散程度用方差表示。当然这只是将二维降到一维的情况。考虑到多维数据的情况,比如三维降到两维,首先选择的第一个投影方向肯定是投影后方差最大的方向,但是第二个方向必然不可能是方差最大的方向,否则就会使得投影方向重叠,数据无法区分了,为了表示更多的信息,我们希望在该方向投影后方差尽可能的大,而且投影方向不能和第一个投影方向线性相关(要是互相垂直正交,那就不存在相关性了,这也是我们寻求的最佳的投影方向)。
⋆ ⋆ ⋆ \star\star\star ⋆⋆⋆对应到线性代数的知识,就是计算原始数据矩阵的协方差矩阵(对角线元素就是每个维度的方差),并进行协方差矩阵的特征分解,从大到小选择 k k k个特征值(方差)及对应的特征向量,这 k k k个特征向量就是选取的新基,原始数据在该基上投影之后就能从 n n n维特征降到 k k k维。
实现原理:在定义优化目标之前需要明确在正交属性空间中表达样本点的"两个性",使用超平面对样本进行恰当表达。
- 最近重构性:样本点到超平面的距离都足够近;
- 最大可分性:样本点在这个超平面上的投影尽可能分散。
因此 P C A \rm PCA PCA有两种等价推导,从最近重构性来看:
假设有 m m m个 n n n维列向量 X = [ x ( 1 ) , x ( 2 ) , ⋯ , x ( m ) ] \boldsymbol X = [\boldsymbol x^{(1)}, \boldsymbol x^{(2)}, \cdots, \boldsymbol x^{(m)}] X=[x(1),x(2),⋯,x(m)],已经中心化,也就是 ∑ i = 1 m x ( i ) = 0 \sum_{i=1}^{m} \boldsymbol x^{(i)} = \boldsymbol 0 ∑i=1mx(i)=0。若将数据从 n n n维降到 k k k维,则假设投影变换矩阵为 P = [ p 1 , p 2 , ⋯ , p k ] \boldsymbol P = [\boldsymbol p_1, \boldsymbol p_2, \cdots, \boldsymbol p_k] P=[p1,p2,⋯,pk], P \boldsymbol P P是标准正交基,其中 ∥ p i ∥ 2 = 1 , p i T p j = 0 \left \| \boldsymbol p_i \right \|_2 = 1, \boldsymbol p_i^T \boldsymbol p_j = 0 ∥pi∥2=1,piTpj=0。
由之前的坐标投影变换公式可知,
z
(
i
)
=
P
T
x
(
i
)
\boldsymbol z^{(i)} = \boldsymbol P^{\rm T }\boldsymbol x^{(i)}
z(i)=PTx(i),即可得到原始数据
x
(
i
)
\boldsymbol x^{(i)}
x(i)在新基
P
\boldsymbol P
P下的新空间坐标
z
(
i
)
=
[
z
1
(
i
)
,
z
2
(
i
)
,
⋯
,
z
k
(
i
)
]
T
\boldsymbol z^{(i)} = [z_1^{(i)}, z_2^{(i)}, \cdots, z_k^{(i)}]^{\rm T}
z(i)=[z1(i),z2(i),⋯,zk(i)]T,重构成用基向量表示的形式就是
x
^
(
i
)
=
P
z
(
i
)
\hat{\boldsymbol x}^{(i)} = \boldsymbol P \boldsymbol z^{(i)}
x^(i)=Pz(i)。
[
p
1
p
2
⋯
p
k
]
[
z
1
(
i
)
z
2
(
i
)
⋮
z
k
(
i
)
]
=
z
1
(
i
)
p
1
+
z
2
(
i
)
p
2
+
⋯
+
z
k
(
i
)
p
k
\begin{bmatrix} \boldsymbol p_1 & \boldsymbol p_2 & \cdots & \boldsymbol p_k \end{bmatrix} \begin{bmatrix} z_1^{(i)} \\ z_2^{(i)} \\ \vdots \\ z_k^{(i)} \end{bmatrix} = z_1^{(i)} \boldsymbol p_1 + z_2^{(i)} \boldsymbol p_2 + \cdots + z_k^{(i)} \boldsymbol p_k
[p1p2⋯pk]⎣⎢⎢⎢⎢⎡z1(i)z2(i)⋮zk(i)⎦⎥⎥⎥⎥⎤=z1(i)p1+z2(i)p2+⋯+zk(i)pk
放在二维空间直角坐标系中,其实可以很好理解,假设我们已知向量 x = ( 3 , 2 ) T \boldsymbol x =(3, 2)^{\rm T} x=(3,2)T的坐标,基向量 P = [ p 1 , p 2 ] \boldsymbol P = [\boldsymbol p_1, \boldsymbol p_2] P=[p1,p2],那么已知坐标,用基向量表示就是 x = 3 p 1 + 2 p 2 \boldsymbol x = 3 \boldsymbol p_1 + 2\boldsymbol p_2 x=3p1+2p2。 p 1 = [ 1 , 0 ] T , p 2 = [ 0 , 1 ] T \boldsymbol p_1 = [1,0]^{\rm T}, \boldsymbol p_2 =[0,1]^{\rm T} p1=[1,0]T,p2=[0,1]T.
因此我们的优化目标就是最小化
∑
i
=
1
m
∥
x
^
(
i
)
−
x
(
i
)
∥
2
\sum_{i=1}^{m}\left \| \hat{\boldsymbol x}^{(i)} - \boldsymbol x^{(i)}\right \|_2
∑i=1m∥∥∥x^(i)−x(i)∥∥∥2.
min
∑
i
=
1
m
∥
x
^
(
i
)
−
x
(
i
)
∥
2
⟺
min
∑
i
=
1
m
∥
x
^
(
i
)
−
x
(
i
)
∥
2
2
\min \sum_{i = 1}^{m} \left \| \hat{\boldsymbol x}^{(i)} - \boldsymbol x^{(i)}\right \|_2 \iff \min \sum_{i = 1}^{m} \left \| \hat{\boldsymbol x}^{(i)} - \boldsymbol x^{(i)}\right \|_2^2
mini=1∑m∥∥∥x^(i)−x(i)∥∥∥2⟺mini=1∑m∥∥∥x^(i)−x(i)∥∥∥22
∑ i = 1 m ∥ x ^ ( i ) − x ( i ) ∥ 2 2 = ∑ i = 1 m ( x ^ ( i ) ) T ( x ^ ( i ) ) − 2 ( x ^ ( i ) ) T ( x ( i ) ) + ( x ( i ) ) T ( x ( i ) ) = ∑ i = 1 m ( P z ( i ) ) T ( P z ( i ) ) − 2 ( P z ( i ) ) T ( x ( i ) ) + ( x ( i ) ) T ( x ( i ) ) = ∑ i = 1 m ( z ( i ) ) T ( P T P ) ( z ( i ) ) − 2 ( z ( i ) ) T P T ( x ( i ) ) + ( x ( i ) ) T ( x ( i ) ) = ∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) − 2 ( z ( i ) ) T ( z ( i ) ) + ( x ( i ) ) T ( x ( i ) ) = − ∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) + ∑ i = 1 m ( x ( i ) ) T ( x ( i ) ) = − t r ( P T ( ∑ i = 1 m ( x ( i ) ) ( x ( i ) ) T ) P ) + ∑ i = 1 m ( x ( i ) ) T ( x ( i ) ) = − t r ( P T X X T P ) + ∑ i = 1 m ( x ( i ) ) T ( x ( i ) ) \begin{aligned} \sum_{i = 1}^{m} \left \| \hat{\boldsymbol x}^{(i)} - \boldsymbol x^{(i)}\right \|_2^2 &= \sum_{i =1} ^m (\hat{\boldsymbol x}^{(i)})^{\rm T}(\hat{\boldsymbol x}^{(i)}) - 2 (\hat{\boldsymbol x}^{(i)})^{\rm T}(\boldsymbol x^{(i)}) + (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)}) \\ & = \sum_{i =1} ^m (\boldsymbol P \boldsymbol z^{(i)})^{\rm T}(\boldsymbol P \boldsymbol z^{(i)}) - 2(\boldsymbol P \boldsymbol z^{(i)})^{\rm T}(\boldsymbol x^{(i)}) + (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)})\\ & = \sum_{i = 1}^m (\boldsymbol z^{(i)})^{\rm T}(\boldsymbol P^{\rm T}\boldsymbol P)\boldsymbol (z^{(i)}) - 2 (\boldsymbol z^{(i)})^{\rm T} \boldsymbol P^{\rm T} (\boldsymbol x^{(i)}) + (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)}) \\ & = \sum _{i = 1}^m (\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)}) - 2 (\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)}) + (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)}) \\ &= -\sum_{i = 1}^m (\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)})+ \sum_{i = 1}^m (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)}) \\ &= -\rm tr \left(\boldsymbol P^{\rm T} \left(\sum_{i = 1}^m (\boldsymbol x^{(i)}) (\boldsymbol x^{(i)})^{\rm T}\right) \boldsymbol P \right)+ \sum_{i = 1}^m (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)}) \\ &= -\rm tr\left(\boldsymbol P^{\rm T} \boldsymbol {XX}^{\rm T} \boldsymbol P\right) +\sum_{i = 1}^m (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)}) \end{aligned} i=1∑m∥∥∥x^(i)−x(i)∥∥∥22=i=1∑m(x^(i))T(x^(i))−2(x^(i))T(x(i))+(x(i))T(x(i))=i=1∑m(Pz(i))T(Pz(i))−2(Pz(i))T(x(i))+(x(i))T(x(i))=i=1∑m(z(i))T(PTP)(z(i))−2(z(i))TPT(x(i))+(x(i))T(x(i))=i=1∑m(z(i))T(z(i))−2(z(i))T(z(i))+(x(i))T(x(i))=−i=1∑m(z(i))T(z(i))+i=1∑m(x(i))T(x(i))=−tr(PT(i=1∑m(x(i))(x(i))T)P)+i=1∑m(x(i))T(x(i))=−tr(PTXXTP)+i=1∑m(x(i))T(x(i))
上式第六步到第七步由于 ∑ i = 1 m ( x ( i ) ) ( x ( i ) ) T \sum_{i = 1}^m (\boldsymbol x^{(i)})(\boldsymbol x^{(i)})^{\rm T} ∑i=1m(x(i))(x(i))T是求 X X T \boldsymbol X \boldsymbol X^{\rm T} XXT矩阵对角线上元素之和,因此可以用迹运算来表示。
通过观察上式,我们发现
∑
i
=
1
m
(
x
(
i
)
)
T
(
x
(
i
)
)
\sum_{i = 1}^m (\boldsymbol x^{(i)})^{\rm T}(\boldsymbol x^{(i)})
∑i=1m(x(i))T(x(i))是常量,
∑
i
=
1
m
(
x
(
i
)
)
(
x
(
i
)
)
T
\sum_{i = 1}^m (\boldsymbol x^{(i)}) (\boldsymbol x^{(i)})^{\rm T}
∑i=1m(x(i))(x(i))T是原始数据集的协方差矩阵,因此最小化目标表达式,等价于
arg
min
P
−
t
r
(
P
T
X
X
T
P
)
s
.
t
.
P
T
P
=
I
\arg \min_{\boldsymbol P} -\rm tr(\boldsymbol P^{\rm T} \boldsymbol {XX}^{\rm T} \boldsymbol P) \quad \quad \rm s.t. \quad \it \boldsymbol P^{\rm T}\boldsymbol P = \boldsymbol I
argPmin−tr(PTXXTP)s.t.PTP=I
常用迹运算及求导公式:
t r ( A ) = ∑ i A i , i t r ( A B ) = t r ( B A ) t r ( A ) = t r ( A T ) t r ( A B C ) = t r ( C A B ) = t r ( B C A ) ∂ t r ( A B ) A = ∂ t r ( B A ) A = B T \begin{aligned} \rm tr(\boldsymbol A) &= \sum_i A_{i, i} \\ \rm tr(\boldsymbol {AB}) &=\rm tr(\boldsymbol {BA}) \\ \rm tr(\boldsymbol {A}) &= \rm tr(\boldsymbol {A}^{\rm T}) \\ \rm tr(\boldsymbol{A B C})&= \rm tr(\boldsymbol{ C AB}) = \rm tr(\boldsymbol{BCA}) \\ \frac{\partial \rm tr(\boldsymbol{AB})} {\boldsymbol A}& = \frac{\partial \rm tr(\boldsymbol{BA})} {\boldsymbol A} = \boldsymbol B^{\rm T} \end{aligned} tr(A)tr(AB)tr(A)tr(ABC)A∂tr(AB)=i∑Ai,i=tr(BA)=tr(AT)=tr(CAB)=tr(BCA)=A∂tr(BA)=BT
对上式用拉格朗日乘子算法优化可得:
J
(
P
)
=
−
t
r
(
P
T
X
X
T
P
+
λ
(
P
T
P
−
I
)
)
对
P
求
偏
导
,
∂
J
∂
P
=
−
X
X
T
P
+
λ
P
=
0
⟺
X
X
T
P
=
λ
P
\begin{aligned} J(\boldsymbol P) = -\rm tr \left(\boldsymbol P^{\rm T} \boldsymbol {XX}^{\rm T}\boldsymbol P + \lambda (\boldsymbol P^{\rm T}\boldsymbol P - \boldsymbol I) \right) \\ 对\boldsymbol P求偏导,\frac{\partial J}{\partial \boldsymbol P} = - \boldsymbol {XX}^{\rm T}\boldsymbol P + \lambda \boldsymbol P = 0\\ \iff \boldsymbol {XX}^{\rm T}\boldsymbol P = \lambda \boldsymbol P \end{aligned}
J(P)=−tr(PTXXTP+λ(PTP−I))对P求偏导,∂P∂J=−XXTP+λP=0⟺XXTP=λP
从上述最终表达式中,根据矩阵的特征分解,我们可以得出,
P
\boldsymbol P
P就是
X
X
T
\boldsymbol{XX}^{\rm T}
XXT矩阵的
k
k
k个特征向量构成的矩阵,
λ
\lambda
λ就是其特征值。因此最终的问题就转化成求
X
X
T
\boldsymbol {XX}^{\rm T}
XXT的前
k
k
k大的特征值及对应的特征向量,其中
X
X
T
\boldsymbol {XX}^{\rm T}
XXT是矩阵
X
\boldsymbol X
X的协方差矩阵。
最后,只需要将原始数据映射到
P
\boldsymbol P
P定义的空间内即可,即
Z
=
P
T
X
\boldsymbol Z = \boldsymbol P^{\rm T} \boldsymbol X
Z=PTX
Z
\boldsymbol Z
Z即为降维后的数据。
接下来,我们来看第二种推导——基于最大可分性,也就是投影之后的数据分布的方差尽可能大,
基于前一种推导方法的相同假设,对于任意数据
x
(
i
)
\boldsymbol x^{(i)}
x(i),它在投影变换矩阵
P
\boldsymbol P
P下的坐标为
z
(
i
)
=
P
T
x
(
i
)
\boldsymbol z^{(i) } = \boldsymbol P^{\rm T} \boldsymbol x^{(i)}
z(i)=PTx(i),在新坐标下的方差就是
(
z
(
i
)
)
T
(
z
(
i
)
)
(\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)})
(z(i))T(z(i)),目标就是使得所有数据的方差之和最大化,也即
max
∑
i
=
1
m
(
z
(
i
)
)
T
(
z
(
i
)
)
\max \sum_{i = 1}^{m} (\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)})
maxi=1∑m(z(i))T(z(i))
∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) = ∑ i = 1 m ( P T x ( i ) ) T ( P T x ( i ) ) = ∑ i = 1 m ( x ( i ) ) T P P T ( x ( i ) ) = t r ( P T ( ∑ i = 1 m ( x ( i ) ) ( x ( i ) ) T ) P ) = t r ( P T X X T P ) \begin{aligned} \sum_{i = 1}^{m} (\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)}) &= \sum_{i = 1}^{m} (\boldsymbol P^{\rm T} \boldsymbol x^{(i)})^{\rm T} (\boldsymbol P^{\rm T} \boldsymbol x^{(i)})\\ &= \sum_{i = 1}^{m} (\boldsymbol x^{(i)})^{\rm T} \boldsymbol P \boldsymbol P^{\rm T} (\boldsymbol x^{(i)}) \\ & = \rm tr \left( \boldsymbol P^{\rm T} \left(\sum_{i = 1}^{m} (\boldsymbol x^{(i)}) (\boldsymbol x^{(i)})^{\rm T}\right) \boldsymbol P\right) \\ & = \rm tr \left( \boldsymbol P^{\rm T}\boldsymbol{XX}^{\rm T} \boldsymbol P \right) \end{aligned} i=1∑m(z(i))T(z(i))=i=1∑m(PTx(i))T(PTx(i))=i=1∑m(x(i))TPPT(x(i))=tr(PT(i=1∑m(x(i))(x(i))T)P)=tr(PTXXTP)
已知目标优化公式中的表达式是方差之和,也就是 ( z ( i ) ) T ( z ( i ) ) (\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)}) (z(i))T(z(i))是一个标量,其实它就是矩阵 ( z ( i ) ) ( z ( i ) ) T (\boldsymbol z^{(i)})(\boldsymbol z^{(i)})^{\rm T} (z(i))(z(i))T对角线上的元素之和,这样就可以和矩阵的迹联系起来。即
( z ( i ) ) T ( z ( i ) ) = t r ( ( z ( i ) ) ( z ( i ) ) T ) (\boldsymbol z^{(i)})^{\rm T}(\boldsymbol z^{(i)}) = \rm tr \left( (\boldsymbol z^{(i)}) (\boldsymbol z^{(i)})^{\rm T} \right) (z(i))T(z(i))=tr((z(i))(z(i))T)
那么
∑ i = 1 m ( z ( i ) ) T ( z ( i ) ) = t r ( Z Z T ) = t r ( P T X X P T ) \begin{aligned} \sum_{i = 1}^{m} (\boldsymbol z^{(i)})^{\rm T} (\boldsymbol z^{(i)}) & = \rm tr \left( \boldsymbol {ZZ}^{\rm T}\right) \\ & = \rm tr \left( \boldsymbol P^{\rm T} \boldsymbol X \boldsymbol {XP}^{\rm T}\right) \end{aligned} i=1∑m(z(i))T(z(i))=tr(ZZT)=tr(PTXXPT)
这样看起来似乎更好理解上面推导过程中第 ( 4 ) (4) (4)步的由来。
因此最大化目标公式就是最大化
t
r
(
P
T
X
X
T
P
)
\rm tr \left( \boldsymbol P^{\rm T}\boldsymbol{XX}^{\rm T} \boldsymbol P \right)
tr(PTXXTP),即
arg
max
P
t
r
(
P
T
X
X
T
P
)
s
.
t
.
P
T
P
=
I
\arg \max_{\boldsymbol P} \rm tr \left( \boldsymbol P^{\rm T}\boldsymbol{XX}^{\rm T} \boldsymbol P \right) \ \ \rm s.t. \ \ \it \boldsymbol P^{\rm T} \boldsymbol P \rm= \boldsymbol I
argPmaxtr(PTXXTP) s.t. PTP=I
由此可见,该表达式等价于前一种推导方法中的目标优化公式。
参考资料
[1] 《深度学习》花书
[2] 相关github
[3] 同济大学《线性代数第六版》