判别式模型与生成式模型的区别
产生式模型(Generative Model)与判别式模型(Discrimitive Model)是分类器常遇到的概念,它们的区别在于:
对于输入x,类别标签y:
产生式模型估计它们的联合概率分布P(x,y)
判别式模型估计条件概率分布P(y|x)
产生式模型可以根据贝叶斯公式得到判别式模型,但反过来不行。
Andrew Ng在NIPS2001年有一篇专门比较判别模型和产生式模型的文章:
On Discrimitive vs. Generative classifiers: A comparision of logistic regression and naive Bayes
(http://robotics.stanford.edu/~ang/papers/nips01-discriminativegenerative.pdf)
判别式模型常见的主要有:
Logistic Regression | 逻辑回归 |
SVM | 支持向量机 |
Traditional Neural Networks | 传统神经网络 |
Nearest Neighbor | KNN算法 |
CRF | 条件随机场 |
Linear Discriminant Analysis | 线性判别分析 |
Boosting | |
Linear Regression | 线性回归 |
产生式模型常见的主要有:
Gaussians | 高斯 |
Naive Bayes | 朴素贝叶斯 |
Mixtures of Multinomials | 多项式的混合物 |
Mixtures of Gaussians | 混合高斯模型 |
Mixtures of Experts | 多专家模型 |
HMMs | 隐马尔可夫模型 |
Sigmoidal Belief Networks, Bayesian Networks | |
Markov Random Fields | 马尔可夫随机场 |
Latent Dirichlet Allocation | 隐狄利克雷分配模型 |
通俗易懂的解释:
假设您输入数据x并且想要将数据分类为标签y。 生成模型学习联合概率分布p(x,y),判别模型学习条件概率分布p(y | x) - 你应该把它读作’给定x的概率’。
这是一个非常简单的例子。 假设您在表单(x,y)中有以下数据:
(1,0), (1,0), (2,0), (2, 1)
p(x,y) is
y=0 | y=1 | |
---|---|---|
x=1 | 1/2 | 0 |
x=2 | 1/4 | 1/4 |
p(y|x) is
y=0 | y=1 | |
---|---|---|
x=1 | 1 | 0 |
x=2 | 1/2 | 1/2 |
如果您花几分钟时间盯着这两个矩阵,您将理解两个概率分布之间的差异。
分布p(y | x)是用于将给定示例x分类为类y的自然分布,这就是为什么直接对其进行建模的算法称为判别算法。 生成算法模型p(x,y),可以通过应用贝叶斯规则转换为p(y | x),然后用于分类。 但是,分布p(x,y)也可用于其他目的。 例如,您可以使用p(x,y)来生成可能的(x,y)对。
从上面的描述中你可能会认为生成模型更有用,因此更好,但它并不那么简单。 本文是一个关于歧视性与生成性分类主题的非常受欢迎的参考文献,但它非常重要。 总体要点是,判别模型通常在分类任务中优于生成模型。