西瓜书读书笔记——第七章:贝叶斯分类器


首先介绍一下贝叶斯公式:

在这里插入图片描述
实际上,分母为全概率公式,分子为联合概率。在机器学习中,更常见的形式为
P ( B A ) = P ( A B ) P ( B ) P ( A ) P(B|A)=\dfrac{P(A|B)P(B)}{P(A)}
贝叶斯公式的作用在于将P(B|A)的估计转化为估计P(A|B)和P(B)

7.1 贝叶斯决策论

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

\quad 对于分类任务来说,假设所有的相关概率已知,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记

基于后验概率 P ( c i x ) P(c_i|x) 可获得将样本 x x 分类为 c i c_i 所产生的期望损失,即在样本 x x 上的条件风险(conditional risk)。
(7.1) R ( c i x ) = j = 1 N λ i j P ( c j x ) R(c_i|x)=\sum_{j=1}^{N}\lambda_{ij}P(c_j|x)\tag{7.1}
其中, λ i j \lambda_{ij} 是将一个真实标记为 c j c_j 的样本错误分类为 c i c_i 所产生的损失(即:误判损失); R ( c i x ) R(c_i|x) 为条件风险,即期望损失(可由期望的公式理解式(7.1))

我们的目标就是寻找一个判定准则h来最小化所有样本的条件风险之和,即最小化总体风险。这样就产生了贝叶斯判定准则(Bayes decision rule):为最小化总体风险,只需在每个样本上选择那个能使条件风险 R ( c i x ) R(c_i|x) 的最小类别标记 c i c_i ,即:
(7.3) h ( x ) = a r g min c γ R ( c x ) h^*(x)=arg\min_{c\in \gamma} R(c|x)\tag{7.3}
其中,有:

  • 贝叶斯最优分类器: h h^*
  • 贝叶斯风险: R ( h ) R(h^*)
  • 贝叶斯最优分类器的最好性能: 1 R ( h ) 1- R(h^*)

于是,为了最小化分类错误率,误判损失 λ i j \lambda_{ij} 可定义为(错误率对应于0/1损失函数):
在这里插入图片描述
此时条件风险
(7.5) R ( c x ) = 1 P ( c x ) R(c|x)=1-P(c|x)\tag{7.5}
证明:将式(7.4)代入式(7.1),有在这里插入图片描述
于是,最小化分类错误率的贝叶斯最优分类器为:
(7.6) h ( x ) = a r g max c γ P ( c x ) h^*(x)=arg\max_{c\in \gamma} P(c|x)\tag{7.6} 对每个样本x,选择能使后验概率P(c|x)最大的类别标记。(对每个样本选择类别标记)

从式(7.6)可以看出,欲使用贝叶斯判定准则来最小化决策风险,首先要得到后验概率P(c | x)。但在现实任务中,很难直接得到后验概率P(c | x)。

对于如何得到后验概率P(c | x),主要有两种策略:

  1. 给定 x x ,可通过直接建模P(c | x x )来预测 c c ,这样得到的是判别式模型(discriminative models)。
  2. 先对联合概率分布P( x x ,c)建模,然后再由此获得P(c | x x ),这样得到的是生成式模型(generative models)。

之前学过的决策树,BP神经网络,支持向量机都是判别式模型。而对于生成式模型,有:
(7.7) P ( c x ) = P ( x , c ) P ( x ) P(c | x)=\dfrac{P(x,c)}{P(x)}\tag{7.7}
\quad 基于贝叶斯公式,有:
(7.8) P ( c x ) = P ( x c ) P ( c ) P ( x ) P(c | x)=\dfrac{P(x | c)P(c)}{P(x)}\tag{7.8}
注:由式(7.7)可知,因为证据因子P( x x )只与样本本身有关,与类标记无关,故有 max P ( c x ) \max P(c | x) 等价于 max P ( x , c ) \max P(x,c)

  • P ( c ) P(c) :类“先验”概率
  • P ( x c ) P(x | c) :样本 x x 相对于类标记c的类条件概率,或称为似然
  • P ( x ) P(x) :用于归一化的证据因子

于是,估计似然 P ( c x ) P(c | x) 的问题就转化为如何基于训练数据D来估计先验概率 P ( c ) P(c) 和似然 P ( x c ) P(x | c)

这里介绍一下后验概率和似然:

  1. 给定B,则P(A | B)为后验概率;此时,针对多个候选A,选择使后验概率最大的那一个,称为最大后验估计(已知B,A发生的(条件)概率)
  2. 给定A,则P(A | B)为似然概率;此时,针对多个候选B,选择使似然概率最大的那一个,称为最大似然估计(已知A,它更像是在哪个B条件下得到的)

\quad 对于 P ( c ) P(c) ,它表达了样本空间中各类样本所占的比例。由大数定律可知,当训练集包含充足的独立同分布的样本时, P ( c ) P(c) 可由各类样本出现的频率进行估计。

\quad 对于似然 P ( x c ) P(x | c) ,由于它涉及关于 x x 所有属性的联合概率,故使用频率来估计 P ( x c ) P(x | c) 是不可行的,因为训练集不能保证其所有的样本能观测到所有属性,而 “未观测到的” 与运用频率估计其 “出现概率为0”不同的。

7.2 极大似然估计

估计类条件概率(似然概率)的一种常用策略为:先假定似然概率有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。(即为:参数估计)

于是,这里我们假定 P ( x c ) P(x | c) 具有确定的形式且被参数向量 θ c \theta _c 唯一确定,则我们的任务就是根据训练集D估计参数 θ c \theta _c 。明确起见,将 P ( x c ) P(x | c) 记为 P ( x θ c ) P(x|\theta _c)

事实上,概率模型的训练过程就是参数估计过程。对于参数估计,有两种学派提供了不同的方法:

  1. 频率学派:认为参数是客观存在的固定值,可通过优化似然函数等准则来确定参数值
  2. 贝叶斯学派:认为参数是未观察到的随机变量,其本身也可有分布。因此,先假定参数服从一个先验分布,然后基于观测到的数据来计算参数的后验分布。

这里采用的是频率学派的极大似然估计(MLE),这是根据数据采样来估计概率分布的经典方法。

\quad D c D_c 表示训练集 D D 中c类样本组成的集合,假设这些样本时独立同分布(互相独立且同属一种分布)的,则参数 θ c \theta _c 对于数据集 D c D _c 的似然为:
(7.9) P ( D c θ c ) = x D c P ( x θ c ) P(D_c | \theta_c)=\prod_{x\in D_c}P(x|\theta_c)\tag{7.9} θ c \theta_c 进行极大似然估计,就是去寻找能最大化似然 P ( D c θ c ) P(D_c|\theta_c) 的参数 θ ^ c \widehat \theta_c 。直观上看,极大似然估计是试图在 θ c \theta_c 所有的可能取值中,找到一个 θ ^ c \widehat \theta_c 能使数据出现的可能性最大。

通常,由于式(7.9)的连乘操作易造成下溢(多个概率相乘,造成所得结果过小下溢),我们会使用对数似然:
L L ( θ c ) = log P ( D c θ c ) LL(\theta_c)=\log P(D_c|\theta_c) (7.10) = x D c log P ( x θ c ) \qquad \qquad \quad=\sum_{x\in D_c}\log P(x|\theta_c)\tag{7.10}
此时参数 θ c \theta_c 的极大似然估计 θ ^ c \widehat \theta_c
(7.11) θ ^ c = a r g max θ c L L ( θ c ) \widehat \theta_c=arg \max_{\theta_c} LL(\theta_c)\tag{7.11}
在这里插入图片描述
也就是说,通过极大似然法得到的正态分布均值 μ ^ c \widehat \mu_c 就是样本的均值,方差 σ ^ 2 \widehat\sigma^2 就是 ( x μ ^ c ) ( x μ ^ c ) T (x-\widehat \mu_c)(x-\widehat \mu_c)^T 的均值,这显然是一个符合直觉的结果。
注:正态分布也称高斯分布

由上述的论述可见,参数化的方法确实能使得似然的估计变得简单,但是估计结果的准确性严重依赖于假设似然服从的概率分布是否符合潜在的真实数据分布。在现实应用中,欲做出能较好地接近潜在真实分布的假设,往往需在一定程度上利用关于应用任务本身的经验知识

7.3 朴素贝叶斯分类器

对于贝叶斯公式(7.8),估计后验概率 P ( c x ) P(c|x) 的主要困难在于:似然概率 P ( x c ) P(x|c) 是所有属性上的联合概率,难以从有限的样本中直接估计。

为避开这个障碍,朴素贝叶斯分类器采用了“属性条件独立性假设”:对已知类别,假设每个属性互相独立。换言之,假设每个属性独立地对分类结果发生影响

