前言
线性(Fisher)判别分析(Linear Discriminant Analysis, LDA)也属于线性分类方法的一种,由(Fisher,1936)
提出,所以也叫Fisher判别分析。
LDA的基本思想是:对于给定的训练数据样本,将样本投影到一条直线上,让同类的样例的投影点尽可能近,异类样例投影点尽可能远,这样就区分开了两类样本。当对新的样本预测时,将其投影到这条直线上,看其离哪个分类近来确定它的类别。
将上面的思想转化成对目标函数的优化,就得到了:
wmaxJ(w)=类内平均距离类间平均距离
下图是LDA的二维示意图:

一、散度矩阵
首先设给定数据集D={(xi,yi)i=1m,yi∈{0,1}},我们需要用给定数据去刻画类间和类内距离。
-
类间距离
两类样本的类间距离怎么刻画?这么多点,只能通过找两个代表性的点来计算距离,显然是均值向量点。将两个均值向量(μ1,μ2)投影到直线上,得到投影点(m1,m2)之间的距离平方(m1−m2)2。 向量μ在另一向量w上的投影为wTμ(忘了的可以看机器学习:线性分类问题(基础知识))。

由此我们有
类间距离的平方=(m1−m2)2=[wT(μ1−μ2)]2=[wT(μ1−μ2)][wT(μ1−μ2)]T=wT(μ1−μ2)(μ1−μ2)Tw=wTSbwSb=(μ1−μ2)(μ1−μ2)T,类间散度矩阵
-
类内距离
所谓类内距离刻画的就是同类中各个样本的松散程度,只要看每个点和均值点的距离平方和类内散裂度(类似方差)即可。类内散列度越小,意味着样本靠的越近。

由此,记类内散列度为Sc2有
Sc2=i∈C∑(wTxi−mc)2=i∈C∑(wT(xi−μc)2)=i∈C∑[wT(xi−μc)][wT(xi−μc)]T=i∈C∑wT(xi−μc)(xi−μc)Tw=wT[i∈C∑(xi−μc)(xi−μc)T]w
但这只是一个分类的,要同时考虑两个分类的类内散列度,如下
S12+S22=wT[i∈C1∑(xi−μ1)(xi−μ1)T]w+wT[i∈C2∑(xi−μ2)(xi−μ2)T]w=wT[j=1,2∑i∈Cj∑(xi−μj)(xi−μj)T]w=wTSwwSw=j=1,2∑i∈Cj∑(xi−μj)(xi−μj)T,类内散度矩阵
推导过程其实不难,仔细一点就能理解
二、目标函数与权重向量
有了类间距离和类内距离的刻画后, 依据上文的定义,可以得到我们的目标函数如下:
wmaxJ(w)=类内距离类间距离=S12+S22(m1−m2)2=wTSwwwTSbw
理解该公式中Sb,Sw都是根据训练数据确定的值,我们的目标是找到使得J最大的w,利用拉格朗日乘子法,原问题可转变为
wmaxL(w,λ)=wTSbw−λ(wTSww−C)
对w求偏导可得,
∂w∂L(w,λ)=Sbw−λSww=0⟹Sbw=λSww⟹Sw−1Sbw=λw
实际上到这已经发现w是Sw−1Sb的特征向量了,用求特征向量的方法即可得到w。但是可以利用Sb=(μ1−μ2)(μ1−μ2)T对其进一步化简,如下
Sbw=(μ1−μ2)(μ1−μ2)Tw=(μ1−μ2)[(μ1−μ2)Tw],[]内是个标量=β(μ1−μ2)
将结果带入上面得到
Sw−1β(μ1−μ2)=λw⟹w=λβSw−1(μ1−μ2)⟹w=Sw−1(μ1−μ2),λβ相当于对w放缩,可以省略
至此,我们就将所需直线的方向向量w(也是样本的权重向量)计算出来了。实际上当直线的方向确定后,各类样本在直线上投影的相对位置就确定了,即类间距离和类内距离确定。但是为了方便决策,我们希望在投影之后有一个明确的数值分解,例如0,投影结果大于0是一类,投影结果小于0是一类,而这个就是决策函数g(x)=wTx+w0的偏置w0决定。考虑两类均值向量的中心点21(μ1+μ2),这个点样本讲道理应该可以任意分入两类,也可以两边都不分入,所以作为分界点最合适,我们的决策函数应该要通过该点,因此有
w0=−21(wTμ1+wTμ2)g(x)=wTx+w0
三、总结
线性鉴别分析的主要思想还是很好理解的,就是一个类间距离和一个类内距离,让类间距离尽可能大,分类界限更清晰,类内距离尽可能小,同类更紧密。由上面的思想可以将Fisher鉴别分成如下几步:
-
根据正反例求各类均值μ1,μ2,作为类别间最大方向
-
求类内散度矩阵Sw
Sw=i=1∑2x∈Ci∑(x−μi)(x−μi)T
-
求类内散度矩阵的逆Sw−1
-
求权重向量w
w=Sw−1(μ1−μ2)
-
计算两类投影中心u1,u2
ui=wTμi,i=1,2
-
得到决策函数
g(x)=wTx−21(u1+u2)
参考资料
- 周志华. 机器学习. 2016
- 周晓飞. Fisher线性鉴别推导过程