先直观理解

我们先从直观上来理解一下:

  • 生成模型: 源头导向 。尝试去找到底这个数据是怎么产生的,然后再对一个信号进行分类。基于你学习到的生成假设,判断哪个类别最有可能产生这个信号,这个样本就属于那个类别。
  • 判别模型: 结果导向 。并不关心样本数据是怎么生成的,它只关心样本之间的差别,然后用差别来简单对给定的一个样本进行分类。

借用一下 这位老兄 的例子:

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

  1. 学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说,你就可以知道他说的是什么语音.
  2. 不去学习每一种语言,你只学习这些语言之间的差别,然后再判断(分类)。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。

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

再深入理解

监督学习的任务:学习一个模型,应用这一模型,对给定的输入预测相应的输出。
这一模型的一般形式为一个决策函数或者条件概率分布:

y 。(例如贝叶斯分类器就属于这种)


监督学习方法又可以分为生成方法(generative approach) 判别方法(discriminative approach) 。所学到的模型分别为 生成模型(generative model) 判别模型(discriminative model)**。

先由数据学习联合概率分布 y 的生成关系。这种方法一般建立在统计学和Bayes理论的基础之上。

  • 从统计的角度表示数据的分布情况,能够反映同类数据本身的 相似度 ,但它不关心到底划分各类的那个分类边界在哪。
  • 生成方法能还原出联合概率分布,而判别方法不能
  • 生成方法的学习收敛速度更快、即当样本容量增加的时候,学到的模型可以更快地收敛于真实模型
  • 当存在隐变量时,仍可以用生成方法学习,此时判别方法不能用
典型的生成模型
  • 朴素贝叶斯分类器
  • 马尔科夫模型
  • 高斯混合模型


判别方法由数据 直接 学习决策函数

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

典型的判别模型

  • k近邻法
  • 感知机
  • 决策树
  • logistic回归
  • 最大熵模型
  • SVM
  • boosting方法
  • 条件随机场

这里推荐一篇Andrew Ng讨论判别模型和生成模型的paper:
On Dicriminative vs. Generative classfier: A comparison of logistic regression and naive Bayes

References:
《统计学习方法》 李航
生成模型与判别模型

