(hamner 的回答很棒,所以为了完整起见,只需从 MetaOptimize 交叉发布我的回答。)
我认为生成算法提供了如何实际生成数据的模型(我认为它们为您提供了和的模型,而不是,虽然我猜它是等价的),而判别算法只是提供分类拆分(不一定以概率方式)。P(X|Y)P(Y)P(X,Y)
例如,比较高斯混合模型和 k 均值聚类。在前者中,我们有一个关于如何生成点的很好的概率模型(以一定的概率选择一个组件,然后通过从该组件的高斯分布中采样来发出一个点),但对于后者,我们真的无话可说。
请注意,生成算法具有判别属性,因为一旦有了和 ),尽管判别算法并不真正具有生成属性。P(Y|X)P(X|Y)P(Y)
1:判别算法允许您对点进行分类,而无需提供如何实际生成点的模型。所以这些可能是:
- 概率算法尝试学习(例如逻辑回归);P(Y|X)
- 或者尝试直接学习从点到类的映射的非概率算法(例如,感知器和支持向量机只是给你一个分离的超平面,但没有生成新点的模型)。
所以是的,判别分类器是任何非生成的分类器。
另一种思考方式是生成算法对模型做出某种结构假设,但判别算法做出的假设更少。例如,朴素贝叶斯假设您的特征具有条件独立性,而逻辑回归(朴素贝叶斯的判别“对应物”)则没有。
2:是的,朴素贝叶斯是生成的,因为它捕获了和。例如,如果我们知道和以及英语和法语单词的概率,那么我们现在可以通过首先选择文档的语言来生成一个新文档 (英语的概率为 0.7,法语的概率为 0.3),然后根据所选语言的单词概率生成单词。P(X|Y)P(Y)P(Y=English)=0.7P(Y=French)=0.3
是的,我想您可以以这种方式使逻辑回归生成,但这只是因为您向逻辑回归中添加了一些尚不存在的东西。也就是说,当您执行朴素贝叶斯分类时,您直接计算(右边的项和,允许您生成新文档);但是当你在逻辑回归中计算时,你并没有计算这两件事,你只是将逻辑函数应用于点积。P(Y|X)∝P(X|Y)P(Y)P(X|Y)P(Y)P(Y|X)
3:生成模型在较小的数据集上通常优于判别模型,因为它们的生成假设在您的模型上放置了一些防止过度拟合的结构。例如,让我们考虑朴素贝叶斯与逻辑回归。朴素贝叶斯假设当然很少得到满足,因此随着数据集的增长,逻辑回归往往会优于朴素贝叶斯(因为它可以捕获朴素贝叶斯无法捕获的依赖关系)。但是当您只有一个小数据集时,逻辑回归可能会发现实际上并不存在的虚假模式,因此朴素贝叶斯在您的模型中充当一种正则化器,以防止过度拟合。Andrew Ng 和 Michael Jordan 发表了一篇关于判别式与生成式分类器的论文,对此进行了更多讨论。
4:我认为这意味着如果您正确指定模型并且模型实际成立,生成模型实际上可以学习数据的底层结构,但是如果您的生成假设不满足,判别模型可以胜过(因为判别算法是与特定结构的联系较少,现实世界是混乱的,无论如何假设很少能完全满足)。(如果它们令人困惑,我可能会忽略这些引号。)