分类问题也可以用降维来理解,比如一个D维的数据点x,我们可以采用下面的映射进行线性的降维,

y=θTx

在计算出y后,就可以选择一个阈值h,来进行分类。正如我们在前面的PCA模型中看到的,降维会有信息的损失,可能会在降维过程中,丢失使数据可分的特征,导致分类的效果不理想。

那采用什么样的降维方式,可以尽量的在低维空间中保存原来数据在高维空间中的可分性(区分类别的特征)。一个常用的模型 linear discriminant analysis(LDA)就是用来做这个工作的,下面就具体的看一下LDA模型。

原理

LDA的基本原理就是最大化类间方差(between-class variance)和类内方差(within-class variance)的比率(注意这个variance用来理解,下面用到的定义实际上是variance的一个变形),使得降维后数据有最好的可分性。如果偷用软件工程里面用的术语的话,就是“高内聚,低耦合”,类内的数据内聚,方差小,而类间数据松散,方差大。通常来说,这要比只考虑类间的距离越大要好,如下图所示:

左边图只是考虑最大化每个类期望的最大距离,我们看到有很多点投影后重合了,丧失了标签信息;而右边是LDA投影,重合的点的数目减少了很多,能更好的保存标签信息。

模型

下面我们就来形式化这个过程,首先如何定义between-class variance和within-class variance?在Fisher提出的方法中,没有使用统计中标准的variance的定义,而是使用了一个称为scatter的概念,与variance时等价的,使用这个概念可能是为了后面的推导简洁。设数据集为X=x1,x2,..,xN,则scatter的定义为:

s=∑n=1N(xn−m)T(xn−m)

其中,m=1N∑Nn=1xn。

类内方差很容易形式化,可以直接使用scatter来定义,然后把所有类别的scatter连加;那么类间的方差如何定义才能很好的让类之间的数据分的更开呢?当然应该有很多的数学关系很描述,在LDA中使用了下面这种方式,计算每个类别的期望,求期望之间的距离。先从简单的两类情况开始,然后拓展到多类的情况。

两类

设数据集合为X={x1,x2,..,xN},类别为C1,C2,则这两类的数据期望为m1,m2,计算公式如:

mk=1Nk∑i∈Ckxi

mk表示投影后的数据点的期望,则between-class variance的形式化定义为:

m2−m1=θT(m2−m1)

其中,mk=θTmk。within-class variance用within-scatter这个定义来表示,scatter是variance的变种(不用除以数据的数目),第Ck类的scatter定义为:

S2k=∑i∈Ck(yi−mi)2

其中,yi=θTxi。这样就可以得到目标函数:

J(θ)=(m2−m1)2s21+s22

将上面的定义代入上式,可以得到式子:

maxargθJ(θ)=θTSBθθTSWθ

其中,SB,SW分别称为between-class scatter和within-class scatter,表示如下:

SB=(m2−m1)(m2−m1)T;SW=S1+S2

其中,Sk=∑i∈Ck(xi−mk)(xi−mk)T。下面要做的就是最优化目标函数(x−mk),对上面的式子求导数,让导数为0,则可以得到:

(θTSBθ)SWθ=(θTSWθ)SBθ

由于投影操作,我们只关心θ的方向,上面的式子,可以去掉(θTSBθ),(θTSWθ),根据SB的定义,SBθ的方向与(m2−m1)一致,我们可以得到:

θ∗∝S−1W(m2−m1)

这个式子称为Fisher’s linear discriminant[1936],尽管这个式子不是一个判别式,只是选择了投影方向,不过只要我们选择一个阈值,然后就可以根据这个阈值进行分类了。(ps:使用求解generalized eigenvalue problem的方法求解导数为零的等式,也可以得到这个判别式)

多类

在多类问题时,将D维的向量x投影到M<D维的y,投影矩阵方程为:

y=ΘTx

可以参照PCA文章中提到投影公式,这里Θ是一个投影矩阵,每一个列向量表示一个投影方向Θk。

设数据集合为X={x1,x2,..,xN},类别为C1,C2,..,CK。在多类的时候,过程与上面一样,不过由于between-class scatter 和within-class scatter不再是标量,需要更改一下我们需要优化的目标函数。首先看一下在原空间x的定义,然后就可以类比到y空间。

withinin-class scatter 与二类时的定义一样,如下表示:

