当前位置:   article > 正文

机器学习系列-生成模型和判别模型

机器学习系列-生成模型和判别模型

前言

监督学习模型可以分为生成模型(generative model)和判别模型(discriminative model)

1.生成模型和判别模型

判别模型由数据直接学习决策函数 f ( x ) f(x) f(x)或者条件概率分布 P ( y ∣ x ) P(y|x) P(yx)作为预测的模型,即判别模型。判别方法关心的是对给定输入 x,应该预测什么样的输出 y。
比如说要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,还是绵羊的概率。

生成模型由数据学习输入和输出联合概率分布 P ( x , y ) P(x,y) P(x,y),然后求出后验概率分布 P ( y ∣ x ) P(y|x) P(yx)作为预测的模型,即生成模型。这里以朴素贝叶斯为例,我们要求的目标可以通过:
P ( x , y ) = P ( x ∣ y ) P ( y ) P(x,y) = P(x|y)P(y) P(x,y)=P(xy)P(y)
求出输入输出的联合概率分布,然后通过贝叶斯公式:
P ( y ∣ x ) = P ( x ∣ y ) P ( y ) P ( x ) P(y|x) = \frac {P(x|y)P(y)}{P(x)} P(yx)=P(x)P(xy)P(y)
求出后验概率分布。

对于上面的例子我们换种思路,我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。
然后从这只羊中提取特征,放到山羊模型中看概率是多少,再放到绵羊模型中看概率是多少,哪个大就是哪个。
由于我们关注的是 y 的离散值结果中哪个概率大(比如山羊概率和绵羊概率哪个大),而并不是关心具体的概率,因此上式改写为:
a r g m a x y P ( y ∣ x ) = a r g m a x y P ( x ∣ y ) P ( y ) P ( x ) = a r g m a x y P ( x ∣ y ) P ( y ) arg max_y P(y|x) = arg max_y \frac {P(x|y)P(y)}{P(x)} = arg max_y P(x|y)P(y) argmaxyP(yx)=argmaxyP(x)P(xy)P(y)=argmaxyP(xy)P(y)
其中 P ( x ∣ y ) P(x|y) P(xy)称为条件概率(class-conditional probability),或称为“似然”(likelihood), P ( y ) P(y) P(y)称为先验(prior)概率。
P ( x ) P(x) P(x)是用于归一化的"证据"因子。对于给定样本 x,证据因子 P ( x ) P(x) P(x) 与类标记无关,因此估计 P ( y ∣ x ) P(y|x) P(yx)的问题就转化为如何基于训练数据来估计先验 P ( y ) P(y) P(y)和似然 P ( x ∣ y ) P(x|y) P(xy)

不管是生成式模型还是判别式模型,它们最终的判断依据都是条件概率,但是生成式模型先计算了联合概率,再由贝叶斯公式计算得到条件概率。因此,生成式模型可以体现更多数据本身的分布信息,其普适性更广。

举个例子:

假设现在有一个分类问题,X是特征,Y是类标记。用判别式模型学习一个条件概率分布 P ( Y ∣ X ) P(Y|X) P(YX),用生成式模型学习一个联合概率分布 P ( x , y ) P(x,y) P(x,y)。用一个简单的例子来说明这个问题。假设X有两个取值(1或2),Y有两类(0或1),有如下训练样本(1,0)、(1,0)、(1,1)、(2,1)。

则学习到的条件概率分布(判别式模型)如下:
P ( y = 0 ∣ x = 1 ) = 2 3 P(y=0|x=1) = \frac{2}{3} P(y=0∣x=1)=32

而学习到的联合概率分布(生成式模型)如下:

  1. 计算特征 X X X的频率分布:
    P ( x = 1 ) = 3 4 P(x=1)=\frac {3}{4} P(x=1)=43
    P ( x = 2 ) = 1 4 P(x=2)=\frac {1}{4} P(x=2)=41
  2. 计算标签 Y Y Y的频率分布:
    P ( y = 0 ) = 2 4 P(y=0)=\frac {2}{4} P(y=0)=42
    P ( y = 1 ) = 2 4 P(y=1)=\frac {2}{4} P(y=1)=42

