Stanford大学机器学习公开课(五):生成学习算法、高斯判别、朴素贝叶斯

(一)生成学习算法

在线性回归和Logistic回归这种类型的学习算法中我们探讨的模型都是p(y|x;θ),即给定x的情况探讨y的条件概率分布。如二分类问题,不管是感知器算法还是逻辑回归算法,都是在解空间中寻找一条直线从而把两种类别的样例分开,对于新的样例,只要判断在直线的哪一侧即可;这种直接对问题求解的方法可以称为判别学习方法。
 
而生成学习算法则是对两个类别分别进行建模,用新的样例去匹配两个模板,匹配度较高的作为新样例的类别,比如分辨大象(y=1)和狗(y=0),首先,观察大象,然后建立一个大象长什么样子的模型,之后,观察狗,同样建立一个狗长什么样子的模型,最后,为了判断一个新来的动物是狗还是大象,我们将这个动物与大象模型进行匹配,再与狗模型进行匹配,看看这个新的动物更像狗还是更像大象,从而判断这个动物到底是什么。
 
形式化的说,判别学习方法是直接对p(y|x)进行建模或者直接学习输入空间到输出空间的映射关系,其中,x是某类样例的特征,y是某类样例的分类标记。而生成学习算法是对p(x|y)(条件概率)和p(y)(先验概率)进行建模,然后按照贝叶斯法则求出后验概率p(y|x):


使得后验概率最大的类别y即是新样例的预测值:



(二)高斯判别分析
 
高斯判别分析(GDA)就是一种生成学习算法,在GDA中,假设p(x|y)属于多变量正态分布。多变量正态分布是正态分布在多维变量下的扩展,它的参数是一个均值向量(mean vector)μ和协方差矩阵(convariance matrix),其中n是多维变量的向量长度,是对称正定矩阵。多变量正态分布的概率密度函数为:



其中,|Σ|是行列式的值。


对于服从多变量正态分布的随机变量x,均值由下面的公式得到:
协方差矩阵由协方差函数Cov得到: 其中,cov的计算过程为:

介绍完多变量正态分布,就正式进入GDA模型的介绍。GDA模型针对的是输入特征为连续值时的分类问题。这个模型的基本假设是目标值y服从伯努利分布,条件概率p(x|y)服从正态分布。于是,他们的概率密度为:
 

于是,数据集的极大似然函数的对数如下所示:

对极大似然函数对数最大化,就得到了GDA模型的各参数的极大似然估计,即得到了如何使用GDA算法的方法。各参数的极大似然估计如下:


一个二维的GDA模型例子如下图所示:

注意到两个二维高斯分布分别对两类数据进行拟合;他们使用相同的协方差矩阵;但却有不同的均值;在直线所示的部分,p(y=1|x)=p(y=0|x)=0.5。
 
GDA模型与logistic模型的联系
 
在公式2中,我们使用p(x|y)p(y)作为p(y|x)的拟合。归一化后,可以得到:

实际上,它可以被表示成逻辑分布的形式:
 
其中,θ是参数φ,μ0,μ1,Σ某种形式的函数。GDA的后验分布可以表示成逻辑分布形式的合理性,在此没有证明,有兴趣的可以自己证明。下面只给出一个例子用于说明GDA模型与logistic模型的联系。

例:假设有一个一维训练集,包含一些正样本和负样本,如下图x轴的叉和圈,设叉为0,圈为1,用GDA对两类样本分别拟合高斯概率密度函数p(x|y=0)和p(x|y=1),如下图的两个钟形曲线。沿x轴遍历样本,在x轴上方画出相应的p(y=1|x)。如选x轴靠左的点,那么它属于1的概率几乎为0,p(y=1|x)=0,两条钟形曲线交点处,属于0或1的概率相同,p(y=1|x)=0.5,x轴靠右的点,输出1的概率几乎为1,p(y=1|x)=1。最终发现,得到的曲线和sigmoid函数曲线很相似。
 
 
简单来讲,就是当使用GDA模型时,p(x|y)属于高斯分布,计算p(y}x)时,几乎能得到和logistic回归中使用的sigmiod函数一样的函数,但实际上还是存在本质区别。
 
