机器学习中的生成式模型VS判别式模型,分类,特点

提示:
本文将从生成式模型与判别式模型的概念,
适用环境
具体模型
三个方面分析比较这两个模型,
并在最后对列出模型范例,进行范例比较。

基础知识:
【1】机器学习面试题——支持向量机SVM
【2】机器学习面试题——朴素贝叶斯

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


判别式模型

判别式模型,就是只有一个模型,你把测试用例往里面一丢,label就出来了,如SVM。
看下文:【1】机器学习面试题——支持向量机SVM
用判别模型学习一个条件概率分布P(y|x)
给定你一个数据x,让你判别它是y类的概率

生成式模型

生成式模型,有多个模型(一般有多少类就有多少个),你得把测试用例分别丢到各个模型里面,最后比较其结果,选择最优的作为label,如朴素贝叶斯。
看下文【2】机器学习面试题——朴素贝叶斯
用生成模型学习一个联合概率分布P(x,y)
给定你数据x,类别y,求xy联合概率分布

可以通过生成式模型求判别式模型
但反过来就不行

【基本概念】

生成模型,就是**生成(数据的分布)的模型;
判别模型,就是
判别(数据输出量)**的模型。

【适用环境】

更进一步,从结果角度,两种模型都能给你 输出量(label 或 y etc.)。
但,生成模型的处理过程会告诉你关于数据的一些统计信息(p(x|y) 分布 etc.),更接近于统计学;
判别模型则是通过一系列处理得到结果,这个结果可能是概率的或不是,这个并不改变他是不是判别的。
如,决策树的 if then 说不是这个就是那个(而很多属性都是有分布的),明显是一种 判别嘛;
而朴素贝叶斯说,p( cancer , fat ) = x% etc.,模型 生成 了一个分布给你了,即使你没意识到/没用到,只用到 p( cancer | fat ) = y% 这个最终的判别。

【具体模型】

更进一步,可以再理解一下:

生成式模型

生成式模型包括HMM(隐马尔可夫模型),GMM(高斯混合模型),LDA(线性判别模型),朴素贝叶斯模型

朴素贝叶斯
K近邻(KNN)(分类算法)
混合高斯模型
隐马尔科夫模型(HMM)
贝叶斯网络
Sigmoid Belief Networks
马尔科夫随机场(Markov Random Fields)
深度信念网络(DBN)

判别式模型

线性回归(Linear Regression)【LR】
逻辑斯蒂回归(Logistic Regression)【LR】
神经网络(NN)【NN】
支持向量机(SVM)【SVM】
高斯过程(Gaussian Process)【高斯】
条件随机场(CRF)
CART(Classification and Regression Tree)

【模型范例】

假设你现在有一个分类问题,x是特征,y是类标记。

用生成模型学习一个联合概率分布P(x,y)
而用判别模型学习一个条件概率分布P(y|x)

用一个简单的例子来说明这个这个问题。
假设x就是两个(1或2),y有两类(0或1),有如下如下样本(1,0)、(1,0)、(1,1)、(2,1)
则 学习到的联合概率分布(生成模型)如下:
0 1
1 1/2 1/4
2 0 1/4

而学习到的条件概率分布(判别模型)如下:
0 1
1 2/3 1/3
2 0 1

在实际分类问题中,判别模型可以直接用来判断特征的类别情况,
而生成模型,需要加上贝耶斯法则,然后应用到分类中。

但是,生成模型的概率分布可以还有其他应用,就是说生成模型更一般更普适
不过判别模型更直接,更简单

两种方法目前交叉较多。
由生成式模型可以得到判别式模型,但由判别式模型得不到生成式模型。


总结

提示:重要经验:

1)典型的生成式模型:朴素贝叶斯,K近邻(KNN),判别式;神经网络(NN),SVM等
2)由生成式模型可以得到判别式模型,但由判别式模型得不到生成式模型。
3)笔试求AC,可以不考虑空间复杂度,但是面试既要考虑时间复杂度最优,也要考虑空间复杂度最优。

更多推荐