朴素贝叶斯方法
来源:互联网 发布:手机说唱软件 编辑:程序博客网 时间:2024/06/14 05:37
先上第一个问题,再说解决的算法,再说概念,再说更复杂的一个例子。
我们统计了14天的气象数据(指标包括Outlook, Temperature, Humidity, Windy),并已知这些天气是否打球(Play)。
Table 1. 输入数据
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
如果给出新一天的气象指标数据:Sunny, Cool, High, True,判断一下会不会去打球。
这个问题可以用决策树的方法来求解,分类树算法我们今后再说。
当然我们今天强行用朴素贝叶斯法。这个一"打球"还是"不打球"是个两类分类问题,实际上朴素贝叶斯可以没有任何改变地解决多类分类问题。决策树也一样,它们都是有监督(先验知识)的分类方法。
朴素贝叶斯模型有两个假设:所有变量对分类均是有用的,即输出依赖于所有的属性;这些变量是相互独立的,即不相关的。之所以称为"朴素",就是因为这些假设从未被证实过。
注意上面每项属性(或称指标)的取值都是离散的,称为"标称变量"。
第一步:对每项指标分别统计:在不同的取值下打球和不打球的次数。
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
True
3
3
Rainy
3
2
Cool
3
1
第二步:分别计算在给定"证据"下打球和不打球的概率。
这里我们的"证据(Evidences)"就是Sunny, Cool, High, True,记为,,,,。
A、B相互独立时,由:
得贝叶斯定理:
得:
这个公式最伟大的地方,我认为是条件概率转换为了这个条件概率的表达式,即因果关系的反转。我们手头有一个数据(包含多个特征的一个数据点),需要求得的是这个数据出现某种结果(分类结果)的概率。这实际是要求以某些特征数值组合为条件,出现某结果的概率。而经过了这种转换,我们只要知道某种结果(分类结果)相对应的哪些数据出现的概率(即以分类结果为条件的概率)就完成了分类任务。
又因为4个指标是相互独立的,所以
我们只需要比较和的大小,就可以决定打不打球了。所以分母实际上是不需要计算的。
2/9×3/9×3/9×3/9×9/14=0.0053
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的效果非常不错。
对于任何发生次的事件,都假设它发生了次:
是历史数据中发生了次的事件的个数。
数值属性
当属性的取值为连续的变量时,称这种属性为"数值属性"。通常我们假设数值属性的取值服从正态分布。
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
True
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
True
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中包含的文档总数目 。
结束语
实践已多次证明,朴素贝叶斯在许多数据集上不逊于甚至优于一些更复杂的分类方法。这里的原则是:优先尝试简单的方法。
机器学习的研究者尝试用更复杂的学习模型来得到良好的结果,许多年后发现简单的方法仍可取得同样甚至更好的结果。
此部分主要内容取自:
http://www.cnblogs.com/zhangchaoyang/articles/2586402.html
- 朴素贝叶斯方法
- 朴素贝叶斯方法
- 朴素贝叶斯方法
- 朴素贝叶斯分类方法
- 朴素贝叶斯方法推导
- 统计学习方法:朴素贝叶斯方法
- 基于概率论的分类方法:朴素贝叶斯
- 【machine learning】朴素贝叶斯分类方法
- 基于概率论的分类方法:朴素贝叶斯
- 朴素贝叶斯方法(Naive Bayes)
- 朴素贝叶斯方法和支持向量机
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- 朴素贝叶斯方法进行文本分类
- 基于概率论的分类方法:朴素贝叶斯
- 基于概率论的分类方法:朴素贝叶斯
- Java技术时间格式化处理工具类
- android中的Toast
- java技术Base64加密解密详细
- 图像质量评估PSNR和SSIM
- Linux入门:vim常用技巧
- 朴素贝叶斯方法
- java技术简易的网站爬虫
- Android studio导入项目gradle location is incorrect问题
- cors解决ajax跨域问题
- Redis安装
- 测试当前存储是小端模式还是大段模式
- jquery ajax无刷新请求Struts2验证用户名密码数据库是否存在
- eclipse 中maven编译出现问题: -Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOM
- pcb logo creater