Fisher判别式(LDA)

简介

上面从贝叶斯公式出发,得到了线性判别分析的公式,这里从另外一个角度来看线性判别分析,也就是常说的Fisher判别式。其实Fisher判别式就是线性判别分析(LDA),只是在讨论Fisher判别式的时候,更侧重于LDA的数据降维的能力。

在应用统计学方法解决模式识别、机器学习中的问题的时候,有一个问题总是会出现:维数问题。很多在低维空间里可以解析或者计算的算法,在高维空间里面往往行不通,因此,数据降维就成了处理实际问题中的关键。

单纯的从数学角度考虑,将dd维空间的数据压缩称为1维的数据是非常的容易的。然而,即便样本集合在dd维空间里形成若干紧凑的相互分得开的集合,当把它们投影到某一个直线上的时候,就可能使得这些样本混合在一起无法分别开来。但,在实践中发现,总可以找到某个方向,使得在这个方向的直线上,样本的投影能分开的最好。那么,现在的问题就是,如何根据实际情况找到这条最好的、最容易分类的投影线。这就是线性判别分析(Linear Discriminant Analysis)所要解决的基本问题,线性判别分析在很多时候,也叫做 Fisher’s linear discriminant(Fisher线性判别式)。准确的说,它是在Fisher线性判别式基础上的一个推广。

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

在上面关于线性判别分析的说明中提到,投影后的样本在新的空间需要有最大的类间距离和最小的类内距离。那么,什么是类间距离?什么又是类内距离?线性判别分析又是如何在最大化类间距离的同时最小化类内距离?回答完了这三个问题,就基本上能对线性判别分析有一个基本的了解了。

类间距离

对于线性分类器,有一种观点就是将线性分类器看成是一个降维的操作。这里首先考虑二分类的问题,假设输入向量x是D维的,并使用下面这个变换,将x投影到一个一维的数据y上:

此时在y上加一个阈值−w0,并以此来做二分类:

毫无疑问,上面的这种投影操作,会损失大量的样本信息,同时在投影的直线上,可能会使得各个类别的数据相互重叠,无法分别开来。但无论怎样,通过调整ww都可以找到一条最好的直线,使得投影之后类之间的距离能够最大。

一类的数据都像是一个云团,存在各自的分布,那么如何定义两个类之间的距离呢?这里可以先考虑两个类C1,C2各自的均值m1,m2:

用两个均值m1,m2之间的距离m1−m2,作为类之间的距离,这是一种非常简单直观的类间距离的定义方法。

当两个类分别通过w做投影之后,那么投影之后的类间距离为:

这里m˜1 是C1投影之后的类均值;m˜2是C2投影之后的类均值。而我们要做的,就是要找一个w能够最大化m˜1−m˜2。但是,从上面的式子可以看出,通过增大w的模,可以无限的增大m˜1−m˜2,为了解决这个问题,需要将w的模设为1:||w||2=1。也即是说,w的模并不重要,重要的是w的方向。

对上面的式子,使用拉格朗日乘子法:

对w求导之后,得到:

这个结果也是显然的,使用类的均值作为类间距离,要在投影的时候最大化类间距离,自然要让投影线和(m1−m2)平行。

但是,单纯最大化类间距离真的就可以让投影后类之间的重叠最少吗?看下面这幅图。这幅图是从PRML上截取下来的,这幅图左边就是单纯的最大化类间距离,所以左图中w和 (m1−m2)是平行的。右图是Fisher线性判别式(Fisher linear discriminant)得到的w。

很显然相对于右图而言,单纯的最大化类间距离无法让投影后类的重叠最小,那么Fisher线性判别式到底又做了什么才能到到这个效果呢?这就是下面要讲的:最小化类内距离。

类内距离

对于一个存在一定的分布的类而言,我们用来定义这个类的类内距离,最常用的,就是方差(variance),方差所表示的,就是数据的离散程度。一个类Ck在w上投影之后,其类内方差为:

这里 yn=wTxn ,是xn在w上的投影。

我们可以定义,投影后,总的类内方差为:投影后,各自类内方差的总和:s˜21+s˜22

Fisher线性判别式

上面已经介绍了类间距离,也就是类的均值的差;类内距离,也就是类内的方差。Fisher线性判别式的基本思想就是要最大化类间距离,同时最小化类内距离。这里就定义一个比值:

将这个比值最大化,就可以达到最大化类间距离的同时,最小化类内距离了。

对于原始的数据而言,其类内方差可以写为:

投影后的类内方差为:

这里定义原始数据的类内总方差为:

那么投影后的类内总方差为:

投影后,类间距离也可以写成相似的形式:

这里定义:

那么,投影后的类间距离可以写成为:

这样,就是可以把Fisher判别式的判别准则重写为下面这个形式:

其中:

上面这个式子对w求导之后,可以得到:

这样,我们就可以得到将投影后的类间距离最大化,同时投影后的类内距离最小化的之间ww。这样,就从一个DD维问题转化为了一个更容易分析和处理的一维问题。

当然,这个问题是一个多对一的问题,从理论上讲,在很多训练样本的情况下,这个方法不仅不能让最小误差率降低,甚至会在一定程度上提高误差率。然而,我们总还是愿意为了得到在一维中操作的方便性,而想要的牺牲一些理论上的分类效果。

此时,最后剩下的问题就是如何在投影后,求解阈值,来进行分类了。阈值点,就是在一维空间中,可以将两类分开的那个点的位置,这个问题相对来说非常的简单,这里不予讨论。

这里有一种特殊情况,就是当数据的条件概率分布函数p(x|Ck)是多远正太函数,并且各个类别的协方差矩阵Σ相同的时候,最佳的判别边界方程为:

其中:

