产生式模型与判别式模型

建模对象是最大的不同

Posted by Xiaosheng on April 9, 2017

概述

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

具体来说,对于已知变量 $X$ 和未知变量 $Y$:

  • 产生式方法(generative approach)由数据学习到联合概率分布 $P(X,Y)$,然后求出条件概率分布 $P(Y\mid X)$ 作为预测的模型,即产生式模型:

    之所以称为产生式模型,是因为模型表示了给定输入 $X$ 产生输出 $Y$ 的产生关系,产生式模型就是产生数据分布的模型。典型的产生式模型有:朴素贝叶斯法、隐马尔可夫模型、LDA 等。

  • 判别式方法(discriminative approach)由数据直接学到决策函数 $f(X)$ 或条件概率分布 $P(Y\mid X)$ 作为预测的模型,即判别式模型。

    判别式模型关心的是对于给定的输入 $X$,应该预测什么样的输出 $Y$,判别模型就是判别数据输出量的模型。典型的判别式模型包括:$k$近邻法、感知机、决策树、logistic 回归模型、最大熵模型、支持向量机、条件随机场等。

产生式模型与判别式模型各有优缺点:

  • 产生式模型可以还原联合概率分布 $P(X,Y)$,而判别式模型则不能;产生式模型的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快地收敛与真实模型;当存在隐变量时,仍可以学习到产生式模型。
  • 判别式模型直接学习的是条件概率 $P(Y\mid X)$ 或决策函数 $f(X)$,直接面对预测,往往学习的准确率更高;由于直接学习 $P(Y\mid X)$ 或 $f(X)$,可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

注:判别模型是通过一系列处理得到结果,这个结果可能是概率也可能不是,例如决策树是一种判别,但是很明显不是概率。周志华《机器学习》中,将两种模型都归为概率模型是不合适的。

形象的例子

下面我们用一个简单的分类问题来说明。假设我们要区分一只羊是山羊还是绵羊,现在我们通过简单的分析,从这只羊上提取了一些特征。如果使用判别式模型的方法来分类,我们就首先要从历史数据中学习到一个由特征到类别的模型,然后查看这只羊对应的特征值,从而预测出这只羊是山羊、绵羊的概率。而如果使用产生式模型来分类,我们首先要根据训练集中的山羊和绵羊样本,建立起山羊和绵羊的模型,每个模型中都包含着每个特征各自的分布情况,然后我们根据这只羊提取出的特征,把它和山羊、绵羊模型匹配,从而得到属于山羊、绵羊的概率。

对于判别式模型,我们利用训练数据,直接对条件概率 $P(Y\mid X;\theta)$ 建模,例如 logistic 回归就利用$h_\theta(x) = g(\theta^Tx)$ 建模(其中 $g(x)$ 是 sigmoid 函数)。对于给定的特征集合,logistic 回归会试图找到一个决策边界,来区分山羊与绵羊这两类,然后对于新来的样本,回归模型会根据这个新样本的特征来计算这个样本会落在决策边界的哪一边,从而得到相应的分类结果。

对于产生式模型,我们则利用训练数据,对特征 $X$ 和类别 $Y$ 的联合分布 $P(X,Y)$ 建模,然后通过贝叶斯公式来求得 $P(Y_i\mid X)$,最后选取使得 $P(Y_i\mid X)$ 最大的 $Y_i$,即:

$P(X\mid Y)$ 就是我们通常所说的似然函数,问题由已知特征下要求类别的概率转变为了已知类别下要求特征出现的概率,因而我们常说似然函数是产生式模型的基石。

最后再说一点

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

参考

李航《统计学习方法》
JerryLead《判别模型、生成模型与朴素贝叶斯方法》
博临天下《机器学习–判别式模型与生成式模型》
稚枭天卓《机器学习 之 生成式模型 VS 判别式模型》

​ ​ ​