当前位置:   article > 正文

朴素贝叶斯(Naive Bayes)模型简介

朴素贝叶斯(Naive Bayes)模型简介

朴素贝叶斯模型是一个简单却很重要的模型,在文本分类中,由于它出奇的简单实现和令人惊讶的表现,因此实际应用中,它都值得是第一个尝试的基准模型。本文接下来将从文本分类这个具体应用中介绍朴素贝叶斯模型。

文本分类问题

在文本分类中,我们面临的问题是给定一个文本x=[x1,x2,...,xi,...,xn],其中xi从原始文本抽出来的一个特征,可以是单个单词或者是一个ngram特征,或者是一个正则表达式特征。我们希望有一个模型可以来预测这个特定文本的标签y,在邮件垃圾分类中,y可以是指”垃圾邮件”或”非垃圾邮件”。这就是文本分类问题的基本描述,不同的分类模型对此问题有不同的看法,这些不同的看法中,大致可以分为两大派别,一种是”判别式模型(discriminative Model)”,比如SVM或者Logistic回归,他们直接对问题进行建模,得出如下模型:

p(y|x)

另一派是不直接对问题建模,而是从生成(generative)角度去看待问题,也就是”生成式模型(generative model)”,比如我们本文的主角Naive Bayes就是属于这种模型,与判别式模型不同,生成式模型对问题进行联合建模,从而得出如下模型:
p(y,x)

朴素贝叶斯模型

上一节中,我们提到朴素贝叶斯是一种生成模型,也就是它对问题进行联合建模,利用概率的乘法法则,我们可以得到:

p(y,x)=p(y,x1,x2,...,xn)=p(y)p(x1|y)p(x2|x1,y)p(x3|x1,x2,y)...p(xn|x1,....,xn1,y)=p(y)p(x1|y)i=2p(xi|x1,...,xi1,y)

由于上述形式复杂,因此朴素贝叶斯作出一个假设,也就是在给定 y的条件下,x1,...,xn之间的生成概率是完全独立的,也就是:
p(y,x1,x2,....,xn)=p(y)ip(xi|y)