P ( x = 1 , y = 0 ) = P ( x = 1 ∣ y = 0 ) P ( y = 0 ) = 1 ∗ 1 2 = 1 2 P(x=1,y=0) = {P(x=1|y=0)P(y=0)} = 1 * \frac {1}{2} = \frac {1}{2} P(x=1,y=0)=P(x=1∣y=0)P(y=0)=121=21
P ( x = 2 , y = 0 ) = P ( x = 2 ∣ y = 0 ) P ( y = 0 ) = 0 ∗ 1 2 = 0 P(x=2,y=0) = {P(x=2|y=0)P(y=0)} = 0 * \frac {1}{2} = 0 P(x=2,y=0)=P(x=2∣y=0)P(y=0)=021=0
P ( x = 1 , y = 1 ) = P ( x = 1 ∣ y = 1 ) P ( y = 1 ) = 1 2 ∗ 1 2 = 1 4 P(x=1,y=1) = {P(x=1|y=1)P(y=1)} = \frac {1}{2} * \frac {1}{2} = \frac {1}{4} P(x=1,y=1)=P(x=1∣y=1)P(y=1)=2121=41
P ( x = 2 , y = 1 ) = P ( x = 2 ∣ y = 1 ) P ( y = 1 ) = 1 2 ∗ 1 2 = 1 4 P(x=2,y=1) = {P(x=2|y=1)P(y=1)} = \frac {1}{2} * \frac {1}{2} = \frac {1}{4} P(x=2,y=1)=P(x=2∣y=1)P(y=1)=2121=41

在实际分类问题中,判别式模型可以直接用来判断特征的类别情况;而生成式模型需要加上贝叶斯公式
P ( y = 0 ∣ x = 1 ) = P ( x = 1 , y = 0 ) / P ( x = 1 ) = 1 2 / 3 4 = 2 3 P(y=0|x=1)=P(x=1,y=0)/P(x=1)=\frac {1}{2} / \frac {3}{4}= \frac {2}{3} P(y=0∣x=1)=P(x=1,y=0)/P(x=1)=21/43=32
然后应用到分类中。但是,生成式模型的概率分布可以有其他应用,就是说生成式模型更一般更普适。不过判别式模型更直接,更简单。两种方法目前交叉较多。由生成式模型可以得到判别式模型,但由判别式模型得不到生成式模型。

2.常见的生成模型和判别模型

常见的判别模型有

  • 线性回归
  • 逻辑回归
  • 线性判别分析(Linear Discriminant Analysis,LDA)
  • 支持向量机(SVM)
  • K最近邻(KNN)
  • 条件随机场(CRF)
  • 神经网络
  • 区分度训练

常见的生成模型有

  • 隐马尔科夫模型(HMM)
  • 马尔科夫随机场(Markov Random Fields)
  • 朴素贝叶斯模型(Naive Bayes)
  • 高斯混合模型(Gaussian Mixture Model,GMM)
  • 狄利克雷分布模型(Latent Dirichlet Allocation,LDA)
  • 受限玻尔兹曼机(Restricted Boltzmann Machine)
  • 深度信念网络(DBN)

3.判别式模型和生成式模型的优缺点

  • 判别式模型是在寻找一个决策边界,通过该边界来将样本划分到对应类别。
  • 生成式模型则不同,它学习了每个类别的边界,包含了更多信息,可以用来生成样本。
优点缺点
判别式模型1、对条件概率建模,学习不同类别之间的最优边界,预测时拥有较好性能。
2、学习成本较低,需要的计算资源较少。
3、需要的样本数可以较少,少样本也能很好学习。
1、捕捉不同类别特征的差异信息,不学习本身分布信息,无法反应数据本身特性。
2、无法转换成生成式。
生成式模型1、对联合概率建模,学习所有分类数据的分布,因此学习到的数据本身信息更多,能反应数据本身特性。
2、一定条件下能转换成判别式。
1、推断时性能较差。
2、学习成本较高,需要更多的计算资源。
3、需要的样本数更多,样本较少时学习效果较差。

ps:生成式模型的学习收敛速度更快,当样本容量增加时,学习到的模型可以更快的收敛到真实模型,当存在隐变量时,依旧可以用生成式模型,此时判别式方法就不行了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/153374
推荐阅读
相关标签
  

闽ICP备14008679号