线性判别式分析-LDA-Linear Discriminant Analysis
转载图片无法显示,等有时间了再弄下,以下是原文链接,mark一下。
原文出处:http://www.cnblogs.com/pangxiaodong/archive/2011/10/21/2218484.html
1. LDA是什么
线性判别式分析(Linear Discriminant Analysis),简称为LDA。也称为Fisher线性判别(Fisher Linear Discriminant,FLD),是模式识别的经典算法,在1996年由Belhumeur引入模式识别和人工智能领域。
基本思想是将高维的模式样本投影到最佳鉴别矢量空间,以达到抽取分类信息和压缩特征空间维数的效果,投影后保证模式样本在新的子空间有最大的类间距离和最小的类内距离,即模式在该空间中有最佳的可分离性。
LDA与前面介绍过的PCA都是常用的降维技术。PCA主要是从特征的协方差角度,去找到比较好的投影方式。LDA更多的是考虑了标注,即希望投影后不同类别之间数据点的距离更大,同一类别的数据点更紧凑。
下面给出一个例子,说明LDA的目标。
可以看到两个类别,一个绿色类别,一个红色类别。左图是两个类别的原始数据,现在要求将数据从二维降维到一维。直接投影到x1轴或者x2轴,不同类别之间会有重复,导致分类效果下降。右图映射到的直线就是用LDA方法计算得到的,可以看到,红色类别和绿色类别在映射之后之间的距离是最大的,而且每个类别内部点的离散程度是最小的(或者说聚集程度是最大的)。
这里还有一个LDA的例子:
下图是一个LDA和PCA区别的例子:
两个类别,class1的点都是圆圈,class2的点都是十字。图中有两条直线,斜率在1左右的这条直线是PCA选择的映射直线,斜率在-1左右的这条直线是LDA选择的映射直线。其余不在这两条直线上的点是原始数据点。可以看到由于LDA考虑了“类别”这个信息(即标注),映射后,可以很好的将class1和class2的点区分开。
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。第一,为了实现投影后的两个类别的距离较远,用映射后两个类别的均值差的绝对值来度量。第二,为了实现投影后,每个类内部数据点比较聚集,用投影后每个类别的方差来度量。
假设数据是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假设数据服从单峰高斯分布,比如下面的复杂数据结构。
5. 参考
Introduction to LDA
Linear Discriminant Analysis - A Brief Tutorial
http://www.aiaccess.net/English/Glossaries/GlosMod/e_gm_fisher_discriminant.htm
线性判别分析(Linear Discriminant Analysis, LDA)算法分析
原文出处:http://www.cnblogs.com/pangxiaodong/archive/2011/10/21/2218484.html
线性判别式分析-LDA-Linear Discriminant Analysis相关推荐
- 邻域线性判别《Neighborhood linear discriminant analysis》
模式识别与机器学习老师留了作业说是让找一篇线性判别的论文,所以就记录一下论文(<Neighborhood linear discriminant analysis>)吧,虽然只是一些翻译. ...
- 线性判别分析LDA(linear discriminant analysis)与二次判别分析QDA(quadratic discriminant analysis)
文章目录 什么是LDA LDA与PCA 相同 不同 LDA python实现 使用sklearn实现LDA 再进一步QDA QDA数学原理 QDA与LDA比较 Source: Python Machi ...
- LDA(Linear Discriminant Analysis)的原理详解
什么是LDA LDA是一种监督学习的降维技术,也就是说它的数据集的每个样本是有类别输出的.这点和PCA不同.PCA是不考虑样本类别输出的无监督降维技术.LDA的思想可以用一句话概括,就是"投 ...
- 小议费雪线性判别(Fisher Linear Discriminant Analysis)
fisher 判决方式是监督学习,在新样本加入之前,已经有了原样本. 原样本是训练集,训练的目的是要分类,也就是要找到分类线.一刀砍成两半! 当样本集确定的时候,分类的关键就在于如何砍下这一刀! 若以 ...
- 机器学习(三十一)——Linear Discriminant Analysis
Linear Discriminant Analysis 在<机器学习(十六)>中,我们已经讨论了一个LDA,这里我们来看看另一个LDA. Linear Discriminant Anal ...
- 线性判别分析(Linear Discriminant Analysis, LDA)算法分析
LDA算法入门 一. LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discrimin ...
- 线性判别分析(Linear Discriminant Analysis, LDA)(含类内散度矩阵 类间散度矩阵 全局散度矩阵推导
LDA算法概述: 线性判别式分析(Linear Discriminant Analysis, LDA),也叫做Fisher线性判别(Fisher Linear Discriminant ,FLD),是 ...
- 机器学习降维算法二:LDA(Linear Discriminant Analysis)
Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法.与PCA保持数据信息不同, ...
- R语言分类算法之线性判别分析(Linear Discriminant Analysis)
1.线性判别原理解析 基本思想是"投影",即高纬度空间的点向低纬度空间投影,从而简化问题的处理.在原坐标系下,空间中的点可能很难被分开,如图8-1,当类别Ⅰ和类别Ⅱ中的样本点都投影 ...
最新文章
- mysql导入sql脚本出现there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE
- Nature子刊 | 研究人员提出神经脆性可作为癫痫发作区(SOZ)的脑电图(EEG)标志物
- r语言的runmed函数_R实战 第五篇:常用函数的用法
- 网络工程师交换试验手册之十八:SWITCH的基本配置
- 【转发】 iphone开发随笔,有用的
- Service GIS
- 博弈论(Game Theory)入门学习笔记(持续更新)
- WebSocket爬虫之爬取龙珠弹幕
- matlab 取虚数单位,四元数解算姿态Matlab程序代码
- 数字电路——流水灯(二)_往返流水灯
- 计算机如何放置桌面图标,电脑桌面图标怎么随意放置(电脑桌面归纳小窗口)...
- 微信WIFI,帮你做好客流量统计
- 【PTA】 试试手气
- 如何打开pkl文件,pkl是什么类型的文件?
- 跳槽离职的那些事儿?(转)
- python三国演义人物 统计分析_python统计三国演义人物出场次数
- 关于adb shell screencap 1.png
- 电脑usb android上网,让你的Android手机通过USB共享电脑上网
- Bolt 的 Flutter 路由管理实践(页面解耦,流程控制、功能拓展等)
- 浅谈VMware Workstation Pro 使用Linux系统(超详细教程)
热门文章
- 医学专业失业率最高 三类相关行业人才紧缺
- python代码实现中心化_数据预处理——标准化(附python代码)
- linux账户管理代码和截图,linux 用户管理(示例代码)
- 启动mysql55命令_mysql服务的启动和停止登陆mysql增加新用命令和方法实例教程
- python定位相邻节点_Python selenium —— 父子、兄弟、相邻节点定位方式详解
- gitlab在push代码的时候报错
- 关于Chrome Devtools你可能有所不知的几个技巧
- 如何设置一个严格30分钟过期的Session 1
- Win7 本地打印后台处理程序服务没有运 怎么办
- SAX EntityResolver 的作用