LDA(线性判别分析)--基础降维算法

一.原理简介

LDA线性判别分析,是一种监督学习算法,但在二分类问题上,由于最早由Ronald Fisher提出,

所以也称为Fisher判别分析(FDA),但LDA与FDA还是有些区别的,LDA假设各类样本数据都是

高斯分布,协方差矩阵相同且满秩。相比PCA,LDA是有监督的降维算法,即数据是有标签的(类

别标签)。

如下图所示的数据,根据PCA算法,数据应该映射到数据方差最大的方向,即垂直方向(红线方

向),但是图示中的两个类别将完全混合混在一起,很难区分开,这时候我们发现采用PCA算法来

解决问题的效果非常差,但是如果我们采用LDA,数据将映射到水平轴方向(蓝线方向),这时候

我们发现同类数据比较集中,不同类的数据被完全地分开,效果正如我们想要的那样。

                                

二.二分类LDA原理推导

LDA主要是为了分类,所以相应的投影方向w,使得投影后的数据尽可能按照原始的类别进行分

开,我们仍从上面的二分类问题出发,我们假设两个类别的均值(中心)分别为

   。我们希望投影后两个类的距离尽可能大,这样易于区分,类间距离可以表

示为\tilde{\mu _{1}}\tilde{\mu _{2}} 表示两类中心在w方向上的投影向量),其中\tilde{\mu _{1}}=w^T*\mu _{1}

\tilde{\mu _{2}}=w^T*\mu _{2} ,因此优化问题可以表示为:

                                

为此我们定义类间散度矩阵为:(between-class scatter matrix)

                                        

类内散度矩阵:(within-class scatter matrix)

                                        

则目标函数可以转化为:

                                        

两种求解方法:

(1)拉格朗日乘子法:引入 w^TS_{w}w=1,则有

                        ​​​​​​​        ​​​​​​​        

(本质上就是让除法迹的结果为λ,利用瑞利商求解)

再对w求导令其为0,可以得到以下等式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​      

(2)直接求导法:对w求偏导并令导数为0,则有

        ​​​​​​​        ​​​​​​​        

进一步化简可以得到:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

利用瑞利商,令:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

则最终也可以化为同样的广义等式:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

如果类内散度矩阵可逆的话,我们可以得到:

                                  

从此处我们可以看出我们最大化的目标变成了一个矩阵的特征值,于是LDA降维变成了一个求矩阵

特征向量的问题,其中 J(W) 对应于矩阵 S_{w}^{-1}S_{b}  最大的特征值,而投影方向就是这个特征值对

应的特征向量。而对于我们这个二分类问题,由于此情况下 S_{b}w 方向始终与 \mu_{1}-\mu_{2} 方向一致,

如果我们只考虑w的方向而不考虑大小,则 w=S_{w}^{-1}(\mu_{1}-\mu_{2}) ,因此我们只需要知道样本的均

值和类内方差即可得出最佳投影方差,这是Fisher在1936年提出的线性判别分析。

三.多分类LDA原理推导

 按照我们之前的定义,当类别扩展到n个时,类内散度矩阵定义还是成立的,但类间散度矩阵的定

义就无法满足了,于是我们需要定义一个全局的散度矩阵来表示整体的散度,称为全局散度矩阵 

S_{t}=\sum_{i=1}^{n}(x_{i}-\mu)(x_{i}-\mu)^T ,其中μ表示全部样本的中心,即所有中心的均值。

而根据我们之前的定义无法表示类间散度矩阵,不妨用投影之后每一类中心点与所有类中心点的距

离之和来衡量类间的距离,由于每一类的样本点数量可能不同,我们把每一类中心点与所有类中心

点的距离加上权值之后再求和,即类间距离可以表示为:S_{b}=\sum_{i=1}^{C}m_{i}(\mu_{i}-\mu)(\mu_i-\mu)^T

此时的类间散度矩阵表示的是每类中心到全局中心的加权和,而此时我们最大化类间距离既是使得

每个类的中心离全局中心最远,为此我们将最大化目标函数定为:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​   

其中W是我们需要求的投影超平面,且满足  W^TW=1 ,我们可以转化为如下广义特征值求解的方式进行求解:    

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​ 

求解得最佳投影平面W,即求得了 S_{w}^{-1}S_{b} 矩阵前k个最大特征值对应的特征向量组成的矩阵(k为

下降到的维数,也是投影向量的数量)。

四.证明St=Sw+Sb

S_{t} 总体散度矩阵本质上就是PCA的优化目标,要证明 S_{t}=S_{b}+S_{w},即证明 S_{t}-S_{w}=S_{b}

已知:

        ​​​​​​​        ​​​​​​​        ​​​​​​​        

则有:

即证

五.算法流程

输入:数据集 X=[(x_{1},y_{1}),(x_{2},y_{2}),...,(x_{n},y_{n})],其中 x_{i}为n维向量,y_{i}为类别标签,降

至的维度为k维;

Ⅰ.计算数据集每个类别的均值向量 \mu_{i}和总体均值向量 \mu ;

Ⅱ.计算类内散度矩阵S_{w},全局散度矩阵 S_{t} ,并得到类间散度矩阵 S_{b}=S_{t}-S_{w}​​​​​​  ;

Ⅲ.对矩阵 S_{w}^{-1}S_{b} 进行特征值分解,并将特征值从大到小进行排序;

Ⅳ.取前k大的特征值对应的特征向量,并通过 x'=w^Tx 将n维样本降至k维。

六.LDA的几个等价模型(个人理解)

七.LDA用于人脸识别

LDA用于人脸识别与PCA相似,主要也是靠它的降维矩阵,通过设置降维的维度选取不同数量的特

征向量组成投影矩阵。但值得注意的是这个所得特征数量受限于样本的类别数,最多只能获得样本

类别数减一数量的特征维数。人脸识别的大致过程为:

(1)首先将数据集按一定比例划分为训练集和测试集;

(2)将人脸图片按列向量读入成一个矩阵;

(3)用LDA从训练集中提取一定数量的特征向量组成投影矩阵;

(4)用测试集的人脸图片进行测试,即将其用得到的特征矩阵进行投影,用分类器(一般用KNN

对其进行分类,与正确标签进行比较正确与否,从而计算人脸识别的正确率。

详细代码可见:Machine_Learning/code/LDA at main · breakthrougher/Machine_Learning (github.com)

----- 以上为本人学习机器学习这门课总结出的一些知识点和手敲的代码,有错误或者疑问可以评论区交流,欢迎指正!!!

  • 20
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值