第四章 生成学习算法
到目前为止,我们讨论的学习算法都是以$p(y \mid x;\theta)$为模型 ,即给定x以后y的 条件分布。接下来讨论一个不同类型的学习算法。
举个例子:有一个分类问题,基于动物得而一些特征分辨它是大象(y=1)还是狗(y=0)。对于逻辑回归算法或感知算法会找出一条直线作为判别边界。这里提出一个新的方法:分别建立一个大象特征的模型和狗特征的模型、对于一个新的动物,使之与大象模型和狗的模型分别匹配,以此判断该新的动物与哪个更匹配。
判别学习算法
直接学习$p(y \mid x)$或学习输入空间X到标签{0,1}的映射
生成学习算法
以$p(x \mid y)$为模型
比如,y表示样本是大象(1)还是狗(0),则$p(x \mid y=0)$表示狗特征的分布模型。
建立$p(y)$(类的先验)和$p(x \mid y)$,使用贝叶斯准则推导出给定x以后y的分布:
$p(y \mid x) = \frac {p(x \mid y)p(y)}{p(x)}$
这里的分母可由$p(x)=p(x \mid y=1)p(y=1)+p(x \mid y=0)p(y=0)$得到。然后以我们学习得到的$p(x \mid y)$和$p(y)$来表示
实际上,计算$p(y \mid x)$时,我们并不需要计算分母,因为:
$arg~~\underset{y}{max} p(y \mid x)= arg~~\underset{y}{max}\frac{p(x \mid y)p(y)}{p(y)}$
$arg~~\underset{y}{max} p(y \mid x)= arg~~\underset{y}{max}p(x \mid y)p(y)$
高斯判决分析(GDA)
多维正太分布
u为均值向量,$u \in R^{n}$,协方差矩阵$\Sigma \in R^{n \times n}$,
概率密度函数:
$p(x;u,\Sigma) = \frac{1}{(2\pi)^{n/2}\left | \Sigma \right |}exp(-\frac{1}{2}(x-u)^{T}\Sigma^{-1}(x-u))$
上式的$\left | \Sigma \right |$表示矩阵的行列式
随机变量Z的协方差表示为:$Cov(Z)=E[(Z-E[Z])(Z-E[Z])^{T}]=E[ZZ^{T}]-(E[Z])(E[Z])^{T}$
这里$X~N(u,\Sigma)$,则:
$Cov(X) = \Sigma$
以下分别为$\Sigma=I,\Sigma=0.6I,\Sigma=2I$时的分布图,均值为2X1的零向量:
以下分别表示其它不同$\Sigma$时的分布:
以上最左边的图为标准正态分布,后面添加对角线元素后,概率密度被沿着45度线压缩,为了更清楚,显示如下:
对角线添加负值时:
固定协方差矩阵为I,改变u,观察概率密度分布:
高斯判别分析模型(GDA)
当分类问题中,x是连续的随机变量,则可以使用该模型,$p(x \mid y)$使用多维正态分布。模型如下:
$y ~ Bernoulli(\phi)$
$x \mid y = 0 ~N(u_{0},\Sigma)$
$x \mid y = 1 ~N(u_{1},\Sigma)$
$p(y)=\phi^{y}(1-\phi)^{1-y}$
$p(x \mid y=0) = \frac{1}{(2\pi)^{n/2}\left | \Sigma \right |}exp(-\frac{1}{2}(x-u_{0})^{T}\Sigma^{-1}(x-u_{0}))$
$p(x \mid y=1) = \frac{1}{(2\pi)^{n/2}\left | \Sigma \right |}exp(-\frac{1}{2}(x-u_{1})^{T}\Sigma^{-1}(x-u_{1}))$
这里模型参数为$\phi,\Sigma,u_{0},u_{1}$,$u_{0},u_{1}$是不同的均值向量。
对数似然函数:
$\iota (\phi,u_{0},u_{1},\Sigma) = log \prod_{i=1}^{m}p(x^{(i)},y^{(i)};\phi,u_{0},u_{1},,\Sigma)$
$\iota (\phi,u_{0},u_{1},\Sigma) = log \prod_{i=1}^{m} p(x^{(i)}\mid y^{(i)};u_{0},u_{1},\Sigma)p(y^{(i)};\phi)$
得到参数的最大似然估计:
得到两组高斯分布:
如上,两组高斯分布拥有相同的形状和方向,因为他们拥有共同的协方差矩阵。但他们的均值$u_{0},u_{1}$不同。
朴素贝叶斯
在GDA模型中,特征向量x是连续的,接下来讨论离散的情况。
比如,训练一组标志为垃圾和非垃圾的邮件。我们通过一个长度为字典的单词数的特征向量来表示一封邮件。当邮件含有第i个单词时,设$x_{i}=1$,否则$x_{i}=0$。
为了计算方便,我们假设当给定y(一封邮件)后,$x_{i}$是条件独立的。即有:
$p(x_{1},...,x_{5000} \mid y) = \prod_{i=1}^{n}p(x_{i} \mid y)$
这种假设称为朴素贝叶斯假设,对应算法称为朴素贝叶斯分类器。
模型参数为:$\phi_{i \mid y=1}=p(x_{i}=1 \mid y=1),\phi_{i \mid y=0}=p(x_{i}=1 \mid y=0),\phi_{y}=p(y=1)$。对于给定的训练集,${(x^{(i)},y^{(i)});i=1,2,...,m}$,则联合似然函数:
根据$\phi_{y},\phi_{i \mid y=0},\phi_{i \mid y=1}$:
等式中的$\wedge $表示“与”。
预测:
最后,我们注意到贝叶斯算法主要是针对特征$x_{i}$是二值情形,容易得到一般情形$x_{i}$取${1,2,...,k_{i}}$。这里,我们的模型$p(x_{i} \mid y)$是多项式,而不是伯努利。当输入是连续数值时,一般需要将其离散化。比如以下住房面积:
拉普拉斯平滑
比如,在文本分类的例子中,你需要判别邮件的类型。当训练集不含单词“nips”,而当前需要分类的邮件含有这个词,并且假设该词处在字典的第35000的位置。则贝叶斯模型计算最大似然估计如下:
因为之前从没有出现过“nips”,因此类的后验概率为:
参数化多项式:$\phi_{i}= p(z=i)$。给定一组具有m个独立观察值的数据${z^{(1)},...,z^{(m)}}$,最大似然估计如下表示:
如前面所述,这种最大似然估计会出现某些$\phi_{j}$为0的情况。为了避免这个情况,我们使用拉普拉斯平滑,最大似然估计表示如下:
其中,$\sum_{j=1}^{k}\phi_{j}=1$依然成立。
因此对于前面的估计,表达如下: