机器学习——贝叶斯分类器

88 阅读1分钟

1、贝叶斯决策论

贝叶斯决策论考虑如何基于概率和误判损失来选择最优的类别标记。用多分类任务来解释其基本原理。

假设有NN种可能的类别标记,即Y={c1,...,cN}\mathcal{Y}=\{c_1,...,c_N\}λij\lambda_{ij}是一个真实标记为cjc_j的样本误分类为cic_i所产生的损失。基于后验概率P(cix)P(c_i|\mathbf{x})可获得将样本x\mathbf{x}分类为cic_i所产生的期望损失,即在样本x\mathbf{x}上的“条件风险

R(cix)=j=1NλijP(cjx)R({c_i}|\mathbf{x}) = \sum\limits_{j = 1}^N {{\lambda _ {ij}}P({c_ j}|\mathbf{x})}

我们的任务是寻找一个判定准则h:XYh:\mathcal{X}\to \mathcal{Y}以最小化总体风险

R(h)=Ex[R(h(x)x)]R(h) = {\mathbb{E}_ \mathbf{x}}[R(h(\mathbf{x})|\mathbf{x})]

对每个样本x\mathbf{x},若hh能最小化条件风险R(h(x)x)R(h(x)|x),则总体风险R(h)R(h)也将被最小化。则有贝叶斯判定准则:为最小化总体风险,只需在每个样本上选择那个能使条件风险R(cx)R(c|x)最小的类别标记,即

h(x)=argmincYR(cx){h ^* }(x) = \mathop {\arg \min }\limits_{c \in \mathcal{Y}} R(c|x)

此时hh^* 称为贝叶斯最优分类器,与之对应的总体风险R(h)R(h^* )称为贝叶斯风险。1R(h)1-R(h^* )反映了分类器所能达到的最佳性能,即通过机器学习所能产生的模型精度的理论上限。

若目标是最小化分类错误率,则误判损失

λij={0,if i=j1,otherwise\lambda_{ij} = \begin{cases} 0, & \text{if } i = j \\ 1, & \text{otherwise} \end{cases}

此时条件风险

R(cx)=1P(cx)R(c|x)=1-P(c|x)

于是,最小化分类错误率的贝叶斯最优分类器为

h(x)=argmaxcYP(cx){h^* }(x) = \mathop {\arg \max }\limits_{c \in \mathcal{Y}} P(c|x)

即对每个样本xx,选择能使后验概率P(cx)P(c|x)最大的类别标记。

从这个角度来看,机器学习所要实现的是基于有限的训练样本集尽可能准确地估计出后验概率P(cx)P(c|x)。大体来说,主要有两种策略:给定xx,可通过直接建模P(cx)P(c|x)来预测cc,这样得到的是“判别式模型”;也可先对联合概率分布P(x,c)P(x,c)建模,然后再由此获得P(cx)P(c|x),这样得到的是“生成式模型”。对于决策树、支持向量机、BP神经网络等,都可以归入判别式模型的范畴。对于生成式模型来说,则要考虑

P(cx)=P(x,c)P(x)P(c|x) = \frac{{P(x,c)}}{{P(x)}}

基于贝叶斯定理,P(cx)P(c|x)可以写为

P(cx)=P(xc)P(c)P(x)P(c|x) = \frac{{P(x|c)P(c)}}{{P(x)}}

其中,P(c)P(c)是类先验概率;P(xc)P(x|c)是样本xx相对于类标记cc的类条件概率,或称为“似然”,或称为“似然”;P(x)P(x)是用于归一化的“证据”因子。因此估计P(cx)P(c|x)的问题就转化为如何基于训练数据DD来估计先验P(c)P(c)和似然P(xc)P(x|c)

对概率和似然定义上的区分概率,用于在已知一些参数的情况下,预测接下来在观测上所得到的结果;似然性,则是用于在已知某些观测所得到的结果时,对有关事物之性质的参数进行估值,也就是说已观察到某事件后,对相关参数进行猜测。 对同一个似然函数,其所代表的模型中,某项参数值具有多种可能,但如果存在一个参数值,使得概似函数值达到最大的话,那么这个值就是该项参数最为“合理”的参数值。例如,抛三次硬币,出现两次正面,一次反面,假设正面的概率是pp,则事件AA两次正面发生的联合概率是P(Ap)=3p2(1p)P(A|p)=3p^2(1-p),可以知道该联合概率取最大值对应的p=2/3p=2/3。则在我们观测到事件A时,我们对参数pp进行估计,p=2/3p=2/3就是最合理的,即使真实的p=1/2p=1/2。)

类先验概率P(c)P(c)表达了样本空间中各类样本所占的比例。对类条件概率P(xc)P(x|c)来说,它涉及关于xx所有属性的联合概率,难以直接根据样本出现的频率来估计。

2、 朴素贝叶斯分类器

