数学 · 朴素贝叶斯(二*)· 推导与推广

数学 · 朴素贝叶斯(二*)· 推导与推广

这章的内容会涉及到概率论的一些虽然基础但不算平凡的概念和知识…… ( σ'ω')σ

贝叶斯公式与后验概率

贝叶斯公式的定义如下:

它的直观是:样本\tilde X在参数\theta下的概率乘上参数本身的概率 = 样本和参数的“联合概率”p(\theta, \tilde X) = 参数\theta在样本\tilde X下的概率乘上样本本身的概率(一点都不直观啊喂!)。考虑到独立性假设,可以得知样本\tilde X的概率就是它组成部分X_i的概率的乘积:

有了上面这些公式之后,我们就可以分情况写出后验概率p(\theta|\tilde X)的公式了

  • 当参数空间\Theta是离散集合\{\theta_1,\theta_2,...\}时,有:
  • 单参数空间\Theta是连续集合时,有:

离散型朴素贝叶斯算法

上一章我们叙述了朴素贝叶斯算法的极大似然估计但没有给出推导,这里会将该推导补足。需要指出的是,彼时给出的算法是所有维度的特征都是离散型随机变量的情况下的算法、亦即离散型朴素贝叶斯算法(这个名词是我自己瞎诌的不要把它当成是专业的)(喂)。它的推导相对简单但比较繁琐,核心的思想是利用示性函数将对数似然函数写成比较“整齐”的形式、再运用拉格朗日方法进行求解

