线性判别分析
(Linear Discriminant Analysis, LDA)
的核心思想是:将给定训练集投影到特征空间的一个超平面上,并设法使同类样本投影点尽可能接近,异类样本投影点尽可能远离
由于做题时针对的是解题过程,因此原理相关方面省略,具体可参考👉从协方差的角度详解线性判别分析原理
计算步骤【二分类问题】:
-
计算类间散度矩阵 S b S_b Sb
S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T S_b=(\mu_0-\mu_1)(\mu_0-\mu_1)^T Sb=(μ0−μ1)(μ0−μ1)T
其中 μ 0 \mu_0 μ0 为标签为 0 0 0 的特征平均值,其值个数等于特征个数, μ 1 \mu_1 μ1 同理 -
计算类内散度矩阵 S ω S_\omega Sω
S ω = Σ 0 + Σ 1 S_\omega = \Sigma_0 + \Sigma_1\\ Sω=Σ0+Σ1
其中 Σ 0 \Sigma_0 Σ0 是标签为 0 0 0 的样本协方差矩阵,若有 n n n 个特征,则其大小为 n × n n\times n n×n
Σ 0 = [ C o v ( f 1 , f 1 ) C o v ( f 1 , f 2 ) ⋯ C o v ( f 1 , f n ) C o v ( f 2 , f 1 ) C o v ( f 2 , f 2 ) ⋯ C o v ( f 2 , f n ) ⋮ ⋮ ⋱ ⋮ C o v ( f n , f 1 ) C o v ( f n , f 2 ) ⋯ C o v ( f n , f n ) ] \Sigma_0 = \begin{bmatrix} Cov(f_1,f_1)& Cov(f_1,f_2)& \cdots &Cov(f_1,f_n)\\ Cov(f_2,f_1)& Cov(f_2,f_2)&\cdots &Cov(f_2,f_n)\\ \vdots & \vdots & \ddots & \vdots \\ Cov(f_n,f_1)& Cov(f_n,f_2)& \cdots &Cov(f_n,f_n) \end{bmatrix} \\ Σ0= Cov(f1,f1)Cov(f2,f1)⋮Cov(fn,f1)Cov(f1,f2)Cov(f2,f2)⋮Cov(fn,f2)⋯⋯⋱⋯Cov(f1,fn)Cov(f2,fn)⋮Cov(fn,fn)
其中 C o v ( x 1 , x 2 ) = 1 n − 1 ∑ i = 1 n ( x 1 i − x 1 ‾ ) ( x 2 i − x 2 ‾ ) Cov(x_1,x_2)=\dfrac{1}{n-1}\sum_{i=1}^{n}(x_1^{i}-\overline{x_1})(x_2^{i}-\overline{x_2}) Cov(x1,x2)=n−11∑i=1n(x1i−x1)(x2i−x2) , n n n 为样本个数 -
计算矩阵 S ω − 1 S b S_\omega^{-1}S_b Sω−1Sb
逆矩阵可以使用初等变换辅助求解,变换规则如下:
- 对调矩阵两行(列)
- 矩阵某行(列)乘以非零常数 k k k
- 矩阵某行(列)倍数加到另一行
-
对 S ω − 1 S b S_\omega^{-1}S_b Sω−1Sb 矩阵求特征值和特征向量,选择特征值最大的特征向量作为 ω \omega ω【需要归一化】
-
特征值可通过 ∣ λ E − A ∣ = 0 |\lambda E-A|=0 ∣λE−A∣=0 求得
-
将特征值带入方程 ( λ 0 E − A ) X = 0 (\lambda_0E-A)X=0 (λ0E−A)X=0 ,非零解即为特征值 λ 0 \lambda_0 λ0 对应得特征向量
具体可参考考研数学线性代数部分,不再赘述
-
-
计算得到投影后的数据点 Y = X ω Y=X\omega Y=Xω
将样本值 X X X 代入,得到的结果即投影后对应的位置
题目
假设有如下
10
10
10 个样本,样本有
2
2
2 个特征,前
5
5
5 项为负类,后
5
5
5 项为正类
D
=
{
X
1
,
X
2
,
X
3
,
X
4
,
X
5
,
X
6
,
X
7
,
X
8
,
X
9
,
X
10
}
=
{
(
4
,
2
)
T
,
(
2
,
4
)
T
,
(
2
,
3
)
T
,
(
3
,
6
)
T
,
(
4
,
4
)
T
,
(
9
,
10
)
T
,
(
6
,
8
)
T
,
(
9
,
5
)
T
,
(
8
,
7
)
T
,
(
10
,
8
)
T
}
\begin{align} \nonumber D & =\left\{ X_1,X_2,X_3,X_4,X_5,X_6,X_7,X_8,X_9,X_{10} \right\}\\\nonumber & =\left\{ (4,2)^T,(2,4)^T,(2,3)^T,(3,6)^T,(4,4)^T,(9,10)^T,(6,8)^T,(9,5)^T,(8,7)^T,(10,8)^T \right\}\\ \nonumber \end{align}
D={X1,X2,X3,X4,X5,X6,X7,X8,X9,X10}={(4,2)T,(2,4)T,(2,3)T,(3,6)T,(4,4)T,(9,10)T,(6,8)T,(9,5)T,(8,7)T,(10,8)T}
计算当前样本的类间散度矩阵
S
b
S_b
Sb 和类内散度矩阵
S
ω
S_\omega
Sω
题目所给样本可组成如下矩阵👇
样本 | 特征值1 | 特征值2 | 分类 |
---|---|---|---|
X 1 X_1 X1 | 4 | 2 | 0 |
X 2 X_2 X2 | 2 | 4 | 0 |
X 3 X_3 X3 | 2 | 3 | 0 |
X 4 X_4 X4 | 3 | 6 | 0 |
X 5 X_5 X5 | 4 | 4 | 0 |
X 6 X_6 X6 | 9 | 10 | 1 |
X 7 X_7 X7 | 6 | 8 | 1 |
X 8 X_8 X8 | 9 | 5 | 1 |
X 9 X_9 X9 | 8 | 7 | 1 |
X 10 X_{10} X10 | 10 | 8 | 1 |
μ 0 = [ ( 4 + 2 + 2 + 3 + 4 5 ) , ( 2 + 4 + 3 + 6 + 4 5 ) ] T = [ 3 , 3.8 ] T ∴ μ 1 = [ 8.4 , 7.6 ] T ∴ S b = ( μ 0 − μ 1 ) ( μ 0 − μ 1 ) T = [ − 5.4 − 4.2 ] [ − 5.4 − 4.2 ] = [ 29.16 22.68 22.68 17.64 ] S ω = Σ 0 + Σ 1 Σ 0 = [ C o v ( f 1 , f 1 ) C o v ( f 1 , f 2 ) C o v ( f 2 , f 1 ) C o v ( f 2 , f 2 ) ] \mu_0=[(\dfrac{4+2+2+3+4}{5}),(\dfrac{2+4+3+6+4}{5})]^T=[\ 3,3.8\ ]^T\\ \therefore \mu_1=[\ 8.4,7.6\ ]^T\\ \begin{align}\nonumber \therefore S_b & = (\mu_0-\mu_1)(\mu_0-\mu_1)^T \\\nonumber & = \begin{bmatrix} -5.4\\-4.2 \end{bmatrix} \begin{bmatrix} -5.4 & -4.2 \end{bmatrix}\\ & =\nonumber \begin{bmatrix} 29.16 & 22.68\\ 22.68 & 17.64 \end{bmatrix} \end{align}\\ S_\omega = \Sigma_0 + \Sigma_1\\ \Sigma_0= \begin{bmatrix} Cov(f_1,f_1) & Cov(f_1,f_2)\\ Cov(f_2,f_1) & Cov(f_2,f_2)\\ \end{bmatrix} μ0=[(54+2+2+3+4),(52+4+3+6+4)]T=[ 3,3.8 ]T∴μ1=[ 8.4,7.6 ]T∴Sb=(μ0−μ1)(μ0−μ1)T=[−5.4−4.2][−5.4−4.2]=[29.1622.6822.6817.64]Sω=Σ0+Σ1Σ0=[Cov(f1,f1)Cov(f2,f1)Cov(f1,f2)Cov(f2,f2)]
以求
C
o
v
(
f
1
,
f
2
)
Cov(f_1,f_2)
Cov(f1,f2) 为例,如下👇,由于是对标签为
0
0
0 的样本计算协方差,
∴
f
1
‾
=
3
,
f
2
‾
=
3.8
\therefore\overline{f_1}=3,\overline{f_2}=3.8
∴f1=3,f2=3.8
C
o
v
(
f
1
,
f
2
)
=
1
5
−
1
∑
i
=
1
5
(
f
1
i
−
f
1
‾
)
(
f
2
i
−
f
2
‾
)
=
1
4
[
(
4
−
3
)
(
2
−
3.8
)
+
(
2
−
3
)
(
4
−
3.8
)
+
(
2
−
3
)
(
3
−
3.8
)
+
(
3
−
3
)
(
6
−
3.8
)
+
(
4
−
3
)
(
4
−
3.8
)
]
=
1
4
×
(
−
1.8
−
1.8
+
0.8
+
1.8
)
=
−
0.25
\begin{align}\nonumber Cov(f_1,f_2) &=\dfrac{1}{5-1}\sum_{i=1}^{5}(f_1^{i}-\overline{f_1})(f_2^{i}-\overline{f_2})\\\nonumber & = \dfrac14[(4-3)(2-3.8)+(2-3)(4-3.8)+(2-3)(3-3.8)+(3-3)(6-3.8)\\&\ \ \ \ \ \nonumber +(4-3)(4-3.8)]\\\nonumber & = \dfrac14\times(-1.8-1.8+0.8+1.8)\\\nonumber & = -0.25 \end{align}\\
Cov(f1,f2)=5−11i=1∑5(f1i−f1)(f2i−f2)=41[(4−3)(2−3.8)+(2−3)(4−3.8)+(2−3)(3−3.8)+(3−3)(6−3.8) +(4−3)(4−3.8)]=41×(−1.8−1.8+0.8+1.8)=−0.25
其他数值都可根据类似方法得到
∴
Σ
0
=
[
1
−
0.25
−
0.25
2.2
]
Σ
1
=
[
2.3
−
0.05
−
0.05
3.3
]
∴
S
ω
=
Σ
0
+
Σ
1
=
[
3.3
−
0.3
−
0.3
5.5
]
\therefore \Sigma_0= \begin{bmatrix} 1 & -0.25\\ -0.25 & 2.2\\ \end{bmatrix}\\ \Sigma_1= \begin{bmatrix} 2.3 & -0.05\\ -0.05 & 3.3\\ \end{bmatrix}\\ \therefore S_\omega=\Sigma_0+\Sigma_1= \begin{bmatrix} 3.3 & -0.3\\ -0.3 & 5.5 \end{bmatrix}
∴Σ0=[1−0.25−0.252.2]Σ1=[2.3−0.05−0.053.3]∴Sω=Σ0+Σ1=[3.3−0.3−0.35.5]