问题
线性判别分析(Linear Discriminant Analysis,LDA)是机器学习中常用的降维方法之一,本文旨在介绍LDA算法的思想,其数学推导过程可能会稍作简化。
LDA的思想
● LDA是一种线性的、有监督的降维方法,即每个样本都有对应的类别标签(这点和PCA不同)。
● 主要思想:给定训练样本集,设法将样本投影到一条直线上,使得同类的样本的投影尽可能的接近、异类样本的投影尽可能地远离(即最小化类内距离和最大化类间距离)。
下面分别通过《机器学习》和《百面机器学习》两本书中的图片先来直观地理解一下LDA的思想。
● 为什么要将最大化类间距离和最小化类内距离同时作为优化目标呢?
先看上面第二张图的左图(a),对于两个类别,只采用了最大化类间距离,其结果中两类样本会有少许重叠;而对于右图(b),同时最大化类间距离和最小化类内距离,可见分类效果更好,同类样本的投影分布更加集中了。当然,对于二维的数据,可以采用将样本投影到直线上的方式,对于高维的数据,则是投影到一个低维的超平面上,这应该很好理解。
LDA算法优化目标
由上面的介绍我们知道,LDA算法的思想就是最大化类间距离和最小化类内距离,其优化目标就很直观了,那怎么用数学方式来表示呢?要解决这个问题,就得先看看怎么描述类间距离和类内距离。
● 类间距离(以二分类为示例)
假设有
C
1
C_{1}
C1、
C
2
C_{2}
C2两类样本,其均值分别为
μ
1
=
1
N
∑
x
∈
C
1
x
\mu_{1}=\frac{1}{N}\sum_{x\in C_{1}}x
μ1=N1∑x∈C1x 和
μ
2
=
1
N
∑
x
∈
C
2
x
\mu_{2}=\frac{1}{N}\sum_{x\in C_{2}}x
μ2=N1∑x∈C2x 。很显然,要使得两类样本类间距离最大,则
μ
1
\mu_{1}
μ1 、
μ
2
\mu_{2}
μ2 的距离应尽可能地大,则类间距离可描述为
∣
∣
ω
T
μ
0
−
ω
T
μ
1
∣
∣
2
2
,
其中,
ω
为投影方向
||\omega^{T}\mu_{0}-\omega^{T}\mu_{1}||_{2}^{2},\ \ 其中,\omega为投影方向
∣∣ωTμ0−ωTμ1∣∣22, 其中,ω为投影方向
● 类内距离
要使得样本在同类中距离最小,也就是最小化同类样本的方差,假设分别用
D
1
D_{1}
D1、
D
2
D_{2}
D2 表示两类样本的投影方差,则有:
D
1
=
∑
x
∈
C
1
(
ω
T
x
−
ω
T
μ
1
)
2
=
∑
x
∈
C
1
ω
T
(
x
−
μ
1
)
(
x
−
μ
1
)
T
ω
D
2
=
∑
x
∈
C
2
(
ω
T
x
−
ω
T
μ
2
)
2
=
∑
x
∈
C
2
ω
T
(
x
−
μ
2
)
(
x
−
μ
2
)
T
ω
D_{1} = \sum_{x\in C_{1}}(\omega^{T}x-\omega^{T}\mu_{1})^{2}=\sum_{x\in C_{1}}\omega^{T}(x-\mu_{1})(x-\mu_{1})^{T}\omega \\ D_{2} = \sum_{x\in C_{2}}(\omega^{T}x-\omega^{T}\mu_{2})^{2}=\sum_{x\in C_{2}}\omega^{T}(x-\mu_{2})(x-\mu_{2})^{T}\omega
D1=x∈C1∑(ωTx−ωTμ1)2=x∈C1∑ωT(x−μ1)(x−μ1)TωD2=x∈C2∑(ωTx−ωTμ2)2=x∈C2∑ωT(x−μ2)(x−μ2)Tω
因此,要使得类内距离最小,就是要最小化
D
1
+
D
2
D_{1}+D_{2}
D1+D2。
● 优化目标
由上面分析,最大化类间距离和最小化类内距离,因此可以得到最大化目标:
J
(
ω
)
=
∣
∣
ω
T
μ
0
−
ω
T
μ
1
∣
∣
2
2
D
1
+
D
2
=
∣
∣
ω
T
μ
0
−
ω
T
μ
1
∣
∣
2
2
∑
x
∈
C
i
ω
T
(
x
−
μ
i
)
(
x
−
μ
i
)
T
ω
J(\omega) = \frac{||\omega^{T}\mu_{0}-\omega^{T}\mu_{1}||_{2}^{2}}{D_{1}+D_{2}}\\\qquad\qquad\qquad\quad =\frac{||\omega^{T}\mu_{0}-\omega^{T}\mu_{1}||_{2}^{2}}{\sum_{x\in C_{i}}\omega^{T}(x-\mu_{i})(x-\mu_{i})^{T}\omega}
J(ω)=D1+D2∣∣ωTμ0−ωTμ1∣∣22=∑x∈CiωT(x−μi)(x−μi)Tω∣∣ωTμ0−ωTμ1∣∣22
为了化简上面公式,给出几个定义:
● 类间散度矩阵:
S
b
=
(
μ
1
−
μ
2
)
(
μ
1
−
μ
2
)
T
S_{b}=(\mu_{1}-\mu_{2})(\mu_{1}-\mu_{2})^{T}
Sb=(μ1−μ2)(μ1−μ2)T
● 类内散度矩阵:
S
ω
=
Σ
1
+
Σ
2
=
∑
x
∈
C
1
(
x
−
μ
1
)
(
x
−
μ
1
)
T
+
∑
x
∈
C
2
(
x
−
μ
2
)
(
x
−
μ
2
)
T
S_{\omega}=\Sigma_{1}+\Sigma_{2}=\sum_{x\in C_{1}}(x-\mu_{1})(x-\mu_{1})^{T}+\sum_{x\in C_{2}}(x-\mu_{2})(x-\mu_{2})^{T}
Sω=Σ1+Σ2=x∈C1∑(x−μ1)(x−μ1)T+x∈C2∑(x−μ2)(x−μ2)T
因此最大化目标可以简写为:
J
(
ω
)
=
ω
T
S
b
ω
ω
T
S
ω
ω
J(\omega) = \frac{\omega^{T}S_{b}\omega}{\omega^{T}S_{\omega}\omega}
J(ω)=ωTSωωωTSbω
这是一个广义瑞利商,可以对矩阵进行标准化操作(具体证明就不展开啦),因此,通过标准化后总可以得到 ω T S ω ω = 1 \omega^{T}S_{\omega}\omega=1 ωTSωω=1,又由于上面优化目标函数分子分母都是二次项,其解与 ω \omega ω 的长度无关,只与方向有关,因此上面优化目标等价于以下最小化目标:
转化为最小化目标:
m
i
n
ω
−
ω
T
S
b
ω
s
.
t
.
ω
T
S
ω
ω
=
1
\underset{\omega}{min}\quad-\omega^{T}S_{b}\omega \\ s.t. \quad \omega^{T}S_{\omega}\omega=1
ωmin−ωTSbωs.t.ωTSωω=1
由拉格朗日法,上式可得:
S
b
ω
=
λ
S
ω
ω
即有,
S
ω
−
1
S
b
ω
=
λ
ω
S_{b}\omega=\lambda S_{\omega}\omega \\ 即有,S_{\omega}^{-1}S_{b}\omega=\lambda \omega
Sbω=λSωω即有,Sω−1Sbω=λω
至此,我们的优化目标就转化成了求矩阵
S
ω
−
1
S
b
S_{\omega}^{-1}S_{b}
Sω−1Sb 的特征值,而投影方向就是这个特征值对应的特征向量。
由于 ( μ 1 − μ 2 ) T ω (\mu_{1}-\mu_{2})^{T}\omega (μ1−μ2)Tω 是个标量(因为 μ 1 − μ 2 \mu_{1}-\mu_{2} μ1−μ2 和 ω \omega ω 同向时才能保证类间距离最大),
所以,对于 S b ω = ( μ 1 − μ 2 ) ( μ 1 − μ 2 ) T ω S_{b}\omega=(\mu_{1}-\mu_{2})(\mu_{1}-\mu_{2})^{T}\omega Sbω=(μ1−μ2)(μ1−μ2)Tω 而言,可以看出 S b ω S_{b}\omega Sbω 始终与 ( μ 1 − μ 2 ) (\mu_{1}-\mu_{2}) (μ1−μ2) 的方向一致
因此,如果只考虑
ω
\omega
ω 的长度而不考虑方向,则由:
S
ω
−
1
S
b
ω
=
λ
ω
=
>
ω
=
S
ω
−
1
(
μ
1
−
μ
2
)
S_{\omega}^{-1}S_{b}\omega=\lambda \omega \qquad => \qquad \omega=S_{\omega}^{-1}(\mu_{1}-\mu_{2})
Sω−1Sbω=λω=>ω=Sω−1(μ1−μ2)
也就是说,我们只需求出样本的均值和类内的散度矩阵(即类内方差),即可求出投影方向。
LDA算法流程(推广至高维)
1.计算每类样本的均值向量 μ i \mu_{i} μi。
2.计算类间散度矩阵 S ω S_{\omega} Sω 和类内散度矩阵 S b S_{b} Sb 。
3.求矩阵 S ω − 1 S b S_{\omega}^{-1}S_{b} Sω−1Sb 的特征值即对应的特征向量,从大到小排序。
4.将特征值由大到小排列,取出前 k 个特征值对应的特征向量。
5.将 n 维样本映射到 k 维,实现降维处理。
x
i
′
=
[
ω
1
T
x
i
ω
2
T
x
i
⋮
ω
k
T
x
i
]
x_{i}^{'}=\begin{bmatrix}\omega_{1}^{T}x_{i}\\\omega_{2}^{T}x_{i}\\\vdots \\\omega_{k}^{T}x_{i} \end{bmatrix}\\
xi′=
ω1Txiω2Txi⋮ωkTxi
总结
● LDA是线性的、有监督的降维方法,其优点是善于对有类别信息的数据进行降维处理(与PCA的不同)。
● LDA因为是线性模型,对噪声的鲁棒性较好,但由于模型简单,对数据特征的表达能力不足。
● LDA对数据的分布做了一些很强的假设,比如每个类别都是高斯分布、各个类别的协方差相等,实际中这些假设很难完全满足。
关于LDA与PCA的区别,请看下回分解。
参考资料
周志华《机器学习》
葫芦娃《百面机器学习》