分类——朴素贝叶斯

来源:互联网 发布:2017最新网络伤感情歌 编辑:程序博客网 时间:2024/05/16 01:49

转载地址:http://liyonghui160com.iteye.com/blog/2087174


朴素贝叶斯分类器基于统计的分类器


一、病人分类的例子

让我从一个例子开始讲起,你会看到贝叶斯分类器很好懂,一点都不难。

某个医院早上收了六个门诊病人,如下表。

      症状  职业   疾病

      打喷嚏 护士   感冒
      打喷嚏 农夫   过敏
      头痛  建筑工人 脑震荡
      头痛  建筑工人 感冒
      打喷嚏 教师   感冒
      头痛  教师   脑震荡

现在又来了第七个病人,是一个打喷嚏的建筑工人。请问他患上感冒的概率有多大?

根据贝叶斯定理:

     P(A|B) = P(B|A) P(A) / P(B)

可得

       P(感冒|打喷嚏x建筑工人)
        = P(打喷嚏x建筑工人|感冒) x P(感冒)
        / P(打喷嚏x建筑工人)

假定"打喷嚏"和"建筑工人"这两个特征是独立的,因此,上面的等式就变成了

       P(感冒|打喷嚏x建筑工人)
        = P(打喷嚏|感冒) x P(建筑工人|感冒) x P(感冒)
        / P(打喷嚏) x P(建筑工人)

这是可以计算的。

      P(感冒|打喷嚏x建筑工人)
        = 0.66 x 0.33 x 0.5 / 0.5 x 0.33
        = 0.66

因此,这个打喷嚏的建筑工人,有66%的概率是得了感冒。同理,可以计算这个病人患上过敏或脑震荡的概率。比较这几个概率,就可以知道他最可能得什么病。

这就是贝叶斯分类器的基本方法:在统计资料的基础上,依据某些特征,计算各个类别的概率,从而实现分类。


二、朴素贝叶斯分类器的公式

假设某个体有n项特征(Feature),分别为F1、F2、...、Fn。现有m个类别(Category),分别为C1、C2、...、Cm。贝叶斯分类器就是计算出概率最大的那个分类,也就是求下面这个算式的最大值:

     P(C|F1F2...Fn)
      = P(F1F2...Fn|C)P(C) / P(F1F2...Fn)

由于 P(F1F2...Fn) 对于所有的类别都是相同的,可以省略,问题就变成了求

     P(F1F2...Fn|C)P(C)

的最大值。

朴素贝叶斯分类器则是更进一步,假设所有特征都彼此独立,因此

     P(F1F2...Fn|C)P(C)
      = P(F1|C)P(F2|C) ... P(Fn|C)P(C)

上式等号右边的每一项,都可以从统计资料中得到,由此就可以计算出每个类别对应的概率,从而找出最大概率的那个类。

在朴素贝叶斯分类算法中,求的方法主要有多元伯努利模型多项式模型




虽然"所有特征彼此独立"这个假设,在现实中不太可能成立,但是它可以大大简化计算,而且有研究表明对分类结果的准确性影响不大。




0 0