SW=∑k=1K∑i∈Ck(xi−mk)(xi−mk)T

mk定义与上面一致。

between-class scatter的定义,这里我们根据PRML里面论述的,首先定义一个ST,然后根据ST=SB+SW,然后分解得到SB。ST的定义类似Sk,不过不在一个类别,而是在所有的数据集上进行计算。

ST=∑n=1N(xn−m)(xn−m)Tm=1N∑n=1Nxn=1N∑k=1KNkmk

所以得到:

SB=======ST−SW∑n=1N(xn−m)(xn−m)T−∑k=1K∑i∈Ck(xi−mk)(xi−mk)T∑k=1K∑i∈Ck(xi−m)(xi−m)T−∑k=1K∑i∈Ck(xi−mk)(xi−mk)T∑k=1K∑i∈Ck{(xi−m)(xi−m)T−(xi−mk)(xi−mk)T}∑k=1K{∑i∈Ck−ximT+∑i∈Ck−mxTi+NkmmT+∑i∈CkximTk+∑i∈CkmkxTi−NkmkmTk}∑k=1K{−NkmkmT−mNkmk+NkmmT+NkmkmTk+Nkmkmk−NkmkmTk}∑k=1KNk(mk−m)(mk−m)T

这样我们就可以类比得到在投影空间的between-class scatter与within-class scatter:

S˜W=∑k=1K∑i∈Ck(yi−mk)(yi−mk)TS˜B=ST−SW=∑k=1KNk(mk−m)(mk−m)T

这样就可以得到目标函数,由于S˜W,S˜B不是标量,在目标函数中使用它们的行列式,

maxargΘJ(Θ)=|S˜B||S˜W|

类似在二类推到中的式子,可以得出:

maxargΘJ(Θ)=|S˜B||S˜W|=|ΘTSBΘ||ΘTSWΘ|

然后优化上面的函数(很直接,但是这里就不推导了,可能比较麻烦),可以得出结论,投影矩阵由S−1WSB的特征最大特征向量决定,这样我们就可到了一个很简洁的公式, 与PCA不同的是,这里考虑到了类别信息,得到的投影方向对一些数据集合来说,会有很大不同,如下图:

从上图中也可以看到,使用PCA投影后,数据在黑色的直线上基本不可分,而使用LDA投影,则可分性要比PCA好很多,这也说明了LDA在降维过程中保留了标签信息。

需要注意的地方是:

  1. 由于SB的秩最大为K−1,所以S−1WSB的特征向量数目不会超过K−1,所以我们投影后的M<=(K−1)。
  2. LDA也可以从normal class Density 通过最大似然估计得出。
  3. S−1WSB中,用到了SW的逆,但是SW的最大秩为N−K,在很多计算中,特征数远大于样本数,使得SW是奇异矩阵,所以这时候我们需要在LDA计算前,进行降维(采用PCA),使得SW是非奇异的。

模型的局限性,主要体现在下面两个方面:

  1. 根据上面的分析,LDA投影后最多只能保留K−1个特征,可能对一些问题来说,特征数目太少。
  2. LDA本是参数估计方法,假设分布符合单峰的高斯分布,对于数据集合不符合的情况,没法保留标签信息。
  3. 对那些由方差,而不是均值来区分的数据来说,LDA同样也没法处理,如下图所示:

应用

在人脸识别中,使用LDA降维,是一种常用的方法,形成的特征向量,称为fisher-face;此外,LDA也可以用在破产预测等方面。

引用:

[1]prml

[2]http://research.cs.tamu.edu/prism/lectures/pr/pr_l10.pdf

[3]http://www.intechopen.com/books/speech-technologies/nonlinear-dimensionality-reduction-methods-for-use-with-automatic-speech-recognition

[4]http://en.wikipedia.org/wiki/Linear_discriminant_analysis

参看http://webdancer.is-programmer.com/posts/37867.html

