贝叶斯决策论

贝叶斯决策论(Bayesian decision theory)是概率框架下实施决策的基本方法。

对分类任务来说,在所有相关概率都己知的理想情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。更确切来说,我们需要通过 先验概率 计算 后验概率,从而得到结果。

  • 先验概率:根据以往经验和分析得到的概率。
  • 后验概率:根据已经发生的事件来分析得到的概率,通常是条件概率的形式。
  • 例:假设山洞中有熊出现的事件为 YY ,山洞中传来一阵熊吼的事件为 XX 。则“听到熊吼之后认为山洞中有熊”的概率为P(YX)P(Y\mid X),它是后验概率。

分类问题的决策

下面我们以多分类任务为例,详细解释贝叶斯决策论是如何利用先验概率求取后验概率的。

假设有nn 种可能的类别标签Y={C1,C2,,Cn}\mathcal Y = \{C_1,C_2 ,… ,C_n\} ,设λij\lambda_{ij} 是将一个真实标记为CjC_j 的样本误分类为CiC_i 所产生的损失
那么基于后验概率P(Cix)P(C_i\mid\mathbf x) 可获得将样本xX\mathbf x\in\cal X 分类为CiC_i 所产生的期望损失 (expected loss),也被称作是在样本x\bf x 上的“条件风险” (conditional risk) :

R(Cix)=j=1nλijP(Cjx)R(C_i\mid\mathbf x)=\sum_{j=1}^n\lambda_{ij}P(C_j\mid\mathbf x)

我们的任务就是希望学习到一个判别准则h:XYh:\cal X\to Y 使得总体的期望风险最小化:

minhEx[R(h(x)x)]\min_h\mathbb E_{\bf x}[R(h(\mathbf x)\mid \mathbf x)]

而要使总体风险最小可以等价于条件风险最小,从而有贝叶斯最优分类器

h(x)=argmincYR(cx)h^*(\mathbf x)=\arg\min_{c\in\cal Y}R(c\mid\mathbf x)

更进一步,如果取误判损失λij=I(ij)\lambda_{ij}=I(i\neq j),那么R(Cix)=1P(Cix)R(C_i\mid\mathbf x)=1-P(C_i\mid\mathbf x),于是就有:

h(x)=argmaxcYP(cx)h^*(\mathbf x)=\arg\max_{c\in\cal Y}P(c\mid\mathbf x)

也就是说,样本x\bf x 被划分为哪一类,取决于它的后验概率哪一个最大。

当我们对后验概率直接建模,那么我们得到的就是判别式模型(discriminative models)。比如:决策树、神经网络、支持向量机等。
当我们对先验概率建模,然后再通过贝叶斯定理得到后验概率时,这样的模型就是生成式模型(generative models)。

频率主义学派与贝叶斯学派

估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。所以实际上概率模型的训练过程就是参数估计(parameter estimation) 过程.

而对于参数估计,统计学界的两个学派分别提供了不同的解决方案:

  • 频率主义学派(Frequentist) 认为参数虽然未知,但却是客观存在的固定值,因此,可通过优
    似然函数等准则来确定参数值;
  • 贝叶斯学派(Bayesian) 认为参数是未观察到的随机变量,所以参数本身也有自己的概率分布,因此,可假定参数服从一个先验分布,然后基于观测到的数据来计算参数的后验分布。

源自频率主义学派的极大似然估计(Maximum Likelihood Estimation,简称 MLE) ,就是一种根据数据采样来估计概率分布参数的经典方法。

需要注意的是,这种参数化的方法虽能使类条件概率估计变得相对简单,但是估计结果的准确性严重依赖于所假设的概率分布形式是否符合潜在的真实数据分布。在现实应用中,欲做出能较好地接近潜在真实分布的假设往往需在一定程度上利用关于应用任务本身的经验知识,否则若仅凭"猜测"来假设概率分布形式,很可能产生误导性的结果。

朴素贝叶斯

当我们使用生成式模型时,即利用贝叶斯公式计算后验概率时,有:

P(Ckx)=P(xCk)P(Ck)P(x)=P(xCk)P(Ck)i=1nP(xCi)P(Ci)P(C_k|\mathbf x) = \frac{P(\mathbf x|C_k)P(C_k)}{P(\mathbf x)}=\frac{P(\mathbf x|C_k)P(C_k)}{\sum\limits_{i=1}^nP(\mathbf x|C_i)P(C_i)}

朴素贝叶斯分类器(naive Bayes classifier) 采用了
“属性条件独立性假设” (attribute conditional ependence assumption):
对已知类别,假设所有属性均相互独立。换言之,假设每个属性独立地对分类结果产
生影响。从而上式可以重写如下:

P(Ckx)=P(Ck)i=1nP(xCi)P(Ci)j=1dP(xjCk)P(C_k|\mathbf x)=\frac{P(C_k)}{\sum\limits_{i=1}^nP(\mathbf x|C_i)P(C_i)}\prod_{j=1}^dP(x_j|C_k)

其中,xjxx_j\in\mathbf x 是样本的第jj 个维度的特征数值。

由于对于给定的所有训练集来说,P(x)=i=1nP(xCi)P(Ci)P(\mathbf x)=\sum\limits_{i=1}^nP(\mathbf x|C_i)P(C_i) 是恒定的。因此朴素贝叶斯分类器的求取如下:

