1. LDA是什么

线性判别式分析(Linear Discriminant Analysis),简称为LDA。也称为Fisher线性判别(Fisher Linear Discriminant,FLD),是模式识别的经典算法,在1996年由Belhumeur引入模式识别和人工智能领域。

基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离最小的类内距离,即模式在该空间中有最佳的可分离性。

LDA的目标:

 

可以看到两个类别,一个绿色类别,一个红色类别。左图是两个类别的原始数据,现在要求将数据从二维降维到一维。直接投影到x1轴或者x2轴,不同类别之间会有重复,导致分类效果下降。右图映射到的直线就是用LDA方法计算得到的,可以看到,红色类别和绿色类别在映射之后之间的距离是最大的,而且每个类别内部点的离散程度是最小的(或者说聚集程度是最大的)。

2. LDA的一些说明

第一,降维后的维度是多少?

PCA降维是直接和数据维度相关的,比如原始数据是n维的,那么PCA后,可以任意选取1维、2维,一直到n维都行(当然是对应特征值大的那些)。

LDA 降维是直接和类别的个数相关的,与数据本身的维度没关系,比如原始数据是n维的,一共有C个类别,那么LDA降维之后,一般就是1维,2维到C-1维进行选择(当然对应的特征值也是最大的一些),举个例子,假设图象分类,两个类别正例反例,每个图象10000维特征,那么LDA之后,就只有1维特征,并且这维特征的分类能力最好。
      PS:对于很多两类分类的情况,LDA之后就剩下1维,找到分类效果最好的一个阈值貌似就可以了。

第二,投影的坐标系是否正交

PCA投影的坐标系都是正交的,而LDA根据类别的标注,关注分类能力,因此不保证投影到的坐标系是正交的(一般都不正交)。

3. LDA计算过程(两个类别)

  这一节,主要讨论只有两个类别的数据,LDA的计算。

现在要找到一个向量w,将数据x投影到w上去之后,得到新的数据y。

  第一,为了实现投影后的两个类别的距离较远,用映射后两个类别的均值差的绝对值来度量。

  第二,为了实现投影后,每个类内部数据点比较聚集,用投影后每个类别的方差来度量。

类别i的均值:

类别i投影后的均值(实际上等于mi的投影):

投影后均值差的绝对值:

投影后的方差(这里的y是类别i中数据投影后的数据,即y=w_t * x):

目标优化函数为:

下面通过展开m'和s',定义S_B和S_W:

优化目标J(w)改写如下,这样是为了方便推导出计算w的方法。

推导过程忽略了,最后推导结果如下:

  假设数据是n维特征,m个数据,分类个数为2。那么Sw实际上是每个类别的协方差矩阵之和,每个类别的协方差矩阵都是n*n的,因此Sw是n*n的,m1-m2是n*1的。计算得到的w是n*1的,即w将维特征映射为1维。

  PS:这里不用纠结与Sw的协方差矩阵形式,实际上这是拆拆开来w和w_t后的结果,实际上w*Sw*w_t后,仍旧是一个数值,即表示两个类的投影后方差之和。

4. LDA计算过程(多个类别)

对于S_w,就是“两个类别的协方差矩阵之和”变成了“多个类别的协方差矩阵之和”。

对于S_b,以前是“两个类别的均值之差的绝对值”,现在多个类别了,怎么计算呢?计算任意两个类别之间的均值之差的绝对值之和?这样对于N个类别,需要 C(N,2)次计算,这可能是一个方法,不过LDA使用的方法,计算每个类别的均值与所有类别均值的差异,并且对每个类别的数据量进行加权处理。下式中,m为所有类别的均值,m_i为类别i的均值,n_i为类别i的数据量。

对于n维特征、C个类别、m个样本的数据,是将n维数据映射为C-1维。即所求的w是一个n*(c-1)的矩阵。S_w是一个n*n的矩阵(没有除以样本数的协方差矩阵之和),S_B是一个C*C的矩阵,实际上S_B矩阵的的秩最多是C-1,这是因为n_i*(m_i-m)这c向量实际上是线性相关的,因为他们的和是均值m的常数倍。这导致后面求解w,实际上是求出C-1个向量一个构成的一个w。

具体计算忽略。

下面就是一个三个类别的例子:

4. LDA其他变种

如果原始数据投影后,仍旧不能很好的分开,那么Kernel LDA是一个解决方法。

LDA在计算量上与数据的维度有关,2DLDA能够大大减小LDA计算量。

5. LDA的一些问题

第一,LDA最多投影出C-1维特征,如果需要更多特征,则要引入其他方法。

