朴素贝叶斯
朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。
对于给定的训练数据集,
- 首先给予特征条件独立假设学习出输入输出的联合概率分布;
- 然后基于此模型,对给定的输入 xx,利用贝叶斯定理求出后验概率最大的输出 。
朴素贝叶斯方法实现简单,学习与预测的效率都比较高,是一种常用的方法。
基本方法
设输入空间 X⊆RnX⊆Rn 是 nn 维向量的集合,输出空间为类标记集合 ,输入为特征向量 x∈Xx∈X,输出为类标记 yi∈Yyi∈Y。已知 XX 是定义在 上的随机向量, Y 是定义在输出空间 YY 上的随机变量。P(X,Y)P(X,Y) 是 XX 和 的联合概率分布。训练数据集:
是由 P(X,Y)P(X,Y) 独立同分布产生。
朴素贝叶斯通过训练数据集学习联合概率分布 P(X,Y)P(X,Y)。具体的,学习一下的先验概率分布以及条件概率分布。
先验概率分布:
P(Y=ck) k=0,1,...,KP(Y=ck) k=0,1,...,K条件概率分布:
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=xn)|Y=ck)P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=xn)|Y=ck)
于是可以学习到联合概率分布 P(X,Y)P(X,Y)。
但是,条件概率分布 P(X=x|Y=ck)P(X=x|Y=ck) 有指数量级的参数,其估计实际是不可行的。因此,朴素贝叶斯在这里对条件概率做了 条件独立性假设,具体如下:
上面这个假设是一个较强的假设,朴素贝叶斯法的 “朴素” 也因此得来。、
朴素贝叶斯方法学习到的是生成数据的机制,因此属于生成模型。上面的条件独立假设实际上是说用于分类的特征在类确定的条件下都是条件独立的。
利用朴素贝叶斯方法进行分类的时候,对于给定的输入 xx,通过学习到的模型计算后验概率分布 ,然后将后验概率最大的类作为 xx 的类进行输出。而后验概率的计算根据贝叶斯定理计算:
将条件独立性假设带入上面的式子中,得到:
这个式子是朴素贝叶斯方法进行分类的基本公式。因此,朴素贝叶斯分类器可以表示为:
观察上式可以看到,分母对于所有的 ckck 都是相同的。因此:
贝叶斯学习与分类算法
下面给出朴素贝叶斯法的学习与分类算法:
- 输入:训练书记 T={(x1,y1),(x2,y2),…,(xN,yN)}T={(x1,y1),(x2,y2),…,(xN,yN)},其中 xi={x(1)i,x(2)i,…,x(N)i}Txi={xi(1),xi(2),…,xi(N)}T,x(j)ixi(j) 是第 ii 个样本的第 个特征,x(j)i∈{aj1,aj2,…,ajSj}xi(j)∈{aj1,aj2,…,ajSj},ajlajl 是第 jj 个特征可能取得第 个值,j=1,2,…,n,l=1,2,…,Sj, yi∈{c1,c2,…,cK}j=1,2,…,n,l=1,2,…,Sj, yi∈{c1,c2,…,cK};实例 xx;
- 输出:实例 的分类
计算先验概率以及条件概率
P(Y=ck)=∑Ni=1I(yi=ck)N, k=1,2,...,KP(X(j)=ajl|Y=ck)=∑Ni=1I(x(i)i=ajl,yi=ck)∑Ni=1I(yi=ck)j=1,2,...,n; l=1,2,...,Sj, k=1,2,...,KP(Y=ck)=∑i=1NI(yi=ck)N, k=1,2,...,KP(X(j)=ajl|Y=ck)=∑i=1NI(xi(i)=ajl,yi=ck)∑i=1NI(yi=ck)j=1,2,...,n; l=1,2,...,Sj, k=1,2,...,K对于给定的实例 x=(x(1),x(2),...,x(n))Tx=(x(1),x(2),...,x(n))T,计算:
P(Y=ck)∏j=1nP(Xj=x(j)|Y=ck), k=1,2,...,KP(Y=ck)∏j=1nP(Xj=x(j)|Y=ck), k=1,2,...,K
- 确定实例 xx 的分类
- 确定实例 xx 的分类
拉普拉斯平滑
使用极大似然估计可能会出现所要估计的概率值为 0 的情况,这时会影响到后延概率的计算结果,使分类产生偏差。解决这个问题的方法是采用贝叶斯估计,条件概率的贝叶斯估计就是:
在上面的公式中,参数 λλ 常取 1,此时也就是所谓的 拉普拉斯平滑(Laplace smoothing)。此时,先验概率的贝叶斯估计是:
贝叶斯网
贝叶斯网(Bayesian network) 亦称为”信念网“(belief network),它借助有向无环图(Directed Acyclic Graph, DAG) 来刻画属性之间的依赖关系,并使用条件概率表(Conditional Probability Tabel,CPT)来描述属性集合的联合概率分布。
为了简化讨论,这里只考虑所有属性都是离散星的,对于连续的属性,条件概率表可以推广位条件概率密度函数。
具体来说,一个贝叶斯网 B 由结构 G 和参数 ΘΘ 两部分构成,也就是说 B=<G,Θ>B=<G,Θ>。其中,网络结构 GG 是一个有向无环图,其中每个节点对应于一个属性,若两个属性有直接的依赖关系,则他们由一条边连接起来;参数 用来定量描述这种依赖关系,假设属性 xixi 在 GG 中的父节点集为 ,则 ΘΘ 包含了每个属性的条件概率表:
结构
贝叶斯网结构有效地表达了属性间的条件独立性。给定父节点集,贝叶斯网假设每个属性与它的非后裔属性独立,于是 B=<G,Θ>B=<G,Θ> 将属性 x1,x2,...,xdx1,x2,...,xd 的联合概率分布定义为:
下图中给出的是贝叶斯网络中三个变量之间典型的依赖关系:
在 “同父结构” 中,给定父节点 x1x1 的取值,则 x3x3 与 x4x4 条件独立。在 “顺序”结构中,给定 xx 的值,则 与 zz 条件独立。V 型结构也叫做 “冲撞” 结构,给定子节点 的取值,x1,x2x1,x2 一定不独立;但是,在 x4x4 结构完全未知的前提下,则 V 型结构下 x1x1 与 x2x2 却是相互独立的。且这样的独立性称为 “边际独立性”。