Skip to content

[机器学习]11 贝叶斯分类器

这一章数学相关的东西比较多....

11.1 贝叶斯决策论

先介绍一些基本概念

  • 类别:y{c1,c2,,cN}
  • 损失:λij:将一个真实标记为cj的样本误分类为ci所产生的损失(不过感觉有点怪,怎么感觉这个表示法就好像写反了一样)
  • 后验概率:P(ci|x):(已出现了)样本x,则其属于类别ci的概率
  • 条件风险:R(ci|x)=j=1mλijP(cj|x),即在样本x出现的条件下将其误分类为ci所产生的期望损失
    • 可见这是个期望,遍历x可能属于的全部类别cj,并且按照对应的后验概率P(cj|x)加权
  • 总体风险:R(h)=Ex[R(h(x)|x)],也就是考虑所有的条件风险,按照样本出现的概率加权。这个式子不要求搞清楚,只要明白这个量相当于一个分类器h对于所有样本的损失之期望即可,这个量可以衡量一个分类器的好坏
  • 判定标准:若h能满足最小化总体风险:h(x)=argmincCR(c|x)则这个h就是贝叶斯最优分类器,记作h

11.1.1 最小化分类错误率

只是要求简单的最小化分类错误率

  • 那么此时λ就是个简单的0-1损失:
