线性判别分析(discriminant_analysis.LinearDiscriminantAnalysis)和二次判别分析(discriminant_analysis.QuadraticDiscriminantAnalysis)是两个经典的分类器。顾名思义,它们分别代表了线性决策面和二次决策面。这些分类器十分实用,因为它们具有易于计算的封闭式解决方案,且本质上是多种类别的,它们已被证明在实践中能很好地工作并且没有任何超参数要调整。该图显示了线性判别分析和二次判别分析的决策边界。由图可得,线性判别分析只能学习线性边界,而二次判别分析则可以学习二次边界,因此它更加灵活。例子:协方差椭圆形的线性和二次判别分析:LDA和QDA在合成数据上的比较。

使用线性判别分析进行降维

discriminant_analysis.LinearDiscriminantAnalysis通过将输入数据投影到一个线性子空间来进行有监督的降维,该线性子空间由类间距离最大化的方向组成(在下面的数学部分中有对其进行精确的讨论)。输出的维数必须小于原来类别的数量,因此,通常这会缩减相当多的维数,并且仅在多类别中才有意义。这是函数 discriminant_analysis.LinearDiscriminantAnalysis.transform的实现。可以使用构造函数的n_components参数来设置要降到多少维。此参数对discriminant_analysis.LinearDiscriminantAnalysis.fit或 discriminant_analysis.LinearDiscriminantAnalysis.predict没有影响 。例子:鸢尾属植物数据集的LDA和PCA二维投影的比较:在鸢尾属植物数据集上使用LDA和PCA算法的降维比较。

LDA和QDA分类器的数学公式

LDA和QDA都可以从概率模型中推导出来,该模型是对数据的每一个的条件分布下进行建模。然后使用贝叶斯规则进行预测:然后选择能够使该条件概率最大化的k。更具体地说,对于线性和二次判别分析,会把建模成多变量高斯分布(multivariate Gaussian distribution), 其密度函数如下所示:其中d是特征分量的个数.如果需要将这个模型当分类器进行使用,我们只需要从训练数据中估算出类的先验概率(按类k的数量的比例),类的均值(通过经验样本计算类的均值)和协方差矩阵(通过经验样本计算类的协方差矩阵,或通过正则估计器(estimator)计算得到:请参见下面有关收缩(shrinkage)的章节)。对于LDA,假定每个类的高斯分布都与其他类共享同一个的协方差矩阵的话:(是指对所有的k),这会产生线性决策面(linear decision surfaces),可以通过比较对数概率比(log-probability ratios)来看到这一现象:对于QDA,我们对于每个类的高斯分布的协方差矩阵没有做任何假设,这样就会产生二次决策面(quadratic decision surfaces)。请参见 3来获得相关更多详细信息。注意:QDA与高斯朴素贝叶斯的关系(Gaussian Naive Bayes)如果在QDA模型中假设协方差矩阵是对角阵的话,则对于每个类来说,假定输入是条件独立的,这就导致了分类器的结果等同于高斯朴素贝叶斯分类器naive_bayes.GaussianNB

LDA降维的数学公式

为了理解 LDA 在降维上的应用,我们从上面的 LDA 分类规则的几何重构(geometric reformulation)来解释,令K为目标类的总数量,既然我们在LDA中假定了所有类都共享同一个协方差矩阵Σ, 我们就可以重新改变数据规模(rescale the data)使得这个共享的协方差矩阵是个单位阵(identity):然后,我们就会发现要对一个经过缩放的数据点进行分类就等价于在欧式空间中找到距离这个数据点最近的某个类的均值,只要找到这个均值,我们要分类的那个数据点的类标签就是该均值所代表的类标签。但是这仅仅只是在由所有类的所有,只要找到这个均值, 我们要分类的那个数据点的类标签就是该均值所代表的类标签。但是这仅仅只是在由所有类的所有形成的仿射子空间K−1上效果才会很好. 这表明 LDA 分类器是通过把数据线性投影在K−1维空间上来实现降维的。我们可以进一步缩小维度L,通过投影到线性子空间上来最大化的方差(实际上,我们正在为转换后的类的提供一种PCA表示形式)。这个L对应于discriminant_analysis.LinearDiscriminantAnalysis.transform方法中使用的n_components参数 。请参见3来获得有关更多详细信息。

收缩(Shrinkage)

在训练数据的样本数量比特征数量少的情况下,收缩(Shrinkage)是一种改进协方差矩阵估计的工具。在这种情况下,样本数据的经验协方差是一个不好的估计量。通过将类discriminant_analysis.LinearDiscriminantAnalysisshrinkage参数设置为“自动(auto)”,根据Ledoit 和 Wolf [4] 的介绍,这样做可以以解析的方式自动确定最优的收缩参数。需要注意的是,目前收缩(Shrinkage)只能在求解器 solver的参数为 “lsqr” 或 “eigen”的时候才能发挥作用。该shrinkage参数也可以手动设置在0和1之间。0对应于无收缩(这意味着将使用经验协方差矩阵),1对应于完全收缩(这意味着对角矩阵的方差将用作协方差矩阵的估计值)。将参数 shrinkage的取值设定在0到1之间的话,就可以估计出一个收缩(Shrinkage)版的协方差矩阵。

估计算法

