生成式分类器 VS 判别式分类器

生成式分类器和判别式是根据两种不同的设计方法而得到的,即利用生成模型设计了生成式分类器,用判别模型设计了判别式分类器。

一、生成模型的方法

1.1 生成方法

  • 由数据学习联合概率分布 P(D,H)
  • 求出条件概率 P(H|D) 作为预测模型,即生成模型
  • 根据后验概率 P(H|D) 进行分类

这里H可以认为是hypothesis,即预测,也是类别;D为data,即数据; P(H|D) 即有一个新的data的时候,应该预测为什么类别。

1.2 生成方法的特点

  • 由于是学习了联合概率分布P(D,H),可以从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。(反映H1中D1和D2的相似度也就是计算 P(D1|H1)P(D2|H1) )但它不关心到底划分各类的那个分类边界在哪

  • 生成方法可以还原出联合概率分布P(Y|X),而判别方法不能。

  • 生成方法的学习收敛速度更快,即当样本容量增加的时候,学到的模型可以更快的收敛于真实模型。

  • 生成模型能够应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。

缺点:

1)天下没有免费午餐,联合分布是能提供更多的信息,但也需要更多的样本和更多计算,尤其是为了更准确估计类别条件分布,需要增加样本的数目,而且类别条件概率的许多信息是我们做分类用不到,因而如果我们只需要做分类任务,就浪费了计算资源。

2)另外,实践中多数情况下判别模型效果更好。

典型的生成模型有:朴素贝叶斯和隐马尔科夫模型等。

Naive Bayes
Mixtures of Gaussians
Hidden Markov Models
Bayesian Networks
Deep Belief Network

1.3 举个栗子

下面是一个用朴素贝叶斯进行疾病分类的例子

某个医院早上收了六个门诊病人,如下表。

症状职业疾病
打喷嚏护士感冒
打喷嚏农夫过敏
头痛建筑工人脑震荡
头痛建筑工人感冒
打喷嚏教师感冒
头痛教师脑震荡

现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?
根据贝叶斯定理, P(H|D)=P(D|H)P(H)P(D) ,可以得到:

可以看出分子其实就是联合概率分布

假定”打喷嚏”和”建筑工人”这两个特征是独立的,因此,上面的等式就变成了:

P(|×)=P(|)×P(|)×P()P()×P()

所以:  P(感冒|打喷嚏x建筑工人)
    = 0.66 x 0.33 x 0.5 / 0.5 x 0.33
    = 0.66
    
因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。

二、判别模型的方法

2.1 判别方法

  • 直接学习决策函数 H=f(D) 或者条件概率分布 P(H|D) ,本思想是有限样本条件下建立判别函数,不考虑样本的产生模型,直接研究预测模型。

  • 判别模型求解的思路是:条件分布——>模型参数后验概率最大——->(似然函数·参数先验)最大——->最大似然

2.2 判别方法的特点

  • 直接学习决策函数 H=f(D) 或者条件概率分布 P(H|D) ,不能反映数据本身。
  • 它寻找不同类别之间的最优分类面,反映的是异类数据之间的差异。直接面对预测,往往学习的准确率更高。

  • 直接学习P(Y|X)或f(X),可以对数据进行各种程度上的抽象、定义特征并使用特征,因此可以简化学习问题。

缺点
就是没有生成模型的那些优点

典型的判别模型有:k近邻,感知机,决策树,支持向量机等。
Linear & Logistic Regression
Support Vector Machine
Nearest Neighbor
Conditional Random Fields
Boosting

2.3 还是上面那个栗子

还是上面的病人的例子,如果我们用判别方法的逻辑回归,应该怎么做呢?

为了简化问题,我们暂时去掉患过敏的那个病历,这样就变成了一个二分类问题

我们是根据Sigmoid函数(sigmoid function): g(z)=11+ez 来求我们的预测函数:

hθ(x)=g(θTx)=11+eθTx

这里写图片描述

最终得到分类曲线,也就是一个函数边界来区分疾病类型。

三、生成方法和判别方法的区别

从前面所说的特点中也可以容易的看出生成方法和判别方法的区别,这里再做一下总结:

这里写图片描述

  • 生成模型学习联合概率分布p(D,H),而判别模型学习条件概率分布p(H|D)。
  • 由生成模型可以得到判别模型,但由判别模型得不到生成模型
  • 生成算法尝试去找到底这个数据是怎么生成的(产生的),然后再对一个信号进行分类。判别模型不关心数据是怎么生成的,它只关心信号之间的差别,然后用差别来简单对给定的一个信号进行分类。

参考文献:
http://www.cnblogs.com/z-sm/p/5106243.html#autoid-0-1-0
https://www.zhihu.com/question/20446337
http://www.ruanyifeng.com/blog/2013/12/naive_bayes_classifier.html

  • 11
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值