判别式模型和生成式模型
对不同的监督学习的模型来说,它们的最终目标总是在给定测试样例x的情况下,预测出其最有可能的类别y,也就是说优化目标总是argmaxyp(y|x)。但是,求解这个argmaxyp(y|x)的过程却有着各种各样不同的方法,但是总体来来说,根据求解方法的不同,可以将这些模型分成两种类别。
判别式模型
其中一种是直接学习得到p(y|x),更加准确来说,是直接学习得到p(y|x;θ),其中θ是模型的参数,这种方法被称为是判别式模型(Discriminant Model)。属于这种方法的模型有之前的讲过的:
- 线性回归模型,其模型参数就是θTX中的θ
- Logistic模型
- 决策树模型,其模型参数是每个节点的分裂属性及其阈值。
对于判别式模型来说,就是要从训练数据中学习得到p(y|x;θ)中的θ,从而在预测时候,能够直接根据x计算出y。
生成式模型
与其相对应的另外一种方法是,利用贝叶斯法则:
将argmaxyp(y|x)进行如下的代换:
注意,上述第二个等式之所以成立,是因为在给定测试数据x的情况下,p(x)是一个常量,可以不用考虑。因此,模型的求解目标就变成了p(x|y)和p(y)而不是原来的p(y|x),这样的方法被称为生成式模型(Generative Model)。属于这种模型的有之前讲过的:
- 朴素贝叶斯模型。在贝叶斯模型中,就是利用贝叶斯法则,直接计算p(x|y)和p(y).
本文的后半部分还会介绍另外一种生成式模型:高斯判别分析模型1。
举例
其实,可以看到,这两种分类仅仅是计算的"路径"不同而已,"终点"却是相同的,都是要计算argmaxyp(y|x)。
举例2来说,假设我们要判别一个动物是大象(y=1)还是狗(y=0),对于判别式模型来说,它会考虑这个动物所有的特征,从中学习特征之间模式(p(y|x;θ)),从而判定它是大象(y=1)还是狗(y=0)。
而对于生成式模型来说,它会考察训练数据中所有的大象,学习得到一个模型(p(x|y=1)和p(y=1)),然后接着考察训练数据中所有的狗,学习得到一个模型(p(x|y=1)和p(y=1))。在需要预测时,将待预测的动物分别用这两种模型进行判断,然后选择可能性大的最为最终的预测类别。
高斯判别分析
多变量正态分布
高斯判别分析模型是假设p(x|y)服从多变量高斯分布的,因此我们首先需要看一下多变量的高斯分布。
多变量高斯分布N(μ,Σ)的密度函数是:
如果X∼N(μ,Σ),则:
高斯判别分析模型
高斯判别分析模型假设p(x|y)服从多变量高斯分布,而y本身是服从贝努力分布的,所以我们有:
将其展开就是:
其中,模型的参数是ϕ,Σ,μ_0,μ_1,对应的对数似然函数可以写成:
通过极大化这个似然函数ℓ,我们能够求得这个极大似然估计的参数是:
上面的公式中,其实μ_0和μ_1分别是反例的平均值和正例的平均值。
在计算出上述的这些参数之后,我们就能够求解argmaxyp(y|x)了,只需要分别计算p(x|y=1)p(y=1)和p(x|y=0)p(y=0),取二者中较大的类别作为预测类别。
参考资料
- 斯坦福公开课《机器学习》第五集及其配套讲义。
- 生成学习、高斯判别、朴素贝叶斯、Laplace平滑——斯坦福ML公开课笔记5
- 判别模型和生成模型 -- ML Step By Step(4)