本文转自徐飞翔的“生成模型和判别模型的区别”
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
机器学习的目标
首先,我们先要讨论整个机器学习的目标,在应用中最常见到的分类问题中,我们需要根据现有样本预测出其标签 因此我们可以选择学习出条件概率 ,如softmax分类器,logistic回归,亦是或者学习出样本特征到标签的直接映射(比起前者没有概率,而是直接的一个结果),如感知器Perceptron,SVM支持向量机。学习出了条件概率或者是其映射之后,我们就可以根据其样本特征预测其标签了。
生成模型 or 判别模型
这里,我们直接给出两者的定义:
判别模型: 模型直接学习出条件概率 ,模型包括kNN,感知机,决策树,逻辑回归,最大熵模型,SVM,提升方法,条件随机场,神经网络,···
生成模型: 模型学习出联合概率分布,然后根据贝叶斯公式,得出条件概率分布 ,模型包括朴素贝叶斯法、隐马尔科夫模型、混合高斯模型、AODE、Latent Dirichlet allocation(unsup)、Restricted Boltzmann Machine,···
于是,两者的区别就是是否需要学习出联合概率分布 我们这里举一个维基百科里面的例子:
假如我们现在有四个样本:
在判别模型眼中:
而在生成模型眼中:
而在博客《机器学习之判别式模型和生成式模型》中,举了一个很好的例子描述这两者的区别,这里引用如下:
判别模型:要确定一个羊是山羊还是绵羊,用判别模型的方法是从历史数据中学习到模型,然后通过提取这只羊的特征来预测出这只羊是山羊的概率,是绵羊的概率。
生成模型:利用生成模型是根据山羊的特征首先学习出一个山羊的模型,然后根据绵羊的特征学习出一个绵羊的模型,然后从这只羊中提取特征,放到山羊模型中看概率是多少,在放到绵羊模型中看概率是多少,哪个大就是哪个。
Reference
- Generative Model Wikipedia
- 知乎, 机器学习“判定模型”和“生成模型‘有什么区别?
- 机器学习之判别式模型和生成式模型