半朴素贝叶斯分类器
半朴素贝叶斯分类器的基本思想: 适当考虑一部分属性间的相互依赖信息。
独依赖估计(One-Dependent Estimator,简称ODE) 是半朴素贝叶斯分类器最常用的一种策略。
P(c|x)∝P(c)∏i=1dP(xi|c,pai)
其中 pai 为属性 xi 所依赖的属性,称为 xi 的父属性。
SPODE
假设所有属性都依赖于同一个属性,称为“超父”(super-parent),然后通过交叉验证等模型选择方法来确定超父属性。
其中, xi 为超父属性。
TAN
基于最大带权生成树算法:
- 计算任意两个属性之间的条件互信息
I(xi,xj|y)=∑xi,xj;c∈yP(xi,xj|c)logP(xi,xj|c)P(xi|c)P(xj|c); - 以属性为结点构建完全图,任意两个结点之间边的权重设为 I(xi,xj|y) ;
- 构建此完全图的最大带权生成树,挑选根变量,将边置为有向;
- 加入类别结点y,增加从y到每个属性的有向边。
- 计算任意两个属性之间的条件互信息
AODE
尝试将每个属性作为超父来构建SPODE,将具有足够训练数据支撑的SPODE集成起来作为最终结果。
P(c|x)∝∑i=1|Dxi|≥m′P(c,xi)∏j=1dP(xj|c,xi)其中 Dxi 是在第i个属性上取值为 xi 的样本的集合, m′ 为阈值常数(其值默认为30)。
P(c,xi) 和 P(xj|c,xi) 的计算公式为:
P^(c,xi)=|Dc,xi+1||D|+N∗Ni
P^(xj|c,xi)=|Dc,xi,xj+1||Dc,xi|+Nj
其中N是D中可能的类别数, Ni 是第i个属性可能的取值数, Dc,xi 是类别为c且在第i个属性上取值为 xi 的样本集合, Dc,xi,xj 是类别为c且在第i和第j个属性上取值分别为 xi 和 xj 的样本集合。
贝叶斯网
贝叶斯网: 借助有向无环图来刻画属性之间的依赖关系,并使用条件概率表(Conditional Probability Table)来描述属性的联合概率分布。
一个贝叶斯网B由结构G和参数Θ两部分构成,即 B=<G,Θ> 。
网络结构G: 一个有向无环图,其每一个结点对应于一个属性,若两个属性有直接依赖关系,则它们由一条边连接起来。
参数Θ: 描述属性间的直接依赖关系,假设属性 xi 在G中的父节点集为 πi ,则Θ包含了每个属性的条件概率表 θxi|πi=PB(xi|πi) 。
结构
给定父节点集,贝叶斯网假设每个属性与它的非后裔属性独立,则B= <G,Θ> <script type="math/tex" id="MathJax-Element-26"> </script>将属性 x1,x2,…,xd 的联合概率分布定义为
贝叶斯网中三个变量之间的典型依赖关系:
- 同父结构: x1 已知,则 x3⊥x4|x1 ; x1 未知,则 x3╨x4 不成立。
- V型结构: x4 已知,则 x1⊥x2|x4 不成立; x4 未知,则 x1╨x2 成立。
- 顺序结构:x已知,则y⊥z|x成立,但y╨z不成立。
其中,以V型结构为例,边际独立性的验证如下:
学习
贝叶斯网学习的首要任务就是根据训练数据集找出结构最“恰当”的贝叶斯网。“评分搜索”是求解这一问题的常用办法:
- 定义一个评分函数用于评估贝叶斯网与训练数据的契合程度;
- 基于评分函数寻找结构最优的贝叶斯网。
常用评分函数通常基于信息论准则,其将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型,其中编码的长度包括描述模型自身所需的字节长度和使用该模型描述数据所需的字节长度。
对于贝叶斯网学习而言,模型就为一个贝叶斯网,每个贝叶斯网描述了一个在训练数据上的概率分布,其自由一套编码机制。因此,我们只需选择综合编码长度最短的贝叶斯网。这就是“最小描述长度”准则。
给定训练集D={ x1,x2,…,xm },贝叶斯网B= <G,Θ> <script type="math/tex" id="MathJax-Element-39"> </script>在D上的评分函数为:
s(B|D)=f(θ)|B|−L(B|D)
其中,|B|是贝叶斯网的参数个数;f(θ)表示描述每个参数θ所需的字节数; L(B|D)=∏i=1mPB(xi) 表示贝叶斯网B的对然。
- f(θ)=1 ,AIC(Akaike Information Criterion)评分函数: AIC(B|D)=|B|−L(B|D)
- f(θ)=12logm ,BIC(Bayesian Information Criterion)评分函数: BIC(B|D)=logm2|B|−L(B|D)
若贝叶斯网的网络结构G固定,则评分函数第一项的值为固定值。此时,最小化评分函数就是对 L(B|D) 进行极大似然估计。
其中 p^(⋅) 是D上的经验分布。
经验分布函数——设 x1,x2,…,xn 是总体X的一组容量为n的样本观测值,将它们从小到大的顺序重新排列为 x∗1,x∗2,…,x∗n ,对于任意实数 x ,定义函数
从所有可能的网络结构空间搜索最优贝叶斯网结构是一个NP难问题。有两种常用的策略能在有限时间内求得近似解:
- 贪心法,例如从某个网络结构出发,每次调整一条边,直到评分函数值不再降低为止;
- 通过给网络结构施加约束来削减搜索空间,例如将网络结构限定为树形结构等。
推断
通过已知变量观测值来推测待查询变量的过程称为“推断”,其中已知变量观测值称为“证据”。在现实应用中,贝叶斯网的近似推断常使用吉布斯采样(Gibbs sampling)来完成。
令 Q={Q1,Q2,…,Qn} 表示带查询变量, E={E1,E2,…,Ek} 为证据变量,已知取值为 e={e1,e2,…,ek} 。目标是计算后验概率 P(Q=q|E=e) ,其中 q={q1,q2,…,qn} 是待查询变量的一组取值。
吉布斯采样算法:
输入: 贝叶斯网 B=<G,Θ> ;
采样次数 T ;
证据变量
待查询变量
过程:
nq=0 - q0= 对 Q 随机赋初值
- for
t=1,2,…,T do - for Qi∈Q do
- Z=E∪Q \ {Qi} ;
- z=e∪qt−1 \ {qt−1i} ;
- 根据B计算分布 PB(Qi|Z=z) ;
- qti= 根据 PB(Qi|Z=z) 采样所获 Qi 取值;
- qt= 将 qt−1i 中的 qti 替换
- end for
- if qt = q then
-
nq=nq+1 - end if
- end for
输出: P(Q=q|E=e)≃nqT
实质上,吉布斯采样是在贝叶斯网所有变量的联合状态与证据 E=e 一致的子空间中进行“随机漫步”。每一步仅依赖于前一步的状态,这是一个“马尔科夫链”(Markov chain)。在一定条件下,无论从什么初始状态开始,马尔科夫链第 t 步的状态分布在
t→∞ 时必收敛于一个平稳分布;对于吉布斯采样而言,这个分布恰好为 P(Q|E=e) 。但马尔科夫链通常需要很长时间才能趋于平稳分布,因此,吉布斯采样算法的收敛速度较慢。注:若贝叶斯网中存在极端概率“0”或“1”,则不能保证马尔科夫链存在平稳分布,此时吉布斯采样会给出错误的估计结果。