本篇会详细讲解生成模型和判别模型的区别,篇幅稍长
作者:zouxy09
来源:https://blog.csdn.net/zouxy09/article/details/8195017

决策函数Y=f(X)或者条件概率分布P(Y|X)

监督学习的任务就是从数据中学习一个模型(也叫分类器),应用这一模型,对给定的输入X预测相应的输出Y。这个模型的一般形式为决策函数Y=f(X)或者条件概率分布P(Y|X)。

决策函数Y=f(X):你输入一个X,它就输出一个Y,这个Y与一个阈值比较,根据比较结果判定X属于哪个类别。例如两类(w1和w2)分类问题,如果Y大于阈值,X就属于类w1,如果小于阈值就属于类w2。这样就得到了该X对应的类别了。

条件概率分布P(Y|X):你输入一个X,它通过比较它属于所有类的概率,然后输出概率最大的那个作为该X对应的类别。例如:如果P(w1|X)大于P(w2|X),那么我们就认为X是属于w1类的。

所以上面两个模型都可以实现对给定的输入X预测相应的输出Y的功能。实际上通过条件概率分布P(Y|X)进行预测也是隐含着表达成决策函数Y=f(X)的形式的。例如也是两类w1和w2,那么我们求得了P(w1|X)和P(w2|X),那么实际上判别函数就可以表示为Y= P(w1|X)/P(w2|X),如果Y大于1或者某个阈值,那么X就属于类w1,如果小于阈值就属于类w2。而同样,很神奇的一件事是,实际上决策函数Y=f(X)也是隐含着使用P(Y|X)的。因为一般决策函数Y=f(X)是通过学习算法使你的预测和训练数据之间的误差平方最小化,而贝叶斯告诉我们,虽然它没有显式的运用贝叶斯或者以某种形式计算概率,但它实际上也是在隐含的输出极大似然假设(MAP假设)。也就是说学习器的任务是在所有假设模型有相等的先验概率条件下,输出极大似然假设。

所以呢,分类器的设计就是在给定训练数据的基础上估计其概率模型P(Y|X)。如果可以估计出来,那么就可以分类了。但是一般来说,概率模型是比较难估计的。给一堆数给你,特别是数不多的时候,你一般很难找到这些数满足什么规律吧。那能否不依赖概率模型直接设计分类器呢?事实上,分类器就是一个决策函数(或决策面),如果能够从要解决的问题和训练样本出发直接求出判别函数,就不用估计概率模型了,这就是决策函数Y=f(X)的伟大使命了。例如支持向量机,我已经知道它的决策函数(分类面)是线性的了,也就是可以表示成Y=f(X)=WX+b的形式,那么我们通过训练样本来学习得到W和b的值就可以得到Y=f(X)了。还有一种更直接的分类方法,它不用事先设计分类器,而是只确定分类原则,根据已知样本(训练样本)直接对未知样本进行分类。包括近邻法,它不会在进行具体的预测之前求出概率模型P(Y|X)或者决策函数Y=f(X),而是在真正预测的时候,将X与训练数据的各类的Xi比较,和哪些比较相似,就判断它X也属于Xi对应的类。

生成方法和判别方法

监督学习方法又分生成方法(Generative approach)和判别方法(Discriminative approach),所学到的模型分别称为生成模型(Generative Model)和判别模型(Discriminative Model)。

判别方法:由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的模型,即判别模型。基本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。典型的判别模型包括k近邻,感知级,决策树,支持向量机等。

生成方法:由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。基本思想是首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类。注意了哦,这里是先求出P(X,Y)才得到P(Y|X)的,然后这个过程还得先求出P(X) 。P(X)就是你的训练数据的概率分布。

还有一个问题就是,在机器学习领域有个约定俗成的说法是:不要去学那些对这个任务没用的东西。例如,对于一个分类任务:对一个给定的输入x,将它划分到一个类y中。那么,如果我们用生成模型:p(x,y)=p(y|x).p(x)。那么,我们就需要去对p(x)建模,但这增加了我们的工作量。实际上,因为数据的稀疏性,导致我们都是被强迫地使用弱独立性假设去对p(x)建模的,所以就产生了局限性。所以我们更趋向于直观的使用判别模型去分类。

这样的方法之所以称为生成方法,是因为模型表示了给定输入X产生输出Y的生成关系。用于随机生成的观察值建模,特别是在给定某些隐藏参数情况下。典型的生成模型有:朴素贝叶斯和隐马尔科夫模型等。

生成模型和判别模型的优缺点

在监督学习中,两种方法各有优缺点,适合于不同条件的学习问题。

生成方法的特点:上面说到,生成方法学习联合概率密度分布P(X,Y),所以就可以从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。但它不关心到底划分各类的那个分类边界在哪。生成方法可以还原出联合概率分布P(Y|X),而判别方法不能。生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快的收敛于真实模型,当存在隐变量时,仍可以用生成方法学习。此时判别方法就不能用。

