机器学习---生成模型与判别模型

生成模型(Generative Model)是相对于判别模型(Discriminative Model)定义的。他们两个都用于有监督学习。监督学习的任务就是从数据中学习一个模型(也叫分类器),应用这一模型,对给定的输入X预测相应的输出Y。这个模型的一般形式为决策函数Y=f(X)或者条件概率分布P(Y|X)。

首先 简单说明下贝叶斯定理

贝叶斯定理是英国数学家贝叶斯提出来的。用来描述两个条件概率之间的关系。若记P(A)、P(B)分别表示事件A和事件B发生的概率,则:

P(A|B):表示事件B发生的情况下 事件A发生的概率

P(AB):表示事件A和事件B同时发生的概率

按照乘法法则: 

可以立刻导出

如上公式也可变形为:

在上式中,我们把P(A)称为‘先验概率’,即在事件B发生之前 我们对事件A发生的概率做一个判断

P(A|B)称为‘后验概率’,即在事件B发生后,我们对事件A的概率重新做评估

P(B|A)/P(B)称为‘可能性函数’,这是一个调整因子,使得预估概率更接近真实概率。

在机器学习中

决策函数Y=f(X):你输入一个X,它就输出一个Y,这个Y与一个阈值比较,根据比较结果判定X属于哪个类别。例如两类(w1和w2)分类问题,如果Y大于阈值,X就属于类w1,如果小于阈值就属于类w2。这样就得到了该X对应的类别了。

条件概率分布P(Y|X):你输入一个X,它通过比较它属于所有类的概率,然后输出概率最大的那个作为该X对应的类别。例如:如果P(w1|X)大于P(w2|X),那么我们就认为X是属于w1类的。

生成模型估计的是联合概率分布(joint probability distribution),p(y, x)=p(y|x)*p(x),由数据学习联合概率密度分布P(X,Y),然后求出条件概率分布P(Y|X)作为预测的模型,即生成模型:P(Y|X)= P(X,Y)/ P(X)。基本思想是首先建立样本的联合概率概率密度模型P(X,Y),然后再得到后验概率P(Y|X),再利用它进行分类。生成方法关心的是给定输入x产生输出y的生成关系。

判别模型估计的是条件概率分布(conditional distribution), p(y|x),是给定观测变量x和目标变量y的条件模型。由数据直接学习决策函数y=f(X)或者条件概率分布P(y|x)作为预测的模型。判别方法关心的是对于给定的输入X,应该预测什么样的输出Y。

例如:比如说要确定一只羊是山羊还是绵羊,用判别模型的方法是先从历史数据中学习到模型,然后通过提取这只羊的特征x来预测出这只羊f(X)是山羊的概率,是绵羊的概率。用生成模型的方法是我们可以根据山羊的特征首先学习出一个山羊模型,然后根据绵羊的特征学习出一个绵羊模型。然后从这只羊中提取特征,放到山羊模型P(w1|X)中看概率是多少,再放到绵羊模型P(w2|X)中看概率是多少,如果P(w1|X)>P(w2|X),那么我们就认为X是属于w1类,即该羊属于山羊。

再例如:比如说你的任务是识别一个语音属于哪种语言。例如对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的:用生成模型的方法是学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说话,你就可以知道他的语言对应什么语言;用判别模型的方法是不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。

生成模型的特点:一般主要是对后验概率建模,从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。只关注自己的inclass本身,不关心到底 decision boundary在哪。

- 优点:
    实际上带的信息要比判别模型丰富,
    研究单类问题比判别模型灵活性强
    模型可以通过增量学习得到
    能用于数据不完整(missing data)情况
    modular construction of composed solutions to complex problems
    prior knowledge can be easily taken into account
    robust to partial occlusion and viewpoint changes
    can tolerate significant intra-class variation of object appearance

- 缺点:
    tend to produce a significant number of false positives. This is particularly true for object classes which share a high visual similarity such as horses and cows
    学习和计算过程比较复杂

判别模型的特点:判别模型是寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。

- 优点:
    分类边界更灵活,比使用纯概率方法或生产模型得到的更高级。
    能清晰的分辨出多类或某一类与其他类之间的差异特征
    在聚类、viewpoint changes, partial occlusion and scale variations中的效果较好
    适用于较多类别的识别
    判别模型的性能比生成模型要简单,比较容易学习

- 缺点:
    不能反映训练数据本身的特性。能力有限,可以告诉你的是1还是2,但没有办法把整个场景描述出来。
    Lack elegance of generative: Priors, 结构, 不确定性
    Alternative notions of penalty functions, regularization, 核函数
    黑盒操作: 变量间的关系不清楚,不可视    

两者之间的关系:由生成模型可以得到判别模型,但由判别模型得不到生成模型。

当存在隐变量(当我们找不到引起某一现象的原因的时候,我们就把这个在起作用,但是,无法确定的因素,叫“隐变量”) 时,仍可以利用生成方法学习,此时判别方法不能用。

典型应用:

生成模型:朴素贝叶斯方法、隐马尔可夫模型

判别模型:k近邻法、感知机、决策树、逻辑斯谛回归模型、最大熵模型、支持向量机、提升方法、条件随机场

来源:CSDN,作者:吃不胖的卷卷
原文:https://blog.csdn.net/u012101561/article/details/52814571
版权声明:本文为博主原创文章,转载请附上博文链接!

推荐阅读