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