机器学习小问题 -- 生成式模型与判别式模型

本篇博文总结最近学习到的生成式模型与判别式模型的知识。


1. 简介

就像之前在总结分类和聚类时说的一样,机器学习基本在做的事情就是在分类、打标签,我们的模型也就像一个个分类机器(个人看法,欢迎指正)。而这么多的模型,可以分为两类:生成式模型判别式模型。

当我们建立一个分类器以后,当我们丢进去 x 以后,那么我们到底该如何决定它该分到哪一个标签呢,也就是它会抛出的 y 会是多少呢?很自然地,我们会想到使条件概率 p(y|x) 最大的 y 是我们的理想值。说到这里,我们就可以接着简单介绍生成式模型和判别式模型了

判别式模型:按名字,并不严谨地,我们可以理解为它直接判别 y 到底应该为多少。它直接对后验概率 p(y|x) 建模,然后求使得 p(y|x) 最大的 y,从而得到 y 的估计值。

生成式模型:按名字,同样并不严谨地,我们可以理解为它是‘生成’一个分布。因为他是对联合分布 p(x,y) 进行建模处理的。那么生成式模型如何判别到底 y 为多少呢?它是通过对 p(x,y) 运用贝叶斯公式得到 p(y|x) ,然后再求使得 p(y|x) 最大的 y ,从而得到 y 的估计值。具体的公式为:

y^* = \arg\max _{y_i} p(y_i|x)\\ = \arg\max _{y_i} \frac{p(x|y_i)p(y_i)}{p(x)} \\ = \arg\max _{y_i}p(x|y_i)p(y_i) = \arg\max _{y_i}p(x,y_i)

从上面的介绍也可以发现,从生成式模型可以推出判别式模型,但从判别式模型却不能推出生成式模型(二者联系)

也有这么说二者的:判别式模型只形成一个模型,输入 x ,就根据 p(y|x) 的值返回标签;生成式模型则同时形成多个模型,一个类别形成一个模型,然后再每个模型中计算 p(y|x) ,比较后判定 y 的值

2. 常见的生成式模型与判别式模型

                                        生成式模型                                            判别式模型

1.判别式分析

2.朴素贝叶斯

3.K近邻(KNN)

4.混合高斯模型

5.隐马尔科夫模型(HMM)

6.贝叶斯网络

7.Sigmoid Belief Networks

8.马尔科夫随机场(Markov Random Fields)

9.深度信念网络(DBN)

1.线性回归(Linear Regression)

2.逻辑斯蒂回归(Logistic Regression)

3.神经网络(NN)

4.支持向量机(SVM)

5.高斯过程(Gaussian Process)

6.条件随机场(CRF)

7.CART(Classification and Regression Tree)

3. 生成式模型与判别式模型的比较

                                       优点                                   缺点
生成式模型
  1. 对数据量要求低,少量样本也可以做(在假设条件成立时)
  2. 易于收敛、拟合
  3. 可以处理无标签数据
  4. 支持增量学习。添加新的类别后,不需要全部重新训练,只训练p(y_{new},x)的分布就行。
  5. 可以生成 x
  1. 错误率高
  2. 一般对数据分布有假设,这些假设在实际应用通常很难满足
  3. 更易于对x本身进行建模,很难对x的某种变换建模
  4. 学习和计算过程很复杂
判别式模型
  1. 错误率低
  2. 可以对x的某种变换进行建模处理
  3. 对数据本身的分布没有限制
  4. 分类边界更加灵活
  1. 不能反映训练数据本身的特性
  2. 变量之间的关系不清楚,不可视
  3. 拟合较生成式模型差

参考链接:

【1】 判别式模型 vs. 生成式模型

猜你喜欢

转载自blog.csdn.net/August1226/article/details/81388469