在正式推导前,我们先说明一下符号约定(在 Word 上打过一遍、不想再打了(´>ω∂`)☆):

接下来就可以开始写公式了

  • 计算对数似然函数
    其中
  • 极大化似然函数。为此,只需分别最大化

    对于后者,由条件独立性假设可知、我们只需要对j=1,2,...,n分别最大化:
    即可。我们可以利用拉格朗日方法来求解该问题,用到的约束条件是:
    从而可知
    由一阶条件
    可以解得
    同理,对f_2^{(j)}应用拉格朗日方法,可以得到
    以上,我们完成了离散型朴素贝叶斯算法的推导

连续型和混合型朴素贝叶斯

在处理完离散型的情况后,首先容易想到的就是:如果我想处理连续型特征应该怎么做?

一般而言会有两种方法:

  • 使用小区间切割、直接使其离散化。这种方法较难控制小区间的大小、而且对训练集质量的要求比较高
  • 假设该变量服从正态分布、再利用极大似然估计来计算该变量的“条件概率”,这种方法相对而言用的要多一些。具体而言:
    计算“条件概率”p(x^{(j)}=a_{jl}|y=c_k)
    这里有两个参数:\mu_{jk}\sigma_{jk},它们可以用极大似然估计法定出:
    其中,N_k=\sum_{i=1}^NI(y_i=c_k)是类别c_k的样本数
    需要注意的是,这里的“条件概率”其实是“条件概率密度”,真正的条件概率其实是 0(因为连续型变量单点概率为0)。这样做的合理性涉及到了比较深的概率论知识,此处不详细展开(其实就是我还没做而且懒得做也大概不会做)(喂

知道怎么处理连续型特征后,进一步我们可能会想处理混合型的数据(即有些特征是离散的、有些特征是连续的)。个人认为混合型朴素贝叶斯算法可以有两种提法(仅代表个人意见、可参考而不可尽信、因为这一块也没查到太好的资料……如果有观众老爷有这方面的研究的话,希望能够不吝赐教!( σ'ω')σ):

  • 用某种分布的密度函数算出训练集中各个样本连续型特征相应维度的密度之后,根据这些密度的情况将该维度离散化、最后再训练离散型朴素贝叶斯模型
  • 直接结合离散型朴素贝叶斯和连续型朴素贝叶斯——亦即将离散维度的条件概率和连续维度的概率密度直接带入离散型朴素贝叶斯的决策函数

从直观可以看出、第二种提法可能会比第一种提法要“激进”一些,因为如果某个连续型维度采用的分布特别“大起大落”的话、该维度可能就会直接“主导”整个决策

朴素贝叶斯的推广

朴素贝叶斯导出的分类器只是贝叶斯分类器中的一小类,它所作的独立性假设在绝大多数情况下都显得太强,现实任务中这个假设往往难以成立。为了做出改进,人们尝试在不过于增加模型复杂度的前提下、将独立性假设进行各种弱化。由此衍生出来的模型中,比较经典的就是半朴素贝叶斯(Semi-Naïve Bayes)模型和贝叶斯网模型(Bayesian Network)

  • 半朴素贝叶斯

    由于提出条件独立性假设的原因正是联合概率难以求解,所以在弱化假设的时候同样应该避免引入过多的联合概率,这也正是半朴素贝叶斯的基本想法。比较常见的半朴素贝叶斯算法有如下三种:
    • ODE 算法(One-Dependent Estimator,可译为“独依赖估计”)
      顾名思义,在该算法中、各个维度的特征至多依赖一个其它维度的特征。从公式上来说,它在描述条件概率时会多出一个条件:
      这里的代表着维度 j 所“独依赖”的维度
    • SPODE 算法(Super-Parent ODE,可译为“超父独依赖估计”)
      这是ODE算法的一个特例。在该算法中,所有维度的特征都独依赖于同一个维度的特征,这个被共同依赖的特征就叫“超父(Super-Parent)”。若它的维度是第pa维,知:
      一般而言,会选择通过交叉验证来选择超父
    • AODE 算法(Averaged One-Dependent Estimator,可译为“集成独依赖估计”)
      这种算法背后有提升方法的思想。AODE 算法会利用 SPODE 算法并尝试把许多个训练后的、有足够的训练数据量支撑的SPODE模型集成在一起来构建最终的模型。一般来说,AODE 会以所有维度的特征作为超父训练 n 个 SPODE 模型、然后线性组合出最终的模型
  • 贝叶斯网

    贝叶斯网又称“信念网(Belief Network)”,比起朴素贝叶斯来说、它背后还蕴含了图论的思想。贝叶斯网有许多奇妙的性质,详细的讨论不可避免地要使用到图论的术语,这里仅拟对其做一个直观的介绍。 贝叶斯网既然带了“网”字,它的结构自然可以直观地想成是一张网络,其中:
    • 网络的节点就是单一样本的各个维度上的随机变量X^{(1)},...,X^{(n)}
    • 连接节点的边就是节点之间的依赖关系
    需要注意的是,贝叶斯网一般要求这些边是“有方向的”、同时整张网络中不能出现“环”。无向的贝叶斯网通常是由有向贝叶斯网无向化得到的,此时它被称为 moral graph(除了把所有有向边改成无向边以外,moral graph 还需要将有向网络中不相互独立的随机变量之间连上一条无向边,细节不表),基于它能够非常直观、迅速地看出变量间的条件独立性

    显然,有了代表各个维度随机变量的节点和代表这些节点之间的依赖关系的边之后,各个随机变量之间的条件依赖关系都可以通过这张网络表示出来。类似的东西在条件随机场中也有用到,可以说是一个适用范围非常宽泛的思想

    贝叶斯网的学习在网络结构已经确定的情况下相对简单,其思想和朴素贝叶斯相去无多:只需要对训练集相应的条件进行“计数”即可,所以贝叶斯网的学习任务主要归结于如何找到最恰当的网络结构。常见的做法是定义一个用来打分的函数并基于该函数通过某种搜索手段来决定结构,但正如同很多最优化算法一样、在所有可能的结构空间中搜索最优结构是一个 NP 问题、无法在合理的时间内求解,所以一般会使用替代的方法求近似最优解。常见的方法有两种,一种是贪心法、比如:先定下一个初始的网络结构并从该结构出发,每次增添一条边、删去一条边或调整一条边的方向,期望通过这些手段能够使评分函数的值变大;另一种是直接限定假设空间、比如假设要求的贝叶斯网一定是一个树形的结构

    相比起学习方法来说,贝叶斯网的决策方法相对来说显得比较不平凡。虽说最理想的情况是直接根据贝叶斯网的结构所决定的联合概率密度来计算后验概率,但是这样的计算被证明了是 NP 问题 [Cooper, 1990]。换句话说,只要贝叶斯网稍微复杂一点,这种精确的计算就无法在合理的时间内做完。所以我们同样要借助近似法求解,一种常见的做法是吉布斯采样(Gibbs Sampling),它的定义涉及到马尔科夫链相关的(我还没有学的)知识,这里就不详细展开了(……)

========== 作为总结的分割线 ==========

这章讲了离散型朴素贝叶斯算法的推导,同时还介绍了连续型和混合型朴素贝叶斯算法

此外、还概括性地介绍了半朴素贝叶斯和贝叶斯网,它们的目的都是适当地削弱独立性假设

希望观众老爷们能够喜欢~

编辑于 2017-01-26

文章被以下专栏收录