线性判别分析(LDA)是一种监督学习方法,和主成分分析(PCA)一样,其主要用来降维。有些资料也把LDA称为Fisher线性判别(FLD)。LDA在机器学习,图像识别,数据挖掘等领域有着广泛的应用。
LDA的基本思想就是:给定训练样本集,设法将样本投影到一条直线上,使得同类样本的投影点尽可能地接近,异类样本的投影点尽可能远离,在对新样本进行分类时,将其投影到相同的这条直线上,再根据投影点的位置来确定新样本的类别。当是二分类问题时,如下图:

假设用来区分二分类的直线(投影函数)为:
y==wTx
LDA分类的一个目标是使得不同类之间的距离越大越好,同一类别之间的距离越小越好,先定义几个值:
类别
i的原始中心点,也就是类别
i的均值为:
mi=1niΣx∈Dix
Di为属于类别
i的样本点。
类别
i投影后的中心点(均值)为:
mi˜=wTmi
衡量类别
i投影后,类别点之间的分散程度(方差)为:
si˜=Σy∈Yi(y−mi˜)2
Yi为类别
i投影后的样本点。
同时考虑不同类之间的距离越大越好,同一类别之间的距离越小越好,则可最大化目标函数:
J(w)=|m1˜−m2˜|2s1~2+s2~2
我们最大化
J(w)就可以求出最优的w了。要求出w,可以使用拉格朗日乘数法,但是在使用拉格朗日乘数之前,我们需要把
J(w)里的w单独提取出来。
定义一个投影前各分类分散程度的矩阵:
Si=Σi∈Di(x−mi)(x−mi)T
可以看出,如果样本点距离中心点越近,
Si趋近于0,这表示的是类内离散程度。
将J(w)分母2化为:
si~=Σx∈Di(wTx−wTmi)2=Σx∈DiwT(x−mi)(x−mi)Tw=wTSiw
而
s1~2+s2~2=wT(S1+S2)w=wTSww,
Sw就是类内离散度矩阵。
同样,将
J(w)分子化为:
|m1˜−m2˜|2=wT(m1−m2)(m1−m2)Tw=wTSbw
Sb表示类间的离散度矩阵。
这样目标函数转化为:
J(w)=wTSbwwTSww
这样就可以使用拉格朗日乘数了,但是还有一个问题,如果分子、分母是都可以取任意值的,那就会使得有无穷解,将分母限制为1(一个技巧),作为拉格朗日乘数的限制条件,代入得:
c(w)=wTSbw−λ(sTSww−1)⇒dcdw=2Sbw−2λSww=0⇒Sbw=λSww
对于多分类,直接写出结论:
Sw=Σci=1SiSb=Σci=1ni(mi−m)(mi−m)TSbw=λSww
其中:
c为类别个数,
m为样本总体的中心点(均值向量)。
W的闭式解则是
S−1wSb的c−1个最大广义特征值所对应的特征向量组成的矩阵。