LDA(Linear Discriminant Analysis)算法推导和计算方法

来源:互联网 发布:景安备案域名 编辑:程序博客网 时间:2024/05/20 22:06
LDA也称Fisher线性判别,最早是由Fisher提出的,但是,最早的版本为两类的版本。

后来,又在两类的基础上进行了扩展,得出了多类的版本。

LDA基本定义中,需要注意SW(类内三度矩阵)和SB(类间散度矩阵)的定义。

SW的定义可以由两类扩展得到,而SB的定义则与两类有所不同,是由每类的均值和总体均值的乘积矩阵求和得到的,注意,每类还需要乘以每类的样本数目Ni。

最终,需要求得一个矩阵W使得投影后类内三度尽力小,而类间散度尽力大。多类情况下,散度表示为一个矩阵,则上面转换为矩阵的迹极小或者极大。而且,还存在多种准则。但是,很多准则最终可以转换为计算矩阵束(SB,SW)的广义特征值和特征向量问题。

一般情况下,LDA之前会做一次PCA,保证SW矩阵的正定性。因此,上述SB为对称实矩阵,SW为对称实矩阵,并且正定,通过矩阵定理将广义特征值问题转换为对称矩阵特征值问题。其中,计算经过SW choleskey分解之后的矩阵对SB进行变换,得到对称阵,并计算其特征值和特征向量。(此处,无法插入公式,是百度空间的一大缺陷)。从而,可以调用Opencv的函数cvEigenVV进行计算。注意,cvEigenVV函数只能够计算对称阵的特征值问题,避免用错。此外,cvEigenVV函数,得到的特征向量似乎已经是降序的,但是,特征值是没有经过降序处理的,需要自行处理。

主要注意的地方在于,计算广义逆时的特殊处理。如果使用matlab,则没有这个问题,因为matlab提供了计算广义逆的函数。
原创粉丝点击