秒懂---LDA算法
线性判别分析LDA原理总结
在主成分分析(PCA)原理总结中,我们对降维算法PCA做了总结。这里我们就对另外一种经典的降维方法线性判别分析(Linear Discriminant Analysis, 以下简称LDA)做一个总结。LDA在模式识别领域(比如人脸识别,舰艇识别等图形图像识别领域)中有非常广泛的应用,因此我们有必要了解下它的算法原理。
在学习LDA之前,有必要将其自然语言处理领域的LDA区别开来,在自然语言处理领域, LDA是隐含狄利克雷分布(Latent Dirichlet Allocation,简称LDA),他是一种处理文档的主题模型。我们本文只讨论线性判别分析,因此后面所有的LDA均指线性判别分析。
1. LDA的思想
LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的。这点和PCA不同。PCA是不考虑样本类别输出的无监督降维技术。LDA的思想可以用一句话概括,就是“投影后类内方差最小,类间方差最大”。什么意思呢? 我们要将数据在低维度上进行投影,投影后希望每一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大。
可能还是有点抽象,我们先看看最简单的情况。假设我们有两类数据 分别为红色和蓝色,如下图所示,这些数据特征是二维的,我们希望将这些数据投影到一维的一条直线,让每一种类别数据的投影点尽可能的接近,而红色和蓝色数据中心之间的距离尽可能的大。
上图中国提供了两种投影方式,哪一种能更好的满足我们的标准呢?从直观上可以看出,右图要比左图的投影效果好,因为右图的黑色数据和蓝色数据各个较为集中,且类别之间的距离明显。左图则在边界处数据混杂。以上就是LDA的主要思想了,当然在实际应用中,我们的数据是多个类别的,我们的原始数据一般也是超过二维的,投影后的也一般不是直线,而是一个低维的超平面。
在我们将上面直观的内容转化为可以度量的问题之前,我们先了解些必要的数学基础知识,这些在后面讲解具体LDA原理时会用到。
2. 瑞利商(Rayleigh quotient)与广义瑞利商(genralized Rayleigh quotient)
我们首先来看看瑞利商的定义。瑞利商是指这样的函数R(A,x):
其中x为非零向量,而A为n×n的Hermitan矩阵。所谓的Hermitan矩阵就是满足共轭转置矩阵和自己相等的矩阵,即AH=A。如果我们的矩阵A是实矩阵,则满足AT=A的矩阵即为Hermitan矩阵。
瑞利商R(A,x)有一个非常重要的性质,即它的最大值等于矩阵A最大的特征值,而最小值等于矩阵A的最小的特征值,也就是满足
具体的证明这里就不给出了。当向量x是标准正交基时,即满足xHx=1时,瑞利商退化为:R(A,x)=xHAx,这个形式在谱聚类和PCA中都有出现。
以上就是瑞利商的内容,现在我们再看看广义瑞利商。广义瑞利商是指这样的函数R(A,B,x):
其中x为非零向量,而A,B为n×n的Hermitan矩阵。B为正定矩阵。它的最大值和最小值是什么呢?其实我们只要通过将其通过标准化就可以转化为瑞利商的格式。我们令x′=B−1/2x,则分母转化为:
而分子转化为:
此时我们的R(A,B,x)转化为R(A,B,x′):
利用前面的瑞利商的性质,我们可以很快的知道,R(A,B,x)的最大值为矩阵B−1/2AB−1/2的最大特征值,或者说矩阵B−1A的最大特征值,而最小值为矩阵B−1A的最小特征值。如果你看过我写的谱聚类(spectral clustering)原理总结第6.2节的话,就会发现这里使用了一样的技巧,即对矩阵进行标准化。
3. 二类LDA原理
现在我们回到LDA的原理上,我们在第一节说讲到了LDA希望投影后希望同一种类别数据的投影点尽可能的接近,而不同类别的数据的类别中心之间的距离尽可能的大,但是这只是一个感官的度量。现在我们首先从比较简单的二类LDA入手,严谨的分析LDA的原理。
假设我们的数据集D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本xi为n维向量,yi∈{0,1}。我们定义Nj(j=0,1)为第j类样本的个数,Xj(j=0,1)为第j类样本的集合,而μj(j=0,1)为第j类样本的均值向量,定义Σj(j=0,1)为第j类样本的协方差矩阵(严格说是缺少分母部分的协方差矩阵)。
μj的表达式为:
Σj的表达式为:
由于是两类数据,因此我们只需要将数据投影到一条直线上即可。假设我们的投影直线是向量w,则对任意一个样本本xi,它在直线w的投影为wTxi,对于我们的两个类别的中心点μ0,μ1,在在直线w的投影为wTμ0和wTμ1。由于LDA需要让不同类别的数据的类别中心之间的距离尽可能的大,也就是我们要最大化||wTμ0−wTμ1||22,同时我们希望同一种类别数据的投影点尽可能的接近,也就是要同类样本投影点的协方差wTΣ0w和wTΣ1w尽可能的小,即最小化wTΣ0w+wTΣ1w。综上所述,我们的优化目标为:
我们一般定义类内散度矩阵Sw为:
同时定义类间散度矩阵Sb为:
这样我们的优化目标重写为:
仔细一看上式,这不就是我们的广义瑞利商嘛!这就简单了,利用我们第二节讲到的广义瑞利商的性质,我们知道我们的J(w)最大值为矩阵Sw−1Sb的最大特征值,而对应的w为Sw−1Sb的最大特征值对应的特征向量!
注意到对于二类的时候,Sbw的方向恒为μ0−μ1,不妨令Sbw=λ(μ0−μ1),将其带入:(Sw−1Sb)w=λw,可以得到w=Sw−1(μ0−μ1), 也就是说我们只要求出原始二类样本的均值和方差就可以确定最佳的投影方向w了。
4. 多类LDA原理
有了二类LDA的基础,我们再来看看多类别LDA的原理。
假设我们的数据集D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本xi为n维向量,yi∈{C1,C2,...,Ck}。我们定义Nj(j=1,2...k)为第j类样本的个数,Xj(j=1,2...k)为第j类样本的集合,而μj(j=1,2...k)为第j类样本的均值向量,定义Σj(j=1,2...k)为第j类样本的协方差矩阵。在二类LDA里面定义的公式可以很容易的类推到多类LDA。
由于我们是多类向低维投影,则此时投影到的低维空间就不是一条直线,而是一个超平面了。假设我们投影到的低维空间的维度为d,对应的基向量为(w1,w2,...wd),基向量组成的矩阵为W, 它是一个m×d的矩阵。
此时我们的优化目标应该可以变成为:
其中Sb=∑j=1kNj(μj−μ)(μj−μ)T,μ为所有样本均值向量。Sw=∑j=1kSwj=∑j=1k∑x∈Xj(x−μj)(x−μj)T
但是有一个问题,就是WTSbW和WTSwW都是矩阵,不是标量,无法作为一个标量函数来优化!也就是说,我们无法直接用二类LDA的优化方法,怎么办呢?一般来说,我们可以用其他的一些替代优化目标来实现。
常见的一个LDA多类优化目标函数定义为:
其中∏diagA为A的主对角线元素的乘积,W为m×d的矩阵。
J(W)的优化过程可以转化为:
仔细观察上式最右边,这不就是广义瑞利商嘛!最大值是矩阵Sw−1Sb的最大特征值,最大的d个值的乘积就是矩阵Sw−1Sb的最大的d个特征值的乘积,此时对应的矩阵W为这最大的d个特征值对应的特征向量张成的矩阵。
由于W是一个利用了样本的类别得到的投影矩阵,因此它的降维到的维度d最大值为k-1。为什么最大维度不是类别数k呢?因为Sb中每个μj−μ的秩为1,因此协方差矩阵相加后最大的秩为k(矩阵的秩小于等于各个相加矩阵的秩的和),但是由于如果我们知道前k-1个μj后,最后一个μk可以由前k-1个μj线性表示,因此Sb的秩最大为k-1,即特征向量最多有k-1个。
5. LDA算法流程
在第三节和第四节我们讲述了LDA的原理,现在我们对LDA降维的流程做一个总结。
输入:数据集D={(x1,y1),(x2,y2),...,((xm,ym))},其中任意样本xi为n维向量,yi∈{C1,C2,...,Ck},降维到的维度d。
输出:降维后的样本集$D′$
1) 计算类内散度矩阵Sw
2) 计算类间散度矩阵Sb
3) 计算矩阵Sw−1Sb
4)计算Sw−1Sb的最大的d个特征值和对应的d个特征向量(w1,w2,...wd),得到投影矩阵[Math Processing Error]W
5) 对样本集中的每一个样本特征xi,转化为新的样本zi=WTxi
6) 得到输出样本集D′={(z1,y1),(z2,y2),...,((zm,ym))}
以上就是使用LDA进行降维的算法流程。实际上LDA除了可以用于降维以外,还可以用于分类。一个常见的LDA分类基本思想是假设各个类别的样本数据符合高斯分布,这样利用LDA进行投影后,可以利用极大似然估计计算各个类别投影数据的均值和方差,进而得到该类别高斯分布的概率密度函数。当一个新的样本到来后,我们可以将它投影,然后将投影后的样本特征分别带入各个类别的高斯分布概率密度函数,计算它属于这个类别的概率,最大的概率对应的类别即为预测类别。
由于LDA应用于分类现在似乎也不是那么流行,至少我们公司里没有用过,这里我就不多讲了。
6. LDA vs PCA
LDA用于降维,和PCA有很多相同,也有很多不同的地方,因此值得好好的比较一下两者的降维异同点。
首先我们看看相同点:
1)两者均可以对数据进行降维。
2)两者在降维时均使用了矩阵特征分解的思想。
3)两者都假设数据符合高斯分布。
我们接着看看不同点:
1)LDA是有监督的降维方法,而PCA是无监督的降维方法
2)LDA降维最多降到类别数k-1的维数,而PCA没有这个限制。
3)LDA除了可以用于降维,还可以用于分类。
4)LDA选择分类性能最好的投影方向,而PCA选择样本点投影具有最大方差的方向。
这点可以从下图形象的看出,在某些数据分布下LDA比PCA降维较优。
当然,某些某些数据分布下PCA比LDA降维较优,如下图所示:
7. LDA算法小结
LDA算法既可以用来降维,又可以用来分类,但是目前来说,主要还是用于降维。在我们进行图像识别图像识别相关的数据分析时,LDA是一个有力的工具。下面总结下LDA算法的优缺点。
LDA算法的主要优点有:
1)在降维过程中可以使用类别的先验知识经验,而像PCA这样的无监督学习则无法使用类别先验知识。
2)LDA在样本分类信息依赖均值而不是方差的时候,比PCA之类的算法较优。
LDA算法的主要缺点有:
1)LDA不适合对非高斯分布样本进行降维,PCA也有这个问题。
2)LDA降维最多降到类别数k-1的维数,如果我们降维的维度大于k-1,则不能使用LDA。当然目前有一些LDA的进化版算法可以绕过这个问题。
3)LDA在样本分类信息依赖方差而不是均值的时候,降维效果不好。
4)LDA可能过度拟合数据。
(欢迎转载,转载请注明出处。欢迎沟通交流: pinard.liu@ericsson.com)
关注 - 13
粉丝 - 628
» 下一篇:用scikit-learn进行LDA降维
不知道又没理解错
你好,这里是一个近似替代。毕竟原始优化目标不是一个标量。而替代目标是标量。
至于为什么可以近似,张贤达的矩阵分析与应用里面广义瑞利商那一节是这么描述的:首先原始优化目标可以等价看做分子和分子同时取行列式,这样就得到了一个标量优化目标,接着对角化,就得到了我上面写的优化目标。
要完全从数学上讲明白我功力也还不够。你感兴趣可以参看矩阵分析与应用里里特征分析那一章广义瑞利商那一节,讲到了这个优化,可以慢慢研究下。
你好,这个很简单的。
由于:
所以我们有:
注意到二类的时候wTμ0−wTμ1是一个标量,代表两个类别在直线上投影的中心点距离值。所以Sbw方向恒为μ0−μ1
你好,这个很简单,因为所有的训练样本我们都是知道,所有当知道了前k-1个μj后,最后一个μk可以由已知的所有样本的向量和减去前k-1个μj乘以其类别个数,最后除以第k类的个数得到,这是一个线性表达式,所以这个命题成立。
你好!
1) 这里说法的确不严谨,其实是少除了分母的协方差矩阵,原文已经修改。
2)多类和2类稍有区别,主要是原来度量的是两个均值点的散列情况,现在度量的是每类均值点相对于样本中心的散列情况。类似于将μj看作样本点,μ是均值的协方差矩阵,如果某类里面的样本点较多,那么其权重稍大,权重用NjN表示,但由于J(W)对倍数不敏感,因此使用Nj。
了解,谢谢!
你好!
1. x=B−1/2x′,你好,请问下这里是不是写反了呀。【这里就是这样的,其实就是一个标准化,也就是一个广义瑞利商】可以请教您什么是在线学习吗?【这个东西就多了,你可以先去看看一些资料,有具体的问题我们可以讨论】
2. 您好,二类LDA那里不是协方差吧?首先它缺少概率呀,其次,协方差描述的是不同变量之间的呀【 这里是少除了分母的协方差矩阵。协方差有两种,一种是样本间的,一种是特征间的。这里是样本间的】
3. Sbw的方向恒为μ0−μ1?为啥呢?【参看我在8楼的回复】
很谢谢您耐心的回答,谢谢!您说的我懂了!
【推荐】腾讯云免费实验室,1小时搭建人工智能应用
【新闻】H3 BPM体验平台全面上线
· 历史性一步!中国北斗正式信号兼容美国GPS
· 林元庆离开百度后创办AIbee 估值已达8亿人民币
· 盛希泰谈错过ofo:当初戴威找我投资 我却让他来上班
· 迅雷大数据发布了《九评玩客币(二)》:玩客币是网心私家印钞机
· 德国物理学家:量子实验表明时间真的可以倒流
» 更多新闻...
· 软件测试转型之路
· 门内门外看招聘
· 大道至简,职场上做人做事做管理
· 关于编程,你的练习是不是有效的?
» 更多知识库文章...
公告
园龄:1年1个月
粉丝:628
关注:13
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
26 | 27 | 28 | 29 | 30 | 1 | 2 | |||
3 | 4 | 5 | 6 | 7 | 8 | 9 | |||
10 | 11 | 12 | 13 | 14 | 15 | 16 | |||
17 | 18 | 19 | 20 | 21 | 22 | 23 | |||
24 | 25 | 26 | 27 | 28 | 29 | 30 | |||
31 | 1 | 2 | 3 | 4 | 5 | 6 |
常用链接
- 我的随笔
- 我的评论
- 我的参与
- 最新评论
- 我的标签
随笔分类(101)
- 0040. 数学统计学(4)
- 0081. 机器学习(62)
- 0082. 深度学习(10)
- 0083. 自然语言处理(23)
- 0121. 大数据挖掘(1)
- 0122. 大数据平台(1)
- 0123. 大数据可视化
随笔档案(101)
- 2017年8月 (1)
- 2017年7月 (3)
- 2017年6月 (8)
- 2017年5月 (7)
- 2017年4月 (5)
- 2017年3月 (10)
- 2017年2月 (7)
- 2017年1月 (13)
- 2016年12月 (17)
- 2016年11月 (22)
- 2016年10月 (8)
常去的机器学习网站
- 52 NLP
- Analytics Vidhya
- 机器学习库
- 机器学习路线图
- 深度学习进阶书
- 深度学习入门书
积分与排名
- 积分 - 255582
- 排名 - 751
阅读排行榜
- 1. 梯度下降(Gradient Descent)小结(50892)
- 2. 梯度提升树(GBDT)原理小结(23212)
- 3. scikit-learn决策树算法类库使用小结(18730)
- 4. 线性判别分析LDA原理总结(15637)
- 5. scikit-learn随机森林调参小结(13416)
评论排行榜
- 1. 梯度提升树(GBDT)原理小结(41)
- 2. 集成学习之Adaboost算法原理小结(36)
- 3. 线性回归原理小结(35)
- 4. 文本主题模型之LDA(二) LDA求解之Gibbs采样算法(34)
- 5. 谱聚类(spectral clustering)原理总结(33)
推荐排行榜
- 1. 梯度下降(Gradient Descent)小结(20)
- 2. 协同过滤推荐算法总结(9)
- 3. Lasso回归算法: 坐标轴下降法与最小角回归法小结(8)
- 4. 用scikit-learn和pandas学习线性回归(7)
- 5. scikit-learn决策树算法类库使用小结(7)
秒懂---LDA算法相关推荐
- 独家 | 利用Python实现主题建模和LDA 算法(附链接)
作者:Susan Li翻译:陈之炎校对:陈汉青本文约1900字,建议阅读5分钟在这篇文章,我们将LDA应用于一组文档,并将文档按照主题分类. 标签:LDA 算法 主题建模是一种用于找出文档集合中抽象& ...
- NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容—利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类
NLP之TM之LDA:利用LDA算法瞬时掌握文档的主题内容-利用希拉里邮件数据集训练LDA模型并对新文本进行主题分类 目录 输出结果 设计思路 核心代码 训练数据集 LDA模型应用 输出结果 设计思路 ...
- FE之DR之线性降维:PCA/白化、LDA算法的数学知识(协方差矩阵)、相关论文、算法骤、代码实现、案例应用等相关配图之详细攻略
FE之DR之线性降维:PCA/白化.LDA算法的数学知识(协方差矩阵).相关论文.算法骤.代码实现.案例应用等相关配图之详细攻略 目录 PCA 1.PCA的数学知识 1.协方差矩阵计算 2.PCA算法 ...
- 【NLP基础】NLP关键字提取技术之LDA算法原理与实践
点击上方,选择星标或置顶,每天给你送干货! 阅读大概需要11分钟 跟随小博主,每天进步一丢丢 引文 人们是如何从大量文本资料中便捷得浏览和获取信息?答案你肯定会说通过关键字.仔细想想,我们人类是怎么提 ...
- R语言之LDA算法应用
在R语言中我们用LDA算法的做预测的时候包,主要的MASS包.在这里我就不对于LDA算法进行详细的描述,只是根据问题的需求用R语言解决问题.我们使用的数据是KKNN包中的自带数据miete数据.主要对 ...
- 【机器学习】LDA算法原理
问题 线性判别分析(Linear Discriminant Analysis,LDA)是机器学习中常用的降维方法之一,本文旨在介绍LDA算法的思想,其数学推导过程可能会稍作简化. LDA的思想 ● L ...
- python建模大赛算法_利用Python实现主题建模和LDA 算法(附链接)
主题建模是一种用于找出文档集合中抽象"主题"的统计模型.LDA(Latent Dirichlet Allocation)是主题模型的一个示例,用于将文档中的文本分类为特定的主题.L ...
- python 降维lda算法的使用_【Python】降维算法PCA和LDA的实现及总结
以Iris数据集为例,分别实现PCA和LDA降维 算法原理 主成分分析(Principal Component Analysis,PCA)是一种常用的线性降维数据分析方法,其实质是在能尽可能好的代表原 ...
- LDA算法入门(转)
LDA算法入门 一. LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discrimin ...
- PCA与LDA算法的解释,浅显易懂
2019独角兽企业重金招聘Python工程师标准>>> 转自:http://www.cnblogs.com/LeftNotEasy/archive/2011/01/08/lda-an ...
最新文章
- linux___ip
- 如何获得瑞星网络安全工程师
- Java:Comparable接口
- Java文件路径(getResource)
- ios中的视频采集及参数设置和相机操作
- 关于javascript作用域
- Android P版自定义开关机动画
- 全国大学生数学建模2016年A题系泊系统的设计论文与代码
- SEGGER调试利器RTT,替代串口,高速数据上传
- 【金三银四】TCP,UDP,Socket,Http网络编程面试题(2021最新版)
- 二手苹果8多少钱_苹果6splus换主板多少钱
- 【兴趣】QQ音乐VS网易云音乐竞品分析
- 备份数据库 并发送到邮箱
- 在栈中压入一个字符串c语言,一 道C语言试题的探讨
- FineReport 数据决策系统
- PreparedStatement的setNull
- 9006:单链表的建立和遍历
- 如何系统学习区块链技术-干货来袭
- Kubernetes kubectl命令补全功能
- 戴上耳机,全世界都是你的