线性判别分析(Linear Discriminant Analysis, LDA)又称Fisher判别分析,是一种数据降维的方法,主要思想是使属于同一类的投影点距离尽可能地接近(类内方差小),不同类的中心点距离尽可能地远(类间中点距离大)。
LDA就是模识课上黄老板讲的Fisher判别,名字不同而已。思想也很简单,计算也不复杂。首先定义一些变量:
xi:i类数据的训练样本
μi:i类数据的均值向量
Σi:i类数据的协方差矩阵
投影到直线w上后,样本中心(均值)所在的投影就变为wTμi,协方差变为wTΣiw,推一下协方差:
展开协方差的定义:Σi=∑nj=1(xj−ui)2
变换后的协方差定义:$\Sigma’i=\sum{j=1}^n(w^Tx_j-w^Tu_i)^2$
则有:
$$
\Sigma’i=\sum{j=1}^n(w^Tx_j-w^Tu_i)^2=\sum_{j=1}^n(w^T(x_j-u_i))^2
$$
=n∑j=1wT(xj−ui)(wT(xj−ui))T
=n∑j=1wT(xj−ui)(xj−ui)Tw
=wTn∑j=1(xj−ui)2w
=wTΣiw
用变换后的协方差作为衡量类内点的“集中”程度,我们尽可能想让这个值小。于是第一个目标可以用这个值逼近。
为了叙述方便,现在假设分类任务是二分类,分别是0、1类。第二个目标类间距离可以直接比较类内中点之间的距离测度,定义类间距为中点的Euclidean Distance平方:Dis(0,1)=|wTμ0−wTμ1|2来衡量。我们希望这个值尽可能大
定义:S′w=Σ′0+Σ′1,S′b=Dis(0,1)。
同时考虑上述两个指标,于是做商合成一个目标函数(突然想起自己的paper里也搞过这种设计):
J=S′bS′w=|wTμ0w−wTμ1|2wTΣ0w+wTΣ1w
=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w
目标即为通过调整w最大化J,S′b和S′w的比值称为“广义瑞利商”。由于分子和分布都是关于w的二次项,因此解只与w的方向有关。方程等价于优化下式:
minw−wTS′bw
st. wTS′ww=1
这是个带约束的极值求解问题,可以用高数中学过的拉格朗日乘数法解决,构造拉格朗日函数:
L(w)=−wTS′bw+λ(wTS′ww−1)
令上式的导数得0,即可得:
w=S′−1w(μ0−μ1)
问题转换成求解S′w的逆。注意该阵通常情况下不可逆,原因是数据维数和数据条目数通常是不匹配,就是说数据集并不能确定地体现数据的分布情况。
书上介绍的实际是PCA方法,直接给S′w进行SVD分解,得到S′w=UΣVT,于是S′−1w=(UΣVT)−1=VΣ−1UT。
最终我们可推得:
w=VΣ−1UT(μ0−μ1)
v1.5.2