生成模型和判别模型的区别
前言
** 机器学习中有两种大类的模型,分别是生成模型和判别模型,其分别代表了不同的预测思想,我们这里讨论一下两者的异同。**
如有谬误,请联系指正。转载请注明出处。
联系方式:
e-mail: FesianXu@163.com
QQ: 973926198
github: https://github.com/FesianXu
机器学习的目标
首先,我们先要讨论整个机器学习的目标,在应用中最常见到的分类问题中,我们需要根据现有样本预测出其标签,因此我们可以选择学习出条件概率,如softmax分类器,logistic回归,亦是或者学习出样本特征到标签的直接映射(比起前者没有概率,而是直接的一个结果),如感知器Perceptron,SVM支持向量机。学习出了条件概率或者是其映射之后,我们就可以根据其样本特征预测其标签了。
生成模型 or 判别模型
这里,我们直接给出两者的定义:
判别模型: 模型直接学习出条件概率,模型包括kNN,感知机,决策树,逻辑回归,最大熵模型,SVM,提升方法,条件随机场,神经网络,···
生成模型: 模型学习出联合概率分布,然后根据贝叶斯公式,得出条件概率分布,模型包括朴素贝叶斯法、隐马尔科夫模型、混合高斯模型、AODE、Latent Dirichlet allocation(unsup)、Restricted Boltzmann Machine,···
于是,两者的区别就是是否需要学习出联合概率分布。
我们这里举一个维基百科里面的例子:
假如我们现在有四个样本:
在判别模型眼中:
y=0 | y=1 | |
---|---|---|
x=0 | 1 | 0 |
x=1 | 1/2 | 1/2 |
而在生成模型眼中:
y=0 | y=1 | |
---|---|---|
x=0 | 1/2 | 0 |
x=1 | 1/4 | 1/4 |
而在博客《机器学习之判别式模型和生成式模型》中,举了一个很好的例子描述这两者的区别,这里引用如下:
判别模型:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。
生成模型:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。