默认的求解器(solver)是 “svd”,它既可以进行分类也可以对数据进行变换(transform),且不依赖于协方差矩阵的计算,在特征数量很大的时候这是一个很大的优势。但是“svd”求解器(solver)不能与 shrinkage参数同时使用。“ lsqr”求解器(solver)是仅适用于分类的高效算法。它支持收缩(Shrinkage)。“eigen”求解器(solver)是一种通过优化类间散度(between class scatter)与类内散度(within class scatter)的比率进行求解的方法,它也支持收缩(Shrinkage),“eigen” 求解器(solver)需要计算协方差, 因此这种求解器不适用于高维特征的情况。案例:应用于分类任务的正常(Normal)和缩减(Shrinkage)的LDA: 具有和不具有收缩(Shrinkage)的LDA分类器的比较。参考文献:“The Elements of Statistical Learning”, Hastie T., Tibshirani R., Friedman J., Section 4.3, p.106-119, 2008.Ledoit O, Wolf M. Honey, I Shrunk the Sample Covariance Matrix. The Journal of Portfolio Management 30(4), 110-119, 2004.☆☆☆为方便大家查阅,小编已将scikit-learn学习路线专栏文章统一整理到公众号底部菜单栏,同步更新中,关注公众号,点击左下方“系列文章”,如图:

欢迎大家和我一起沿着scikit-learn文档这条路线,一起巩固机器学习算法基础。(添加微信:mthler备注:sklearn学习,一起进【sklearn机器学习进步群】开启打怪升级的学习之旅。)

判别器loss为0_scikitlearn—线性判别分析和二次判别分析相关推荐

  1. python判别分析_二次判别分析Quadratic Discriminant Analysis(QDA)

    与线性判别分析类似,二次判别分析是另外一种线性判别分析算法,二者拥有类似的算法特征,区别仅在于:当不同分类样本的协方差矩阵相同时,使用线性判别分析:当不同分类样本的协方差矩阵不同时,则应该使用二次判别 ...

  2. 判别器loss为0_TensorFlow v2.0实现逻辑斯谛回归

    使用TensorFlow v2.0实现逻辑斯谛回归 此示例使用简单方法来更好地理解训练过程背后的所有机制 MNIST数据集概览 此示例使用MNIST手写数字.该数据集包含60,000个用于训练的样本和 ...

  3. 【数学建模】Matlab实现判别分析(线性判别和二次判别分析)

    Matlab实现判别分析(线性判别和二次判别分析) 一.简介 二.判别分析的方法 2.1 费歇(FISHER)判别思想 2.1 贝叶斯(BAYES)判别思想 三.Matlab 实现判别分析 3.1 代 ...

  4. O-GAN:简单修改,让GAN的判别器变成一个编码器!

    2019-03-08 08:36 作者丨苏剑林 单位丨广州火焰信息科技有限公司 研究方向丨NLP,神经网络 个人主页丨kexue.fm 本文来给大家分享一下笔者最近的一个工作:通过简单地修改原来的 G ...

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

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

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

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

  7. (已发布源码)图像修复——上下文编码器以及加入全局判别器的改进(Context Encoder and Global and Local Discriminator)

    Context Encoder and Global and Local Discriminator Context Encoder ,Global and Local Discriminator C ...

  8. 「GAN优化」小批量判别器如何解决模式崩溃问题

    作者 | 小米粥 编辑 | 言有三 1. 模式崩溃的原因 当模式崩溃发生时,生成器 G(z)往往会把很多不同的z均映射成某个x,(更确切地说,指x以及其附近的点,用A表示),接下来更新判别器D(x)后 ...

  9. 训练生成对抗网络的过程中,训练gan的地方为什么这里没有detach,怎么保证训练生成器的时候不会改变判别器

    答: detach的作用是冻结梯度下降,无论是对于判别网络还是生成网络而言,我们更新的都是关于logD(G(z)),对于判别网络而言,冻结G并不影响整体的梯度更新(就是内层函数看成是一个常数,不影响外 ...

最新文章

  1. 开源轻量级办公系统Sandbox介绍以及配套开发文档连载
  2. thankpad p15改善大风扇的转动
  3. dataimagepng php_php用header('content-type: image/png')输出验证码,但响应回来的是text/html...
  4. 何时使用构造函数,构造函数使用new关键字
  5. <<science>> new and potential research areas
  6. python入门需要什么基础知识_Python 基础之:入门必备知识
  7. android n 更新画面,Android N的无缝更新是什么?
  8. python非数值型数据_Python机器学习实战:如何处理非数值特征
  9. 启动activemq_「Java」 - SpringBoot amp; ActiveMQ
  10. Digital Text Animations for Mac - 未来感活力全屏标题动画fcpx插件
  11. sae java 开发环境_SAE本地环境与真实环境的差别
  12. 【Matlab】求解函数导数
  13. Matlab中CVX工具箱使用
  14. 基于联咏NT98528_IMX335_开发IPC模组实测_视频截图
  15. python解析钩针图解到markdown文件/requests/BeautifulSoup
  16. java 6面骰子_掷6面骰子6000次每个点数出现的概率
  17. iOS/Mac OS X 汉字转拼音
  18. python创意turtle作品大白-Python turtle 画个大白
  19. 本科毕业论文内容必须有国内外文献综述吗?
  20. android图标未读消息,Android系统 应用图标显示未读消息数(BadgeNumber) 桌面app图标的角标显示...

热门文章

  1. Python: 序列list:保持元素顺序同时消除重复值
  2. Use gradle compile volley framework
  3. CentOS6.5升级内核
  4. [转]Git,SVN的优缺点及适合的范围,开源项目?公司项目?
  5. SAX EntityResolver 的作用
  6. 中小企业文件、打印解决方案
  7. skywalking前端_skywalking实现分布式系统链路追踪
  8. jquery 跨域_springboot解决js前端跨域问题,javascript跨域问题解决
  9. 认真学习系列:《深入理解计算机系统》读书笔记
  10. logging日志模块