产生式模型和判别式模型区分

近来看到贝叶斯分类器,其中有一个知识点提及产生式模型和判别式模型,查阅了一番资料终于理解透彻了,特此记录。

产生式模型和判别式模型区分

二者是分类器中常遇到的概念,产生式模型估计它们的联合概率分布P(x,y),判别式模型估计条件概率分布P(y|x)。

判别式模型常见的主要有:
Logistic Regression

SVM

Traditional Neural Networks

Nearest Neighbor

CRF

Linear Discriminant Analysis

Boosting

Linear Regression

产生式模型常见的主要有:

Gaussians

Naive Bayes

Mixtures of Multinomials

Mixtures of Gaussians

Mixtures of Experts

HMMs

Sigmoidal Belief Networks, Bayesian Networks

Markov Random Fields

Latent Dirichlet Allocation
产生式模型和判别式模型区分_第1张图片

以上就是从理念上对二者进行划分,但对于不少读者而言应该还是像我一样摸不着头脑,因此我们用一个通俗的例子来进一步讲解二者。

二者的区别主要就是由于一个是联合概率分布P(x,y),另一个估计条件概率分布P(y|x),而产生式模型能够根据贝叶斯公式得到判别式模型也是根据公式而来。

联合概率分布,则是特征值对应某标签的概率,现在要判断一个特征值对应的标签,根据联合概率,只能算出其对应各标签的概率值,而只有通过比较全部的值才能知道属于哪个标签;而条件概率分布则是输入特征直接出来对应的标签值。

判别式模型,就是只有一个模型,你把测试用例往里面一丢,label就出来了,如SVM。生成式模型,有多个模型(一般有多少类就有多少个),你得把测试用例分别丢到各个模型里面,最后比较其结果,选择最优的作为label。

接下来再看实例
判别式模型举例:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型(!!学习到一个羊分类模型,输入羊特征能够划分各种羊),然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。

理解不了为什么会直接输出一个对应的类别值,可以看决策树实例,输入特征值就会返回一个唯一的分类结果。

生成式模型举例:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型(与判别式不同的是会生成多个羊类分类器),然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。

细细品味上面的例子,判别式模型是根据一只羊的特征可以直接给出这只羊的概率(比如logistic regression,这概率大于0.5时则为正例,否则为反例),而生成式模型是要都试一试,最大的概率的那个就是最后结果~

二者的优缺点对比

产生式模型和判别式模型区分_第2张图片

  1. 一般来说, 生成式模型都会对数据的分布做一定的假设, 比如朴素贝叶斯会假设在给定的情况下各个特征之间是条件独立的:, GDA会假设

. 当数据满足这些假设时, 生成式模型通常需要较少的数据就能取得不错的效果, 但是当这些假设不成立时, 判别式模型会得到更好的效果.

  1. 生成式模型最终得到的错误率会比判别式模型高, 但是其需要更少的训练样本就可以使错误率收敛[限于Genarative-Discriminative Pair, 详见[2]].

  2. 生成式模型更容易拟合, 比如在朴素贝叶斯中只需要计下数就可以, 而判别式模型通常都需要解决凸优化问题.

  3. 当添加新的类别时, 生成式模型不需要全部重新训练, 只需要计算新的类别和的联合分布即可, 而判别式模型则需要全部重新训练.

  4. 生成式模型可以更好地利用无标签数据(比如DBN), 而判别式模型不可以.

  5. 生成式模型可以生成, 因为判别式模型是对进行建模, 这点在DBN的CD算法中中也有体现, 而判别式模型不可以生成.

  6. 判别式模型可以对输入数据进行预处理, 使用来代替, 如下图所示, 而生成式模型不是很方便进行替换.

你可能感兴趣的:(机器学习)