\quad 基于属性条件独立性假设,贝叶斯公式可重写为:
(7.14) P ( c x ) = P ( x c ) P ( c ) P ( x ) = P ( c ) P ( x ) i = 1 d P ( x i c ) P(c | x)=\dfrac{P(x | c)P(c)}{P(x)}=\dfrac{P(c)}{P(x)}\prod_{i=1}^{d} P(x_i|c)\tag{7.14} 其中,d为属性数目, x i x_i 为在第 i i 个属性上的取值。
\quad 对于所有类别来说 P ( x ) P(x) 相同,因此基于式(7.6)的贝叶斯判定准则: (7.15) h n b ( x ) = a r g max P ( c ) i = 1 d P ( x i c ) h_{nb}(x)=arg\max P(c)\prod_{i=1}^{d} P(x_i|c)\tag{7.15} 这就是朴素贝叶斯分类器的表达式。

朴素贝叶斯分类器训练过程:基于训练集D来估计类先验概率 P ( c ) P(c) ,并为每个属性估计条件概率 P ( x i c ) P(x_i|c)

7.3.1 类先验概率 P ( c ) P(c)

D c D_c 表示训练集 D D 中第c类样本组成的集合,若有充足的独立同分布样本,由大数定律有:
(7.16) P ( c ) = D c D P(c)=\dfrac{|D_c|}{|D|}\tag{7.16}

7.3.2 条件概率 P ( x i c ) P(x_i|c)

离散属性(概率)

对于离散属性,令 D c , x i D_{c,x_i} 表示 D c D_c 中在第 i i 个属性取值为 x i x_i 的样本组成的集合,则条件概率 P ( x i c ) P(x_i|c) 可估计为:
(7.17) P ( x i c ) = D c , x i D c P(x_i|c)=\dfrac{|D_{c,x_i}|}{|D_c|}\tag{7.17}

连续属性(概率密度函数)在这里插入图片描述

求出了类先验概率 P ( c ) P(c) 和条件概率 P ( x i c ) P(x_i|c) 之后,就可以根据式(7.15)求得 h n b ( x ) h_{nb}(x)
在这里插入图片描述
注:式(7.15)采用了连乘操作,实践中常通过取对数的方法将连乘转化为连加防止下溢。

7.3.3 拉普拉斯修正

\quad 以上的计算会面临这样一个问题,若在训练集中某个属性上没有在某个类别的样本中出现过,则依据式(7.17)计算的条件概率为0,这使得代入式(7.15)后结果为0,使得该样本的其他属性的计算结果失去意义,这显然不合理。于是,引入拉普拉斯修正在估计概率时进行平滑。

N N 表示样本可能的类别数, N i N_i 表示在第 i i 个属性上可能的取值数量,则式(7.16)和(7.17)分别修正为:
(7.19) P ^ ( c ) = D c + 1 D + N \widehat P(c)=\dfrac{|D_c|+1}{|D|+N}\tag{7.19} (7.20) P ^ ( x i c ) = D c , x i + 1 D c + N i \widehat P(x_i|c)=\dfrac{|D_{c,x_i}|+1}{|D_c|+N_i}\tag{7.20}

拉普拉斯修正避免了因训练集样本不充分而导致估计概率为0的问题,并且在训练集变大时,修正过程引入的先验影响(拉普拉斯修正实质上假设了属性值与类别均匀分布,这是额外引入的关于数据的先验)也会逐渐变得可忽略。

7.4 半朴素贝叶斯分类器

在7.3节的朴素贝叶斯分类器的介绍里,为了降低估计后验概率 P ( c x ) P(c|x) 的难度,采用了属性条件独立性假设,但在实际任务中这种假设往往很难成立。于是,我们尝试对属性条件独立性假设进行一定程度的放松,由此产生了一类称为“半朴素贝叶斯分类器”的学习方法。

半朴素贝叶斯分类器的基本思想:
\quad 适当考虑一部分属性间的相互依赖信息,从而既不需进行完全联合概率计算,又不至于彻底忽略了比较强的属性依赖关系。

独依赖估计(ODE)是半朴素贝叶斯分类器最常用的一种策略,即:假设每一个属性在类别之外最多仅依赖一个其他属性,即:
在这里插入图片描述
其中, p a i pa_i 为属性 x i x_i 依赖的属性,称为 x i x_i 的父属性。此时,对于每个属性 x i x_i ,若知道它的父属性 p a i pa_i ,则可根据式(7.20)估计条件概率 P ( x i c , p a i ) P(x_i|c,pa_i)

那么,如何求得每个属性的 x i x_i 的父属性呢?

不同的做法会产生不同的独依赖分类器。

SPODE