注意此处并不是说 x1,...,xn的生成概率是相互独立的,而是在给定 y的条件下才是独立的,也就是这是一种”条件独立”。了解概率图模型的同学,下面的图模型就可以很好地阐述这个问题:
这里写图片描述
既然我们说朴素贝叶斯是一种生成模型,那它的生成过程是怎样的呢?对于邮件垃圾分类问题,它的生成过程如下:

  • 首先根据p(y)采用得到 y,从而决定当前生成的邮件是垃圾还是非垃圾
  • 确定邮件的长度n,然后根据上一步得到的 y,再由p(xi|y)采样得到 x1,x2,...,xn

    这就是朴素贝叶斯模型。显然,朴素贝叶斯的假设是一种很强的假设,实际应用中很少有满足这种假设的的情况,因为它认为只要在确定邮件是垃圾或者非垃圾的条件下,邮件内容地生成就是完全独立地,词与词之间不存在联系。

    朴素贝叶斯应用于文本分类

    尽管朴素贝叶斯模型有很强的假设,而且实际文本也不满足这种假设,但是在分类应用中,它却表现不俗。在分类任务中,我们关心的部分是朴素贝叶斯模型的后验概率:

    p(y|x)

    根据贝叶斯公式,我们可以得到:
    p(y|x)=p(y)p(x|y)p(x)=p(y)ip(xi|y)p(x)

    对于分类任务,比如邮件垃圾分类,我们可以通过计算
    p(y=|x)p(y=|x)

    然后比较哪个概率大,从而确定邮件是垃圾或者非垃圾。数学上,我们是求解一个最优化问题:
    argmaxyp(y|x)=argmaxyp(y)p(x|y)p(x)=argmaxyp(y)p(x|y)=argmaxyp(y)ip(xi|y)

    朴素贝叶斯参数估计

    前面我们已经介绍了朴素贝叶斯模型,以及它是如何应用于文本分类中,接下来我们讲讲如何估计朴素贝斯模型的参数。为了估计参数,我们再来好好审视一下朴素贝叶斯模型,首先明确的是模型的组成部分p(y)ip(xi|y),朴素贝叶斯只是将联合概率分布拆解成这两部分,但是并没有指明这两部分的模型具体是怎样的。于是我们有必要对模型进一步建模,然后通过我们最熟悉的极大似然法进行参数估计。

    为了更方便进行参数求解,我们假设问题是一个有监督的问题,也就是我们的训练数据是包含标签的,比如我们有大量邮件,并且邮件已经标注好垃圾或者非垃圾。用数学记号表示,我们有m个训练数据,每个训练数据是(xi,yi),我们的模型希望从这些训练数据中估计出模型的参数。

    求解p(y)

    p(y)作为贝叶斯模型的先验概率分布,很多时候是根据我们对问题的理解,然后指定它的实际分布的,比如对于邮件垃圾识别问题,我们的经验告诉我们,10封邮件里面,大概只有2封是垃圾,那么我们可以指定p(y)的分布是:

    p(y=)=0.2p(y=)=0.8

    如果你觉得不太放心,还是想靠数据说话,那么一般我们会假设 p(y)服从多项式分布,然后从训练数据中学习它的分布,假设 m 封邮件中有n封邮件是垃圾,剩下的是非垃圾,那么它的分布就是:
    p(y=)=nmp(y=)=mnn

    求解p(xi|y)

    此项在贝叶斯模型中属于数据似然部分,如果不考虑先验概率分布p(y),仅仅依靠该部分来求解模型,那就是频率学派的做法。朴素贝叶斯并没有告诉我们这一部分的模型是什么,一般在文本分类中,我们会做两种假设,一种p(xi|y)服从伯努力分布,另一种则假设它服从多项式分布。接下来我们分别讲解在这两种假设下,朴素贝叶斯模型的参数估计是如何进行的。为了表达方便,我们用θ来表示模型的参数,其中ϕy代表p(y)的参数,ϕxi|y代表p(xi|y)的参数,我们可以知道:

    L(θ)=logimp(yi,xi)=imlogp(yi,xi)=imlogp(yi)jp(xji|yi)=imlogp(yi)+imjlogp(xji|yi)=imlogϕyi+imjlogϕxji|yi

    由于先验分布 p(y)的参数估计在上一节中已经解决,我们重点关注后半部分。

    多变量伯努力事件模型

    如果假设p(xi|y)服从伯努力分布,那么此时的朴素贝叶斯模型也叫做”多变量伯努力事件模型”(multi-variate Bernoulli event model),随机变量xi代表一个标识,当xi=1时,代表包含第i个词汇,当xi=0时,代表不包含第i个词汇。在这种假设下,朴素贝叶斯模型的生成过程如下,还是以邮件垃圾识别为例子,假设词汇总数为V:

    • 首先根据先验分布p(y)采样得到y,从而确定邮件内容是否为垃圾
    • 确定邮件不重复的词汇数N,然后遍历整个字典,根据p(xi|y)决定要不要包含此时的词汇,使得不重复词汇数为N,此时的生成模型可以看成是多次伯努力采样后的结果

    由上述假设的过程,我们可以得到模型的极大似然表示为(每个特征都会有一个布尔变量b{0,1}, 当b=1时代表包含该特征):

    L(θ)=imlogϕyi+imjVlogϕxji=1|yib(1ϕxji=1|yi)(1b)

    在约束条件:
    xj{0,1}ϕxj|y=1ϕxj|y0j=1,2,3,...y{}

    求解最大的似然估计,可以转化为有约束的最优化问题,通过最优化手段求解最终可得模型得参数估计:
    ϕxj=1|y==im1{xji=1yi=}im1{yi=}ϕxj=1|y==im1{xji=1yi=}+1im1{yi=}

    为了使模型更加健壮,一般会对估计的参数进行”拉普拉斯平滑”,平滑后的参数估计为:
    ϕxj=1|y==im1{xji=1yi=}+1im1{yi=}+2ϕxj=1|y==im1{xji=1yi=}im1{yi=}+2

    其中1{}代表一个标示函数,如果括号里面为真则返回1,否则返回0。

    多项式事件模型

    如果假设p(xi|y)服从多项式分布,那么此时的朴素贝叶斯模型也叫做”多项式事件模型”(mutinomial event model),与多变量伯努力事件模型不同,随机变量xikk取值为{1,2,...,V},代表的意义是第i个位置的词是第k个词。在这种假设下,朴素贝叶斯模型的生成过程如下,还是以邮件垃圾识别为例子,假设词汇总数为V:

    • 首先根据先验分布p(y)采样得到y,从而确定邮件内容是否为垃圾
    • 确定邮件的长度N,现在有一个V项的多项式分布p(x|y),每次从这个多项式分布采样出一个词汇,直到邮件长度为N

    由上述假设的过程,我们可以得到模型的极大似然表示为:

    L(θ)=imlogϕyi+imjNilogϕxji|yi

    其中Ni代表第i个邮件的长度。在约束条件:
    xj{1,2,...,V}ϕxj|y=1ϕxj|y0j=1,2,3,...y{}

    求解最大的似然估计,可以转化为有约束的最优化问题,通过最优化手段求解最终可得模型得参数估计:

    ϕxj=k|y==imjNi1{xji=kyi=}im1{yi=}Niϕxj=k|y==imjNi1{xji=kyi=}im1{yi=}Ni

    同样的,如果采取拉普拉斯平滑,则最终参数估计为:
    ϕxj=k|y==imjNi1{xji=kyi=}+1im1{yi=}Ni+Vϕxj=k|y==imjNi1{xji=kyi=}+1im1{yi=}Ni+V

    朴素贝叶斯模型实现

    在stanford-nlp算法库中,有上述两种模型的实现,运用实现好的算法包相当简单,只要对原始文本进行分词,去除停用词,提取ngram特征,正则表达式特征等等特征工程,就可以很方便地调用算法包输出结果。

    参考引用

    Michael Collins lecture note: The Naive Bayes Model, Maximum-Likelihood Estimation, and the EM Algorithm
    Andrew Ng cs229 lecture note:http://cs229.stanford.edu/notes/cs229-notes2.pdf
    Sebastian Raschka: Naive Bayes and Text Classification Introduction and Theory
    stanford-nlp https://nlp.stanford.edu/software/classifier.html

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/424210
推荐阅读
相关标签
  

闽ICP备14008679号