特征值与特征值分解
特征值分解就是要求解
A
x
=
λ
x
Ax=\lambda x
Ax=λx的问题,其中
λ
\lambda
λ 就是特征值,
x
x
x就是特征向量。
现在有如下矩阵
A = [ 7 2 3 8 ] A=\begin{bmatrix}7&2\\3&8\end{bmatrix} A=[7328]
可以把原问题变换成求解 ( A − λ ) x = 0 (A-\lambda)x=0 (A−λ)x=0, 由于特征向量x不能为0,只能使得 A − λ A-\lambda A−λ 为0, λ \lambda λ不能直接和矩阵相减,于是可以变成 ∣ A − λ E ∣ = 0 |A-\lambda E| =0 ∣A−λE∣=0。
将上面的A代入:
A
−
λ
E
=
[
7
−
λ
2
3
8
−
λ
]
A-\lambda E=\begin{bmatrix}7-\lambda &2\\3&8-\lambda \end{bmatrix}
A−λE=[7−λ328−λ]
就等于 ( 7 − λ ) ∗ ( 8 − λ ) − 6 = 0 (7-\lambda)*(8-\lambda)-6=0 (7−λ)∗(8−λ)−6=0
即
λ
2
−
15
λ
+
50
=
0
\lambda ^2-15\lambda+50=0
λ2−15λ+50=0
求得
λ
1
=
5
,
λ
2
=
10
\lambda_1=5, \lambda_2=10
λ1=5,λ2=10
将其分别代入
(
A
−
λ
E
)
x
=
0
(A-\lambda E)x=0
(A−λE)x=0 求x,可分别得出
x
1
=
[
1
−
1
]
x_1=\begin{bmatrix}1 \\ -1\end{bmatrix}
x1=[1−1]和
x
2
=
[
2
3
]
x_2=\begin{bmatrix}2 \\ 3\end{bmatrix}
x2=[23]。
对特征向量进行一下唯一化处理,全部除以L2范数,即特征向量的每个元素的平方和开根号。
得到 x 1 = [ 1 / 2 − 1 / 2 ] x_1=\begin{bmatrix}1/\sqrt{2} \\ -1/\sqrt{2}\end{bmatrix} x1=[1/2−1/2]和 x 2 = [ 2 / 13 3 / 13 ] x_2=\begin{bmatrix}2/\sqrt{13} \\ 3/\sqrt{13}\end{bmatrix} x2=[2/133/13]。
奇异值分解
奇异值分解的过程和上面类似,只是特征值分解只适用于方阵(n x n型),而奇异值分解可以对任意矩阵使用,当然也包括方阵。
奇异值分解要求解的问题是
A
=
U
Σ
V
T
A=U\Sigma V^T
A=UΣVT
V V V是关于 A T A A^TA ATA的特征向量,而 U U U是关于 A A T AA^T AAT的特征向量。他们的特征值都是一样的,而奇异值就是特征值开根号, Σ \Sigma Σ就是奇异值矩阵,是将奇异值按降序排列在对角线上。
比如现在有 A = [ − 1 3 2 − 1 − 2 3 ] A=\begin{bmatrix} -1&3&2\\ -1&-2&3\end{bmatrix} A=[−1−13−223]
A A T = [ − 1 3 2 − 1 − 2 3 ] [ − 1 − 1 3 − 2 2 3 ] = [ 14 1 1 14 ] AA^T=\begin{bmatrix} -1&3&2\\ -1&-2&3\end{bmatrix}\begin{bmatrix}-1&-1\\3&-2\\2&3\end{bmatrix}=\begin{bmatrix}14&1\\1&14\end{bmatrix} AAT=[−1−13−223]⎣⎡−132−1−23⎦⎤=[141114]
可得 λ 1 = 15 \lambda_1 =15 λ1=15, λ 2 = 13 \lambda_2 =13 λ2=13
可得特征向量:
x
1
=
(
1
2
,
1
2
)
T
,
x
2
=
(
−
1
2
,
1
2
)
T
x_1=(\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}})^T, x_2=(-\frac{1}{\sqrt{2}},\frac{1}{\sqrt{2}})^T
x1=(21,21)T,x2=(−21,21)T
将他们排列一下就是U 左奇异向量了
U
=
[
1
2
−
1
2
1
2
1
2
]
U=\begin{bmatrix} \frac{1}{\sqrt{2}}&-\frac{1}{\sqrt{2}}\\ \frac{1}{\sqrt{2}}&\frac{1}{\sqrt{2}} \end{bmatrix}
U=[2121−2121]。
同理:
A
T
A
=
[
−
1
−
1
3
−
2
2
3
]
[
−
1
3
2
−
1
−
2
3
]
=
[
2
−
1
−
5
−
1
13
0
−
5
0
13
]
A^TA=\begin{bmatrix}-1&-1\\3&-2\\2&3\end{bmatrix}\begin{bmatrix} -1&3&2\\ -1&-2&3\end{bmatrix}=\begin{bmatrix}2 &-1&-5\\-1&13&0\\-5&0&13\end{bmatrix}
ATA=⎣⎡−132−1−23⎦⎤[−1−13−223]=⎣⎡2−1−5−1130−5013⎦⎤
然后会相应得到3个特征值
λ
1
=
15
,
λ
2
=
13
,
λ
3
=
0
\lambda_1=15, \lambda_2=13, \lambda_3=0
λ1=15,λ2=13,λ3=0
分别对应的特征向量就是 x 1 = ( − 2 30 , 1 30 , 5 30 ) T , x 2 = ( 0 , 5 26 , − 1 26 ) T , x 3 = ( 13 195 , 1 195 , 5 195 ) T x_1=(\frac{-2}{\sqrt{30}}, \frac{1}{\sqrt{30}}, \frac{5}{\sqrt{30}})^T, x_2=(0, \frac{5}{\sqrt{26}}, \frac{-1}{\sqrt{26}})^T, x_3=(\frac{13}{\sqrt{195}}, \frac{1}{\sqrt{195}}, \frac{5}{\sqrt{195}})^T x1=(30−2,301,305)T,x2=(0,265,26−1)T,x3=(19513,1951,1955)T。
于是
V
T
V^T
VT矩阵就是
V
T
=
[
−
2
30
1
30
5
30
0
5
26
−
1
26
13
195
1
195
5
195
]
V^T=\begin{bmatrix}\frac{-2}{\sqrt{30}}& \frac{1}{\sqrt{30}}& \frac{5}{\sqrt{30}}\\ 0& \frac{5}{\sqrt{26}}& \frac{-1}{\sqrt{26}}\\ \frac{13}{\sqrt{195}}& \frac{1}{\sqrt{195}}& \frac{5}{\sqrt{195}} \end{bmatrix}
VT=⎣⎢⎡30−2019513301265195130526−11955⎦⎥⎤
接下来是中间的 Σ \Sigma Σ,由于U是2x2的,而V是3x3的,所以 Σ \Sigma Σ应该是2x3的,这样才符合矩阵运算的规则。
Σ = [ 15 0 0 0 13 0 ] \Sigma=\begin{bmatrix}\sqrt{15} & 0 & 0\\ 0 & \sqrt{13} & 0\end{bmatrix} Σ=[15001300]
如果想验证自己的左右奇异矩阵算的是否正确,可以上这个网站快速验证wolframAlpha。
验证一下可以得出 A = U Σ V T A=U\Sigma V^T A=UΣVT。
并且可以发现矩阵A的Frobenius范数(每个元素的平方和开根号)等于所有非零奇异值平方和的1/2次方。
即 ( Σ i = 1 n Σ j = 1 m ∣ a i j ∣ 2 ) 1 / 2 = σ 1 2 + σ 2 2 + . . . + σ n 2 (\Sigma_{i=1}^n\Sigma_{j=1}^m|a_{ij}|^2)^{1/2}=\sqrt{\sigma_1^2+\sigma_2^2+...+\sigma_n^2} (Σi=1nΣj=1m∣aij∣2)1/2=σ12+σ22+...+σn2
关于特征值分解和SVD的一个应用是PCA,可以降维度,具体详细原理和代码可以看我写的这篇文章机器学习入门(八)主成分分析,简单概括就是想降维到K维,就用最大的K个特征值对应的特征向量组成投影矩阵,与原数据相乘。
线性判别分析
瑞利商
想要了解线性判别分析,先可以了解一下瑞利商(Rayleigh quotient)。形式如下:
R
(
A
,
x
)
=
x
H
A
x
x
H
x
R(A,x)=\frac{x^HAx}{x^Hx}
R(A,x)=xHxxHAx
其中H是hermitian矩阵的意思,即转置之后的元素和原元素是共轭的 A H = A A^H=A AH=A。比如 [ 1 2 − i 2 + i 3 ] \begin{bmatrix}1 &2-i\\2+i & 3\end{bmatrix} [12+i2−i3]。而实对称矩阵 A T = A A^T=A AT=A是 A H = A A^H=A AH=A的一个特例。
瑞利商有个重要的性质会被用到,即最小值是关于A的最小的特征值,而最大值是关于A的最大的特征值。即 λ m i n ≤ R ( A , x ) ≤ λ m a x \lambda_{min}\leq R(A,x)\leq \lambda_{max} λmin≤R(A,x)≤λmax
广义瑞利商(Generalized Rayleigh Quotient)
广义瑞利商的形式如下:
R
(
A
,
B
,
x
)
=
x
H
A
x
x
H
B
x
R(A,B,x)=\frac{x^HAx}{x^HBx}
R(A,B,x)=xHBxxHAx
其中A,B都是H矩阵,并且B是正定矩阵。为了求广义瑞利商的最大最小值,
x
=
B
−
1
/
2
x
′
x=B^{-1/2}x'
x=B−1/2x′ ,代入原式,得:
R
(
A
,
B
,
x
)
=
x
′
H
(
B
−
1
/
2
)
H
A
B
−
1
/
2
x
′
x
′
H
(
B
−
1
/
2
)
H
B
B
−
1
/
2
x
′
R(A,B,x)=\frac{x'^H(B^{-1/2})^H AB^{-1/2}x'}{x'^H(B^{-1/2})^H BB^{-1/2}x'}
R(A,B,x)=x′H(B−1/2)HBB−1/2x′x′H(B−1/2)HAB−1/2x′。
由于B是正定矩阵 ( B − 1 / 2 ) H B B − 1 / 2 = B − 1 / 2 B B − 1 / 2 (B^{-1/2})^H BB^{-1/2}=B^{-1/2} BB^{-1/2} (B−1/2)HBB−1/2=B−1/2BB−1/2正好可以消掉。
R ( A , B , x ) = x ′ H B − 1 / 2 A B − 1 / 2 x ′ x ′ H x ′ = x ′ H B − 1 A x ′ x ′ H x ′ R(A,B,x)=\frac{x'^HB^{-1/2} AB^{-1/2}x'}{x'^Hx'}=\frac{x'^HB^{-1} Ax'}{x'^Hx'} R(A,B,x)=x′Hx′x′HB−1/2AB−1/2x′=x′Hx′x′HB−1Ax′
于是,这就又是瑞利商的形式,其最大值最小值是关于 B − 1 A B^{-1}A B−1A的最大和最小的特征值。
说回线性判别分析LDA,LDA希望投影后希望同一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
假设现在有两类数据,
y
i
∈
{
0
,
1
}
y_i \in \{0, 1\}
yi∈{0,1}, 那
N
j
(
j
=
0
,
1
)
N_j(j=0,1)
Nj(j=0,1)就是第j类的个数,
X
j
(
j
=
0
,
1
)
X_j(j=0,1)
Xj(j=0,1)是第j类数据的集合,而
μ
j
(
j
=
0
,
1
)
\mu_j(j=0,1)
μj(j=0,1)就是第j类的均值向量,即该类别data求和再除以总个数:
μ
j
=
1
N
j
Σ
x
∈
X
j
x
(
j
=
0
,
1
)
\mu_j=\frac{1}{N_j}\Sigma_{x\in X_j} x(j=0,1)
μj=Nj1Σx∈Xjx(j=0,1)
而协方差(不带1/N):
Σ
j
=
Σ
x
∈
X
i
(
x
−
μ
j
)
(
x
−
μ
j
)
T
(
j
=
0
,
1
)
\Sigma_j=\Sigma_{x\in X_i}(x-\mu_j)(x-\mu_j)^T(j=0,1)
Σj=Σx∈Xi(x−μj)(x−μj)T(j=0,1)
投影时,投影的直线为 w w w, 而 x i x_i xi关于这个直线的投影就是 w T x i w^Tx_i wTxi, 而两个类别的中心点,也就是两个类别的均值,即 μ 0 , μ 1 \mu_0, \mu_1 μ0,μ1,在直线上的投影就是 w T μ 0 , w T μ 1 w^T\mu_0, w^T\mu_1 wTμ0,wTμ1。为了让两个类的中心点更远,则希望 ∣ ∣ w T μ 0 − w T μ 1 ∣ ∣ 2 2 ||w^T\mu_0- w^T\mu_1||_2^2 ∣∣wTμ0−wTμ1∣∣22更。而对于同类别的点,希望他们距离更近,则他们的协方差应该更小,即 w T Σ 0 w + w T Σ 1 w w^T\Sigma_0w+ w^T\Sigma_1 w wTΣ0w+wTΣ1w 更小。
优化目标就变成了:
a
r
g
m
a
x
J
(
w
)
=
∣
∣
w
T
μ
0
−
w
T
μ
1
∣
∣
2
2
w
T
Σ
0
w
+
w
T
Σ
1
w
=
w
T
(
μ
0
−
μ
1
)
(
μ
0
−
μ
1
)
T
w
w
T
(
Σ
0
+
Σ
1
)
w
argmax\ J(w)=\frac{||w^T\mu_0- w^T\mu_1||_2^2}{w^T\Sigma_0w+ w^T\Sigma_1 w}=\frac{w^T(\mu_0-\mu_1)(\mu_0-\mu_1)^Tw}{w^T(\Sigma_0+\Sigma_1)w}
argmax J(w)=wTΣ0w+wTΣ1w∣∣wTμ0−wTμ1∣∣22=wT(Σ0+Σ1)wwT(μ0−μ1)(μ0−μ1)Tw
分子越大,分母越小。
一般定义类内散度矩阵为 S w = Σ 0 + Σ 1 = Σ x ∈ X 0 ( x − μ 0 ) ( x − μ 0 ) T + Σ x ∈ X 1 ( x − μ 1 ) ( x − μ 1 ) T S_w=\Sigma_0+\Sigma_1=\\ \Sigma_{x\in X_0}(x-\mu_0)(x-\mu_0)^T+\Sigma_{x\in X_1}(x-\mu_1)(x-\mu_1)^T Sw=Σ0+Σ1=Σx∈X0(x−μ0)(x−μ0)T+Σx∈X1(x−μ1)(x−μ1)T
类间散度:
S
b
=
(
μ
0
−
μ
1
)
(
μ
0
−
μ
1
)
T
S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T
Sb=(μ0−μ1)(μ0−μ1)T
于是
a
r
g
m
a
x
J
(
w
)
=
w
T
S
b
w
w
T
S
w
w
argmax\ J(w)=\frac{w^TS_bw}{w^TS_ww}
argmax J(w)=wTSwwwTSbw
这就是之前提到的的广义瑞利商的形式,再变换一下就是
a r g m a x J ( w ) = w ′ T S w − 1 / 2 S b S w − 1 / 2 w ′ w ′ T w ′ argmax\ J(w)=\frac{w'^TS_w^{-1/2}S_bS_w^{-1/2}w'}{w'^Tw'} argmax J(w)=w′Tw′w′TSw−1/2SbSw−1/2w′
而关于最后的投影,其实跟特征值分解或者SVD的投影类似,用
S
w
−
1
/
2
S
b
S
w
−
1
/
2
S_w^{-1/2}S_bS_w^{-1/2}
Sw−1/2SbSw−1/2的最大的d个特征值所对应的特征向量得到投影矩阵
W
W
W, 原来的x投影到新的这个平面(多类别LDA)或者说线上时,就成了
z
i
=
W
T
x
i
z_i=W^Tx_i
zi=WTxi
而新的这个投影数据集就是关于
(
z
i
,
y
i
)
(z_i,y_i)
(zi,yi)的。