先上结论公式上看生成模型: 学习时先得到 P(x,y)P(x,y)P(x,y),继而得到 P(y|x)P(y|x)P(y|x)。预测时应用最大后验概率法(MAP)得到预测类别 yyy。 判别模型: 直接学习得到P(y|x)P(y|x)P(y|x),利用MAP得到 yyy。或者直接学得一个映射函数 y=f(x)y=f(x)y = f(x)。直观上看生成模型: 关注数据是如何生成的 ...
其实机器学习的任务是从属性X预测标记Y,即求概率P(Y|X)。 判别 模型 对于 判别 模型 来说求得P(Y|X),对未见示例X,根据P(Y|X)可以求得标记Y,即可以直接 判别 出来,如上图的左边所示,实际是就是直接得到了 判别 边界,所以传统的、耳熟能详的机器学习算法如线性回归 模型 、支持向量机SVM等都是 判别 模型 ,这些 模型 的特点都是输入属性X可以直接得到Y(对于二分类任务来说,实际得到一个score,当score大于threshold时则为正类,否则为反类)~(根本原因个人认为是对于某示例X_1,对正例和反例的标记的条件概率之和等于1,即P(Y_1|X_1)+P(Y_2|X_1)=1)。 生成 模型
生成 模型 判别 模型 是机器学习中两种常见的 模型 类型。 生成 模型 ,又称概率 模型 ,是指通过学习数据的分布来建立 模型 P(y|x),然后利用该 模型 生成 新的数据。 生成 模型 的典型代表是朴素贝叶斯 模型 ,该 模型 通过学习数据的分布来建立概率 模型 ,然后利用该 模型 生成 新的数据。 判别 模型 ,又称非概率 模型 ,是指通过学习输入和输出之间的映射关系来建立 模型 y=f(x),然后利用该 模型 来预测新的输出。 判别 模型 的典型代表是支持向量机 模型 ,该 模型 通过学习输入和输出之间的映射关系来建立分类 模型 ,然后利用该 模型 来预测新的分类结果
1. 写在前面 今天补了一下机器学习的数学知识,突然又遇到了 判别 模型 生成 模型 这两个词语,之前学习统计学习方法的时候也遇到过,当时就模模糊糊的,如今再遇到,发现我还是没明白, 但这次哪有轻易再放过去之理?所以查了很多资料,试图结合自己理解的,把这个知识点整理整理,毕竟这个知识点也是面试官非常喜欢问的一个问题。 所以,下面我尽量把语言说的白话一些。 2. 判定 模型 VS 生成 模型 从本质上讲, 生成 模型 判别 模型 是解决分类问题的两类基本思路。 首先,你得了解,分类问题,就是我给定一个数据x,去判断它对应的标签y。 我的目标就是P(Y|X)。 下面我直接开门见山,先说一下这两种 模型 针对这个目标是怎么
理解对抗网络,首先要了解 生成 模型 判别 模型 判别 模型 比较好理解,就像分类一样, 有一个 判别 界限,通过这个 判别 界限去区分样本。理解了 生成 模型 判别 模型 后,再来理解对抗网络就很直接了,对抗网络只是提出了一 种网络结构,总体来说, GANs 简单的想法就是用两个 模型 ,一个 生成 模型 ,一个 判别 模型
判别 方法(Discriminative approach) 由数据直接学习决策函数Y=f(X)或者条件概率分布P(Y|X)作为预测的 模型 ,即 判别 模型 判别 方法关心的是对于给定的输入X,应该预测什么样的输出Y。基本思想是有限样本条件下建立 判别 函数,不考虑样本的产生 模型 ,直接研究预测 模型 。典型的 判别 模型 包括k近邻,感知级,决策树,支持向量机等。 生成 方法(Generative approach) 由数据学习联合概率密度分布P(X,Y),然后由
一、名词解释 生成 方法由数据学习联合概率风波P(X,Y),然后求出条件概率分布P(Y|X)为预测的 模型 ,即 生成 模型 : P(Y∣X)=P(X,Y)P(X)P(Y|X)=\frac{P(X,Y)}{P(X)}P(Y∣X)=P(X)P(X,Y)​ 这样的方法之所以称为 生成 方法,是因为 模型 表示了给定输入X产生输出Y的 生成 关系。典型的 生成 模型 由朴素贝叶斯法和隐马尔可夫 模型 判别 方法由数据直接学习决策函数f(X)或者条件概率分布P(Y|X)作为预测 模型 ,即 判别 模型 判别 方法关心的是对给定的输入X,应该预测什么样的输出
生成 模型 判别 模型 区别 1.监督学习分为 生成 模型 判别 模型 有监督机器学习方法可以分为 生成 方法和 判别 方法(常见的 生成 方法有混合高斯 模型 、朴素贝叶斯法和隐形马尔科夫 模型 等,常见的 判别 方法有SVM、LR等), 生成 方法学习出的是 生成 模型 判别 方法学习出的是 判别 模型 。 2. 生成 模型 生成 模型 主要是求解联合概率密度,比如我们有数据集:(C,X),其中(c,x)表示其中一个样本,c为类别,x为特征。那么对于 生成 模型 来说我们需要求解p(x,c)的联合概率密 监督学习的任务就是学习一个 模型 (或者得到一个目标函数),应用这一 模型 ,对给定的输入预测相应的输出。这一 模型 的一般形式为一个决策函数Y=f(X),或者条件概率分布P(Y|X)。 监督学习方法又可以分为 生成 方法(generative approach)和 判别 方法(discriminative approach)。所学到的 模型 分别为 生成 模型 (generative mode...
两者都是进行分类(classification)的 模型 生成 模型 (generative model)通过学习先验分布来推导后验分布而进行分类,而判定 模型 (discriminative model)直接学习后验分布来进行分类。 对于分类 模型 ,一般有三种建模方法: 生成 模型 ,判定 模型 和直接学习决策边界。举例来说,如果信用卡公司需要通过建模学习如何通过个人收入(X)来检测其是否会成为坏账(Y)。一种建模的方法是先学习整体的坏账率(P(Y))以及在坏账与非坏账的群体中,个人收入是如何分布的(P(X|Y))。在学习这两
w1047667241: 真的很烦,哎, 推荐 大家一个 本地 超级好用的,堪比 typora ,不收费 -----》 kodbox 服务器端 。 在线实例: https://demo.kodcloud.com/# 需要 安装 到本地 。 Keras: 评价指标 categorical_accuracy和 sparse_categorical_accuracy supremewzy: 用axis增加一个维度试试