判别方法的特点:判别方法直接学习的是决策函数Y=f(X)或者条件概率分布P(Y|X)。不能反映训练数据本身的特性。但它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。直接面对预测,往往学习的准确率更高。由于直接学习P(Y|X)或P(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

生成模型和判别模型的联系

由生成模型可以得到判别模型,但由判别模型得不到生成模型。

形象的例子

例如我们有一个输入数据x,然后我们想将它分类为标签y。

生成模型学习联合概率分布p(x,y),而判别模型学习条件概率分布p(y|x)。

下面是个简单的例子:

例如我们有以下(x,y)形式的数据:(1,0), (1,0), (2,0), (2, 1)

那么p(x,y)是:

y=0 y=1
x=1 1/2 0
x=2 1/4 1/4

而p(y|x) 是:

y=0 y=1
x=1 1 0
x=2 1/2 1/2

我们为了将一个样本x分类到一个类y,最自然的做法就是条件概率分布p(y|x),这就是为什么我们对其直接求p(y|x)方法叫做判别算法。而生成算法求p(x,y),而p(x,y)可以通过贝叶斯方法转化为p(y|x),然后再用其分类。但是p(x,y)还有其他作用,例如,你可以用它去生成(x,y)对。

再假如你的任务是识别一个语音属于哪种语言。例如对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的:

1、学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说话,你就可以知道他说的是什么语音

2、不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。

那么第一种方法就是生成方法,第二种方法是判别方法。

生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。基于你的生成假设,那么那个类别最有可能产生这个信号,这个信号就属于那个类别。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。

帮到你了吗,点在看吧♥◠‿◠ノ

生成模型与判别模型详解相关推荐

  1. 【机器学习】生成模型与判别模型详解

    生成模型与判别模型 1.定义 2.通俗解释 例1:猫狗分类 例2:如何确定一只羊是山羊还是绵羊 例3.识别一种语言是哪种语言 例4.跟踪问题 3.如何选择哪种模型 主要来源:[白话解析] 深入浅出最大 ...

  2. 理解生成模型与判别模型

    其它机器学习.深度学习算法的全面系统讲解可以阅读<机器学习-原理.算法与应用>,清华大学出版社,雷明著,由SIGAI公众号作者倾力打造. 书的购买链接 书的勘误,优化,源代码资源 导言 我 ...

  3. 一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现

    一文读懂NLP之隐马尔科夫模型(HMM)详解加python实现 1 隐马尔科夫模型 1.1 HMM解决的问题 1.2 HMM模型的定义 1.2.1HMM的两个假设 1.2.2 HMM模型 1.3 HM ...

  4. 生成模型与判别模型区别

    概念理解 监督学习方法可分为两大类,即生成方法与判别方法,它们所学到的模型称为生成模型与判别模型. 判别模型:判别模型是学得一个分类面(即学得一个模型),该分类面可用来区分不同的数据分别属于哪一类: ...

  5. 生成模型和判别模型_生成模型和判别模型简介

    生成模型和判别模型 Intro 介绍 Recently I gave a presentation at work, where I explained how I solved some probl ...

  6. 机器学习中生成模型和判别模型

    监督学习的任务是学习一个模型,应用这一模型,对给定的输入预测相应的输出.这个模型的一般形式为决策函数: Y=f(X)Y=f(X)Y=f(X)或者条件概率分布:P(Y∣X)P(Y|X)P(Y∣X)监督学 ...

  7. 生成模型与判别模型的区别

    引入 监督学习的任务就是学习一个模型(或者得到一个目标函数),应用这一模型,对给定的输入预测相应的输出.这一模型的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X). 监督学习方法又可以 ...

  8. 生成模型和判别模型直接的区别

    作者:JasonDing 链接:https://www.jianshu.com/p/d195b887a32e 來源:简书 简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处. 概率图分 ...

  9. 机器学习基础(二十一)—— 分类与回归、生成模型与判别模型

    无论是生成模型还是判别模型,都可作为一种分类器(classification)来使用: 1. 分类与回归 (1)分类的目标变量是标称型数据(categorical data),0/1,yes/no ( ...

最新文章

  1. 使用Keil语言的嵌入式C编程教程(下)
  2. DataFrame类型数据的主要处理方法
  3. android resolvesize方法,Android 自定义View中onMeasure()中使用resolveSize()是什么意思?
  4. 领域模型(domain model)贫血模型(anaemic domain model)充血模型(rich domain model)
  5. python元胞自动机模拟交通_结构专栏 | 解析DEFORM软件中的元胞自动机法
  6. map集合的putall_Map.put和Map.putAll方法之间的区别?
  7. PL/Sql快速执行 insert语句的.sql文件
  8. 贪心----汽车加油问题
  9. 今天带你详细了解各组件原理
  10. 3.3、苏宁百万级商品爬取 代码讲解 商品爬取
  11. linux手误rm可能不需要跑路
  12. java学习之—栈匹配字符串符号
  13. 【精品分享】Kolla 让 OpenStack 部署更贴心
  14. 服务化治理脚本:show-busiest-java-threads。
  15. word中硬回车(enter)与软回车(shift+enter)
  16. 软件测试入门全流程精华总结【必看 知识点很全】
  17. HashMap源码阅读启读
  18. linux yum sbt,CentOS下安装SBT
  19. 计算机组装与维修2试卷,《计算机组装与维修》期末试卷(A) (2)
  20. ef 数据迁移mysql_EF6 Codefirst+MySql 数据库迁移

热门文章

  1. 天气预报接口_001_天气预报API
  2. 毕业了,异地恋只能分手吗?
  3. 公众号可快速查询审计报告,鉴别真伪!太方便了……
  4. Windows10切换用户显示User Profile Service或ProfSvc服务登录失败
  5. Unity 异常记录日志功能
  6. Keil软件的方波仿真
  7. android绘制半圆弧线_android实现简单圆弧效果
  8. 阿里云DDoS防护是如何工作的?
  9. 一男的为媳妇写的、帅死了
  10. 年底大标预备!2019通信招投标大势到底是怎样的?