假设你现在有一个分类问题,x是特征,y是类标记。
用生成模型学习一个联合概率分布P(x,y),
而用判别模型学习一个条件概率分布P(y | x)。生成模型,就是生成(数据的分布)的模型;
判别模型,就是判别(数据的label)的模型;
生成模型的处理过程会告诉你关于数据的一些统计信息(p(x | y) 分布等),如朴素贝叶斯可计算出,p(癌症, 肥胖 ) = x%,模型生成了一个分布给你,即使你没用到该分布数据,而只用到 p(癌症, 肥胖 ) = x% 对应的最终的判别(label)
判别模型则是通过一系列处理得到结果,这个结果可能是概率最大的类,或是其他。如决策树很多属性都是有分支的,明显是一种判别(是这种或是另外一种);
在实际分类问题中:
判别模型可以直接用来判断特征的类别情况,
而生成模型需要加上贝叶斯法则,然后应用到分类中。
生成模型
优点:
- 实际上带的信息要比判别模型丰富
- 生成模型收敛速度比较快,即当样本数量较多时,生成模型能更快地收敛于真实模型。
- 能用于数据不完整的情况,能够应付存在隐变量的情况
缺点:
- 提供更多的信息 –> 因此需要更多的样本和更多计算
- 多数情况下分类效果不如判别模型
主要算法:
朴素贝叶斯算法、隐马尔可夫模型(EM算法)
判别模型
优点:
- 节省计算资源,需要的样本数量也少于生成模型。
- 准确率往往较生成模型高,适用于较多类别的识别。
- 允许对输入进行抽象(降维、构造等),能够简化学习问题。
缺点:
- 不能反映训练数据本身的特性
- 不能应付存在隐变量的情况
主要算法:
k近邻法、逻辑回归模型、决策树、支持向量机