第二,LDA假设数据服从单峰高斯分布,比如下面的复杂数据结构

【LDA】线性判别式分析的更多相关文章

  1. 机器学习:线性判别式分析(LDA)

    1.概述      线性判别式分析(Linear Discriminant Analysis),简称为LDA.也称为Fisher线性判别(Fisher Linear Discriminant,FLD) ...

  2. LDA线性判别分析(转)

    线性判别分析LDA详解 1 Linear Discriminant Analysis    相较于FLD(Fisher Linear Decriminant),LDA假设:1.样本数据服从正态分布,2 ...

  3. LDA线性判别分析原理及python应用(葡萄酒案例分析)

    目录 线性判别分析(LDA)数据降维及案例实战 一.LDA是什么 二.计算散布矩阵 三.线性判别式及特征选择 四.样本数据降维投影 五.完整代码 结语 一.LDA是什么 LDA概念及与PCA区别 LD ...

  4. PCA主成分分析 ICA独立成分分析 LDA线性判别分析 SVD性质

    机器学习(8) -- 降维 核心思想:将数据沿方差最大方向投影,数据更易于区分 简而言之:PCA算法其表现形式是降维,同时也是一种特征融合算法. 对于正交属性空间(对2维空间即为直角坐标系)中的样本点 ...

  5. 吴裕雄 python 机器学习——线性判断分析LinearDiscriminantAnalysis

    import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot ...

  6. 吴裕雄--天生自然 人工智能机器学习实战代码:线性判断分析LINEARDISCRIMINANTANALYSIS

    import numpy as np import matplotlib.pyplot as plt from matplotlib import cm from mpl_toolkits.mplot ...

  7. LDA线性判别分析

    LDA线性判别分析 给定训练集,设法将样例投影到一条直线上,使得同类样例的投影点尽可能的近,异类样例点尽可能的远,对新样本进行分类的时候,将新样本同样的投影,再根据投影得到的位置进行判断,这个新样本的 ...

  8. 数据降维-LDA线性降维

    1.什么是LDA? LDA线性判别分析也是一种经典的降维方法,LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的.这点和PCA不同.PCA是不考虑样本类别输出的无监督降维技术. ...

  9. LDA线性分析推广到多分类

    感谢皮果提的文章: http://blog.csdn.net/itplus/article/details/12038441 http://blog.csdn.net/itplus/article 皮 ...

随机推荐

  1. 老男孩linux实战培训初级班第二次课前考试题

    ################################################################ 本文内容摘录于老男孩linux实战运维培训中心课前考试题(答案部分) ...

  2. 树莓派进阶之路 (025) - ubuntu下使用VNC连接树莓派raspberry(转)

    转载:http://www.embbnux.com/2014/03/24/on_ubuntu_use_vnc_connect_raspberry/ ‎ 参考:  http://elinux.org/R ...

  3. 如何使用SetTimer

    1.SetTimer定义在那里? SetTimer表示的是定义个定时器.根据定义指定的窗口,在指定的窗口(CWnd)中实现OnTimer事件,这样,就可以相应事件了. SetTimer有两个函数.一个 ...

  4. HDU 3980 Paint Chain (sg函数)

    Paint Chain Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total ...

  5. C# 自定义控件,日期时间选择输入插件

    权声明:本文为博主原创文章,未经博主允许不得转载. // 为textBox1添加一个日期时间选择控件 DateTimeChoser.AddTo(textBox1); DateTimeChoser.De ...

  6. 【Redis】解析Redis和Java传递数据

    在Java中使用Redis之前需要导入 jedis.jar 包,由于Redis是基于key-value进行数据存储,java中的数据存储到Redis中有许多方式,这里笔者介绍采用JSON字符串和对象序 ...

  7. ggplot2-设置坐标轴

    本文更新地址:http://blog.csdn.net/tanzuozhev/article/details/51107583 本文在 http://www.cookbook-r.com/Graphs ...

  8. 让windows能像ubuntu一样方便的神器

    让windows能像ubuntu一样方便的神器: Let's get Chocolatey! Chocolatey NuGet is a Machine Package Manager, somewh ...

  9. stm32调试过程中如何判断是程序问题还是硬件问题?

    可以用软件仿真,如果软件仿真时寄存器什么的都正确,而硬件在线仿真时不对,则说明是板子硬件的问题

  10. Android 上传文件,图片。以及服务器端接收相关。

    前面一篇文章写了实现照相功能的一个例子,其实那个实现效果是个略缩图.要查看全图就要先指定照片的存放路径.以后我会修改那个文章.今天先说下图片,文件等上传的实现.接着拿照片说事,光照完了不行还得往服务器 ...