线性判别分析 LDA (Linear Discriminant Analysis) 又称为 Fisher 线性判别,是一种监督学习的降维技术,也就是说它的数据集的每个样本都是有类别输出的,这点与 PCA(无监督学习)不同。LDA 在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。
1. LDA 的思想
LDA 的思想是:最大化类间均值,最小化类内方差。意思就是将数据投影在低维度上,并且投影后同种类别数据的投影点尽可能的接近,不同类别数据的投影点的中心点尽可能的远。
我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
上图提供了两种投影方式,哪一种能更好的满足我们的标准呢?从直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是 LDA 的主要思想了,当然在实际应用中,我们的数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
2. 瑞利商 与 广义瑞利商
首先来看瑞利商的定义。瑞利商是指这样的函数 R(A,x) :
R(A,x)=xHxxHAx
其中, x 是非零向量,而 A 为 n×n 的 Hermitan 矩阵
。所谓 Hermitan 矩阵就是 共轭转置矩阵 和自己相等的矩阵,即 AH=A ,例如, A=(12−i2+i1) 的共轭转置等于其本身。当 A 为实矩阵时,如果满足 AT=A ,则 A 为 Hermitan 矩阵。
瑞利商 R(A,x) 有一个非常重要的性质,即 它的最大值等于矩阵 A 最大的特征值,而最小值等于矩阵 A 的最小的特征值,也就是满足
λmin≤xHxxHAx≤λmax
当向量 x 是标准正交基,即满足 xHx=1 时,瑞利商退化为 R(A,x)=xHAx 。
下面看一下广义瑞利商。广义瑞利商是指这样的函数 R(A,B,x) :
R(A,B,x)=xHBxxHAx
其中 x 为非零向量,而 A,B 为 n×n 的 Hermitan 矩阵。 B 为正定矩阵。它的最大值和最小值是什么呢?其实我们只要将其通过标准化就可以转化为瑞利商的格式。
令 x=B−1/2x′ ,则分母转化为:
xHBx=x′H(B−1/2)HBB−1/2x′=x′HB−1/2BB−1/2x′=x′Hx′
而分子转化为:
xHAx=x′HB−1/2AB−1/2x′
此时我们的 R(A,B,x) 转化为 R(A,B,x′) :
R(A,B,x′)=x′Hx′x′HB−1/2AB−1/2x′
利用前面的瑞利商的性质,我们可以很快的知道, R(A,B,x′) 的最大值为矩阵 B−1/2AB−1/2 的最大特征值,或者说矩阵 B−1A 的最大特征值,而最小值为矩阵 B−1A 的最小特征值。
3. LDA 的原理及推导过程
假设样本共有 K 类,每一个类的样本的个数分别为 N1,N2,...,Nk
x11,x12,...,x1N1 对应第 1 类
x21,x22,...,x2N2 对应第 2 类
xk1,xk2,...,xkNk 对应第 K 类,其中每个样本 xij 均为 n 维向量
设 x~ij 为 xij 变化后的样本,则
x~ij=<x,u>u=∣x∣∣u∣cosθ⋅u=(xTu)u
此处设 u 为单位向量,即 uTu=1 .
假设第 K 类样本的数据集为 Dk ,变化后的样本的均值向量为: m~=Nk∑x~∈Dkx~ ,那么,第 K 类样本的方差定义为 NkSk ,由于:
Sk=x~∈Dk∑(x~−m~)T(x~−m~)=x∈Dk∑[(xTu)u−(mTu)u]T[(xTu)u−(mTu)u]=x∈Dk∑[(xTu)uT−(mTu)uT][(xTu)u−(mTu)u]=x∈Dk∑[(xTu)2uTu−2(xTu)(mTu)uTu+(mTu)2uTu]=x∈Dk∑[(xTu)2−2(xTu)(mTu)+(mTu)2]
(x^Tu,m^Tu 为实数,转置仍是本身)
因此,第 K 类样本的方差可以改写为:
NkSk=Nk∑x∈Dk(xTu)2−2Nk∑x∈DkxT(umTu)+Nk∑x∈Dk(mTu)2=Nk∑x∈DkuTxxTu−2Nk∑x∈DkxTumTu+(mTu)2(注:Nk∑x∈Dk(mTu)2=(mTu)2。因为mTu与x无关)=uTNk∑x∈DkxxTu−(mTu)2(注:Nk∑x∈DkxT=mT)=uTNk∑x∈DkxxTu−uTmmTu=uT(Nk∑x∈DkxxT−mmT)u
所有类别的样本方差之和:
k∑NkSk=k=1∑KuT(Nk∑x∈DkxxT−mkmkT)u=uTk=1∑K(Nk∑x∈DkxxT−mkmkT)u=uTSwu
其中, Sw=∑k=1K(Nk∑x∈DkxxT−mkmkT), Sw 一般被称为类内散度矩阵
不同类别 i,j 之间的中心距离:
Sij=(m~i−m~j)T(m~i−m~j)=[(uTmi)u−(uTmj)u]T[(miTu)u−(mjTu)u]=[(uTmi)uT−(uTmj)uT][u(miTu)−u(mjTu)]=uT(mi−mj)uTu(miT−mjT)u=uT(mi−mj)(mi−mj)Tu
所有类别之间的距离之和为:
i=ji,j∑sij=uTi=ji,j∑[(mi−mj)(mi−mj)T]u=uTSbu
其中,Sb=∑i=ji,j[(mi−mj)(mi−mj)T] ,Sb 一般被称为类间散度矩阵。
在已知条件下, Sw,Sb 均可求出。根据 LDA 算法的目标,即 类间距离尽可能大,类内方差尽可能小,我们需要求最大化 uTSbu , 最小化 uTSwu的解。
令 J(u)=uTSwuuTSbu ,则目标函数为:
maxJ(u)
为了使所求最大,可假设 uTSwu=1 ,则问题转化为:
maxuTSbus.t.uTSwu=1
\begin{aligned}
L(u, \lambda)&=u^{T} S_{b} u+\lambda\left(1-u^{T} S_{w} u\right) \\
\frac{\partial L}{\partial u} &= S_bu+S_b^Tu-\lambda S_wu-\lambda S_w^Tu \\
&=2(S_bu-\lambda S_wu)\quad \text{(因为 S_b,S_w 为对称矩阵)}\\
&=0 \Rightarrow S_{b} u=\lambda S_{w} u
\end{aligned}
证明 Sb 为对称矩阵:
SbT=(i=ji,j∑[(mi−mj)(mi−mj)T])T=i=ji,j∑[(mi−mj)(mi−mj)T]T=i=ji,j∑[(mi−mj)(mi−mj)T]=Sb
所以, Sb 为对称矩阵,同理可证明 Sw 为对称矩阵。
Sw−1Sbu=λu
计算矩阵 Sw−1Sb 的最大的 d 个特征值和对应的 d 个特征向量 (w1,w2,...,wd) ,可以得到投影矩阵 W=(w1,w2,...,wd) 。
注意:
(1) 选取特征值时,如果一些特征值明显大于其他的特征值,则取这些取值较大的特征值,因为它们包含更多的数据分布的信息。相反,如果一些特征值接近于 0,我们将这些特征值舍去。
(2)由于 W 是一个利用了样本类别得到的投影矩阵,因此它能够降维到的维度 d 的最大值为 K−1 。为什么不是 K 呢?因为 Sb 中每个 mi−mj 的秩均为 1(因为 mi 为 1 维向量)。
由 R(AB)≤min(R(A),R(B)) 可知:R((mi−mj)(mi−mj)T)=1
又 ∵
Sb=i=ji,j∑[(mi−mj)(mi−mj)T],R(A+B)≤R(A)+R(B)
∴R(Sb)≤K−1⇒R(Sw−1Sb)≤K−1
∴λ=0 对应的特征向量至少有 (K−(K−1))=1 个,也就是说 d 最大为 K−1。
3. LDA 算法流程
输入:数据集 D=(x1,y1),(x2,y2),...,(xm,ym) ,其中,任意样本 xi 为 n 维向量, yi∈{C1,C2,...,Ck} ,降维到的维度为 d 。
输出:降维后的数据集 D′ 。
1)计算类内散度矩阵 Sw
2)计算类间散度矩阵 Sb
3)计算矩阵 Sw−1Sb
4)计算矩阵 Sw−1Sb 的特征值与特征向量,按从小到大的顺序选取前 d 个特征值和对应的 d 个特征向量 (w1,w2,...,wd) ,得到投影矩阵 W 。
5)对样本集中的每一个样本特征 xi ,转化为新的样本 zi=WTxi
6)得到输出样本集 D′={(z1,y1),(z2,y2),...,(zm,ym)}
4. LDA 与 PCA 对比
LDA 与 PCA 都可用于降维,因此有很多相同的地方,也有很多不同的地方
相同点:
- 两者均可用于数据降维
- 两者在降维时均使用了矩阵特征分解的思想
- 两者都假设数据符合高斯分布
不同点:
- LDA 是有监督的降维方法,而 PCA 是无监督降维方法
- 当总共有 K 个类别时,LDA 最多降到 K−1 维,而 PCA 没有这个限制
- LDA 除了用于降维,还可以用于分类
- LCA 选择分类性能最好的投影方向,而 PCA 选择样本点投影具有最大方差的方向。这点可以从下图形象的看出,在某些数据分布下 LDA 比 PCA 降维较优(如下图的左图)。当然,某些数据分布下 PCA 比 LDA 降维较优(如下图的右图)。
5. LDA 算法小结
LDA 算法既可以用来降维,也可以用来分来,但是目前来说,LDA 主要用于降维,在进行与图像识别相关的数据分析时,LDA 是一个有力的工具。下面总结一下 LDA 算法的优缺点。
LDA 算法的优点
- 在降维过程中可以使用类别的先验知识经验,而像 PCA 这样的无监督学习无法使用先验知识;
- LDA 在样本分类信息依赖均值而不是方差的时候,比 PCA 算法较优。
LDA 算法的缺点
- LDA 与 PCA 均不适合对非高斯分布样本进行降维
- LDA 降维算法最多降到类别数 K−1 的维度,当降维的维度大于 K−1 时,则不能使用 LDA。当然目前有一些改进的 LDA 算法可以绕过这个问题
- LDA 在样本分类信息依赖方差而非均值的时候,降维效果不好
- LDA 可能过度拟合数据
其中是一个函数,我们将调用反向链接函数。有许多反向链接函数可供选择;可能最简单的是恒等函数。这是一个返回与其参数相同的值的函数。第 3 章“线性回归建模”中的所有模型都使用了单位函数,为简单起见,我们只是省略了它。身份功能本身可能不是很有用,但它允许我们以更统一的方式考虑几种不同的模型。