首页 > 判定模型与生成模型的区别

判定模型与生成模型的区别

希望能生动形象地指出两者的区别。


最基本的区别就是建模对象不同, 但目的都是求出P(Y|X)

判别模型Discriminative Model:
直接对P(Y|X)进行建模,   判别模型不考虑如何生成 X 和 Y 的联合事件, 比如 SVM 只考虑把点分开而已, 鲁棒性比较强, 但需要更多的训练数据.
生成模型 Generative Model:
利用贝叶斯公式, 先对P(X|Y)进行建模, 然后利用训练集中的 P(Y) 求出联合**概率分布 P(X,Y)**, 最后除以X的概率分布P(X)得出我们的目标(P(Y|X)). 最常见的例子朴素贝叶斯. 生成模型需要做出更多的假设, 因此适用于数据较少的情况下, 但鲁棒性不强, 因为假设错了就效果很差了.

给一个栗子, 外星人来地球拿了一个数据集包含了地球人的身体特征, 标签有2类:男和女. 如果训练数据集只有1%是数据是男性, 而99%是女性. 那么外星人科学家就有可能认为给定随机一个人类, 该人类是女性的P(y=female)概率是99%, 按照这个假设去做生成模型就会很不给力, 但判别模型就没有这个问题.


我感觉可以直接从名字上看。

所谓判别模型(Discriminative Model),也就是说模型可以直接用来判别事物的。这里所说的判别事物,最典型的就是做分类,当然还有做序列标注。既然直接可以用来分类,也就是说我们可以在已知属性的条件下,对该记录进行判断。所以,判别模型是对条件概率进行的建模,也就是p(Y|X)。这里X就是属性集合,实际上就是一个向量;而Y则可能是一个值(此时对应分类问题), 可能是一个向量(此时对应序列标注问题)。针对分类问题,最典型的判别模型就属logistic regression了;而序列标注问题的典型判别模型则是CRF(条件随机场)

下面说一说生成模型(Generative Model)。生成模型说的是,这个模型可以描述数据的生成过程。换句话说,已知了这个模型,我们就可以产生该模型描述的数据。而数据由两部分组成,也就是(X,Y),前者是特征,后者则是类别(Y是标量)或者序列类别(Y是向量)。要描述整个数据,也就是要对p(X,Y)进行建模,所以是对联合概率进行建模。有了联合概率,我们就可以模拟产生数据样本了。生成模型本身不是做分类或者序列标注的,但是可以用来解决这些问题。最典型的使用生成模型解决分类的模型要数naive bayes了,它是对p(X,Y)进行的建模的。

要分类,就要计算p(Y|X),所以使用贝叶斯定理做转换,变成p(X,Y)/p(X)。然后p(X)看成常数,实际上该模型最终还是归结到计算P(X,Y)上去了。类似的,在序列标注问题中,使用的最著名的生成模型就是HMM了。本质上和naive bayes是一样的,不过Y变成多维的了。

看待生成模型,思路不要局限在分类(或者是序列标注)上面。前面说到,生成模型是可以用来描述数据产生的过程的(这一点跟判别模型很不一样!)。虽然naive bayesHMM用在标注(分类或者序列标注)上,但还有很多很多的生成模型不是这样的用途,最典型的就是著名的LDA了(以及一大坨的概率图模型(PGM)),它描述了文档集合数据的产生过程,可以用来做unsupervised learning

小结:判别模型是对条件概率建模,生成模型是对联合概率建模。判别模型一般就是直接解决分类或者序列标注问题(毕竟就是用来判定类别的嘛),而生成模型用来描述数据的产生过程,但某些判别模型通过一些变化,是可以用来解决分类(或者序列标注)问题的。

【热门文章】
【热门文章】