数据集:所有属性独立的、均等的对最终结果做出贡献。(这是不现实的,现实的数据集属性并不同等重要,也不彼此独立。只是通过假设,引出一个简单的方案,并在实际中表现极佳。)
其
概率密度函数
为正态分布的
期望值
μ决定了其位置,其
标准差
σ决定了分布的幅度。
方法:朴素贝叶斯方法。
特点:基于贝叶斯规则并“朴素”的假设属性独立。只有当事件彼此独立时,概率的相乘才是有效的。
想法:使用属性值和类别值共现的次数,假设 每个属性时同等重要、彼此独立的,来预测新样本的分类。
样本数据:以天气数据为例,如下:
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%;
总结:朴素贝叶斯方法给出了一个简单并且清晰的方法,使用它能够达到很好的预测结果。但是在很多数据集上表现的差强人意,因为朴素贝叶斯处理属性的时候认为属性时独立的,所以一些冗余的属性会破坏机器学习的过程,这种情况可以采用挑选属性子集的方法来避免。另外朴素贝叶斯在忽略特征频次的文档分类中,使用的效果非常好,但是特征频次拥有潜在的重要价值不可忽略,可以采用一种改进的方法,这个方法叫做多项式朴素贝叶斯。