购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.2 朴素贝叶斯分类器

为了说明如何利用朴素贝叶斯对数据进行分类,下面我们以西瓜数据集为例来讲解构造朴素贝叶斯分类器的过程,并在此数据集上进行算法实现。西瓜数据集如表3-1所示。

表3-1 西瓜数据集

3.2.1 手工设计贝叶斯分类器

表3-1所示的西瓜数据集中共17条数据,包含色泽、根蒂、敲声、纹路、脐部、触感等6个特征,最后一列好瓜/坏瓜表示该数据的标签。我们学习贝叶斯分类器的目的,就是要利用这些数据训练一个分类器,根据数据的特征去判断这个西瓜是好瓜还是坏瓜。

假设我们要判断第3条西瓜数据是否为好瓜,即:

判定是好瓜还是坏瓜,要根据先验概率和类条件概率去判定,根据表3-1的西瓜数据集,有好瓜和坏瓜的先验概率:

然后,为每个属性特征估计条件概率 P x i | c ),为了便于计算,我们只抽取西瓜数据集的色泽、敲声、纹路3个特征去判定西瓜的好坏。

假设各特征是相互独立的,则:

h (好瓜)= P (好瓜)× P (色泽=乌黑|好瓜)× P (敲声=浊响|好瓜)× P (纹路=清晰|好瓜)

=0.471×0.5×0.75×0.875=0.1545

h (坏瓜)= P (坏瓜)× P (色泽=乌黑|坏瓜)× P (敲声=浊响|坏瓜)× P (纹路=清晰|坏瓜)

=0.529×0.22×0.44×0.22=0.0113

显然有 h (好瓜)> h (坏瓜),因此判断为好瓜。

3.2.2 贝叶斯分类器的实现

根据以上分析,利用朴素贝叶斯定理和对样本分类进行模拟,可以很容易实现贝叶斯分类器。

1.计算先验概率

首先加载数据集,统计样本中好瓜和坏瓜的数量,计算这两类样本的先验概率:

2.计算类条件概率

为了计算各特征(色泽、敲声、纹路)在好瓜和坏瓜基础上的条件概率,需要分别统计这些特征在好瓜和坏瓜中出现的频率。

根据得到不同特征出现的频率,计算它们在好瓜和坏瓜情况下的条件概率。

3.计算后验概率和分类准确率

由前面计算出各类样本的先验概率和类条件概率,在各类样本相互独立的情况下,根据朴素贝叶斯定理,可以得到 h (好瓜)和 h (坏瓜)。若 h (好瓜)> h (坏瓜),则判定该类样本的标签为“好瓜”,否则该类样本的标签为“坏瓜”。最后对预测结果与真实结果进行比较,得到分类准确率。

程序运行结果如下:

为了验证前面手工计算第3条样本的预测结果,这里输出了前3条记录的颜色、敲声、纹路3个概率值。

3.2.3 平滑方法

在计算属性特征的条件概率时,可能会出现某属性特征在训练集中没有出现过,按照3.2.1节的方法直接计算,会出现概率结果为0。这会导致在对样本分类时直接认为是 h (好瓜)或 h (坏瓜)。这显然是不合理的,不能因为一个事件没有观察到就武断地判断该事件的概率是0。平滑技术就是用来解决在实际数据处理过程中出现零概率的问题,“平滑”处理的基本思想是“劫富济贫”,即提高低概率(零概率),降低高概率,尽量使概率的分布趋于实际水平。

为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,因此这种平滑(Smoothing)方法也称为拉普拉斯平滑(Laplacian Smoothing)。

引入拉普拉斯平滑技术后,修正后的类先验概率和类条件概率可表示为:

其中, T c 表示类别 c 的训练集, 表示集合的个数, M 表示训练集 T 中的类别个数, T c, x i 表示类别 c 中取值为 x i 的样本个数, M i 表示具有第 i 个属性可能的取值数。

例如,该西瓜数据集中好瓜和坏瓜的类先验概率为:

修正后,色泽、敲声、纹路3个特征的类先验概率为:

当训练样本很大时,每个分量 x 的计数加1造成的估计概率变化可以忽略不计,却可以方便有效地避免零概率问题。

提示

朴素贝叶斯分类器的优点:(1)对小规模数据表现很好,能处理多分类任务;(2)算法比较简单,常用于文本分类;(3)有稳定的分类效率,对缺失数据不太敏感;(4)适合增量式训练,当数据量超出内存时,可一批一批读取数据进行增量训练。缺点是:(1)使用朴素贝叶斯算法有一个重要的前提条件:样本的特征属性之间是相互独立的,在满足这一条件的数据集上,其分类效果会非常好,而在不满足独立性条件的数据集上,效果欠佳。虽然在理论上,朴素贝叶斯模型与其他分类方法相比,有最小的误差率,但这一结果仅限于满足独立性条件的数据集上。而在实际应用中,属性特征之间不太可能完全独立,在属性特征个数非常多,且属性之间相关性较大时,朴素贝叶斯分类效果不佳;(2)需要知道先验概率,且先验概率很多时候取决于假设,会由于假设的先验模型的原因导致预测效果不佳。 k1JqAwOoZPudkKBgDjvhxQ5lS1Y6h7gf1C3oDx6Hl9S8ZmoMtx/CQQ8HjFFAeaO1

点击中间区域
呼出菜单
上一章
目录
下一章
×