# 贝叶斯分类器Bayesian Classifier
在一个分类的任务中,假设所有的相关概率已知,那么所谓的贝叶斯分类器就是利用这些已知的概率和分类误判误差来选择最优的类别。以多分类为例,来说明一下它的推导过程。
贝叶斯决策理论
假设有N个类别标签,这里定义几个标记:我们使用 λij 表示将j类样本误分为i类, 使用 P(cj|x) 来表示将样本x分类为j类的概率, 那么样本x被分类为 ci 的误判损失,也就是风险概率即为:
这里的 h∗(x) 就是最优贝叶斯分类器,对应的 R(h∗) 就是贝叶斯风险,相反, 1−h∗(x) 就是最有贝叶斯对应的分类性能,也是机器学习所能达到的性能上限,这也是为什么最优贝叶斯分类器通常作为一种标准来衡量其他的学习器的效果。
我们可以继续简化上述的式子。可以想象,当分诶类确时,也就是 i=j 的时候, λij=0 ;其他情况说明分类错误,那么条件风险可以改写为:
此时我们的目标转向了 P(c|x) ,通常这个不好直接得到,有两种策略,就是生成式模型和判别式模型。
判别式模型:就是直接建模 P(c|x) 来预测 c。 生成式模型:使用联合概率 P(c,x) 进一步得到 P(c|x)来预测c 。
基于贝叶斯定理,有:
通过变形就可以得到
极大似然估计
接下来,继续上面的工作,处理似然
P(x|c)
。我们将
P(x|c)
记为
P(x|θc)
,
θc
是一个参数向量,唯一确定与似然。继续假设训练集中的所有样本都是独立同分布的,我们用
Dc
表示是第
c
类样本的集合,那么
但是上面的概率连乘,在实际操作中可能会因为概率很小的从而使结果趋于0,也就是所谓的下溢(overflow)。因此,通常将其取对数,构成对数似然,如下
朴素贝叶斯分类器
上面所说使用公式(7)得到 P(c|x) 时候,是使用所有的属性的联合概率来表示类条件概率的,但是在有限的训练集中,这样作不太妥当,会遇到组合爆炸的问题。因此,基于这样的一个假设:假定每个已知的类别的所有属性都是相互独立的。这样
由于每个类别的 P(x) 相同,所以我们可以得到一个新的分类器
首先,在训练集中样本充足的情况下(独立同分布),每个类别的先验概率就是
P(c)=|Dc||D|.(13)其次,对于 ∏di=1P(xi|c) 的计算,如果是离散的属性,假如 Dc 中的第 i 个属性取值为
xi 的样本组成的集合为 Dc,xi ,那么类条件概率为P(xi|c)=|Dc,xi||DC|.(14)对于连续的属性样本,可以借助概率密度函数。如果 P(xi|c) 服从正态分布,则
P(xi|c)=12π−−√σc,iexp⎛⎝−(xi−μc,i)22σ2⎞⎠.(15)
需要注意的是,在使用朴素贝叶斯进行分类时,往往会出现某一个属性的条件概率为0,这会使得整个结果为0(因为概率连乘)。为了避免这种情况, 通常使用拉普拉斯修正来进行优化。即
P^(c)=|Dc|+1|D|+N.P^(xi|c)=|Dc,xi|+1|DC|+Ni.(16)
到这里,就可以只用公式(12)进行预测,计算的结果值大的作为该样本的最终分类结果。