hnb(x)=argmaxCkYP(xCk)P(Ck)P(x)=argmaxCkYP(Ck)j=1dP(xjCk)h_{nb}(\mathbf x)=\arg\max_{C_k\in\cal Y}\frac{P(\mathbf x|C_k)P(C_k)}{P(\mathbf x)}=\arg\max_{C_k\in\cal Y}P(C_k)\prod_{j=1}^dP(x_j|C_k)

标签的概率P(Ck)P(C_k) 是好求的,我们只需要计算训练集中第kk 个类别的占比即可。
而特征对标签的条件概率P(xjCk)P(x_j|C_k) 则根据特征的数据类型不同而不同。

特征对标签的条件概率

样本中不同维度的特征xjx_j 对特定标签CkC_k 的先验概率(条件概率)P(xjCk)P(x_j|C_k) 一般都是通过对数据进行假设,然后利用极大似然估计方法进行参数估计,最后得出结果。

下面我们仅给出结论。

离散属性

当特征/属性的类型是离散数据时,我们可以假设xjx_j 服从于多项式分布。这样一来,对于待测试的样本x(test)\mathbf x^{(\text{test})},其P(xjCk)P(x_j|C_k) 的值就是在所有属于CkC_k 的训练样本中,属性值xj=xj(test)x_j=x_j^{\text{(test)}} 的频率。

连续属性

对于连续数据的特征/属性,我们假设xjN(μk,j,σk,j2)x_j\sim\mathcal N(\mu_{k,j},\sigma^2_{k,j}) ,表示类别为CkC_k 的训练样本中,属性值xj=xj(test)x_j=x_j^{\text{(test)}} 的概率服从于特定的正态分布

P(xj=xj(test)Ck)=12πσk,j2exp((xj(test)μk,j)22σk,j2)\begin{aligned} P(x_j=x_j^{(\text{test})}|C_k) = \frac{1}{\sqrt{2\pi\sigma_{k,j}^2}}\exp\left(-\frac{(x_j^{(\text{test})} - \mu_{k,j})^2}{2\sigma_{k,j}^2}\right) \end{aligned}

拉普拉斯平滑

零概率问题:在计算离散属性的概率时,如果它在训练样本集中没有出现过,会导致该离散属性的概率结果为 0。这是不合理的,“不能因为一个事件没有观察到,就被认为该事件一定不可能发生”。

为了解决这个问题,法国数学家 拉普拉斯 最早提出用 1 法来估计没有出现过的现象的概率。 他指出,当训练样本足够大时,每个离散属性xjx_j 的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。

于是,这个方法也被叫做加法平滑/拉普拉斯平滑(Additive/Laplace Smoothing)。具体如下:

P(xj=xj(test)Ck)=mk,j+λmk+sjλP(x_j=x_j^{(\text{test})}|C_k) = \frac{m_{k,j}+\lambda}{m_k+s_j\lambda}

式中,mk,jm_{k,j} 表示所有属于CkC_k 的训练样本中,属性值xj=xj(test)x_j=x_j^{\text{(test)}} 的频率;mkm_k 表示属于CkC_k 的训练样本个数;sjs_j 表示所有训练样本中,第jj 个属性xjx_j 可以取的离散值的个数;λ\lambda 为平滑参数。

  • λ=0\lambda=0 时就是原始的极大似然估计;
  • λ=1\lambda=1 时就是拉普拉斯平滑;
  • 当 λ\lambda\to\infty 时,由于计算出的所有似然函数都0.5,这将导致模型欠拟合,高偏差。

抗数据缺失性

Scikit-Learn实现

含义
naive_bayes.BernoulliNB伯努利分布下的朴素贝叶斯
naive_bayes.GaussianNB高斯分布下的朴素贝叶斯
naive_bayes.MultinomialNB多项式分布下的朴素贝叶斯
naive_bayes.ComplementNB补充朴素贝叶斯
naive_bayes.CategoricalNB类别朴素贝叶斯
1
2
3
4
5
6
7
8
9
10
11
12
13
from sklearn.naive_bayes import MultinomialNB,GaussianNB,BernoulliNB,ComplementNB,CategoricalNB

from sklearn.model_selection import cross_val_score

nb1=GaussianNB()
nb2=MultinomialNB()
nb3=BernoulliNB()
nb4=ComplementNB()
nb5=CategoricalNB(alpha=1)

for model in [nb1,nb2,nb3,nb4,nb5]:
scores=cross_val_score(model,X,y,cv=10,scoring='accuracy')
print("Accuracy:{:.4f}".format(scores.mean()))

半朴素贝叶斯

待更

附:贝叶斯统计

共轭分布

概率与统计——正态分布的共轭分布-CSDN博客
走进贝叶斯统计(一)—— 先验分布与后验分布 - 知乎 (zhihu.com)
走进贝叶斯统计(二)—— 共轭先验分布 - 知乎 (zhihu.com)

参考

  1. 周志华. 《机器学习》. 清华出版社
  2. 朴素贝叶斯算法原理小结 - 刘建平Pinard - 博客园
  3. 3_bayesian (huaxiaozhuan.com)
  4. 加法平滑/拉普拉斯平滑(Additive/Laplace Smoothing)在朴素贝叶斯分类中的应用 - 知乎