贝叶斯分类器
贝叶斯决策论
贝叶斯决策论是概率框架下实施决策的基本方法。
假设有N中可能的类别标记,即Y={c1,c2,...,cN},λij是将一个真实标记的cj的样本误分类成ci所产生的损失。基于后验概率P(ci∣x)可获得将样本x分类成ci所产生的期望损失,即样本x上的“条件风险”。
R(ci∣x)=j=1∑NλijP(cj∣x)
-
我们的任务是找到一个判定准则h:X−>Y以最小化总体方差。
R(h)=E[R(h(x)∣x)]
-
对于每个样本x,若h能最小化条件风险R(h(x)∣x),则总体风险R(h)也将被最小化。这就产生了贝叶斯判定准则
: 为最小化风险,只需在每个样本上选择那个能使条件风险R(c∣x)最小的类别标记。
h∗(x)=argc∈YminR(c∣x)
h∗被称为贝叶斯最优分类器,R(h∗)称为贝叶斯风险。1−R(h∗)反映了分类器所能达到的最好性能。
-
若目标是最小化分类错误率,误判损失λij可写为:
λij={0,1,ifi=j;otherwise,
-
此时条件风险:
R(c∣x)=1−P(c∣x)
-
于是,最小化分类错误率的贝叶斯最优分类器为:
h∗(x)=argc∈YmaxP(c∣x)
即对每个样本x, 选择能使后验概率P(c∣x)最大的类别标记.
主要有两种策略:给定x, 可通过直接建模P(c∣x) 来预测c,这样得到的是"判别式模型" (discriminative models); 也可先对联合概率分布P(x,c)建模,然后再由此获得P(c∣x) , 这样得到的是"生成式模型" (generative models) 显然,前面介绍的决策树、BP 神经网络、支持向量机等,都可归入判别式模型的范畴。
-
对生成式模型来说,必然考虑
P(c∣x)=P(x)P(x,c)
-
基于贝叶斯定理:
P(c∣x)=P(x)P(c)P(x∣c)
P(c)是类"先验"(prior)概率;表达了各类样本所占的比例
P(x∣c)是样本x相对于类标记c的类条件概率(class−conditionalprobability),或称为"似然"(likelihood);
P(x)是用于归一化的"证据"(evidence)因子
最大似然估计(MLE)
估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计,记关于类别c 的类条件概率为P(x∣c) , 假设P(x∣c) 具有确定的形式并且被参数向量。c 唯一确定,则我们的任务就是利用训练集D 估计参数θc. 为明确起见,我们将P(x∣c)记为P(x∣θc)。
- 令DC表示训练集D中第c类样本组成的集合,假设这些样本是独立同分布的,则参数θc对于数据集DC的依然是:
P(Dc∣θc)=Πx∈DcP(x∣θc)
对θc 进行极大似然估计,就是去寻找能最大化似然P(Dc∣θc)的参数值θc ,直观上看,极大似然估计是试图在θc 所有可能的取值中,找到一个能使数据出现的"可能性"最大的值。
-
连乘操作容易造成下溢,通常使用对数似然
LL(θc)=logP(Dc∣θc)=x∈Dc∑logP(x∣θc)
-
参数θc的极大似然估计θc为:
θc=argθcmaxLL(θc).
-
再连续属性情形下,假设概率密度函数p(x∣c)∼N(μc,σc2),对参数μc,σc2的极大似然估计是:
μc=∣Dc∣1x∈Dc∑xσc2=∣Dc∣1x∈Dc∑(x−μc)(x−μc)T
朴素贝叶斯分类
基于贝叶斯公式来估计后验概率P(c∣x)的主要k困难在于:类条件概率P(x∣c)是所有属性上的联合概率,难以从有限的训练样本直接估计而得。为避开这个障碍,朴素贝叶斯分类器(naÏve Bayes classifier) 采用了"属性条件独立性假设" (attribute conditional i时ependence assu’mption): 对已知类别,假设所有属性相互独立。换言之,假设每个属性独立地对分类结果发生影响.
- 基于属性条件独立性假设
P(c∣x)=P(x)P(c)P(x∣c)=P(x)P(c)Πi=1dP(xi∣c)
d为属性数目,xi为x再第i个属性上的取值
- 基于贝叶斯判定准则,朴素贝叶斯分类器的表达式为:
hnb(x)=argc∈YmaxP(c)Πi=1dP(xi∣c)
令Dc表示训练集D中第c类样本组成的集合,则先验概率:P(c)=D∣Dc∣
对于离散属性,令Dc,xi表示Dc中第i个属性上取值为xi的样本组成的集合:P(xi∣c)=∣Dc∣∣Dc,xi∣
对于连续属性可考虑概率密度函数,假定p(xi∣c)∼N(μc,i,σc,i2),其中μc,i,σc,i2分别是第c类样本再第i个属性上取值的均值和方差:p(xi∣c)=2πσc,i1exp(−2σc,i2(xi−μc,i)2)
例子
用西瓜数据集3.0训练一个朴素贝叶斯分类器,对测试集进行分类:
训练集
![在这里插入图片描述](https://img-blog.csdn.net/20181023172704862?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xvdmVfX2xpdmUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
测试集
![在这里插入图片描述](https://img-blog.csdn.net/2018102317275326?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xvdmVfX2xpdmUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
由于0.038>6.80∗105, 因此朴素贝叶斯分类器将测试样本判为"好瓜"。
拉普拉斯修正
但是有这样一种情况,若某个属性值再训练集中没有与某个类同时出现过,直接计算会出现问题,如:
![在这里插入图片描述](https://img-blog.csdn.net/20181023173601102?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2xvdmVfX2xpdmUx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
如果连乘,则结果必定为0,因此无论什么属性,都会将好瓜分类错误。
- 为了避免这种情况,在估计概率值时通常要进行"平滑",常用"拉普拉斯修正":
P(c)=∣D∣+N∣Dc∣+1P(xi∣c)=∣Dc∣+Ni∣Dc,xi∣+1
N表示训练集D可能的类别数,Ni表示第i个属性可能的取值数
EM算法
在前面的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到,即训练样本是"完整"的.但在现实应用中往往会遇到"不完整"的训练样本,例如由于西瓜的根蒂己脱落,无法看出是"蜷缩"还是"硬挺",则训练样本的"根蒂"属性变量值未知.在这种存在"未观测"变量的情形下,是否仍能对模型参数进行估计呢?
未观测变量的学名是"隐变量" (latent variable).
- EM算法理论公式
- EMs算法通俗实例
- EM论文
- EM python实战
- 如何感性地理解EM算法