线性判别分析(Linear Discriminant Analysis, LDA),也叫做 Fisher 线性判别(Fisher Linear
Discriminant ,FLD),是模式识别的经典算法,1936年由Ronald Fisher⾸次提出,并在1996年由
Belhumeur引⼊模式识别和⼈⼯智能领域。
线性判别分析的基本思想是将⾼维的模式样本投影到最佳鉴别⽮量空间,以达到抽取分类信息
和压缩特征空间维数的效果。 投影后保证模式样本在新的⼦空间有最⼤的类间距离和最⼩的类距
离,即模式在该空间中有最佳的可分离性。
因此,它是⼀种有效的特征抽取⽅法。使⽤这种⽅法能够使投影后模式样本的类间散布矩阵
最⼤,并且同时类内散布矩阵最⼩。
LDA与PCA(主成分分析)都是常⽤的降维技术。PCA主要是从特征的协⽅差⻆度,去找到⽐较
好的投影⽅式。LDA更多的是考虑了标注,即希望投影后不同类别之间数据点的距离更⼤,同⼀
类别的数据点更紧凑。
两个类别,⼀个绿⾊类别,⼀个红⾊类别。下图第一张图是两个类别的原始数据,现在要求
将数据从⼆维降维到⼀维。直接投影到x1轴或者x2轴,不同类别之间会有重复,导致分类效果下
降。下图第二张图映射到的直线就是⽤LDA⽅法计算得到的,可以看到,红⾊类别和绿⾊类别在
映射之后之间的距离是最⼤的,⽽且每个类别内部点的离散程度是最⼩的(或者说聚集程度是最⼤
的)。
下图第一张图:当投影到这条直线时,这两个类没有很好地分开 。
下图第二张图:这条线成功地将两个类分开,同时将问题的维数从两个特征(x1,x2)减少到只有
一个标量值y。
LDA是⼀种线性分类器。对于K-分类的⼀个分类问题, 会有K个线性函数:
当满⾜条件:对于所有的 j,都有 Yk > Yj 的时候,我们就说 x 属于类别 k。对于每⼀个分类,
都有⼀个公式去算⼀个分值, 在所有的公式得到的分值中,找⼀个最⼤的,就是所属的分类 。
上式实际上就是⼀种投影,是将⼀个⾼维的点投影到⼀条的直线上,LDA追求的⽬标是,给
出⼀个标注了类别的数据集,投影到了⼀条直线之后,能够使得点尽量的按类别区分开,当k=2即
⼆分类问题的时候,如下图所示:
红⾊的⽅形的点为0类的原始点、蓝⾊的⽅形点为1类的原始点,经过原点的那条线就是投影的直
线,从图上可以清楚的看到,红⾊的点和蓝⾊的点被原点明显的分开了。
LDA分类的⼀个⽬标是使得不同类别之间的距离越远越好,同⼀类别之中的距离越近越好,所以
我们需要定义⼏个关键的值:
类别 i 的原始中⼼点(均值)为:(Di 表示属于类别 i 的点):
最终我们可以得到⼀个下⾯的公式,表示LDA投影到w后的⽬标优化函数:
分母表示每一个类别内的方差之和,方差越大表示一个类别内的点越分散,分子为两个类别各自的
中心点的距离的平方,我们最大化J(w)就可以求出最优的w。
分类的目标是,使得类别内的点距离越近越好(集中),类别间的点越远越好。
我们定义一个投影前的各类别分散程度的矩阵,其意思是,如果某一个分类的输入点集 Di 里面的
点距离这个分类的中心点 mi 越近,则 Si 里面元素的值就越小,如果分类的点都紧紧地围绕着mi,
则Si里面的元素值越更接近0。
这样就可以用拉格朗日乘子法了,但是还有一个问题,如果分子、分母是都可以取任意值的,
那就会使得有无穷解,将分母限制为长度为1,并作为拉格朗日乘子法的限制条件,带入得到:
这样的式子就是一个求广义特征值的问题了。如果 Sw 可逆,那么将求导后的结果两边都左乘以 Sw 的逆得:
这个可喜的结果就是w就是矩阵的特征向量了。这个公式称为Fisher linear discrimination。
带入最后的特征值公式得:
由于对 w 扩大缩小任何倍都不影响结果,因此可以约去两边的常数,得到:
至此,我们只需要求出原始样本的均值和方差就可以求出最佳的方向w, 这就是Fisher在1936年提
出的线性判别分析。