第四章 生成学习算法

到目前为止,我们讨论的学习算法都是以$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$依然成立。

因此对于前面的估计,表达如下:

 

posted @ 2016-08-04 11:11  且听风吟-wuchao  阅读(214)  评论(0编辑  收藏  举报