实际上,可以证明,不仅仅当先验概率分布服从多变量正态分布时可以推导出逻辑回归模型,当先验概率分布属于指数分布族中的任何一个分布(比如泊松分布)时都可以推导出逻辑回归模型;而反之则不成立,逻辑回归模型的先验概率分布不一定必须得是指数分布族中的成员;因而也说明了逻辑回归模型在建模上的鲁棒性。
 
由此,我们得到了推导逻辑回归模型的两种方法。第一种是前面的视频中讲到的通过指数分布族来推导;第二种则是刚才提到的通过生成学习假设先验概率分布的方式进行推导。
 
那么如何选择GDA与逻辑回归模型呢?由上面的分析可以知道,GDA与逻辑回归是泛化与特化的关系,GDA比逻辑回归有更多的前置假设。当数据服从或大致服从正态分布时,使用GDA会达到更好的效果,因为GDA利用了更多的信息构建模型。但是当数据不服从正态分布时,那么逻辑回归更有效,因为它做出更少的假设,构建的模型更加强壮,更加具有鲁棒性。生成学习还有另外的一个好处,就是可以使用比判别学习模型更少的数据构建出强壮的模型。
 
(三)朴素贝叶斯
 
GDA针对的是特征向量x为连续值时的问题。而朴素贝叶斯(Navie Bayes,NB)则针对的是特征向量x为离散值时的问题。
 
NB算法的标准应用,也是最常见的应用是文本分类问题,例如邮件是否为垃圾邮件的分类。
同其它分类算法一样,NB算法也需要有相应的标准好的数据集。对于文本分类问题来说,使用向量空间模型(vector space model,VSM)来表示文本。何为VSM?首先,我们需要有一个词典,词典的来源可以是现有的词典,也可以是从数据中统计出来的词典,对于每个文本,我们用长度等于词典大小的向量表示,如果文本包含某个词,该词在词典中的索引为index,则表示文本的向量的index出设为1,否则为0。
 
如果按直接对p(x|y)进行建模,那么会遇到参数过多的问题,我们假设词典里拥有50000个词,即向量长度为50000,向量中每个分量的取值为{0,1},那么可能有250000个可能的结果,对其建模则需要250000-1个参数。因而,NB模型做了另外的假设,成为朴素贝叶斯假设,由朴素贝叶斯假设推导出的分类器称为朴素贝叶斯分类器。
 
朴素贝叶斯假设即是在给定分类y后,假设特征向量中的各个分量是相互独立的。如下式所示:

朴素贝叶斯假设在文本分类问题上的解释是文本中出现某词语时不会影响其它词语在文本中的概率。

以VSM与NB假设为基础,我们就得到了NB方法的参数:

于是,我们就得到了NB方法的极大似然估计的对数函数:
 
其中,n为词典的大小。最大化该函数,我们得到参数的极大似然估计:

对于新样本,按照如下公式计算其概率值:


以上就是最基本的NB方法。注意到特征向量的每个分量都智能取值{0,1},我们可以将其扩展为{0,1,2,...k},而概率分布由伯努利分布变为多项式分布。对于一些连续的变量,我们可以将其离散化使其可以使用NB方法解决,离散化的方法为将连续变量按值分段。
 
(四)拉普拉斯平滑
 
拉普拉斯平滑(Laplace Smoothing)又被称为加1平滑,是比较常用的平滑方法。平滑方法的存在是为了解决零概率问题。
 
所谓的零概率问题,就是在计算新实例的概率时,如果某个分量在训练集中从没出现过,会导致整个实例的概率计算结果为0。针对文本分类问题就是当一个词语在训练集中没有出现过,那么该词语的概率为0,使用连乘计算文本出现的概率时,整个文本出现的概率也为0。这显然是不合理的,因为不能因为一个事件没有观测到就判断该事件的概率为0。
 
对于一个随机变量z,它的取值范围是{1,2,3...,k},对于m次试验的观测结果{z(1),z(2),...z(m))},极大似然估计按照下式计算:
 


使用Laplace平滑后,计算公式变为:


即在分母上加上取值范围的大小,在分子加1。
 
回到NB算法,我们可以修正各分量的计算公式:

原文地址:https://www.cnblogs.com/codingmengmeng/p/5415075.html