从贝叶斯的角度
判别模型估计的是条件概率分布(后验概率),p(y | x)
生成模型估计的是联合概率分布 p(y, x) = p(y | x) * p(x)
从模型建立的角度
判别模型是直接用决策模型做类别区分/计算概率。
生成模型是首先学习出一个模型,即首先建立样本的联合概率概率密度模型P(X,Y),再得到后验概率P(Y|X),再利用它进行分类。
从数据inter-class和intra-class的角度
判别模型关注数据类别间(inter-class)的特点,寻找不同类别之间的分类面(decision boundary),反映的是异类数据之间的差异。
生成模型关注数据类别内(intra-class)的特点,从统计的角度表示数据的分布情况,能够反映同类数据本身的相似度。
一个形象的例子
例如对面一个人走过来,和你说了一句话,你需要识别出她说的到底是汉语、英语还是法语等。那么你可以有两种方法达到这个目的:用生成模型的方法是学习每一种语言,你花了大量精力把汉语、英语和法语等都学会了,我指的学会是你知道什么样的语音对应什么样的语言。然后再有人过来对你说话,你就可以知道他的语言对应什么语言;用判别模型的方法是不去学习每一种语言,你只学习这些语言模型之间的差别,然后再分类。意思是指我学会了汉语和英语等语言的发音是有差别的,我学会这种差别就好了。
两者的关系
由生成模型可以得到判别模型,但由判别模型得不到生成模型。(生成模型带的信息一般要比判别模型丰富)
常见算法举例
判别模型:K 近邻、感知机(神经网络)、决策树、逻辑斯蒂回归、最大熵模型、SVM、提升方法、条件随机场
生成模型:朴素贝叶斯、隐马尔可夫模型、混合高斯模型、贝叶斯网络、马尔可夫随机场
优缺点比较
见参考
参考:
https://blog.csdn.net/u012101561/article/details/52814571