λi,j={0i=j1ij
  • 此时的条件风险为:R(c|x)=1P(c|x)
  • 最优分类器的目标变为:h(x)=argmaxcCP(c|x),也就是选择后验概率最大的类别标记。
    • 但说实话,这个后验概率并不好求,因此我们通常用贝叶斯公式,结合先验概率和似然函数来求解

11.1.2 贝叶斯公式

其实就是概率论中经典的条件概率公式

P(c|x)=P(c)P(x|c)P(x)
  • P(c):先验概率,直接反映了样本空间中各类样本所占的比例;这个通常可以估计,如P(c)=|Dc||D|,或者直接题目给定。
  • P(x):证据因子,反映了样本x出现的可能性,与类标记无关。
  • P(x|c):类条件概率,或者更熟悉的名字:似然函数,反映了在类别确定的条件下,样本x出现的可能性。
    • 但其实类条件概率和后验概率一样,不好求。接下来的两节展现了2个解决该问题的方法:
      • 极大似然估计:假设样本遵从某种分布,且数据集中的样本独立同分布,以此来估计类条件概率。
      • 朴素贝叶斯分类器:假设样本特征之间相互独立,以此来确定类条件概率。

11.2 极大似然估计

  • 假设类条件概率P(x|c)服从某种概率分布,且被参数θc唯一确认,极大似然估计的目的就是利用训练集D估算参数θc

11.2.1 极大似然估计的假设

  • 类条件概率P(x|c)的概率分布类型已知(通常会认为样本遵从正态分布),但其中的参数未知(如μc,σc)
  • 训练集D独立同分布产生

如果还有点印象的话,其实这两条就是我们在学概率论的时候那些运算的前提

11.2.2 极大似然估计的原理

  • Dc表示训练集D中第c类样本组成的集合,那么参数θc对于Dc的似然为:P(Dc|θc)=xDcP(x|θc) (因为满足独立同分布,所以自然可以直接连乘)
    • “极大似然”就是找出个θc,使得P(Dc|θc)最大。
  • 对于上式,连乘容易造成下溢,通常使用对数似然:LL(θc)=logP(Dc|θc)=xDcP(x|θc)
  • 那么此时参数θc的极大似然估计为:θ^c=argmaxθcLL(θc)

说到底,还是没给出如何求解θ^c

11.2.3 极大似然法的问题

  • 这种方法严重依赖假设的概率分布是否符合潜在的真实数据分布。(比如你假设样本服从正态分布,但实际上样本分布是个二项分布,那么此时极大似然估计就会十分不准确)

11.3 朴素贝叶斯分类器

朴素贝叶斯同样有假设:属性条件独立性假设:每个属性独立地对分类结果产生影响

  • 朴素贝叶斯分类器的核心公式为:
P(c|x)=P(c)P(x|c)P(x)=P(c)P(x)i=1dP(xi|c)
  • 也就是说,P(x|c)直接等于各个特征的条件概率的乘积。这一思想(公式)似乎在概率论中叫经典贝叶斯公式(还是叫什么?记不清了)。

11.3.1 大致解题思路

  • 我们的目的是得到后验概率P(c|x),根据上述的朴素贝叶斯公式,可知需要基于训练集D估计先验概率P(c)和类条件概率P(xi|c)
  1. 首先,若用Dc表示训练集D中第c类样本组成的集合,那么先验概率P(c)的估计为:P(c)=|Dc||D|
  2. 估算类条件概率P(xi|c)
    1. 对于离散属性,直接用古典概型思想,即查数。用Dc,xi表示在Dc中,第i个属性取值为xi的样本组成的集合,那么P(xi|c)=|Dc,xi||Dc|

    2. 对于连续属性,假设其服从正态分布,那么:

      P(xi|c)=12πσc,iexp((xiμc,i)22σc,i2)
      • 其中μc,iσc,i分别是Dc中第i个属性在第c类样本中的均值和方差。
    3. 这样就可以得到全部的P(xi|c)

  3. 最后,结合P(x) (P(x)通常是直接给出来的,因为实在没法直接确定),代入到核心公式中,得到关于x的后验概率P(c|x)

随后请看例题以明确题目该如何做

11.3.2 拉普拉斯修正

拉普拉斯修正用于解决朴素贝叶斯中,某个属性在训练集中没有出现过的情况。

  • 举个例子:比如xi为“敲声”,c为“好瓜”,但训练集中恰好D敲声=清脆,好瓜=是=,这样就会造成P(xi|c)=0。而P(c|x)又是由P(xi|c)的累乘得到的,所以P(c|x)恒为0。这明显是不对的。

(1) 如何修正

  • N表示训练集D中可能的类别数,Ni表示第i个属性可能的取值数,那么先验和类条件概率(似然修正为):
P^(c)=|Dc|+1|D|+NP^(xi|c)=|Dc,xi|+1|Dc|+Ni
  • 直观来看思路是这样的:这两式都表示“某种样本在某种类别中出现的概率”,为防止这个样本数为0,先加个保底的1;但这样的话,分母也要加上相应的保底数,以保证概率和为1。emmm,关于为什么分母是加NNi,我也不知道。

11.4 半朴素贝叶斯分类器

11.5 贝叶斯网

贝叶斯网和先前那几部分的贝叶斯决策论没啥关系了....相当于是个新的篇幅

贝叶斯网/信念网:借助有向无环图(DAG)来刻画属性间的依赖关系,并使用条件概率表(CPT)来表示属性的联合概率分布。

  • 可以注意到一点:先前朴素贝叶斯有个假设:属性条件独立性假设,也就是每个属性独立地对分类结果产生影响。但这里的假设默认已经表面:不同属性间可能存在依赖关系,属性间不一定独立。

11.5.1 贝叶斯网的思想

  • 假设:给定父结集,每个属性与它的非后裔属性独立。
  • 表示法:有向无环图:B=<G,Θ>G是一个有向无环图,ΘG上的条件概率分布。
    • GG中的每个结点表示一个属性,若属性xi(子结点)依赖于πi(父结点),则G中存在一条从πi指向xi的有向边。
    • ΘΘ用于定量描述这种关系,具体来说Θ包含了每个属性的条件概率表:θxi|πi=PB(xi|πi)

贝叶斯网里每条有向边其实都表示的是一个条件概率,因此在这里还可以结合朴素贝叶斯出题的(虽然这里属性间存在依赖关系,但仍然是可以用条件概率刻画,因此就可以纳入朴素贝叶斯的框架中)

11.5.2 独立性相关性质及证明

  • 贝叶斯网中有以下三种典型结构
  • 证明两者独立就是证明两者的联合概率等于各自的概率的乘积;或者各自带个条件概率。

(1) 同父结构

  • 根据贝叶斯网的公式,有P(a,b,c)=P(a)P(b|a)P(c|a)
  • P(a)除到左边,得到P(a,b,c)P(a)=P(b,c|a)=P(b|a)P(c|a),独立性得证。

(2) V形结构

  • 根据贝叶斯网的公式,有P(a,b,c)=P(a)P(b)P(c|a,b)
  • 将右边按照条件概率展开,得P(a,b,c)=P(a)P(b)P(a,b,c)P(a,b)
  • 移项,消项,得到P(a,b)=P(a)P(b),独立性得证。

(3) 顺序结构

相对来说绕一些

  • 首先明确我们要证的目标:P(a,c|b)=P(a|b)P(c|b),接下来的证明均从左边这个开始
  • 首先左边根据贝叶斯公式可知:P(a,c|b)=P(a,c,b)P(b)
  • 按照贝叶斯网公式进一步展开:=P(a)P(b|a)P(c|b)/P(b)
  • 再条件概率展开:=P(a)P(a,b)P(a)P(b,c)P(b)/P(b)
  • 消去P(a),再将两个部分组合一下,得到:=P(a|b)P(c|b),此时已得P(a,c|b)=P(a|b)P(c|b),独立性得证。

Ques11-例题整理

[计算·朴素贝叶斯分类器]

题目内容

  • 训练集中有十个样本,每个样本包含两个特征:
样本编号12345678910
特征10011111100
特征20101100110
类别+++++-----
  • 现在有一个测试样本,特征为:特征1=1,特征2=0。请用朴素贝叶斯算法计算该样本属于类别+和类别-的后验概率,并确定其分类。

分析与解答

  • 先验概率为:
P(+)=12;P()=12
  • 类条件概率观察可知:
P(x1=1|+)=35;P(x1=1|)=35;P(x2=0|+)=25;P(x2=0|)=35;
  • 根据贝叶斯公式,P(+|x)=P(+,x)P(x)=P(+)P(x|+)P(x),同理P(|x)=P()P(x|)P(x),仅需比较P(+)P(x|+)P()P(x|)即可。

    • P(+)P(x|+)
      • =P(+)P(x1=1|+)P(x2=0|+)
      • =123525
      • =650
    • P()P(x|)
      • =P()P(x1=1|)P(x2=0|)
      • =123535
      • =950
  • P(+|x)<P(|x),所以样本x应该判定为负类。

[计算·贝叶斯网络]

题目内容

  • 假设你有以下条件概率表:
条件概率概率值
P(天气)晴天0.6阴天0.4
P(湿度|天气=晴天)湿0.10.9
P(湿度|天气=阴天)湿0.80.2
P(|草地湿度=湿)0.90.1
P(|草地湿度=)0.20.8
  1. 请画出该条件概率表对应的贝叶斯网络
  2. 请计算P(天气=晴天|=)

分析与解答

  1. 贝叶斯网络如下
  1. 计算过程如下

根据贝叶斯公式:

P(晴天|撑伞)=P(晴天,撑伞)P(撑伞)P(湿)=P(湿|晴天)P(晴天)+P(湿|)P()=0.1×0.6+0.8×0.4=0.38P()=0.62P(撑伞)=P(撑伞|湿)P(湿)+P(撑伞|)P()=0.9×0.38+0.2×0.62=0.466

联合概率

P(晴天,撑伞)=P(晴天)P(湿|晴天)P(撑伞|湿)+P(晴天)P(|晴天)P(撑伞|)=0.6×0.1×0.9+0.6×0.9×0.2=0.162
  • 代入得P(晴天|撑伞)=0.1620.466=0.3476

上次更新于: