说说生成模型与判别模型

本文主要是对知乎相关问题的总结

是什么?


监督学习的任务就是学习一个模型,应用这一个模型,对给定的输入预测相应的输出。这个模型的一般形式为决策函数:$Y=f(X)$或者条件概率分布:$P(Y|X)$

监督学习方法又可以氛围生成方法和判别方法。所学到的模型分别称为生成模型和判别模型。

生成模型

书上的话:生成方法由数据学习联合概率分布P(X,Y)然后求出条件概率分布$P(Y|X)$作为预测模型,即生成模型:$P(Y|X)={P(X,Y)\over P(X)}$

这样的方法称为生成方法,是因为模型表示了$X,Y$的生成关系。典型的生成模型有:朴素贝叶斯法隐马尔科夫模型、混合高斯模型、AODE、Latent Dirichlet allocation(unsup)、Restricted Boltzmann Machine

生成模型,就是生成(数据de分布)的模型,关注的是抓取样本的分布特征,通过建立每个类别的特征分布,最终建立很多类别模型(一般有多少类就有多少个),最后比较结果选择最优。生成模型输入$X$与输出$Y$之间没有因果关系

判定模型

书上的话:判别方法由数据直接学习决策函数$f(x)$或者条件概率分布$P(Y|X)$作为预测的模型,即判别模型。判别方法关心的是对给定的输入$X$应该预测什么样的输出$Y$。典型的判别方法包括:kNN,感知机,决策树,逻辑回归,最大熵模型,SVM,提升方法,条件随机场,神经网络等

判别模型,就是判别(数据输出量)的模型,直接采用输入特征去预测输出,或者说条件概率。判定模型只有一个模型,$X$往里面丢,$label$就出来了。判别模型输入$X$与输出$Y$之间有因果关系

用起来?


生成模型

优点:

1.生成模型给出的是联合分布$P(\hat x,\hat c)$,不仅能够由联合分布计算条件分布$P(\hat c|\hat x)$(反之不行),还可以给出其他信息,比如可以使用$P(\hat x)=\sum^k_{i=1}P(\hat x|\hat c_i)P(\hat c_i)$来计算边缘分布$P(\hat x)$。如果一个输入样本的边缘分布$P(\hat x)$很小的话,那么可以认为学处的这个模型可能不太适合对这个样本进行分类,分类效果可能会不好,这技术里所谓的$outlier detection$。

2.生成模型收敛速度比较快,即当样本数量较多时,生成模型能更快地收敛于真实模型。
3.生成模型能够应付存在隐变量的情况,比如混合高斯模型就是含有隐变量的生成方法。

4.生成模型所需计算资源是更少的,大部分情况下只要做统计计数就可以获得模型

缺点:

1.实践中多数情况下判别模型效果更好

判别模型

优点:

1.直接面对预测,准确率往往较生成模型高

2.由于直接学习$P(\hat c|\hat x)$而不需要求解类别条件概率,所以允许我们对输入进行抽象(比如降维、构造等),从而能够简化学习问题

缺点:

1.判别模型所需资源更多,因为判别模型必须靠误差梯度下降法来获得模型,训练所需时间要多很多。

过拟合:


生成模型

‘‘没有考虑正则化很简单,因为他们很少过拟合’’。生成模型学习$X,Y$的联合概率分布$P(X,Y)$,直接学习的就是数据的分布,从整个数据的整体着手,很少会出现过拟合

基本上属于高偏差/低方差分类器,当样本数量小于特征数量或样本数量不足时,应选用这种模型

判别模型

判别模型应当有正则化过程,因为是直接生成$f(x)$或者$p(y|x)$,所以很容易比较$y$跟$f(x)$的关系,按照现有数据照葫芦画瓢来判别,容易过拟合,所以正则化便有存在的意义。

基本上属于低偏差/高方差分类器,容易过拟合,需要正则项。数据量充足时选用判别模型

结论

随着训练集的增大,低偏差/高方差分类器(判别模型)相对于高偏差/低方差分类器(生成模型)准确率高,因为随着数据量的增大,现有训练集数据的分布更接近于真实分布,此时生成模型优势变小,同时生成模型不能提高足够的准确率,此时,判别模型优势更大。

举个例子:

当一份分类数据的特征维度大于样本数量时。如果采用判别模型,极端情况下每条样本都有唯一的特征(或特征组合),此时如果正则化不够给力,那么该判别模型将极大限度拟合当前数据,训练集AUC可能将近1,那么就可能得到训练数据上准确率100%,测试数据准确率不如XJB猜的模型。

0%