四、贝叶斯分类器

时间:2022-12-20 12:37:08

贝叶斯决策论 (Bayesian decision theory)是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都己知的理想情形,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。贝叶斯模型的基本形式为

\[P(c|{\bf{x}}) = \frac{{P(c)P({\bf{x}}|c)}}{{P({\bf{x}})}}\]

公式的意义在于根据条件概率公式推得样本$\bf{x}$属于c类的概率的表示形式,计算样本$\bf{x}$属于各类的$P(c|{\bf{x}})$值,最大的对应的类别即为朴素贝叶斯判定的类别。

其中$P(\bf{x})$对于每一个类别都是一样的,$P(c)$可依据大数定理通过样本集中的发生频率估计,那怎么估计类条件概率${P({\bf{x}}|c)}$呢?

下面介绍两种估计类条件概率${P({\bf{x}}|c)}$的方式,一种是极大似然估计,先假设带参数的概率分布形式,再根据最大化样本发生概率来计算最优参数;另一种是朴素贝叶斯,假设属性之间相互独立,用各属性的类条件概率的累乘来求类条件概率${P({\bf{x}}|c)}$。

最后介绍EM算法,当样本存在缺失属性值时,结合极大似然函数和朴素贝叶斯,多次迭代最终收敛到局部最优值。

1. 极大似然估计

估计类条件概率的一种常用策略是先假定其具有某种确定的概率分布形式,再基于已有的训练样本对该概率分布形式的参数进行调整。具体地,记关于类别 c 的类条件概率为${P({\bf{x}}|c)}$, 假设${P({\bf{x}}|c)}$具有确定的形式并且被参数向量。c 唯一确定,则我们的任务就是利用训练集D估计参数$\theta_c$。为明确起见我们将 ${P({\bf{x}}|c)}$记为$P(\bf{x}|\theta_c)$。

事实上,概率模型的训练过程就是参数估计过程。对于参数估计统计学界的两个学派分别提供了不同的解决方案:
频率主义学派(Frequentist)认为参数虽然未知,但却是客观存在的固定值,因此,可通过优化似然函数等准则来确定参数值;贝叶斯学派 (Bayesian)则认为参数是未观察到的随机变量,其本身也可有分布,因此,可假定参数服从一个先验分布,然后基于观测到的数据来计算参数的后验分布。

本节介绍源自频率主义学派的极大似然估计(Maximum Likelihood Estimation,简称 MLE) ,参数未知且固定,根据训练集来估计参数的经典方法。极大似然估计的目的就是:利用已知的样本结果,反推最有可能(最大概率)导致这样结果的参数值。
令$D_c$表示训练集D中第c类样本组成的集合,假设这些样本是独立同分布的,则c类样本的类条件概率的参数$\theta_c$对于数据集$D_c$的似然是,

$P({D_c}|{\theta _c}) = \mathop \prod \limits_{\bf{x} \in {D_c}} P(\bf{x}|{\theta _c})$

其中,$P(\bf{x}|{\theta _c})$表示每一个样本$\bf{x}$属于c类的概率,也就是按照我们假设的参数为$\theta_c$属于c类的类条件概率$p$。对每一个$\bf{x} \in {D_c}$样本的类条件概率累乘即是每一个样本都属于c类的概率$P({D_c}|{\theta _c})$。

对$\theta_c$进行极大似然估计,就是去找到参数值$\hat{\theta_c}$能够使最大化似然$P({D_c}|\theta _c)$。直观上看,极大似然估计是试图在$\theta_c$所有可能的取值中,找到一个能使该样本集出现的"可能性"最大的值。

小于1的概率不断连乘操作易造成下溢,通常使用对数似然 (log-likelihood)转化为累加, 

$\begin{array}{l}
LL({\theta _c}) = \log P({D_c}|{\theta _c})\\
= \sum\limits_{\bf{x} \in {D_c}} {\log P(\bf{x}|{\theta _c})}
\end{array}$

此时参数$\theta_c$的极大似然估计$\hat{\theta_c}$为

$\widehat {{\theta _c}} = \mathop {\arg \max}\limits_{{\theta _c}} LL({\theta _c})$

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

2. 朴素贝叶斯分类器

基于贝叶斯公式来估计后验概率${P({\bf{x}}|c)}$的主要用难在于:类条件概率$P(\bf{x}|{\theta _c})$是所有属性上的联合概率,难以从有限的训练样本直接估计而得。为避开这个障碍,朴素贝叶斯分类器 (naÏve Bayes classifier)采用了"属性条件独立性假设" (attribute conditional independence assumption):对已知类别,假设所有属性相互独立.换言之,假设每个属性独立地对分类结果发生影响。基于属性条件独立性假设,贝叶斯公式可重写为

