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

来源:互联网 发布:ubuntu vim 配置 编辑:程序博客网 时间:2024/05/16 01:14

原文来自http://blog.sciencenet.cn/home.php?mod=space&uid=248173&do=blog&id=227964。

机器学习中的模型一般分为两类:判别模型、生成模型,这是对问题的两种不同的审视角度。

假设我们要学习一个算法区分大象和狗(假设输入是重量、鼻子长度等特征)。判别模型和生成模型以两种不同的思路解决这个问题:

判别模型:根据训练集,找到一个两种动物的一个差别(决策边界),然后根据输入的特征(比如重量,鼻子长度等)看这个特种落在决策边界的哪一边

生成模型:根据大象的特征,学习一个大象的模型(总结一个大象长什么样的规律),然后也学习一个狗的模型,为了分类一个新的物种,我们看这个物种和哪个模型更加匹配

形式化的描述两种模型

  • 判别模型(Discriminative Model)

直接学习的是条件概率p(y|x) (或者输入X和label{0,1}的一种映射关系),利用正负例和分类标签,关注在判别模型的边缘分布。更多用来直接解决给定的问题,而不侧重于建模。建模的目标是                                            

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

优点是:

          分类边界更灵活,比使用纯概率方法或生产模型得到的更高级

能清晰的分辨出多类或某一类与其他类之间的差异特征

在聚类、viewpoint changes, partial occlusion and scale variations中的效果较好

适用于较多类别的识别

判别模型的性能比生成模型要简单,比较容易学习

缺点是:

          不能反映训练数据本身的特性,能力有限,可以告诉你的是1还是2,但没办法把整个场景描述出来

形式和结构上不如生成式模型优雅

类似于黑盒,变量之间的关系不明确

常见判别模型:逻辑回归,svm,传统的神经网络,Nearest Neighbor,GRF(条件随机场),LDA(线性判别分析),Boosting, 线性回归

  • 生成模型(Generative Model)

学习的是联合概率p(x,y), 由于p(x,y) = p(x|y)*p(y), 即我们需要学习的是p(x|y)和p(y), 就上面给的例子,如果y表示一个动物是狗(y=0)或者大象(y=1),那么p(x|y=0)对狗的特征进行建模,p(x|y=1)是对大象的特征进行建模,p(y)可以假设其服从伯努利分布(因为y只有0,1两种取值)。建模目标如下:


上面的式子之所以可以忽略p(x),因为对训练集的输入x来说p(x)是一个常量  

模型训练好以后对于输入的x,我们可以根据一下贝叶斯公式来计算P(y|x), 然后看p(y=0|x)和p(y=1|x)哪个较大,就划分给那一类

(即生成模型和判别模型的最终目标都是p(y|x),只不过生成模型的目标转换成了另一种形式)

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

优点:

实际上带的信息要比判别模型丰富,有更强的解释力

研究单类问题比判别模型灵活性强

模型可以通过增量学习得到

能用于数据不完整的情况

缺点:

学习和计算过程比较复杂

常见生成模型:GDA(高斯判别分析),朴素贝叶斯,贝叶斯网络,Mixtures of Multinomials,高斯混合模型,Mixtures of Experts,隐马尔科夫模型,Sigmoidal Belief Networks,马尔科夫随机场,LDA(潜在狄立克雷分配)



0 0
原创粉丝点击