数据集:所有属性独立的、均等的对最终结果做出贡献。(这是不现实的,现实的数据集属性并不同等重要,也不彼此独立。只是通过假设,引出一个简单的方案,并在实际中表现极佳。)
其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。
方法:朴素贝叶斯方法。
特点:基于贝叶斯规则并“朴素”的假设属性独立。只有当事件彼此独立时,概率的相乘才是有效的。
想法:使用属性值和类别值共现的次数,假设 每个属性时同等重要、彼此独立的,来预测新样本的分类。
样本数据:以天气数据为例,如下:
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
| ? |
这个简单直观的方法基于有条件概率的贝叶斯规则。贝叶斯规则如下:
由于属性是独立的,将概率相乘得到组合概率为:
根据上述的公式,计算得到组合概率,如下:
类别值为yes的总体似然=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:
类别值为yes的概率=0.0053/(0.0053+0.0206)=20.5%;
类别值为no的概率 =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;
类别值为no的总体似然 =3/5*0.0279*0.0381*3/5*5/14=0.000137;
说明:如果出现很多小概率相乘,可以通过对概率取对数替代概率本省来处理。
通过规范化将这两个结果转化成概率,使它们的概率之和为1:
类别值为yes的概率=0.000036/(0.000036+0.000137)=20.8%;
类别值为no的概率 =0.000137/(0.000036+0.000137)=79.2%;
总结:朴素贝叶斯方法给出了一个简单并且清晰的方法,使用它能够达到很好的预测结果。但是在很多数据集上表现的差强人意,因为朴素贝叶斯处理属性的时候认为属性时独立的,所以一些冗余的属性会破坏机器学习的过程,这种情况可以采用挑选属性子集的方法来避免。另外朴素贝叶斯在忽略特征频次的文档分类中,使用的效果非常好,但是特征频次拥有潜在的重要价值不可忽略,可以采用一种改进的方法,这个方法叫做多项式朴素贝叶斯。