$P(c|{\bf{x}}) = \frac{{P(c)P({\bf{x}}|c)}}{{P({\bf{x}})}} = \frac{{P(c)}}{{P({\bf{x}})}}\prod\limits_{i = 1}^d {P({x_i}|c)} $
其中d为属性数目,$x_i$为$\bf{x}$在第i个属性上的取值。

显然,朴素贝叶斯分类器的训练过程就是基于训练集 D 来估计类先验概率$P(c)$ , 并为每个属性估计条件概率 $P(x_i |c)$.
令 Dc 表示训练集 D 中第 c 类样本组成的集合,若有充足的独立同分布样本,则可容易地估计出类先验概率
$P(c) = \frac{{|{D_c}|}}{D}$

对离散属性而言,令${{D_{c,{x_i}}}}$表示$D_c$中在第i个属性上取值为$x_i$的样本组成的集合,则条件概率$P({x_i}|c)$可估计为 

$P({x_i}|c) = \frac{{|{D_{c,{x_i}}}|}}{D}$

对连续属性可考虑概率密度函数,则有

四、贝叶斯分类器

为了避免其他属性携带的信息被训练集中未出现的属性值"抹去",在估计概率值时通常要进行"平滑" (smoothing) ,常用"拉普拉斯修正" (Laplacian correction)。具体来说,令 N 表示训练集 D 中可能的类别数,$N_i$表示第$i$个属性可能的取值数,则$P(c)$和$P(x_i |c)$分别修正为

$\begin{array}{l}
\hat P(c) = \frac{{|{D_c}| + 1}}{{D + N}}\\
\hat P({x_i}|c) = \frac{{|{D_{c,{x_i}}}| + 1}}{{D + {N_i}}}
\end{array}$

 

最后即可按照

$P(c|{\bf{x}}) = P(c)\prod\limits_{i = 1}^d {P({x_i}|c)} $

计算样本$\bf{x}$属于各类的$P(c|{\bf{x}})$值,最大的对应的类别即为朴素贝叶斯判定的类别。

 

贝叶斯决策论在机器学习、模式识别等诸多关注数据分析的领域都有极为重要的地位.对贝叶斯定理进行近似求解,为机器学习算法的设计提供了一种有效途径.为避免贝叶斯定理求解时面临的组合爆炸、样本稀疏问题,朴素贝叶斯分类器引入了属性条件独立性假设.这个假设在现实应用中往往很难成立,但有趣的是,朴素贝叶斯分类器在很多情形下都能获得相当好的性能[Domingos and pazzani, 1997; Ng and Jordan, 2002]. 一种解释是对分类任务来说,只需各类别的条件概率排序正确、无须精准概率值即可导致正确分类结果 [Domingos and pazzani, 1997]; 另一种解释是,若属性问依赖对所有类别影响相同,或依赖关系的影响能相互抵消,则属性条件独立性假设在降低计算开销的同时不会对性能产生负面影响 [Zhang, 2004]. 朴素贝叶斯分类器在信息检索领域尤为常用 [Lewis , 1998], [McCallum and Nigam, 1998] 对其在文本分类中的两种常见用法进行了比较.根据对属性间依赖的涉及程度,

贝叶斯分类器形成了一个"谱" .朴素贝叶斯分类器不考虑属性间依赖性,贝叶斯网能表示任意属性间的依赖性,二者分别位于"谱"的两端;介于两者之间的则是一系列半朴素贝叶斯分类器,它们基于各种假设和约束来对属性间的部分依赖性进行建模.

 

3. EM算法

在前面的讨论中,我们一直假设训练样本所有属性变量的值都已被观测到,即训练样本是完整的,但在现实应用中,往往会遇到某些属性值确实的“不完整”的训练样本。直接把这些不完整的样本丢弃是不可取的,那么在这种存在缺失属性变量的情形下,怎么进行贝叶斯估计呢?

EM(Expectation–Maximization)算法是在概率(probabilistic)模型中寻找参数最大似然估计的算法,其中概率模型依赖于无法观测的隐藏变量Z(Latent Variabl),该算法分为两步,

  • E步 (Expectation) :以当前参数$\theta_t$算对数似然关于 Z 的期望

  \[{LL(\theta ) = \sum\limits_{{\bf{x}} \in {{\bf{D}}_{\bf{c}}}} {\log P({\bf{x}}|{{\bf{\theta }}_{\bf{c}}})} }\]

  • M 步 (Maximization) :寻找参数最大化期望似然,即更新$\theta_{t+1}$
    \[{\theta _t} = \mathop {\arg \max }\limits_\theta  Q(\theta |{\theta _t})\]