数据集:所有属性独立的、均等的对最终结果做出贡献。(这是不现实的,现实的数据集属性并不同等重要,也不彼此独立。只是通过假设,引出一个简单的方案,并在实际中表现极佳。)

方法:朴素贝叶斯方法。


特点:基于贝叶斯规则并“朴素”的假设属性独立。只有当事件彼此独立时,概率的相乘才是有效的。


想法:使用属性值和类别值共现的次数,假设 每个属性时同等重要、彼此独立的,来预测新样本的分类。


样本数据:以天气数据为例,如下:


outlook



(Attribute)

temperature



(Attribute)

humidity



(Attribute)

windy



(Attribute)

play



(Category)

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


算法实现:下面介绍一个实现的算法,如下:


(1) 数据统计。统计属性值和类别值一同出现的次数。


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

61


true

3

3



rainy

3

2

cool

3

1









sunny

2/9

3/5

hot

2/9

2/5

high

3/9

4/5

false

6/9

2/5

9/14

5/14

overcast

4/9

0/5

mild

4/9

2/5

normal

6/9

1/5

true

3/9

3/5



rainy

3/9

2/5

cool

3/9

1/5










(2) 新样本类别值预测。新样本数据如下:


outlook



(Attribute)

temperature



(Attribute)

humidity



(Attribute)

windy



(Attribute)

play



(Category)

sunny

cool

high

true

?


这个简单直观的方法基于有条件概率的贝叶斯规则。贝叶斯规则如下:



基于统计的数据分析建模预测案例 统计建模例子_属性值


由于属性是独立的,将概率相乘得到组合概率为:


基于统计的数据分析建模预测案例 统计建模例子_属性值_02

基于统计的数据分析建模预测案例 统计建模例子_朴素贝叶斯_03


根据上述的公式,计算得到组合概率,如下:


2/9* 3/9* 3/9* 3/9* 9/14=0.0053 ;


类别值为no的总体似然= 3/5* 1/5* 4/5* 3/5* 5/14=0.0206 ;




通过规范化将这两个结果转化成概率,使它们的概率之和为1:


0.0053/( 0.0053+ 0.0206 )=20.5%;


0.0206 /( 0.0053+ 0.0206 )=79.5%;




算法说明


(1)“似然性”与“或然性”或“ 概率 ”意思相近,都是指某个事件发生的肯能性 。但是在统计学中, “似然性”和“或然性”或“概率”又有明确的区分。 概率 用于在已知一些参数的情况下,预测接下来的观测所得到的结果,而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计。


(2) 数据统计存在缺陷,如果某个属性值没有与一个类别值一起出现在训练集里,那么朴素贝叶斯法将会出错。例如,训练数据集outlook=overcast,总是伴随着结论yes,那么属性值outlook=overcast为no的概率是0,无论其他概率值有多大,最终no的概率均为0。 在实践中常使用拉普拉斯估计器估计频率,将计数结果初始化为1而不是0。


缺省值处理:在一个训练集中,如果一直属性值缺失,它就不被包括在频率的计算中,即忽略掉这个属性。


数值属性处理:下面将介绍数值属性处理方法,具体如下:


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

平均

73

74.6

平均

79.1

86.2

false

6/9

2/5

9/14

5/14

overcast

4/9

0/5

标准差

6.2

7.9

标准差

10.2

9.7

true

3/9

3/5



rainy

3/9

2/5













(1) 数值属性处理。


a. 如果知道属性数值遵循某种分布形式,例如正态分布(或者高斯分布),那么将用这种分布形式的标准估计过程;


b. 如果不知道属性数值的分布形式,那么使用“核密度估计”过程,核密度估计并不把属性值的分布假设成任何特定的分布形式。


c. 属性值离散化处理,按照某些规则,将数值属性映射到一定的区间内。


我们以正态分布为例,进行数值属性处理。


(2) 计算数值属性在每一个类别上的平均值、标准差。(具体的计算方法省略)


(3) 假设数值属性服从正态分布,概率密度函数如下:




其 概率密度函数 为正态分布的 期望值 μ决定了其位置,其 标准差 σ决定了分布的幅度。

(4) 新样本类别值预测。样本数据如下:


outlook



(Attribute)

temperature



(Attribute)

humidity



(Attribute)

windy



(Attribute)

play



(Category)

sunny

66

99

true

?


类别值为yes的总体似然= 2/9*0.0340 *0.0221 * 3/9* 9/14=0.000036 ;



3/5* 0.0279* 0.0381* 3/5* 5/14=0.000137;



说明:如果出现很多小概率相乘,可以通过对概率取对数替代概率本省来处理。





通过规范化将这两个结果转化成概率,使它们的概率之和为1:

0.000036 
  /( 
  0.000036 
  + 
  0.000137 
  )=20.8%;
 
 
0.000137 
  /( 
  0.000036 
  + 
  0.000137 
  )=79.2%;


总结:朴素贝叶斯方法给出了一个简单并且清晰的方法,使用它能够达到很好的预测结果。但是在很多数据集上表现的差强人意,因为朴素贝叶斯处理属性的时候认为属性时独立的,所以一些冗余的属性会破坏机器学习的过程,这种情况可以采用挑选属性子集的方法来避免。另外朴素贝叶斯在忽略特征频次的文档分类中,使用的效果非常好,但是特征频次拥有潜在的重要价值不可忽略,可以采用一种改进的方法,这个方法叫做多项式朴素贝叶斯。