线性判别分析LDA
LDA基础
LDA是一种监督学习的降维技术,对应着它的数据集中的每个样本是有类别输出的。LDA的基本思想是:给定一个训练样例集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能接近,异类样例的投影点中心尽可能远离。也就是“投影后类内方差最小,类间均值最大”。
我们先来看一下下图对于二分类的情况:

图中的“+”,“-”分别表示正例和反例,我们想要的就是让每种类别的投影点尽可能接近,而“+”和“-”的数据中心之间的距离尽可能大。
LDA推导
我们给定数据集D={(xi,yi)}i=1m,yi∈{0,1},定义Nj为第j类样本的个数,xj为第j类样本的集合,而μj为第j类样本的均值向量,∑j
为第j类样本的方差,因此原始均值和投影后的均值分别可以表示为如下的形式:
原始均值:
μi=Ni1∑x∈wix
投影后均值(wi表示第i类,y表示向量x投影后得到的向量):
ui~=Ni1∑x∈wiy
=Ni1∑x∈wiwTx
=wTNi1∑x∈wix
=wTμi
得到了均值之后我们可以得到方差为:
si~2=∑y∈wi(y−ui~)2
=∑x∈wi(wTx−wTμi)2
=∑x∈wiwT(x−μi)(x−μiT)w
=wTsiw
根据我们LDA的思想,我们要做的事情是“投影后类内方差最小,类间均值最大”,所得的目标函数如下:
J(w)=s1~2+s2~2∣u1~−u2~∣2
上式中,分子表示不同类别均值之差,分母表示不同类别方差之和,因此我们的目标就是最大化J(w)即可。
对于分母:
s1~2+s2~2=wTS1w+wTS2w=wTSww
此时的Sw我们可以定义为“类内散度矩阵”。
Sw=∑1+∑2
对于分子:
(u1~−u2~)2=(wTμ1−wTμ2)2
=wT(μ1−μ2)(μ1−μ2)Tw
=wTSBw
此时的SB我们可以定义为“类间散度矩阵”。
SB=(μ1−μ2)(μ1−μ2)T
对应的目标函数我们可以转化为:
J(w)=s1~2+s2~2∣u1~−u2~∣2=wTSBwwTSww
此时的J(w)就是我们最大化的目标,可以看到J(w)的分子分母都是关于w的二次项,因此我们的式子只与w的方向有关(w为投影后直线的方向),不失一般性我们令wTSww=1,则有:
min:−wTSBw (目标)
s.t.:wTSww=1(约束)
根据拉格朗日乘子法,上式等价于 (λ为拉格朗日乘子):
c(w)=−wTSBw+λ(wTSww−1)
dwdc=−2SBw+2λSww=0
SBw=λSww
我们把SBw=λ(μ1+μ2)带入可以解得:
w=Sw−1(μ1−μ2)
也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向了。
PCA和LDA
PCA(主成分分析)和LDA(线性判别分析)有很多的相似点,其本质是要将初始样本映射到维度更低的样本空间中,但是PCA和LDA的映射目标不一样:PCA是为了让映射后的样本具有最大的发散性;而LDA是为了让映射后的样本有最好的分类性能。所以说PCA是一种无监督的降维方法,而LDA是一种有监督的降维方法。
LDA总结
LDA算法的主要优点有:
- 在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
- LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
LDA算法的主要缺点有:
- LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
- LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
- LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
- LDA可能过度拟合数据。