- 1 -
中国科技论文在线
贝叶斯分类集成算法研究
李帛钊,卞佳丽**
作者简介:李帛钊(1992),男,硕士研究生,主要研究方向:计算机应用技术
通信联系人:卞佳丽(1965 年),女,教授,主要研究方向:嵌入式系统与网络通信、移动互联网
(北京邮电大学嵌入式系统与网络通信实验室,北京 100876)
5 摘要:数据挖掘(Datamining)是一种信息发掘过程,它通过一定的算法提取出隐藏在大量
数据中的有价值的数据信息,旨在预测未来的信息变动,以便为决策提供知识上的依据。分
类方法是数据挖掘领域研究的核心问题之一,同时也是机器学习和模式识别的重点研究内
容。集成学习是机器学习领域中极为有效的学习范式之一。近年来,集成学习得到越来越多
的研究和关注。过去,对于集成不稳定学习算法的研究取得了很大的进展。随着对集成学习10
的研究与理论分析日益成熟,如今人们开始将其应用于稳定的学习算法中。本文实现了朴素
贝叶斯分类算法,并在此基础上,分别使用 Bagging 算法和 Adaboost 算法对朴素贝叶斯分
类器进行集成,设计了两种不同的集成学习器。使用公共数据集对这些分类算法进行测试,
实验结果表明 Bagging 集成算法和 Adaboost 集成算法准确率显著高于朴素贝叶斯分类算法。
关键词:计算机应用技术;朴素贝叶斯;Bagging;Adaboost 15
中图分类号:TP399
Researches on Ensemble Learning Algorithms of Bayes
Classifiers
LI Bozhao, BIAN Jiali 20
(Laboratory of Embedded System and Internetwork Communication, Beijing University of Posts
and Telecommunications, Beijing 100876)
Abstract: Data mining is an information discovery process, which can extract valuable
information hidden in large amounts of data. One of the purposes of data mining is to provide a
basis on the knowledge for decision-making by predicting the trend of future information. 25
Classification is one of the core issues in the field of data mining research, and also the focus of
researches in machine learning and pattern recognition. Ensemble learning is an extremely
effective learning paradigm data mining field. It has attracted more and more researchers’
attention recent years. A great progress has been made in ensemble of unstable algorithms. With
the theoretical analysis and researches in ensemble learning becoming more and more mature, 30
people start to use ensemble learning in stable algorithms. In this paper, we studied and
implemented naive bayes algorithm, and on this basis, we designed two different kinds of
ensemble classifier by using Bagging algorithm and Adaboost algorithm respectively on naive
bayes classifier. And we tested these algorithms using public data set. The experiments show that
Bagging ensemble algorithm and Adaboost ensemble algorithm have better classification accuracy 35
than naive bayes.
Key words: Ensemble learning; Naive bayes; Bagging; Adaboost
0 引言
数据挖掘技术能够揭示出隐藏于数据内部的有用的数据信息以及数据之间的关联信息,40
它通过对数据进行分析来实现这一目的。分类技术是分类方法是机器学习、数据挖掘和模式
识别等研究的核心问题,分类算法通过对已知类别的训练集进行分析,从中发现分类规则,
以此预测新数据的类别。常用的分类算法有决策树法[1]、KNN 算法、神经网络[2]、贝叶斯分
类等。
- 2 -
中国科技论文在线
朴素贝叶斯是古典数学理论在信息技术中的实际应用,与其他分类算法相比有着更好的45
数学基础。朴素贝叶斯思路直观,实现方便,分类效率稳定,不需要太多输入参数,有信息
确实也影响不大,诸多优点使得它成为广泛应用的分类模型之一。朴素贝叶斯依赖于独立性
假设,这在很多真实情况中无法得到满足,因此它曾被认为是一个 toy 模型,并没有得到重
视。但是在解决实际问题时,朴素贝叶斯的分类精度之高却往往让人吃惊不已,大量研究表
明[3][4],在绝大部分情况中朴素贝叶斯的性能与常用的 等算法相当甚至更好。随着朴素50
贝叶斯的应用逐渐普及,很多研究者提出了各种对其进行改进的方法,这些方法也都能够在
某一方面使朴素贝叶斯的性能得到提升,其中,集成方法就是一种能够有效提升朴素贝叶斯
分类精度的方法。
集成学习(Ensemble Learning)是一种把若干单个分类器集成起来,将它们各自的分类
结果按照某种规则进行组合来产生最终的分类结果,并使其性能优于单个分类器的方法。集55
成学习的优点之一便是能够使系统的泛化能力得到显著提升[5],而且也解决了单个学习器容
易出现的过拟合(overfitting)问题。
本文中,正是应用集成学习技术对朴素贝叶斯分类器进行了集成学习,提高了贝叶斯分
类器的分类精度,提高了系统的泛化能力。
1 理论基础 60
朴素贝叶斯
朴素贝叶斯分类器[6]假定样本各属性之间是相互独立的,将学习或者分类预测的结果转
化为随机变量的分布,使用概率规则来实现训练集的学习和待分类样本个体的预测。朴素贝
叶斯的理论基础是贝叶斯定理和贝叶斯假设。
在朴素贝叶斯分类模型中,训练样本个体数据根据属性和类别,被分解为一个 n维特征65
向量 X 和决策类变量C,并且假定相对与决策变量,特征向量的各个分量间都是相互独立
的。
设特征向量 1 2{ , , , }nX x x x K 表示数据 n个属性 1 2( , , , )nA A AK 的具体取值,决策变
量(类变量)C有m 个不同的取值 1 2, , , mC C C ,即有m 个不同的类别,则有
1 2
1
( | ) ( , , , | ) ( | ) 1
n
k n k i k
i
p X C p x x x C p x C k m
K
70
由贝叶斯定理可知决策变量 X 属于类别 kC 的后验概率为
( | ) ( )
( | ) 1
( )
k k
k
p X C p C
p C X k m
p X
朴素贝叶斯将未知分类的决策变量 X 分配给类别 kC 当且仅当
( | ) ( | ) 1 ,k jp C X p C X j m j k
即使得 ( | )kp C X 最大。因为 ( )p X 对于所有类是常数,可以将其去掉,上式化为 75
1
( | ) ( | ) ( ) ( ) ( | ) 1
n
k k k k i k
i
p C X p X C p C p C p x C k m
若类的先验概率未知,通常假定所有类都是等概率的,即 1 2( ) ( ) ( )mp C p C p C K ,
并据此只对 ( | )ip C X 最大化。否则,最大化 ( | ) ( )i ip X C p C 。
- 3 -
中国科技论文在线
( )kp C 和 ( | )kp X C 可以根据训练样本估计得出
( ) /k kp C s s
80
( | ) /i k ki kp x C s s
其中, ks 为训练集中属于第 kC 类的样本数,s为训练集的样本总个数, kis 为训练集中
属于第 kC 类且属性 iA 取值为 ix 的样本数。
集成学习
集成学习(ensemble learning)使用容易实现的学习算法训练数据生成基分类器,并将85
它们的分类结果以某种方式进行融合而产生一个性能较为优良的集成学习器(ensemble or
committee learning machine)。集成学习是一种有效的机器学习范式,大量研究表明,集成
之后学习系统的泛化能力得到了显著提升。一个集成学习器的构建一般可分为两步,即基学
习器的生成(generation)和基学习器的合并(combination)。其中,基学习器可以是同构
的,即使用的学习器使用同一种算法实现;也可以是异构成的,即使用的学习器使用不同的90
算法或者不同的具体策略实现。目前大多数的研究涉及到的是同构学习器的集成。
集成学习特点
在同质的学习器中,基于生成学习器时获取数据集采用的技术,我们将生成方法分为下
列几种类型:
1、样本重新采样 95
这类方法主要是将一个实现给定的基学习算法(base learning algorithm)多次应用于对
原始训练集重新随机抽样所获得的训练数据上,以此来产生多个基学习器。这类方法对于不
稳定的学习算法较为有效。
2、操纵输入变量
这类方法通过改变基分类器的输入变量来实现,即抽取原始变量集的一个子集作为成员100
分类器的输入变量集。当输入的变量集冗余情况比较严重时,这种方法很适用。
3、操纵输出目标
该类方法通过改变分类的输出结果来实现。
4、注入随机性
该方法通过在基学习算法中加入随机性来实现集成分类器的生成。 105
集成学习的第二步是基学习器的合并,即如何将基学习器进行组合,以生成性能最好的
集成分类器。根据分类器提供的信息水平,现有的合并准则可以分为三大类:抽象水平、值
水平、置信水平。
集成学习主要可以为我们带来以下几点好处:
1、提高预测结果的准确性。 110
2、过拟合问题。
3、参数选择问题。
4、提高预测结果的稳定性。
Bagging 算法
Bagging 和 Boosting 是集成学习中的代表性算法,也是研究得最为深入的两个算法族,115
其影响已经扩展到了诸多其他的相关领域。这两种算法的基学习器构造方法都是改变训练集
- 4 -
中国科技论文在线
样本,但是他们的理论体系则大不相同。
Bagging 算法通过重复抽样构造训练集,产生了基学习器之间的个体差异,用这种方法
使泛化能力得以提升。Bagging 算法的步骤如下所示:
输入:训练集 1 1{( , ), , ( , )}n nS x y x y K ,基分类器L,训练的最大轮数T 120
输出:集成预测模型
for i = 1 to T
1.从原始训练集中采用 Bootstrap 抽样,抽取 ( )m m N 个训练样例组成子集 S
2.使用 S作为弱学习器的训练集,得到预测函数 ih
end for 125
将各预测函数 1 2, , , Th h hK 集成得到最终的预测函数:
1
( ) ( ( ))
T
A i
t
h x sign h x
Bagging 算法的流程如图 1 所示:
图 1 Bagging 算法流程图 130
Bagging 算法从基分类器的构造上来讲,采用的是同质的分类器,构造方法则是重新抽
样,而且是简单的随机抽样。在分类器的集成上则是简单投票的方法。
Adaboost 算法
Boosting 算法是目前集成学习中研究的最为深入的算法族,是一种试图提升任意给定学
习算法精度的普遍方法。Adaboost 算法是一种带有自适应功能,可以自动调整权值的135
Boosting 算法,该算法效率很高,且可以方便地用于实际问题的解决。
Boosting 算法与 Bagging 一样是通过改变训练集构造多个基分类器,它只要求这个基分
类器是一个弱分类器,即准确率只比随机猜测略好即可。Boosting 算法的主要思想就是将一
- 5 -
中国科技论文在线
个粗糙的、简单的、误差较大的、容易实现的初级预测方法,按照一定的规则进行提升,最
终得到一个复杂的、精确度很高的、多项式时间的预测方法。提升的方法则是对那些容易错140
误分类的样本个体进行加强学习。在 Boosting 算法的运行过程中,首先初始化权值分布,
给每个样本个体赋予相同的权重,用这个训练集训练出第一个基分类器,并用该分类器来对
训练集进行分类预测,提高分类错误样本个体的权重,然后用调整后的带权训练集训练第二
个基分类器。循环执行训练、分类、更新权值分布这一过程直到达到一个令人满意的分类精
度为止。 145
图 2 Adaboost 算法示意图
2 算法设计与实现
朴素贝叶斯分类器的设计与实现
为了获得更高的精度,首先对连续属性值进行了等频的离散化处理。等频离散化方法的150
基本思想是将属性值分为 k个区间,使得每个区间内包含相同数量的数据,即每个区间内包
含 /R k(可能有重复值)个相邻值,其中 k值需要人为地预先设定。
设特征向量 1 2{ , , , }nX x x x K 表示数据 n个属性 1 2( , , , )nA A AK 的具体取值,决策变
量(类变量)C有m 个不同的取值 1 2, , , mC C CK ,即有m 个不同的类别。因为已经对连续
属性进行离散化处理,所以只考虑属性值为离散值的情况。分类器中的各概率的计算方法如155
下:
1.某一类的先验概率计算方法为
^
( ) ( ) k
C
k k
N
P C P C
N
其中, N 是训练集样本总个数,
kC
N 是训练集样本中类别为 kC 的记录的个数。
2.某个属性的某一离散值 ix 在某一类 kC 条件下的条件概率为 160
^
( | ) ( | )
i
k
k
x
C
i k i k
C
N
P x C P x C
N
其中, i
k
x
CN 为第 kC 类中属性值 i iX x 的情况。
3.对于连续型属性,做高斯分布假设,属性某一连续值的条件概率计算方法如下:
- 6 -
中国科技论文在线
^
( | ) ( , , )
K Ki i K i C C
P X x C g x
其中, ( , , )
K Ki C C
g x 是标准正态分布函数,
KC
和
KC
则分别是该属性属于类 KC 的165
所有连续值的期望和标准差。
分别计算出所有类别的先验概率,以及每个属性的每个离散的取值在每一类下的条件概
率,则当测试集的新样本到来时,可由式 ,即
1
( | ) ( | ) ( ) ( ) ( | ) 1
n
k k k k i k
i
p C X p X C p C p C p x C k m
计算样本个体属于每一类的后验概率,选择具有最大后验概率的类别作为预测结果。 170
Bagging-NB 集成算法的设计与实现
在 Bagging-NB 算法中,使用朴素贝叶斯作为基分类器。通过重复取样,每一轮都从大
小为 N 的原始训练集中通过 Bootstrap 过程随机抽取大小为 'N 的样本作为本轮的训练集,
由朴素贝叶斯分类器进行训练,产生一个弱学习器。新的样本个体到来时,每个朴素贝叶斯
分类器独立对其进行分类,产生一个分类结果。最后将所有的分类结果进行集成,投票产生175
最终的预测结果,即将该样本个体指派到票数最多的类别中。
在 Bootstrap 过程中,每个样本被抽到的概率为
1
lim 1 1
N
N N
成员分类器个数 L由下式计算得出
2 1 4
11 4
m m
L
m
180
其中m 为样本数据集的类别数。
Adaboost-NB 算法的设计与实现
设训练数据集为D,其中包含N 个样本个体,每个样本具有 p个属性值和一个类标号。
设 F 为 p个特征的有序集合, 1{ , , }mc cK 是类标号的集合。则训练数据集 D可以用一个
N p 的数据矩阵X和一个向量 1[ , , ]
T
Ny yy K 以及一个向量 1[ , , ]
T
Nw wW K 来表示。185
其中, X 的行向量 1[ , , ]i px xX K 记录了第 i 个样本在 p 个属性上的取值, y 的分量
1{ , , }i my c c K 是第 i个样本的类标号,而W的分量 iw 则表式第 i个样本的权值。
算法开始时初始化权值
( ) 1/ 1, ,i N i N W K
在第 t轮迭代中,错误率即伪损定义为全部分类错误的样本权值之和 190
: ( )
( )
t i i
t t
i h x y
i
W
其中 th 为该轮的预测函数。由伪损可得该轮分类器的权值参数
/ (1 )t t t
接着要更新样本的权值分布,更新方法为
- 7 -
中国科技论文在线
1
( )( )
( )
1
t t i it
t
t
if h x yi
i
Z otherwise
W
W
195
其中 tZ 为归一化因子,除以 tZ 的目的是使得 1( )t iW 为一个概率分布,简单来说就是
让下一轮的权值之和为零。 tZ 可由下式计算获得
1
1
(i)
N
t t
i
Z
W
最后得出最终的预测函数
: ( )
1
( ) arg max log
t
fin
y Y t h x y t
h x
200
当待分类的新样本个体到来时,每个分类器都独立对其进行分类,最终的结果由所有的
成员分类器加权投票产生,即将该样本指派到票数最多的类别中。
3 实验设计
为了测试 Naïve bayes 算法、Bagging-NB 算法以及 Adaboost-NB 算法的性能,本文设计
了实验来分别检验三个算法的分类精度。 205
实验数据说明
本文中的实验共使用了 3 个数据集,其中两个来自于 UCI,是机器学习中测试算法常用
的数据集。另外一个数据集来自于某数据挖掘竞赛所采用的医学数据集。三个数据集的规格
分别如表 1 所示:
表 1 测试数据集规格 210
Dataset Domain Instance Features Classes
Dataset1 Medical 5031 410 3
Iris Life 150 4 3
Wine Physical 178 13 3
实验平台的选取
考虑到上述的数据集以及算法的特点,本文采用 matlab 平台来完成实验。下面是相关
的平台参数的说明:
表 2 平台参数说明
实验平台 Matlab R2012b
操作系统 Windows7
处理器 Intel(R) Core(TM) i3 CPU M350
内存 2GB
实验过程设计 215
针对 Naïve Bayes、Bagging-NB 和 Adaboost-NB 三个算法,分别在 matlab 平台上实现
算法,并使用上述三个数据集进行训练,并使用剩余的数据集进行测试,比较三个数据集下
这三种算法的分类精度。
实验结果及分析
部分实验程序运行结果如图 3 所示: 220
- 8 -
中国科技论文在线
图 3 程序运行结果
实验中三个算法的分类准确率对比如表 3:
表 3 算法分类精度对比
Dataset Naïve Bayes Bagging-NB Adaboost-NB
Dataset1 % % %
Iris % % %
Wine % % %
由三个算法的分类精度对比可以得出,Bagging 集成算法和 Adaboost 集成算法的分类精225
度都要高于朴素贝叶斯,其中 Adaboost 算法的效果更好,在三个数据集中均达到了很高的
精度。
4 结论
本文给出了基于朴素贝叶斯分类器的集成算法,分别采用了 Bagging 算法和 Adaboost
算法对朴素贝叶斯分类器进行集成,其中为了贯彻 Adaboost 算法的权值更新思想,本文提230
出了一种适应加权的朴素贝叶斯分类算法。并采用公共数据集对三个算法的分类精度进行了
测试,结果表明集成以后的 Bagging-NB 算法和 Adaboost-NB 算法性能显著优于朴素贝叶斯
分类算法,且 Adaboost-NB 算法具有更高的精度。
在本文工作的基础之上,对于算法的泛化能力,还有待于进一步研究。
[参考文献] (References)235
[1] M Pankaj and W W Benjamin. Artificial neural networks: concepts and theory[M]. Los Alamitos: IEEE
Computer Society Press, 1992.
[2] J R Quinlan. : programs for machine learning[M]. San Mateo: Morgan Kaufmann Publishers, 1993.
[3] R O Duda, P E Hart, D G Stork. Pattern Classification(2nd Edition)[M]. America: Wiley-Interscience, 2000.
[4] N friedman, D Geiger, M Goldszmidt. Bayesian Netwrok Classifiers[J]. Machine Learning, 1997, 29(2): 240
131-163.
[5] Dietterich TG. Machine learning research: four current directions[J]. AI Magazine, 1997, 18(4): 97-136.
[6] 邸鹏,段利国. 一种新型朴素贝叶斯文本分类算法[J]. 数据采集与处理. 2014,29(1):71-75.