假设我们已有训练数据 (X,Y)
,X
是属性集合,Y
是类别标记。这时来了一个新的样本 x
,我们想要预测它的类别 y
。
我们最终的目的是要求得最大的条件概率 P(y|x)
作为新样本的分类。
1.判别式模型这么做:
我们根据训练数据得到分类函数和分界面,比如说根据 SVM
模型得到了一个分界面,然后直接计算条件概率 P(y|x)
,我们将最大的 P(y|x)
作为新样本的分类。判别式模型不能反映训练数据本身的特性,能力有限,其只能告诉我们分类的类别。
2.生成式模型这么做
一般我们对每一个类建立一个模型,有多少个类别,我们就建立多少个模型。比方说类别标签有{猫,狗,猪},那首先根据猫的特征学习出一个猫的模型,再根据狗的特征学习出狗的模型,之后分别计算新测试样本 x 跟三个类别的联合概率 P(x,y)
,然后根据贝叶斯公式:
分别计算 P(y|x)
,选择三类中最大的 P(y|x)
作为样本的分类,这之中多了一个求极大似然 P(x|y)
的过程。
我们发现,不管是生成式模型还是判别式模型,它们最终的判断依据都是条件概率 P(y|x)
,但是生成式模型先计算了联合概率 P(x,y)
,再由贝叶斯公式计算得到条件概率。生成式模型可以体现更多数据本身的分布信息,其普适性更广。
最后,两者的联系是:
- 由生成式模型可以得到判别式模型,但由判别式模型不能得到生成式模型。
- 联合分布
P(x,y)
不必直接学得,也可以通过学习P(x|y)P(y)
来得到 - 联合概率分布是样本点的概率分布,知道了样本点的概率分布,就可以生成样本点,所以叫生成模型。
- 生成模型和判别模型都可以直接或间接学习
P(y|x)
,区别是生成模型直接或间接地多学了P(x|y)
,而判别模型只能学P(y|x)