从上面的推导可以看出,Fisher判别式就是线性判别分析(LDA),只是在讨论Fisher判别式的时候,更侧重于LDA的数据降维的能力。

使用

# 将数据的特征维度降为一维

# 当然这里可以将n_components设置为任何小于原始特征维度的数目

from sklearn.discriminant_analysis import LinearDiscriminantAnalysis

lda = LinearDiscriminantAnalysis(n_components=1)

X= lda.fit(X, y).transform(X)

Y= np.zeros(X_r2.shape)

转载于:https://www.cnblogs.com/yongfuxue/p/10038957.html

Fisher判别式(LDA)相关推荐

  1. fisher线性判别分析matlab,线性判别分析LDA

    首先搞清楚什么叫判别分析?Discriminant Analysis就是根据研究对象的 各种特征值判别其类型归属问题的一种多变量统计分析方法. 根据判别标准不同,可以分为距离判别.Fisher判别.B ...

  2. 线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

    判别分析包括可用于分类和降维的方法.线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术.二次判别分析(QDA)是LDA的变体,允许数据的非线性分离.最后,正则化判别分析(RDA)是LDA和 ...

  3. PCA(主成分分析)和LDA(线性判别分析)的异同处及应用场景

    在机器学习领域,PCA和LDA都可以看成是数据降维的一种方式.但是PCA是无监督的,也就是说不需要知道样本对应的标签,而LDA是有监督的,需要知道每一个数据点对应的标签. 图的左边是PCA,它所作的只 ...

  4. R语言线性判别分析(LDA),二次判别分析(QDA)和正则判别分析(RDA)

    判别分析包括可用于分类和降维的方法.线性判别分析(LDA)特别受欢迎,因为它既是分类器又是降维技术.二次判别分析(QDA)是LDA的变体,允许数据的非线性分离.最后,正则化判别分析(RDA)是LDA和 ...

  5. qda二次判别_R语言线性分类判别LDA和二次分类判别QDA实例

    R语言实例链接:http://tecdat.cn/?p=5689 一.线性分类判别 对于二分类问题,LDA针对的是:数据服从高斯分布,且均值不同,方差相同. 概率密度: p是数据的维度. 分类判别函数 ...

  6. R语言 Fisher线性判别

    本人正在学习R语言,想利用这个平台记录自己一些自己的学习情况,方便以后查找,也想分享出来提供一些资料给同样学习R语言的同学们.(如果内容有错误,欢迎大家批评指正) Fisher线性判别主要用来根据样本 ...

  7. 2022年数模国赛C题(岭回归、区间预测、矩阵热力图、Fisher判别分类模型)——总结心得(附最后一次数模经历,Matlab\SPSS\Lingo的理解综合)

    文章目录 一.国赛 二.国赛代码展示 1.1 问题一 1.2 问题二 1.3 问题三 1.4 问题四 三.对于软件的理解 3.1 Matlab 3.1.1 表格的读取 3.1.2 元胞数组的相关函数的 ...

  8. 机器学习-特征工程中的特征降维

    对于一个机器学习问题,数据和特征决定了机器学习的上限,而模型和算法只是逼近这个上限.由此可见,数据和特征在模型的整个开发过程中是比较重要.特征工程,顾名思义,是对原始数据进行一系列工程处理,将其提炼为 ...

  9. 线性判别准则与线性分类编程实践

    一.线性判别分析 (一)简介 线性判别分析(linear discriminant analysis,LDA)是对费舍尔的线性鉴别方法的归纳,这种方法使用统计学,模式识别和机器学习方法,试图找到两类物 ...

  10. 数据挖掘 —— 数据预处理

    数据挖掘 -- 数据预处理 1. 数据清洗 2. 特征预处理 2.1 特征选择 2.2 特征变换 3 特征降维 1. 数据清洗 数据清洗包括数据样本抽样和异常值(空值)处理 直接丢弃(包括重复数据) ...

最新文章

  1. mysql5.0镜像_Mysql5.0学习笔记(一)
  2. 多态时:成员特点,成员变量
  3. Java中使用Observer接口和Observable类实践Observer观察者模式
  4. 记录自定义的代码片段位置
  5. U2L蔚然成风,曙光为什么能抢了VMware的风头?
  6. Python 读写文件和file对象(转)
  7. 推荐算法DeepFM原理介绍及tensorflow代码实现
  8. LeetCode 101对称二叉树-简单
  9. 汇顶科技2021秋招笔试
  10. linux系统启动故障排除
  11. 8个日志级别(OFF、FATAL、ERROR、WARN、INFO、DEBUG、TRACE、 ALL)
  12. 计算机网络自顶向下-应用层
  13. 几何分布的期望_超几何分布与二项分布的数学期望
  14. 任正非:华为要做追上特斯拉的大乌龟
  15. PCB六层板如何分层最好?
  16. C#字节数组与字符串相互转换代码案例
  17. 手机投影到deepin
  18. 在移动设备上使用M3G编程教程(转)
  19. CUDA入门技术路线及基础知识
  20. 免费素材:气球样式的图标集(PSD, SVG, PNG)

热门文章

  1. excel如何让日期/时间增加指定分钟、小时、日
  2. 计算机连接华为路由器5g变慢,华为企业级路由器 HUAWEI AR101W-S系列无线功能特别慢?...
  3. google 翻译错误解决方法
  4. 钽电容技术参数及封装
  5. 2022Java后端之美团笔试题
  6. 2015年最新中国知网CNKI免费账号直接入口
  7. 如何利用净推荐值(NPS)测量用户忠诚度?
  8. jdk证书的相关命令
  9. 计算机识别人脸原理,深入浅出人脸识别原理
  10. 致远oa系统报价_致远的OA办公系统成本多少一套?