最直接的做法是假设所有属性都依赖同一个属性,称为“超父”,然后通过交叉验证等模型选择方法来确定超父属性,此即为SPODE(Super-Parent ODE)方法
在这里插入图片描述
上图中的 x 1 x_1 即为超父属性。

TAN

TAN则是在最大带权生成树算法的基础上,通过以下步骤将属性间的依赖关系约简为如下图所示的一棵树:
在这里插入图片描述
注:这是一棵由完全图构建的最大带权生成树,最后加入类别结点 y y ,指向每个属性结点 x i x_i
在这里插入图片描述

AODE

AODE(Averaged One-Dependent Estimator)是一种基于集成学习机制且更为强大独依赖分类器。与SPODE通过交叉验证等模型选择方法来确定超父属性不同,AODE尝试将每个属性都作为超父来构建SPODE,然后将那些具有足够训练数据支撑的SPODE集成起来作为最终结果,即:
在这里插入图片描述
D ( x i ) D(x_i) 是在第 i i 个属性上取值为 x i x_i 的样本的集合; m m' 为阈值常数
解释式(7.23):
在这里插入图片描述
由于当 j = i j=i 时, P ( x j c , x i ) = 1 P(x_j|c,x_i)=1 ,故上图推导结果省略了 j i j\neq i 的约束

  • AODE将每个属性作为超父构建SPODE,故d个属性就有d个SPODE的式子(上图推导结果)相加
  • AODE要求SPODE有足够的训练数据支撑,故 D x i m |D_{x_i}|\geq m' m m' 默认为30

于是,类似于式(7.20),有:
在这里插入图片描述
N为D中可能的类别数
在这里插入图片描述
与朴素贝叶斯分类器类似,AODE的训练过程也是“计数”,即在训练集上对符合条件的样本进行计数的过程。与朴素贝叶斯分类器类似,AODE无需模型选择(SPODE需要),既能通过预计算节省预测时间,也能采取懒惰学习方式在预测时再进行计数,并且易于实现增量学习。

以上,从上节的朴素贝叶斯分类器到本节的半朴素贝叶斯分类器,是将属性条件独立性假设放松为独依赖假设,这样可能获得泛化性能的提升。

那么,是否能在进一步,考虑属性间的高阶依赖来提升泛化性能呢?即将式(7.23)的父属性 p a i pa_i 替换为包含 k k 个属性的集合 p a i pa_i ,从而将ODE拓展为 k k DE。
结论是:由于随着 k k 的增加,准确估计概率 P ( x i y , p a i ) P(x_i|y,pa_i) 所需的训练样本数量成指数级增长。因此,若训练样本数据十分充足,泛化性能有可能提升;但在有限样本条件下,则又陷入估计高阶联合概率的泥沼。

7.5 EM方法

7.5.1 EM方法基本思想

\quad EM(Expectation-Maximization)算法是一种常用的估计参数隐变量的利器,也称为“期望最大算法”,是数据挖掘的十大经典算法之一。
在这里插入图片描述
EM算法主要应用于训练集样本不完整即存在隐变量时的情形(例如某个属性值未知),通过其独特的“两步走”策略能较好地估计出隐变量的值。

EM方法的基本思想:
\quad 若模型参数 θ \theta 已知,则可根据训练数据推断出最优隐变量 Z Z 的值( E E 步);反之,若 Z Z 的值已知,则可方便地对参数 θ \theta 做极大似然估计(M步)。

具体步骤:
以初始值 θ 0 \theta^0 为起点,对式(7.35),可迭代执行以下步骤直至收敛:
在这里插入图片描述
此即为EM算法的原型。
在这里插入图片描述

现在再来回想聚类的代表算法K-Means:【首先随机选择类中心=>将样本点划分到类簇中=>重新计算类中心=>不断迭代直至收敛】,不难发现这个过程和EM迭代的方法极其相似,事实上,若将样本的类别看做为“隐变量”(latent variable)Z,类中心看作样本的分布参数θ,K-Means就是通过EM算法来进行迭代的,与我们这里不同的是,K-Means的目标是最小化样本点到其对应类中心的距离和,上述为极大化似然函数。
借鉴:https://blog.csdn.net/u011826404/article/details/68924781

简要来说,EM算法使用两个步骤交替计算:

  • 第一步是期望E步:利用当前估计的参数值来计算对数似然的期望值
  • 第二步是最大化M步:寻找能使E步产生的似然期望最大化的参数值
  • 新得到的参数值被重新用到E步,重复以上两步直至收敛

猜你喜欢

转载自blog.csdn.net/shichensuyu/article/details/91635878