【转】LDA-linear discriminant analysis的更多相关文章

  1. 线性判别分析(Linear Discriminant Analysis,LDA)

    一.LDA的基本思想 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD) ...

  2. 线性判别分析(Linear Discriminant Analysis, LDA)算法分析

    原文来自:http://blog.csdn.net/xiazhaoqiang/article/details/6585537 LDA算法入门 一. LDA算法概述:       线性判别式分析(Lin ...

  3. 线性判别分析(Linear Discriminant Analysis, LDA)算法初识

    LDA算法入门 一. LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discrimin ...

  4. 机器学习: Linear Discriminant Analysis 线性判别分析

    Linear discriminant analysis (LDA) 线性判别分析也是机器学习中常用的一种降维算法,与 PCA 相比, LDA 是属于supervised 的一种降维算法.PCA考虑的 ...

  5. Linear Discriminant Analysis Algorithm

    线性判别分析算法. 逻辑回归是一种分类算法,传统上仅限于两类分类问题. 如果有两个以上的类,那么线性判别分析算法是首选的线性分类技术.LDA的表示非常直接.它包括数据的统计属性,为每个类计算.对于单个 ...

  6. Max-Mahalanobis Linear Discriminant Analysis Networks

    目录 概 主要内容 Pang T, Du C, Zhu J, et al. Max-Mahalanobis Linear Discriminant Analysis Networks[C]. inte ...

  7. OpenCV LDA(Linnear Discriminant analysis)类的使用---OpenCV LDA演示样例

    1.OpenCV中LDA类的声明 //contrib.hpp class CV_EXPORTS LDA { public: // Initializes a LDA with num_componen ...

  8. 线性判别分析(Linear Discriminant Analysis)转载

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

  9. LDA(Linear discriminate analysis)线性判别分析

    LDA 线性判别分析与Fisher算法完全不同 LDA是基于最小错误贝叶斯决策规则的. 在EMG肌电信号分析中,... 未完待续:.....

  10. 线性判别分析(Linear Discriminant Analysis)

    1. 问题 之前我们讨论的PCA.ICA也好,对样本数据来言,可以是没有类别标签y的.回想我们做回归时,如果特征太多,那么会产生不相关特征引入.过度拟合等问题.我们可以使用PCA来降维,但PCA没有将 ...

随机推荐

  1. CSS中rem、em的区别

    引用文档:http://www.divcss5.com/html/h529.shtml:http://blog.csdn.net/qq_35432904/article/details/5180422 ...

  2. DDD 落地的具体思路

    学习 DDD 的朋友有两种,一种是看 DDD 经典书籍 <领域驱动设计:软件核心复杂性应对之道>完全看不懂,第二种是看啥都懂,都觉得有道理,但总是落不了地. 我们总结一下我们自己落地的思路 ...

  3. Spark系列视频

    大数据生态圈很大,很多开发者都仅仅接触到某个单一产品. Spark 是近年来比较流行的大数据计算框架,系统.平台要想用好Spark 这个产品,需要用到很多的产品. 本视频系列主要是为准备入坑大数据的童 ...

  4. B-Tree深入理解

    定义: 根节点至少包括两个孩子 树中每个节点最多含有m个孩子(m>=2) 除根节点和叶子节点外,其他每个节点字少有(ceil(m/2):去上线),个孩子. 所有叶子节点都位于同一高度 假设每个非 ...

  5. 基于 Laravel Route 的 ThinkSNS+ Component

    这里是传送门: <ThinkSNS+ 基于 Laravel master 分支,从 1 到 0,再到 0.1[ThinkSNS+研发日记系列一]> <基于 Laravel 开发 Th ...

  6. day8文件操作作业详解

    1.day8题目 1,有如下文件,a1.txt,里面的内容为: 老男孩是最好的培训机构, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读 ...

  7. 03.Jquery Mobile中的按钮

    一. 基础按钮 1.设置链接的data-role,使其变成按钮. <a href="index.html" data-role="button">L ...

  8. 【考试记录】2018 山东省队集训第一轮D4(雾)

    T1题意: 给你一个$n\times m$的矩阵$B$,求它能由最少多少个形如两个向量之积$(n\times 1)\times(1\times m)$的矩阵相加得到. 题解: 考虑上界,最多需要$mi ...

  9. mycat学习日记:全局sequence

    mycat分库分表的情况下,原生mysql的自增长主键无法满足主键全局唯一这个要求.看了MYCAT社区从零开始的一篇博客,加上自己的实践,大概总结一下. 目前mycat对于全局sequence主要提供 ...

  10. 【踩坑】List 的陷阱

    今天测试iReview项目数据的反馈,发现有些语句总无法执行. 经过调试排查后,发现List<自定义类>返回了空集"[]",却无法进入if语句里面,即 if (List ...