lijiankou的个人博客分享 http://blog.sciencenet.cn/u/lijiankou

博文

朴素贝叶斯分类器

已有 5731 次阅读 2013-6-28 15:58 |个人分类:机器学习|系统分类:科研笔记| 朴素贝叶斯分类器

朴素贝叶斯分类器是基于条件独立性提出的一种分类方法。现实中存在这样一类问题,特征的个数远大于训练集的个数或者与训练集个数相当,因此容易出现过拟合现象。如在文档分类问题,我们的目标对是一篇文档进行分类,可以把文档的每个词看做文档的一个特征,这样每篇文档就会有大量的特征出现,如果训练样本不够大,就会过拟合。朴素贝叶斯提出一种简单的处理方法,即认为在给定文档分类标号的情况下,词的出现是相互独立的,假设一文档被标记为机器学习,那么“分类”和“回归”被认为是相互独立的。虽然这样的假设看上去并不是很合理,但是在现实中的效果很好,因为它不是完全假设任意两个词的出现都是独立的,独立的前提条件是文档的类别已知,实际上可以证明,条件独立的两个变量在条件未的情况下并不一定独立,因此朴素贝叶斯仍然可以通过类别的先验概率体现两个变量之间的关系,这一点在后面“混合模型”中再详细讨论。朴素贝叶斯的成功之处在于通过简单的条件“类别”,使得原本不独立的变量近似的认为是独立的,大大减少了模型的参数。下面主要对朴素贝叶斯的参数估计进行分析。


朴素贝叶斯的一般形式

输入:(x, y), $x\in \{x_1, x_2, ..., x_M\}$ 是特征集合,y表示种类标号,我们用1-of-k的方式表示,即y表示一个K维向量,该向量中有且仅有一个元素是1,其余元素为0。 $p(y)" style="text-indent:0em;text-align:left;$ 服从的是参数为 $\pi" style="text-indent:0em;text-align:left;$ 的离散分布,因此可以用1-of-k的形式写出,

$p(y) = \prod_{c = 1}^C\pi_c^{y_c}$  (1)

x,y的联合分布如下:

$p(x,y) = p(x|y)p(y) = p(x|y)\prod _{c=1}^C\pi_c^{y_c}$ (2)

类内条件概率分布如下所示:

$p(x|y=c, \theta ) = \prod_{m = 1}^M p(x_m|y=c, \theta_{mc})$  (3)

这里利用了特征条件独立性的性质,m表示输入变量x的特征标号,c表示x的种类标号。完整的条件概率分布如下:

$p(x|y) = \prod _{m=1}^M \prod _{c=1}^C p(x_m|\theta_{mc}) ^{y_c}$   (4)

上面同样利用了1-of-k的思想,因为每一个x只属于一个类,因此上面中对C个类的累乘实际上只有一个项起作用,就是 $y_c=1$ 的那一项。因此(x,y)联合概率分布如下:

$p(x,y) = p(y)p(x|y) = \prod_{c=1}^C [\pi_c\prod_{m=1}^Mp(x_m|\theta_{mc})]^{y_c}$  (5)

似然函数为:

$p(D|\pi, \theta) = \prod_{n=1}^N\prod_{c=1}^C[\pi_c\prod_{m=1}^Mp(x_m^n|\theta_{mc})]^{y_c^n}$    (6)

到目前为止,这个公式看起来就有些复杂了,主要是由于下标比较多造成的。下面依次说一下每个分量的标号的意义:x需要两个标号, $x_m^n$ 表示第n个变量的第m个属性,y需要两个标号, $y_c^n$ 表示第n个变量的第c类的值,取值只能是{0, 1}。 $\pi$ 是类的先验概率参数,是一个C维向量, $\pi_c$ 表示第c类的先验概率, $\theta$ 需要两个标号, $\theta_{mc}$ 表示第m个属性第c类的参数,与n无关。

对数似然函数:

$logp(D|\pi, \theta) = \sum_{c, n}y_c^n [log\pi_c + \sum_mlogp(x_m^n|\theta_{mc})]$  (7)

上面是朴素贝叶斯的一般形式,针对不同的属性分布,可以写出具体的形式。


贝努力分布

贝努力分布定义如下:

$p(x|\mu) = \mu^x(1-\mu)^{1-x}" style="text-align:center;$ (8)

从而有:

$p(x_m^n|\theta_{mc}) = p(x_m^n|\mu_{mc}) = \mu_{mc}^{x_m^n}(1 - \mu_{mc})^{1 - x_m^n}$ (9)

对数似然函数:


$logp(D|\pi, \theta) = \sum_{c,n} y_c^n\{log\mu_c + \sum_m[x_m^nlog\mu_{mc} + (1 - x_m^n) log(1 - \mu_{mc})]\} \\= \sum_c\{ N_clog\pi_c + \sum_m[N_{mc}log\mu_{mc} + (N_c - N_{mc})log(1-\mu_{mc})] \}$ (10)

离散分布

离散分布定义如下:

$p(x|\mu) = Cat(x|\mu) = \prod_{k = 1}^K\mu_k^{x_k}$ (11)

从而有

$p(x_m^n|\mu_{mc}) = \prod_{k=1}^K\mu_{mck}^{x_{mk}^n}$ (12)

参数的下标更复杂了一些,在公式(5)的基础上,参数 $\mu$ 又多了一个下标k,这是离散分布本身特有的。

因此离散分布的对应的朴素贝叶斯似然函数如下:

$p(D|\pi, \theta) = \prod_{c, n} (\pi_c\prod_{m, k}\mu_{mck}^{x_{mk}^n})^{y_c^n}$ (13)

对然似然函数:

$logp(D|\pi, \theta) = \sum_{c, n}y_c^n[log\pi_c + \sum_{m, k}x_{mk}^nlog\mu _{mck}] =\sum_c[N_clog\pi_c + \sum_{m,k}N_{mck}log\mu_{mck}]$ (14)


从上面也可以看出,针对一个具体的分布,每一个参数除了包含自身的下标外,还有包含额外的下标m、c。另一方面,任何一个分布,指定m、c的情况下就可代入朴素贝叶斯的一般形式(6)。


总结:

朴素贝叶斯充分利用条件独立性假设简化了分类问题,公式(7)给出了相应的对数似然函数,针对不同的分布形式,代入该公式即可得到具体的分布。公式(10)和(14)分别给出了贝努力分布和离散分布的具体形式。另外与公式(6)相似的是混合模型,在混合模型中类标号是未知,需要指定一个隐变量,把问题变得更复杂,从而引出EM算法,更多内容看后续文章“混合高斯模型和EM算法”。


参考文献:

1 Pattern recognition and machine learning 作者:Christopher M.Bishop

2 machine learning a probabilistic perspective 作者: Kevin P. Murphy

3 统计机器学习 作者:李航

4 machine learning in action 作者:Peter Harrington




https://blog.sciencenet.cn/blog-520608-703515.html

上一篇:极大似然估计和贝叶斯估计
下一篇:广义线性模型
收藏 IP: 124.16.137.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-19 09:35

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部