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

本文介绍了LDA算法的基本原理,包括类内散度矩阵SW和类间散度矩阵SB的定义,以及如何通过优化这两个矩阵来实现多类别分类任务。特别讨论了在实际计算过程中遇到的问题及解决方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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提供了计算广义逆的函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值