朴素贝叶斯方法

转载 2015年07月08日 19:44:47


给出新一天的气象指标数据:sunny,cool,high,TRUE,判断一下会不会去打球

outlook temperature humidity windy play
sunny hot high FALSE no
sunny hot high TRUE no
overcast hot high FALSE yes
rainy mild high FALSE yes
rainy cool normal FALSE yes
rainy cool normal TRUE no
overcast cool normal TRUE yes
sunny mild high FALSE no
sunny cool normal FALSE yes
rainy mild normal FALSE yes
sunny mild normal TRUE yes
overcast mild high TRUE yes
overcast hot normal FALSE yes
rainy mild high TRUE no
朴素贝叶斯模型有两个假设:所有变量对分类均是有用的,即输出依赖于所有的属性;这些变量是相互独立的,即不相关的。之所以称为“朴素”,就是因为这些假设从未被证实过。

step1.对每项指标分别统计:在不同的取值下打球和不打球的次数。

table 2

outlook temperature humidity windy play
  yes no   yes no   yes no   yes no yes no
sunny 2 3 hot 2 2 high 3 4 FALSE 6 2 9 5
overcast 4 0 mild 4 2 normal 6 1 TRUR 3 3    
rainy 3 2 cool 3 1                

step2.分别计算在给定“证据”下打球和不打球的概率。

这里我们的“证据”就是sunny,cool,high,TRUE,记为E,E1=sunny,E2=cool,E3=high,E4=TRUE。

A、B相互独立时,由:

得贝叶斯定理:

得:

又因为4个指标是相互独立的,所以

我们只需要比较P(yes|E)和P(no|E)的大小,就可以决定打不打球了。所以分母P(E)实际上是不需要计算的。

P(yes|E)*P(E)=2/9×3/9×3/9×3/9×9/14=0.0053

P(no|E)*P(E)=3/5×1/5×4/5×3/5×5/14=0.0206

所以不打球的概率更大。

零频问题

注意table 2中有一个数据为0,这意味着在outlook为overcast的情况下,不打球和概率为0,即只要为overcast就一定打球,这违背了朴素贝叶斯的基本假设:输出依赖于所有的属性。

数据平滑的方法很多,最简单最古老的是拉普拉斯估计(Laplace estimator)--即为table2中的每个计数都加1。它的一种演变是每个计数都u(0<u<1)。

Good-Turing是平滑算法中的佼佼者,有兴趣的可以了解下。我在作基于隐马尔可夫的词性标注时发现Good-Turing的效果非常不错。
对于任何发生r次的事件,都假设它发生了r*次:

nr是历史数据中发生了r次的事件的个数。

数值属性

当属性的取值为连续的变量时,称这种属性为“数值属性“。通常我们假设数值属性的取值服从正态分布。

outlook temperature humidity windy play
  yes no   yes no   yes no   yes no yes no
sunny 2 3   83 85   86 85 FALSE 6 2 9 5
overcast 4 0   70 80   96 90 TRUR 3 3    
rainy 3 2   68 65   80 70          
        64 72   65 95          
        69 71   70 91          
        75     80            
        75     70            
        72     90            
        81     75            
sunny 2/9 3/5 mean value 73 74.6 mean value 79.1 86.2 FALSE 6/9 2/5 9/15 5/14
overcast 4/9 0/5 deviation 6.2 7.9 deviation 10.2 9.7 TRUR 3/9 3/5    

正态分布的概率密度函数为:

现在已知天气为:outlook=overcast,temperature=66,humidity=90,windy=TRUE。问是否打球?

f(温度=66|yes)=0.0340

f(湿度=90|yes)=0.0221

yes的似然=2/9×0.0340×0.0221×3/9×9/14=0.000036

no的似然=3/5×0.0291×0.0380×3/5×9/14=0.000136

不打球的概率更大一些。

用于文本分类

朴素贝叶斯分类是一种基于概率的有导师分类器。

词条集合W,文档集合D,类别集合C。

 根据(1)式(去掉分母)得文档d属于类别cj的概率为:

p(cj)表示类别j出现的概率,让属于类别j的文档数量除以总文档数量即可。

而已知类别cj的情况下词条wt出现的后验概率为:类别cj中包含wt的文档数目  除以 类别cj中包含的文档总数目 。


基于朴素贝叶斯的分类方法研究

  • 2011年05月25日 11:35
  • 2.03MB
  • 下载

机器学习(三)——朴素贝叶斯方法、SVM(1)

机器学习(三)——朴素贝叶斯方法、SVM(1)

统计学习方法--朴素贝叶斯 python实现

朴素贝叶斯 朴素贝叶斯方法是一套基于贝叶斯定理的监督学习算法,在每一对特征之间采用独立的 “naive” 假设。给定一个类变量  和一个从属特征向量  到  ,贝叶斯定理表示以下关系: 使用 ...

机器学习实战(3)--(基于概率论的分类方法)朴素贝叶斯

朴素贝叶斯,贝叶斯理论:

《统计学习方法》+朴素贝叶斯算法+C++代码(简单)实现

首先,学习朴素贝叶斯算法得了解一些基本知识,比如全概率公式和贝叶斯公式,这些知识随便找一本书或者在网上都能够获得。在此,这里仅关注贝叶斯算法本身,以及其具体的实现(以例4.1的例子为参考)。     ...
  • IDMer
  • IDMer
  • 2015年09月29日 18:21
  • 3033

判别模型、生成模型与朴素贝叶斯方法

1判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率。形式化表示为,在参数确定的情况下,求解条件概率。通俗的解释为在给定特征后预测结果出现的概率。 比如...

判别模型、生成模型与朴素贝叶斯方法

 1判别模型与生成模型 上篇报告中提到的回归模型是判别模型,也就是根据特征值来求结果的概率。形式化表示为,在参数确定的情况下,求解条件概率。通俗的解释为在给定特征后预测结果出现的概率。 比如...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:朴素贝叶斯方法
举报原因:
原因补充:

(最多只允许输入30个字)