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