朴素贝叶斯器采用“属性条件独立性假设”:对已知类别,假设所有属性相互独立,即假设每个属性独立地对分类结果发生影响。则上式基于属性条件独立性假设,可以重写为:

P(cx)=P(c)P(xc)P(x)=P(c)P(x)i=1dP(xic)P(c|x) = \frac{{P(c)P(x|c)}}{{P(x)}} = \frac{{P(c)}}{{P(x)}}\prod\limits_{i = 1}^d {P({x_i}|c)}

其中dd为属性数目,xix_ixx在第ii个属性上的取值。由于对所有类别来说P(x)P(x)相同,因此贝叶斯判定准则有

hnb(x)=argmaxcYP(c)i=1dP(xic){h_{nb}}(x) = \mathop {\arg \max }\limits_{c \in \mathcal{Y}} P(c)\prod\limits_{i = 1}^d {P({x_i}|c)}

这就是朴素贝叶斯分类器的表达式。朴素贝叶斯分类器的训练过程就是基于训练集DD来估计类先验概率P(c)P(c),并为每个属性估计条件概率P(xic)P(x_i|c)

DcD_c表示训练集DD中第cc类样本组成的集合,若有充足的独立同分布样本,则可以容易的估计出类先验概率

P(c)=DcDP(c) = \frac{{|{D_c}|}}{{|D|}}

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

P(xic)=Dc,xiDcP({x_i}|c) = \frac{{|{D_{c,{x_i}}}|}}{{|{D_c}|}}

对连续属性可以考虑概率密度函数,假定p(xic)N(μc,i,σc,i2)p({x_i}|c)\sim \mathcal{N}({\mu _ {c,i}},\sigma _ {c,i}^ 2),其中μc,i{\mu _ {c,i}}σc,i2\sigma _ {c,i}^ 2分别是第cc类样本在第ii个属性上取值的均值和方差,则有

p(xic)=12πσc,i2exp((xiμc,i)22σc,i2)p({x_i}|c) = \frac{1}{{\sqrt {2\pi \sigma _ {c,i}^ 2} }}\exp ( - \frac{{{{({x_ i} - {\mu _ {c,i}})}^ 2}}}{{2\sigma _ {c,i}^ 2}})

由上四式,对某个测试样本进行分类时,先计算出P(c)P(c),再计算出P(xic)P({x_i}|c),则可以根据朴素贝叶斯分类器来进行判别,即判断属于哪个类别的概率更大。

为了避免其他属性携带的信息被训练集中未出现的属性值抹去,再估计概率值时通常要进行“平滑”,常用“拉普拉斯修正”,即

P^(c)=Dc+1D+NP^(xic)=Dc,xi+1Dc+Ni\begin{array}{l} \widehat P(c) = \frac{{|{D_c}| + 1}}{{|D| + N}}\\ \widehat P({x_i}|c) = \frac{{|{D_{c,{x_i}}}| + 1}}{{|{D_c}| + {N_i}}} \end{array}

3、半朴素贝叶斯分类器

半朴素贝叶斯分类器的基本想法是适当考虑一部分属性间的相互依赖信息。“独依赖估计(ODE)”是半朴素贝叶斯分类器最常用的一种策略,独依赖就是假设每个属性在类别之外最多仅依赖于一个其他属性,即

h(x)=max(P(c)i=1dP(xic,pai))h(x) = \max (P(c)\prod\limits_{i = 1}^d {P({x_i}|c,p{a_i})} )

其中paipa_i为属性xix_i所依赖的属性,称为xix_i的父属性。如果每个属性xix_i的父属性已知,则类似于朴素贝叶斯的计数法来计算概率。如果不知道每个属性的父属性,最直接的做法是假设所有属性都依赖于同一个属性,称为“超父(SP)”,由此形成了SPODE方法。即

P(c)=Dc+1D+NP(c) = \frac{{{D_c} + 1}}{{D + N}}

P(xic,pai)=Dc,pai,xi+1Dc,pai+NiP({x_i}|c,p{a_i}) = \frac{{{D_{c,p{a_i},{x_i}}} + 1}}{{{D_{c,p{a_i}}} + {N_i}}}

除了假设所有属性都依赖于同一个属性,还可以尝试假设将每个属性作为超父来构建SPODE,然后集成起来作为最终结果:

h(x)=max(j=1dP(c,xj)i=1dP(xic,xj))h(x) = \max (\sum\limits_{j = 1}^d {P(c,{x_j})\prod\limits_{i = 1}^d {P({x_i}|c,{x_j})} } )

P(c,xi)=Dc,xi+1D+NiP(c,{x_i}) = \frac{{{D_{c,{x_i}}} + 1}}{{D + {N_i}}}

P(xjc,xi)=Dc,xi,xj+1Dc,xi+NjP({x_j}|c,{x_i}) = \frac{{{D_{c,{x_i},{x_j}}} + 1}}{{{D_{c,{x_i}}} + {N_j}}}

其实就是把每个属性作为超父属性,然后求和,比较最终大小。