[机器学习]11 贝叶斯分类器
概率论老师最喜欢的一集。
这一章数学相关的东西比较多….
11.1 贝叶斯决策论
先介绍一些基本概念
- 类别:$y \in {c_1, c_2, \cdots, c_N}$
- 损失:$\lambda_{ij}$:将一个真实标记为$c_j$的样本误分类为$c_i$所产生的损失(不过感觉有点怪,怎么感觉这个表示法就好像写反了一样)
- 后验概率:$P(c_i\vert x)$:(已出现了)样本$x$,则其属于类别$c_i$的概率
- 条件风险:$R(c_i\vert x)=\sum\limits^m_{j=1}\lambda_{ij}P(c_j\vert x)$,即在样本$x$出现的条件下将其误分类为$c_i$所产生的期望损失
- 可见这是个期望,遍历$x$可能属于的全部类别$c_j$,并且按照对应的后验概率$P(c_j\vert x)$加权
- 总体风险:$R(h)=\mathbb{E_x}[R(h(x)\vert x)]$,也就是考虑所有的条件风险,按照样本出现的概率加权。这个式子不要求搞清楚,只要明白这个量相当于一个分类器$h$对于所有样本的损失之期望即可,这个量可以衡量一个分类器的好坏
- 判定标准:若$h$能满足最小化总体风险:$h^(x)=\arg\min_{c\in C}R(c\vert x)$则这个$h$就是贝叶斯最优分类器,记作$h^*$
11.1.1 最小化分类错误率
只是要求简单的最小化分类错误率
- 那么此时$\lambda$就是个简单的0-1损失:
\[\lambda_{i,j}=\begin{cases}
0 & i=j\\
1 & i\neq j
\end{cases}\]
- 此时的条件风险为:$R(c\vert x)=1-P(c\vert x)$
- 最优分类器的目标变为:$h^*(x)=\arg\max_{c\in C} P(c\vert x)$,也就是选择后验概率最大的类别标记。
- 但说实话,这个后验概率并不好求,因此我们通常用贝叶斯公式,结合先验概率和似然函数来求解
11.1.2 贝叶斯公式
其实就是概率论中经典的条件概率公式
\[P(c\vert x)=\frac{P(c)P(x\vert c)}{P(x)}\]
- $P(c)$:先验概率,直接反映了样本空间中各类样本所占的比例;这个通常可以估计,如$P(c)=\frac{\vert D_c\vert }{\vert D\vert }$,或者直接题目给定。
- $P(x)$:证据因子,反映了样本$x$出现的可能性,与类标记无关。
- $P(x\vert c)$:类条件概率,或者更熟悉的名字:似然函数,反映了在类别确定的条件下,样本$x$出现的可能性。
- 但其实类条件概率和后验概率一样,不好求。接下来的两节展现了2个解决该问题的方法:
- 极大似然估计:假设样本遵从某种分布,且数据集中的样本独立同分布,以此来估计类条件概率。
- 朴素贝叶斯分类器:假设样本特征之间相互独立,以此来确定类条件概率。
11.2 极大似然估计
- 假设类条件概率$P(x\vert c)$服从某种概率分布,且被参数$\theta_c$唯一确认,极大似然估计的目的就是利用训练集$D$估算参数$\theta_c$。
11.2.1 极大似然估计的假设
- 类条件概率$P(x\vert c)$的概率分布类型已知(通常会认为样本遵从正态分布),但其中的参数未知(如$\mu_c,\sigma_c$)
- 训练集$D$独立同分布产生
如果还有点印象的话,其实这两条就是我们在学概率论的时候那些运算的前提
11.2.2 极大似然估计的原理
- 用$D_c$表示训练集$D$中第$c$类样本组成的集合,那么参数$\theta_c$对于$D_c$的似然为:$P(D_c\vert \theta_c)=\prod\limits_{x\in D_c}P(x\vert \theta_c)$ (因为满足独立同分布,所以自然可以直接连乘)
- “极大似然”就是找出个$\theta_c$,使得$P(D_c\vert \theta_c)$最大。
- 对于上式,连乘容易造成下溢,通常使用对数似然:$LL(\theta_c)=\log P(D_c\vert \theta_c)=\sum\limits_{x\in D_c}P(x\vert \theta_c)$
- 那么此时参数$\theta_c$的极大似然估计为:$\hat{\theta}_c=\arg\max\theta_c LL(\theta_c)$
说到底,还是没给出如何求解$\hat{\theta}_c$
11.2.3 极大似然法的问题
- 这种方法严重依赖假设的概率分布是否符合潜在的真实数据分布。(比如你假设样本服从正态分布,但实际上样本分布是个二项分布,那么此时极大似然估计就会十分不准确)
11.3 朴素贝叶斯分类器
朴素贝叶斯同样有假设:属性条件独立性假设:每个属性独立地对分类结果产生影响。
\[P(c\vert x)=\frac{P(c)P(x\vert c)}{P(x)}=\frac{P(c)}{P(x)}\prod^d_{i=1}P(x_i\vert c)\]
- 也就是说,$P(x\vert c)$直接等于各个特征的条件概率的乘积。这一思想(公式)似乎在概率论中叫经典贝叶斯公式(还是叫什么?记不清了)。
11.3.1 大致解题思路
- 我们的目的是得到后验概率$P(c\vert x)$,根据上述的朴素贝叶斯公式,可知需要基于训练集$D$估计先验概率$P(c)$和类条件概率$P(x_i\vert c)$。
- 首先,若用$D_c$表示训练集$D$中第$c$类样本组成的集合,那么先验概率$P(c)$的估计为:$P(c)=\frac{\vert D_c\vert }{\vert D\vert }$
- 估算类条件概率$P(x_i\vert c)$:
- 对于离散属性,直接用古典概型思想,即查数。用$D_{c,x_i}$表示在$D_c$中,第$i$个属性取值为$x_i$的样本组成的集合,那么$P(x_i\vert c)=\frac{\vert D_{c,x_i}\vert }{\vert D_c\vert }$
-
对于连续属性,假设其服从正态分布,那么:
\[P(x_i\vert c)=\frac{1}{\sqrt{2\pi}\sigma_{c,i}}\exp(-\frac{(x_i-\mu_{c,i})^2}{2\sigma^2_{c,i}})\]
- 其中$\mu_{c,i}$和$\sigma_{c,i}$分别是$D_c$中第$i$个属性在第$c$类样本中的均值和方差。
- 这样就可以得到全部的$P(x_i\vert c)$
- 最后,结合$P(x)$ ($P(x)$通常是直接给出来的,因为实在没法直接确定),代入到核心公式中,得到关于$x$的后验概率$P(c\vert x)$。
随后请看例题以明确题目该如何做
11.3.2 拉普拉斯修正
拉普拉斯修正用于解决朴素贝叶斯中,某个属性在训练集中没有出现过的情况。
- 举个例子:比如$x_i$为“敲声”,$c$为“好瓜”,但训练集中恰好$D_{\text{敲声=清脆,好瓜=是}}=\emptyset$,这样就会造成$P(x_i\vert c)=0$。而$P(c\vert x)$又是由$P(x_i\vert c)$的累乘得到的,所以$P(c\vert x)$恒为0。这明显是不对的。
(1) 如何修正
11.4 半朴素贝叶斯分类器
略
11.5 贝叶斯网
贝叶斯网和先前那几部分的贝叶斯决策论没啥关系了….相当于是个新的篇幅
贝叶斯网/信念网:借助有向无环图(DAG)来刻画属性间的依赖关系,并使用条件概率表(CPT)来表示属性的联合概率分布。
- 可以注意到一点:先前朴素贝叶斯有个假设:属性条件独立性假设,也就是每个属性独立地对分类结果产生影响。但这里的假设默认已经表面:不同属性间可能存在依赖关系,属性间不一定独立。
11.5.1 贝叶斯网的思想
- 假设:给定父结集,每个属性与它的非后裔属性独立。
- 表示法:有向无环图:$B=<G,\Theta>$,$G$是一个有向无环图,$\Theta$是$G$上的条件概率分布。
- $G$:$G$中的每个结点表示一个属性,若属性$x_i$(子结点)依赖于$\pi_i$(父结点),则$G$中存在一条从$\pi_i$指向$x_i$的有向边。
- $\Theta$:$\Theta$用于定量描述这种关系,具体来说$\Theta$包含了每个属性的条件概率表:$\theta_{x_i\vert \pi_i}=P_B(x_i\vert \pi_i)$。
贝叶斯网里每条有向边其实都表示的是一个条件概率,因此在这里还可以结合朴素贝叶斯出题的(虽然这里属性间存在依赖关系,但仍然是可以用条件概率刻画,因此就可以纳入朴素贝叶斯的框架中)
11.5.2 独立性相关性质及证明
graph LR
root1((a)) --> child1_1((b)) & child1_2((c))
同父结构:给定父节点a的值,则b和c独立
root2_1((a)) & root2_2((b)) --> child2((c))
V形结构:给定子节点c的值,则a和b必不独立
root3_1((a)) --> root3_2((b)) --> root3_3((c))
顺序结构:给定中间节点b的值,则a和c独立
- 证明两者独立就是证明两者的联合概率等于各自的概率的乘积;或者各自带个条件概率。
(1) 同父结构
- 根据贝叶斯网的公式,有$P(a,b,c)=P(a)\cdot P(b\vert a)\cdot P(c\vert a)$
- 将$P(a)$除到左边,得到$\frac{P(a,b,c)}{P(a)}=P(b,c\vert a)=P(b\vert a)\cdot P(c\vert a)$,独立性得证。
(2) V形结构
- 根据贝叶斯网的公式,有$P(a,b,c)=P(a)\cdot P(b)\cdot P(c\vert a,b)$
- 将右边按照条件概率展开,得$P(a,b,c)=P(a)\cdot P(b)\cdot\frac{P(a,b,c)}{P(a,b)}$
- 移项,消项,得到$P(a,b)=P(a)\cdot P(b)$,独立性得证。
(3) 顺序结构
相对来说绕一些
- 首先明确我们要证的目标:$P(a,c\vert b)=P(a\vert b)\cdot P(c\vert b)$,接下来的证明均从左边这个开始
- 首先左边根据贝叶斯公式可知:$P(a,c\vert b)=\frac{P(a,c,b)}{P(b)}$
- 按照贝叶斯网公式进一步展开:$=P(a)\cdot P(b\vert a)\cdot P(c\vert b)/P(b)$
- 再条件概率展开:$=P(a)\cdot\frac{P(a,b)}{P(a)}\cdot\frac{P(b,c)}{P(b)}/P(b)$
- 消去$P(a)$,再将两个部分组合一下,得到:$=P(a\vert b)\cdot P(c\vert b)$,此时已得$P(a,c\vert b)=P(a\vert b)\cdot P(c\vert b)$,独立性得证。
Ques11-例题整理
[计算·朴素贝叶斯分类器]
题目内容
样本编号 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
特征1 |
0 |
0 |
1 |
1 |
1 |
1 |
1 |
1 |
0 |
0 |
特征2 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
1 |
1 |
0 |
类别 |
+ |
+ |
+ |
+ |
+ |
- |
- |
- |
- |
- |
- 现在有一个测试样本,特征为:特征1=1,特征2=0。请用朴素贝叶斯算法计算该样本属于类别+和类别-的后验概率,并确定其分类。
分析与解答
\[P\left(+\right)=\frac{1}{2};P\left(-\right)=\frac{1}{2}\]
\[P\left(x_1=1\middle\vert +\right)=\frac{3}{5};\]
\[P\left(x_1=1\middle\vert -\right)=\frac{3}{5};\]
\[P\left(x_2=0\middle\vert +\right)=\frac{2}{5};\]
\[P\left(x_2=0\middle\vert -\right)=\frac{3}{5};\]
- 根据贝叶斯公式,$P\left(+\middle\vert x\right)=\frac{P\left(+,x\right)}{P\left(x\right)}=\frac{P\left(+\right)P\left(x\middle\vert +\right)}{P\left(x\right)}$,同理$P\left(-\middle\vert x\right)=\frac{P\left(-\right)P\left(x\middle\vert -\right)}{P\left(x\right)}$,仅需比较$P(+)P(x\vert +)和P(-)P(x\vert -)$即可。
- $P\left(+\right)P\left(x\middle\vert +\right)$
- $=P\left(+\right)P\left(x_1=1\middle\vert +\right)P\left(x_2=0\middle\vert +\right)$
- $=\frac{1}{2}\cdot\frac{3}{5}\cdot\frac{2}{5}$
- $=\frac{6}{50}$
- $P\left(-\right)P\left(x\middle\vert -\right)$
- $=P\left(-\right)P\left(x_1=1\middle\vert -\right)P\left(x_2=0\middle\vert -\right)$
- $=\frac{1}{2}\cdot\frac{3}{5}\cdot\frac{3}{5}$
- $=\frac{9}{50}$
- 故$P\left(+\middle\vert x\right)<P\left(-\middle\vert x\right)$,所以样本x应该判定为负类。
[计算·贝叶斯网络]
题目内容
条件概率 |
概率值 |
$P(\text{天气})$ |
${\text{晴天}:0.6,\text{阴天}:0.4}$ |
$P(\text{湿度}\vert\text{天气}=\text{晴天})$ |
${湿润:0.1,干燥:0.9}$ |
$P(\text{湿度}\vert\text{天气}=\text{阴天})$ |
${湿润:0.8,干燥:0.2}$ |
$P(撑伞\vert\text{草地湿度}=湿润)$ |
${是:0.9,否:0.1}$ |
$P(撑伞\vert\text{草地湿度}=干燥)$ |
${是:0.2,否:0.8}$ |
- 请画出该条件概率表对应的贝叶斯网络
- 请计算$P(\text{天气}=\text{晴天}\vert 撑伞=是)$
分析与解答
- 贝叶斯网络如下
graph LR
x1天气-->x2湿度-->x3撑伞
- 计算过程如下
根据贝叶斯公式:
\[P(\text{晴天}\vert \text{撑伞})=\frac{P(\text{晴天},\text{撑伞})}{P(\text{撑伞})}\]
\[P(湿润)=P(湿润\vert \text{晴天})P(\text{晴天})\\+P(湿润\vert 阴天)P(阴天)\]
\[=0.1\times0.6+0.8\times0.4\]
\[=0.38\]
\[P(干燥)=0.62\]
\[P(\text{撑伞})=P(\text{撑伞}\vert 湿润)P(湿润)\\+P(\text{撑伞}\vert 干燥)P(干燥)\]
\[=0.9\times0.38+0.2\times0.62\]
\[=0.466\]
联合概率
\[P(\text{晴天},\text{撑伞}) \\ =P(\text{晴天})P(湿润\vert \text{晴天})P(\text{撑伞}\vert 湿润) \\ +P(\text{晴天})P(干燥\vert \text{晴天})P(\text{撑伞}\vert 干燥)\]
\[=0.6\times0.1\times0.9+0.6\times0.9\times0.2\]
\[=0.162\]
- 代入得$P(\text{晴天}\vert \text{撑伞})=\frac{0.162}{0.466}=0.3476$