机器学习中 生成式模型 VS 判别式模型

1. 前言

判别式模型:只有一个模型,把测试数据往里一丢,结果就出来了。如 SVM

生成式模型:有多个模型(一般有多少类就有多少个),把测试数据丢到各个模型里面,最后比较结果,选择最优的最为结果。如 朴素贝叶斯。

2.基本概念

判别模型,就是判别(数据输出量)的模型。

生成模型,就是生成(数据的分布)的模型。

2. 适用环境

从结果角度看,两种模型都能给出输出量(labley 等)

但生成模型的处理过程会告你关于数据的一些统计信息(p(x|y) 分布等),更接近统计学。

判别模型是通过一系列处理得到结果,这个结果可能是概率或者不是,这个并不改变他是不是判别的。

3.具体模型

生成式模型:

  • 朴素贝叶斯
  • K近邻(KNN
  • 混合高斯模型
  • 隐马尔可夫模型(HMM
  • 贝叶斯网络
  • Sigmoid Belief Networks
  • 马尔科夫随机场(Markov Random Fields
  • 深度信念网络(DBN

判别模型:

  • 线性回归
  • 逻辑回归
  • 神经网络(NN
  • 支持向量机(SVM
  • 高斯过程(Gaussian Process
  • 条件随机场(CRF
  • CART(Classification and Regression Tree)

4.模型范例

假设现在一个分类问题,X是特征,y是标记。用生成模型学习一个联合概率分布P(X, y),而用判别模型学习一个条件概率分布P(y|X)

用一个简单例子,假设X就是两个(1或2),y有两类(0或1),有如下样本(1,0)、(1,0)、(1,1)、(1,2)

则联合概率分布(生成模型):

  0 1
1 1/2 1/4
2 0 1/4

而条件概率分布(判别模型):

  0 1
1 2/3 1/3
2 0 1

在实际分类问题中,判别模型可以直接用来判断特征的类别情况,而生成模型,需要加上贝耶斯法则,然后应用到分类中。但是,生成模型的概率分布可以还有其他应用,就是说生成模型更一般更普适。不过判别模型更直接,更简单。两种方法目前交叉较多。由生成式模型可以得到判别式模型,但由判别式模型得不到生成式模型。

来自:忘了 

原文地址:https://www.cnblogs.com/keye/p/14671285.html