朴素贝叶斯方法

来源:互联网 发布:手机说唱软件 编辑:程序博客网 时间: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

0 0