Half-naive Bayes Classifier详解

Half-naive Bayes Classifier详解

第九次写博客,本人数学基础不是太好,如果有幸能得到读者指正,感激不尽,希望能借此机会向大家学习。这一篇的内容来自于各种书籍和网上资料,以及自己的一些见解。

预备知识:

这篇文章主要是在《Naive Bayes Classifier详解(附带概率论公式推导)》基础之上进行的扩展,因此一些有关朴素贝叶斯的公式推导和定理证明不在此进行过多赘述,大家可以参考我的上一篇博客。

  在朴素贝叶斯分类器中,为了降低贝叶斯公式中估计后验概率P(c|x)的困难,采用了“属性条件独立性假设”,但是在现实任务中,这个假设往往难以成立。因此,对属性条件独立性假设进行一定程度的放松,由此产生了一类被称为“半朴素贝叶斯分类器”(Half-naive Bayes Classifier)的学习器。半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息,从而既不需要进行完全联合概率计算,又不至于彻底忽略了比较强的属性依赖关系。

Half-naive Bayes Classifier详解图1 半朴素贝叶斯分类器

推导过程

这一部分主要讲各种半朴素贝叶斯分类器的特点以及一些概率论方面的公式推导,总体分为五部分:独依赖估计(One-Dependent Estimator)、超父独依赖估计(Super-Parent ODE)、树增强型朴素贝叶斯(Tree Augment naive Bayes)、平均独依赖估计(Average One-Dependent Estimator)以及对SPODE的进一步思考。

独依赖估计(One-Dependent Estimator)

  “独依赖估计”(One-Dependent Estimator),简称ODE,是半朴素贝叶斯分类器最常用的一种形式。所谓“独依赖”就是假设每个属性除了依赖于类别标记之外,最多依赖于一个其他的属性,即

Half-naive Bayes Classifier详解

其中,d为属性个数,xi为第i个属性,Paixi所依赖的属性,称为xi的父属性。
  此时,对于每个属性xi,若其父属性Pai已知,那么就可以通过下式来计算P(xi|c,Pai),即

Half-naive Bayes Classifier详解

其中,Ni为第i个属性的可能取值数量。于是,问题的关键就转化为如何确定每个属性的父属性。

超父独依赖估计(Super-Parent ODE)

  最直接的确定父属性的方法,就是直接假设所有属性都依赖与同一个属性,这个属性称为“超父”(super-parent),然后通过交叉验证等模型选择方法来确定超父属性,由此形成了超父独依赖估计(Super-Parent ODE),简称SPODE方法。例如,在图1(b)中,x1是超父属性。

树增强型朴素贝叶斯(Tree Augment naive Bayes)

  TAN则是在最大带权生成树算法(maximum weighted spanning tree)的基础上,通过以下步骤将属性间的依赖关系约减为如图1(c)所示的树形结构:
  (1) 计算任意两个属性之间的条件互信息(conditional mutual information)

Half-naive Bayes Classifier详解

  (2) 以属性为结点构建完全图,任意两个结点之间边的权重设为I(xi,xj|y)
  (3) 构建此完全图的最大带权生成树,挑选根变量,将边置为有向;
  (4) 加入类别结点y,增加从y到每个属性的有向边。
  条件互信息I(xi,xj|y)刻画了属性xixj在已知类别情况下的相关性,因此,通过最大带权生成树算法,TAN实际上进保存了强相关属性之间的依赖性。

平均独依赖估计(Average One-Dependent Estimator)

  “平均独依赖估计”(Average One-Dependent Estimator),简称AODE是一种基于集成学习机制、更为强大的独依赖分类器。与SPODE通过模型选择确定超父属性不同,AODE尝试将每个属性作为超父来构建SPODE,然后将那些“具有足够训练数据支撑”的SPODE集成起来作为最终结果,即

Half-naive Bayes Classifier详解

其中Dxi是在第i个属性上取值为xi的样本集合,m为阈值常数。显然,AODE需要估计P(c,xi)P(xj|c,xi),类似于朴素贝叶斯分类器中的“拉普拉斯修正”后的条件概率估计式,有

Half-naive Bayes Classifier详解

其中,ND中可能的类别总数,Ni是第i个属性的可能取值数,Dc,xi是类别标记为c且在第i个属性上取值为xi的样本集合,Dc,xi,xj是类别标记为c且在第i和第j个属性上分别取值为xixj的样本集合。

进一步思考

  能否通过考虑属性之间的高阶依赖来进一步提高分类器的泛化性能?即将单个超父属性Pai替换为包含k个属性的父属性集合Pai,从而将ODE拓展为kDE。需要注意的是,随着k的增加,准确估计概率P(xi|c,Pai)所需的样本数量将以指数级增加。因此,若训练数据非常充分,泛化性能有可能会提高,但是在训练数据有限的情况下,则又会陷入估计高阶联合概率的泥沼。