深入浅出朴素贝叶斯法(Naive Bayes)

来源:互联网 发布:大亚湾网络问政 编辑:程序博客网 时间:2024/06/05 16:27

写在前面的介绍和感悟(…)

  1. 做项目时,遇到了瓶颈,试了也有五六个算法,停下来,仔细分析一下原理,再轻装上阵。(采用bayes和svm开始是当做一个baseline…)
  2. 朴素贝叶斯,朴素的含义在与对输入数据的特征做了独立性假设,简化了模型。贝叶斯顾名思义,采用了贝叶斯定理。一句话总结,基于贝叶斯定理和独立假设的分类方法。
  3. 这篇文章介绍朴素贝叶斯的基本学习过程,MAP(最大化后验概率),参数估计的MLE(极大似然估计)和贝叶斯估计,就其中的一些重要推倒提出自己的理解(也曾疑惑)。

1.基本学习过程

 Naive Bayes学习过程可以分为两步走。一是基于条件独立假设学习输入和输出的联合概率分布。二是利用贝叶斯定理及MAP假设求后验概率。

联合分布p(X,Y)的计算

  1. 这一步可以转换为求先验概率分布(p(Y=ck))及条件概率分布(p(X=x|Y=ck),也称为似然概率)。
  2. 这里应用到了条件概率的公式,简单介绍一下,其实贝叶斯定理也是基于此得出的。
    p(A|B)=P(AB)p(B)
    —————>
    p(AB)=p(A|B)p(B)=p(B|A)p(A)
    —————>
    p(B|A)=p(A|B)p(B)p(A)()
  3. 先验概率分布
    p(Y=ck),k=1,2,...,K ,简单理解就是训练样本中每一类别的概率。
  4. 条件概率分布
    p(X=x|Y=ck)=p(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=ck),k=1,2,...,K
  5. 条件独立假设
    假设内容是所有的数据特征在给定类别的条件下都是独立的。公式表示如下:
    p(X=x|Y=ck)=p(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=ck)=j=1np(X(j)=x(j)|Y=ck)

    基于此,大大简化了条件概率的计算。直接计算,p(X=x|Y=ck)有指数量级的参数,很难计算。模型中的朴素也是由此得来。

后验概率p(Y=ck|X)的计算

  1. 根据贝叶斯定理计算后验概率
    贝叶斯公式的推导和条件独立的说明在上文,这里会用到。简单介绍一下全概率公式,假设B1,B2,…,Bn为事件B的完备集划分,即它们的并集为B但又互相无交集。则有和B独立的事件A可以表示为:p(A)=Kk=1p(X=x|Y=ck)p(Y=ck)。由此可以得出p(X)=ni=1p(A|Bi)p(Bi)
    完整的推导过程如下:
    p(Y=ck|X=x)=p(X=x|Y=ck)p(Y=ck)p(x)=p(Y=ck)nj=1p(X(j)=x(j)|Y=ck)ni=1p(A|Bi)p(Bi)
  2. 最大化后验概率
    于是根据MAP假设,可将贝叶斯分类器表示为:
    y=f(x)=argmaxp(Y=ck)nj=1p(X(j)=x(j)|Y=ck)ni=1p(A|Bi)p(Bi)

    可以进一步简化为(分母不变):
    y=argmaxP(Y=ck)j=1nP(X(j)=x(j)|Y=ck)

2.参数估计方法

1.MLE(极大似然估计)

  1. 这里和一般意义上的MLE不一样,需要一个小trick理解一下。先看看一般的MLE过程:
    关于MLE(极大似然估计),就是假定随机变量不变,最大化似然函数对参数做出估计,简单介绍一下两种类型(连续和离散)的似然函数的求解方法。
    离散型:

    L(θ)=L(x1,x2,...,xn;θ)=i=1np(xi;θ)

    连续性:
    L(θ)=L(x1,x2,...,xn;θ)=i=1nf(xi;θ)

    形式看起来特别像,都是累乘的形式,只不过离散的是分布的累乘,而连续的是概率密度的累乘。实际应用中,一般用到的是对数似然函数 ,就是利用到log函数的性质(和的对数等于对数的积),方便运算。

  2. 小trick就是参数的理解,bayes的参数其实就是先验概率和似然概率(条件分布概率)!!!因此好多参考资料中这样写到:

    先验概率估计:

    P(Y=ck)=Ni=1I(yi=ck)N

    其中I(yi=ck)是指示函数,当括号内条件满足时,值为1。N为样本总数。其实就是该类样本数除以样本总数~
    似然概率(条件概率)估计:
    假设第j个特征x(j)可能的取值集合为{aj1,aj2,...,a(jsj)}
    P(X(j)=ajl|Y=ck)=Ni=1I(x(j)=ajli,yi=ck)Ni=1I(yi=ck)

    其中j=1,2,..,n; l=1,2,…,Sj; k=1,2,…,K。简单理解就是给定类别ck时某一特征取特定值的概率。

2.贝叶斯估计

极大似然估计存在一个问题就是会出现估计的概率值为0的情况,会影响到后验的计算,从而导致误分类。贝叶斯通过加入一个正则项$\lambda\gt0$解决了这一问题,也可以把贝叶斯估计看做是正则化的极大似然估计。
  1. 条件概率的贝叶斯估计:
    Pλ(X(j)=ajl|Y=ck)=Ni=1I(x(j)=ajli,yi=ck)+λNi=1I(yi=ck)+Sjλ

    通过给每一个取值加上一个正数,避免了取值为0的情况。
  2. 先验概率的贝叶斯估计:
    P(Y=ck)=Ni=1I(yi=ck)+λN+Kλ

3.最大化后验概率假设-MAP的理解

naive bayes最后将实例分到后验概率最大的类中,这么做的原理其实是期望风险最小化,即期望风险最小化等价于后验概率最大化。
  1. 推导过程:
    损失函数定义如下:
    L(Y,f(X))={1,0,Yf(X)Y=f(X)

    期望风险函数:
    Rexp(f)=E(L(Y,f(X))

    接下来,取条件期望:
    Rexp(f)=Exk=1KL(ck,f(X))P(ck|X)

    这里好多资料基本都一带而过,也是我比较疑惑的地方。我的理解是,从公式本身来看,应该是已知X对类别Y的条件期望。
    对X=x逐个极小化:
    f(x)=argmink=1KL(ck,y)P(ck|X=x)=argmink=1KP(yck|X=x)=argmink=1K(1P(y=ck|X=x))=argmaxk=1KP(y=ck|X=x)

    至此,就完成了期望风险最小化到后验概率最大化的等价转换!

  • 写在前面的介绍和感悟
  • 基本学习过程
    • 联合分布pXYpXY的计算
    • 后验概率pYckXpYc_kX的计算
  • 参数估计方法
    • MLE极大似然估计
    • 贝叶斯估计
    • 最大化后验概率假设-MAP的理解

原创粉丝点击