半朴素贝叶斯分类器及贝叶斯网知识点(摘自西瓜书)
2017-11-10 14:46
239 查看
半朴素贝叶斯分类器
半朴素贝叶斯分类器的基本思想: 适当考虑一部分属性间的相互依赖信息。独依赖估计(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,Θ>将属性x1,x2,…,xd的联合概率分布定义为Pb(x1,x2,…,xd)=∏i=1dPB(xi|πi)=∏i=1dθxi|πi
贝叶斯网中三个变量之间的典型依赖关系:
同父结构:x1已知,则x3⊥x4|x1;x1未知,则x3╨x4不成立。
V型结构:x4已知,则x1⊥x2|x4不成立;x4未知,则x1╨x2成立。
顺序结构:x已知,则y⊥z|x成立,但y╨z不成立。
其中,以V型结构为例,边际独立性的验证如下:
P(x1,x2)=∑x4P(x1,x2,x4)=∑x4P(x4|x1,x2)P(x1)P(x2)=P(x1)P(x2)
学习
贝叶斯网学习的首要任务就是根据训练数据集找出结构最“恰当”的贝叶斯网。“评分搜索”是求解这一问题的常用办法:定义一个评分函数用于评估贝叶斯网与训练数据的契合程度;
基于评分函数寻找结构最优的贝叶斯网。
常用评分函数通常基于信息论准则,其将学习问题看作一个数据压缩任务,学习的目标是找到一个能以最短编码长度描述训练数据的模型,其中编码的长度包括描述模型自身所需的字节长度和使用该模型描述数据所需的字节长度。
对于贝叶斯网学习而言,模型就为一个贝叶斯网,每个贝叶斯网描述了一个在训练数据上的概率分布,其自由一套编码机制。因此,我们只需选择综合编码长度最短的贝叶斯网。这就是“最小描述长度”准则。
给定训练集D={x1,x2,…,xm},贝叶斯网B=<G,Θ>在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)进行极大似然估计。
L(B|D)=∏i=1mPB(xi)=∏i=1mPD(xi|πi)PB(x1,x2,…,xm)=∏i=1mPB(x1|πi)=∏i=1mΘxi|πi⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⇒θxi|πi=P^D(xi|πi)
其中p^(⋅)是D上的经验分布。
经验分布函数——设x1,x2,…,xn是总体X的一组容量为n的样本观测值,将它们从小到大的顺序重新排列为x∗1,x∗2,…,x∗n,对于任意实数x,定义函数
Fn(x)=⎧⎩⎨⎪⎪⎪⎪⎪⎪0,x<x∗1kn,x∗k≤x<x∗k+1,k=1,2,…,n−11,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;
证据变量E及其取值e;
待查询变量Q及其取值q.
过程:
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”,则不能保证马尔科夫链存在平稳分布,此时吉布斯采样会给出错误的估计结果。
相关文章推荐
- Knowledge Tracing -- 基于贝叶斯的学生知识点追踪(BKT)
- 贝叶斯篇:贝叶斯的概率推到,朴素贝叶斯分类器及Python实现
- 前端开发面试知识点大纲--摘自jackyWHJ
- 摘自代码阅读方法与实践书籍的知识点总结
- 贝叶斯分类知识点梳理
- 摘自代码阅读方法与实践书籍的知识点总结
- 机器学习——贝叶斯朴素贝叶斯 知识点与面试总结
- C++ 朴素贝叶斯模型(Naive Bayesian Model,NBM)实现, 西瓜实验数据集 基于周志华老师机器学习
- 摘自python3-cookbook的一些知识点
- 聚类--(摘自西瓜书)
- 空间几何变换知识点——摘自《机器视觉研究与发展》赵彭
- 贝叶斯系列:(一)朴素贝叶斯分类器
- 集成学习--(摘自西瓜书)
- iOS--小知识点(持续更新)
- 朴素贝叶斯
- .net 网站开发知识点一
- android 网络有关的知识点
- Android知识点
- python3学习知识点笔记
- iOS navigationBar的一些知识点