1、一种基于混合模型的数据流概念漂移检测算法 郭躬德 李南 陈黎飞 福建师范大学数学与计算机科学学院 网络安全与密码技术福建省高校重点实验室(福建师范大学) 摘 要: 由于在信用卡欺诈分析等领域的广泛应用,学者们开始关注概念漂移数据流分类问题.现有算法通常假设数据一旦分类后类标已知,利用所有待分类实例的真实类别来检测数据流是否发生概念漂移以及调整分类模型.然而,由于标记实例需要耗费大量的时间和精力,该解决方案在实际应用中无法实现.据此,提出一种基于 KNNModel 和增量贝叶斯的概念漂移检测算法 KnnM-IB.新算法在具有KNNModel 算法分类被模型簇覆盖的实例分类精度高、速度快优点的同时
2、,利用增量贝叶斯算法对难处理样本进行分类,从而保证了分类效果.算法同时利用可变滑动窗口大小的变化以及主动学习标记的少量样本进行概念漂移检测.当数据流稳定时,半监督学习被用于扩大标记实例的数量以对模型进行更新,因而更符合实际应用的要求.实验结果表明,该方法能够在对数据流进行有效分类的同时检测数据流概念漂移及相应地更新模型.关键词: 概念漂移; 数据流; 分类; 主动学习; 半监督学习; 作者简介:郭躬德 作者简介:李南 作者简介:Chen Lifei, born in 1972. PhD and Associate professor in Fujian Normal University.Hi
3、s main research interests include data mining and pattern recognition ().收稿日期:2012-07-15基金:国家自然科学基金项目(61070062,61175123)Concept Drift Detection for Data Streams Based on Mixture ModelGuo Gongde Li Nan Chen Lifei Abstract: As its application in credit card fraud detection and many other fields,more a
4、nd more scholars are paying attention to the classification for concept drifting data streams.Most existing algorithms assume that the true labels of the testing instances can be accessed right after they are classified,and utilize them to detect concept drift and adjust current model.It is an impra
5、ctical assumption in real-world because manual labeling of instances which arrive continuously at a high speed requires a lot of time and effort.For the problem mentioned above,this paper proposes a concept drift detection method based on KNNModel algorithm and incremental Bayes algorithm which is c
6、alled KnnM-IB.The proposed method has the virtue of the KNNModel algorithm when classifying instances covered by the model clusters.In addition,the incremental Bayes algorithm is used to handle the confused instances and update the model.Using the change of the window size and the few labeled most i
7、nformative instances which are chosen by active learning,the KnnM-IB algorithm can detect the concept drift on data streams.Semi-supervised learning technology is also used to increase the number of the labeled instances to update the model when the underlying concept of the data streams is stable.E
8、xperimental results show that compared with the traditional classification algorithms,the proposed method not only adapts to the situation of concept drift,but also acquires the comparable or better classification accuracy.Keyword: concept drift; data stream; classification; active learning; semi-su
9、pervised learning; Received: 2012-07-15信息产业的快速发展导致银行、电信等领域大量数据流的产生,如何从中挖掘有价值的知识受到学者们的普遍关注,涉及的具体应用包括网络入侵检测、垃圾邮件过滤等.但是,数据流所具有的快速、广域、持续等特点使得传统的一次性静态学习的数据挖掘算法无法达到令人满意的效果.同时,数据流中普遍存在的概念漂移现象也为数据流挖掘带来了挑战,其表现为数据流中隐含的知识或概念会随着时间的推移或环境的改变而发生变化.因此,数据流挖掘不仅要求算法在有限的计算时间和内存资源前提下进行挖掘,同时模型必须根据数据流当前的概念自适应地进行调整.本文主要针对的
10、是数据流挖掘中的分类问题.目前,国内外学者解决概念漂移数据流分类问题的方法主要有以下几种:实例选择、实例加权和集成学习.文献7证明由于实例加权方法可能会引起过拟合问题,因而学习效果不如类似的实例选择方法.在集成学习方面,目前常用的构建方法主要有水平集成和垂直集成两种,具体的算法包括经典的数据流概念漂移的集成分类器算法(streaming ensemble algorithm,SEA)以及 Kolter 等人提出的实例加权最大投票算法(dynamic weighted majority,DWM)等.由于单一模型集成可能会导致分类误差增大,噪音条件下分类效果容易受到影响,不少学者开始研究基于混合模
11、型的概念漂移数据流分类算法.辛轶等人将层次纠错输出编码(error-correcting output codes,ECOC)和增量 k 近邻模型算法(increased k-nearest neighbor model,IKNNModel)相结合,提出了一种动态层次编码纠错输出算法(dynamic hierarchical ECOC algorithm based on IKNNModel,IKnnM-DHecoc).桂林等人构建了基于决策树和贝叶斯混合模型的集成分类算法(weight ensemble classifier -decision tree and Bayes,WE-DTB),
12、并使用 Hoeffding边界来进行概念漂移的检测和分类.与其类似的还有李燕等人提出的基于 C4.5决策树和朴素贝叶斯混合模型的数据流分类算法(classification algorithm for mining data streams based on mixture models of C4.5and Naive Bayes,CDSMM).虽然众多学者进行了关于数据流分类问题的研究,可是现有的绝大部分数据流分类模型均基于一个不符合实际的假设:待分类实例一旦分类后类标签即已知,因而可以利用其对应的类标签来检测概念漂移以及调整分类模型.然而,在实际应用中有限的计算时间和内存资源前提下,由于
13、标记当前实例以获得其类别需要耗费相当的时间和精力,该假设一般是不成立的.针对以上问题,本文提出了一种线性时间复杂度的数据流分类算法(KNNModel-incremental Bayes,KnnM-IB).本文的贡献主要有以下两方面:1)新算法结合了 KNNModel 算法和增量贝叶斯算法,采用可变窗口技术和主动学习方法,能够在少量被标记实例的真实类标的基础上检测概念漂移;2)当数据流概念稳定时,使用半监督学习方法增加具有类标实例的数量以进行模型更新,更符合实际应用的要求.1 KNNModel 算法由 Guo 等人提出的 KNNModel 算法通过构建训练集中各类别实例的多个模型簇,以其代替所有
14、训练实例作为分类的基础,解决了经典的 k-最近邻(k-nearest neighbor,kNN)算法需要保存所有训练实例和近邻参数(k 值)难以确定的缺点,并在文本分类的应用中得到了较好的分类效果.KNNModel 算法的训练过程如下:1)以每个训练实例为中心向外扩展,使得到的区域在不覆盖任何异类实例的前提下覆盖最多同类实例;2)选择覆盖最多实例的区域,以四元组中心,半径,覆盖实例个数,覆盖实例的类别的形式保存下来,记为一个模型簇.如果给定实例到某模型簇中心的距离小于模型簇半径,那么就认为其被该模型簇覆盖;3)算法迭代多次直至所有的训练实例至少被一个模型簇覆盖.图 1 为一个 KNNModel
15、 算法模型簇的例子,其中椭圆形和长方形分别表示两类不同的训练实例,圆形表示长方形的一个模型簇,其中箭头表示模型簇的半径.在分类阶段,对于给定的测试样本,算法根据其与各个模型簇的位置关系确定其类别.Fig.1 The model cluster of KNNModel algorithm.图 1 KNNModel 算法模型簇 下载原图根据上述 KNNModel 算法训练过程,不难发现其建立模型时间复杂度高达 O(n)(n为训练实例个数),不符合数据流快速分类的要求.同时,虽然算法分类被模型簇覆盖的样本时具有较高的正确率,但是若待分类样本处于模型簇边界时,其分类精度会受到一定的影响.如图 2 所示
16、,其中三角形表示待分类样本.当其落入长方形类别的模型簇中时,毫无疑问将其类别判定为长方形.但是,如果其处于模型簇边界,不被任何模型簇覆盖,则 KNNModel 算法难以确定其类别,将该测试实例的类别标记为最靠近其边界的模型簇的类别.此外,同传统的分类算法一样,KNNModel 算法亦无法直接应用于数据流中实例持续快速到来的特殊环境.因此,本文将其与增量贝叶斯算法相结合,提出一种混合模型分类算法 KnnM-IB.Fig.2 The example of using model clusters to classify instances.图 2 利用模型簇分类 下载原图2 KnnM-IB 算法的
17、设计与分析2.1 训练及分类过程为了提高 KNNModel 算法建立分类模型的效率,陈黎飞等人应用结构风险最小化理论来确定训练集中各类生成的模型簇个数.然而,该方法容易受到噪声的影响,经常产生覆盖样本过少的模型簇.根据文献13,24中的实验结果表明,将每类数据细化到 23 块时学习的效果最佳,因此 KnnM-IB 算法为每个类别固定保存 3 个模型簇.同时,为了进一步加快生成模型簇的速度,每个模型簇中心采用经典的k-Means 算法确定.区别于 KNNModel 算法,KnnM-IB 算法允许每个模型簇覆盖一定数量的异类实例以提高模型的泛化能力.针对 KNNModel 算法分类处于模型簇边界的
18、样本时分类精度不高的缺点,KnnM-IB算法引入增量贝叶斯算法分类处于模型簇边界的样本.原因在于:增量贝叶斯算法不仅建立模型及分类速度快,增量简单快速,而且抗噪声能力强,因而适用于数据流环境,同时其亦被广泛应用于文本分类与信息检索领域.考虑以上因素,KnnM-IB 算法训练过程如算法 1 所示.由于数据流分类快速处理的要求,与KNNModel 算法相同,各实例之间的距离简单采用欧氏距离度量(下同).算法 1.KnnM-IB 算法训练过程.输入:训练实例集合 TrainIns、容忍度 Dif(允许每个模型簇覆盖的异类样本个数);输出:每个类别对应的 3 个模型簇以及 1 个增量贝叶斯分类模型.1
19、)for TrainIns 中的每个类别1 利用 k-Means 算法为该类别实例建立 3 个聚类;2 分别利用 3 个聚类中心向外扩张成一个区域,使得该区域覆盖最多同类实例的同时覆盖不多于 Dif 个异类实例;3 分别以 3 个聚类中心作为模型簇中心,计算其到各自区域内最远同类实例的距离,将该距离保存为对应模型簇的半径;4 记 Modelknum=Centerknum,Radiusknum,k为类别 k 所对应的模型簇.其中 Center为模型簇中心,Radius 表示模型簇半径,num1,2,3;2)end for3)在 TrainIns 上建立增量贝叶斯分类模型.对于给定的测试实例,如果
20、其只被同一类别的模型簇覆盖,那么标记该实例为该类模型簇的类别.否则,说明难以使用模型簇判定其类别,因而采用增量贝叶斯分类模型进行分类.这样,KnnM-IB 算法在具有 KNNModel 算法对被模型簇覆盖的实例分类精度高、速度快优点的同时,对于处在模型簇边界的实例的分类精度也有了保证.综上所述,KnnM-IB 算法分类过程如下.算法 2.KnnM-IB 算法分类过程.输入:待分类实例 TestIns、每个类别对应的模型簇 Model 、增量贝叶斯分类模型 Classifier ;输出:TestIns 的类别.1)计算 TestIns 与每个类别各个模型簇中心之间的距离;2)if TestIns
21、 仅被同一类别模型簇覆盖标记 TestIns 为该类别;return;3)end if4)利用 Classifier 分类该实例.2.2 KnnM-IB 算法复杂度分析设训练数据集中实例个数为 n、类别个数为 K,其中第 k 类的实例数目为 n .对比与建立模型簇时间复杂度为 O(n)的 KNNModel 算法,KnnM-IB 算法进行 K 次 k-Means 聚类以建立模型簇,而单次 k-Means 聚类的时间复杂度为 O(n Num),其中Num 为聚类个数,因而其总体时间复杂度为 O(Kn Num).由于 Num 和 K 独立于n ,Numn 且 Kn ,因此 KnnM-IB 算法建立模
22、型簇时间复杂度为 O(n),适合数据流分类的特殊要求.3 概念漂移检测及模型更新本节介绍在只标记少量实例以获得其真实类标的前提下,如何利用模型簇和主动学习来有效检测概念漂移,并使用半监督学习技术来增加用于更新模型的具有类标实例的数量,这也是全文的主要贡献及创新之处.KnnM-IB 算法对概念漂移的检测基于下面假设:属于同一个类别的实例在合适的相似度度量下是“密集的”,这也是所有近邻分类算法的基本假设.3.1 现有工作针对现有绝大部分数据流分类模型不符合实际的假设:“待分类实例一旦分类后类标签即已知,利用其对应类标签来检测概念漂移以及调整分类模型”,先前的工作中根据在一定时间内不被任何模型簇覆盖
23、的实例个数是否显著性增大来判断是否发生概念漂移,其主要分为以下两种情况:1)如果数据流上有新的类别出现,那么根据同类别密集性假设,将会引起一定时间内不被任何模型簇覆盖的实例个数显著增加.如图 3 所示,两个圆形代表原先建立的模型簇.当菱形代表的新类别实例出现时,由于其自身是“密集的”,因而不会被任何现有模型簇覆盖,导致一定时间内不被任何模型簇覆盖的样本个数显著增加;2)如果原有类别实例分布发生变化,如图 4 所示,由空心椭圆代表当前时间段内的椭圆样本,其分布发生变化,亦其会引起一定时间内不被任何模型簇覆盖的实例个数显著增加.Fig.3 The detection of a new class.
24、图 3 利用模型簇检测新类别实例 下载原图Fig.4 The detection of underlying concept drifts.图 4 利用模型簇检测实例类别分布变化 下载原图然而,原有工作并没有对分类模型进行增量更新.此外,当发生第 3 种概念漂移:数据流中某一类别概念发生变化,原先属于它的部分实例演变为其他类别时(现实中的例子包括随着科技的进步,原本一部分致命的疾病现在可以很容易治疗,不再属于危险疾病等),其检测不出这种概念漂移的情况.如图 5 所示,原有的椭圆实例部分演变为菱形实例,而一定时间内不被任何模型簇覆盖的样本个数却没有显著增加.Fig.5 The detection
25、 of existing concept splits.图 5 利用模型簇检测原有类别实例演变 下载原图3.2 可变窗口现有数据流分类模型大部分使用固定窗口来检测概念漂移以及更新模型.然而,窗口长度的设置成为难题.为了对概念漂移敏感,窗口长度不能过大;但是,过小的窗口可能无法包含足够的蕴含新概念的实例来对模型进行更新,导致模型分类精度方差增大.因此,KnnM-IB 算法使用可变窗口来进行概念漂移检测.设在训练数据集上不被任何模型簇覆盖的实例个数为 Length,那么每个窗口的长度定义为窗口内包含 Length 个不被任何模型簇覆盖的实例.如图 6 所示,其中实心三角形和空心三角形分别表示被模型
26、簇覆盖和不被任何模型簇覆盖的实例,Length=3,每个窗口长度用 l 表示.从 3.1 节的分析可以得出结论,所定义的滑动窗口的大小显著性变小是概念漂移发生的充分条件(能够检测概念漂移的前两种情况),其说明一定时期内不被任何模型簇覆盖的样本个数显著增加.因此,KnnM-IB 算法使用正态分布来拟合滑动窗口大小的分布情况.将先前若干个概念稳定的窗口大小的均值用 表示,方差为 .如果当前滑动窗口的大小超出范围(-1.96,+1.96)(其覆盖了 95% 的高斯分布区域),那么确信数据流发生概念漂移,需要重建分类模型.Fig.6 The example of variable-size slidi
27、ng window.图 6 可变窗口示意 下载原图3.3 概念漂移检测根据对训练数据收集方式的不同,可以将算法分为被动学习和主动学习两种不同的类型.其中主动学习通过选择性采样方法来组织训练数据,其目的是选取少部分信息量最大的实例作为训练实例,具体的工作包括文献31等.以 KnnM-IB 算法为应用背景,算法随机选取部分被模型簇覆盖的实例进行标记.因为当数据流概念稳定时,这些处在训练实例聚类中心附近的样本相比其他实例蕴含更多的信息量,能够大大降低更新增量贝叶斯分类模型对有类标签实例的需求量.同时,如果当前选择标记的被模型簇覆盖实例的分类精度相比之前显著变差,由于算法分类被模型簇覆盖的实例时具有较
28、高的分类精度,那么说明出现了第 3 种概念漂移,需要重建分类模型.之所以使用随机的方式选取部分被模型簇覆盖的实例进行标记,一方面是因为在数据流快速处理的要求下只能标记少部分实例;另一方面是由于文献33证明随机方式选取的实例更符合数据分布的真实情况.在建立模型簇时,新算法允许模型簇覆盖一定数量的异类样本,以提高分类模型的鲁棒性.然而,这会导致模型簇边界不够精确,进而引起极少部分被模型簇覆盖的处在模型簇边界的样本被错误分类,同时出现误判概念漂移的情况.一个可能的情况是前若干个数据块上标记的被模型簇覆盖的实例分类精度均为 100%,当前数据块上的为 98%,其精度值仍然超出了所拟合的高斯分布 95%
29、的区域.为了解决以上问题,KnnM-IB 算法采用以下两种策略.设此前数个稳定数据块上被标记的覆盖实例的分类精度的平均值为 ,最小值为 Acc ,当前精度为 AccCur.策略 1.若 Acc Acc ,标记所有当前数据块上被模型簇覆盖的实例并重新计算 Acc .策略 2.设置误差精度 =0.05,若 -Acc ,则认为数据流概念稳定.策略 1 保证了当前数据块上被选择标记的被模型簇覆盖实例分类精度的可靠性,策略 2 大大减少了误报概念漂移的可能性.综合考虑以上因素,KnnM-IB 算法检测概念漂移的过程如下.算法 3.KnnM-IB 算法概念漂移检测.输入:当前数据块各实例、数据流概念稳定时
30、的窗口大小的均值 及方差 、各数据块上被标记实例的分类精度均值 、最小值 Acc 及方差 、随机标记实例占各类模型簇覆盖总样本的比例 Percent;输出:是否发生概念漂移.3.4 模型更新及重建KnnM-IB 算法对分类模型的更新基于半监督学习中常用的聚类假设:同一聚类的样本很可能具有同样的类别标记.在此前提下,若数据流概念保持稳定,那么绝大部分被模型簇覆盖的实例具有和该模型簇同样的类别.因为如果实例被某个模型簇覆盖,那么该实例和原先训练集中构成模型簇的带有类标签的实例形成一个聚类,在聚类假设下它们很有可能具有同样的类别标记.然而,由于建立分类模型时,模型簇覆盖少量的异类样本点可能导致少部分
31、被覆盖的处于边界的实例与模型簇的类别不同.因此,KnnM-IB 算法利用已标记的部分实例来保证用于模型更新实例的质量.设被标记的某模型簇覆盖的实例集合为CovIns,其中距中心最近的异类实例到模型簇中心的距离为 Temp,到模型簇中心距离小于 Temp 的同类实例中到中心距离最远的为 Dist,那么将所有未被标记的被该模型簇覆盖的实例中距离中心距离小于 Dist 的实例的类别标记为该模型簇的类别.此外,我们也同样随机标记同样比例的不被任何模型簇覆盖的实例已更新模型.因为在学习过程中这些实例难以确定其类别,不确定性较大,能够在一定程度上进一步提高分类模型的精度.综上所述,KnnM-IB 算法模型
32、更新的具体步骤如下.算法 4.KnnM-IB 算法更新过程.输入:标记比例 Percent、当前增量贝叶斯模型、被标记的每个类别模型簇覆盖的实例 CovIns ;输出:更新后的增量贝叶斯模型.1)随机标注给定比例 Percent 的不被任何模型簇覆盖的实例,将其加入用于模型簇更新的实例集合 UpdateIns 中;2)for 每个类别 k 对应的各个模型簇 Modelknum3)end for4)利用 UpdateIns 更新当前增量贝叶斯模型.从上述算法过程可以看出,KnnM-IB 算法利用部分未被标记的被模型簇覆盖的实例进行模型更新.一方面,这些被筛选过的未被标记的实例距离模型簇中心较近,
33、在聚类假设的前提下更有可能具有和模型簇同样的类别.另一方面,经过扩充的带有类标签的实例集合能够在人为标记少部分实例的前提下提升模型更新的质量.值得注意的是,KnnM-IB 算法基于少量被标记实例的真实类别,对数据流中可能存在的概念漂移进行检测以及更新分类模型,而其他类似的基于混合模型的数据流分类算法的这两个过程均利用了所有待分类实例的真实类别.由于在数据流环境下需要极高的代价以获得待分类实例的真实类别,因而 KnnM-IB 算法更符合实际应用的要求.当检测到概念漂移发生时,KnnM-IB 算法需要重建分类模型以适应当前数据流中的概念.由于当前数据块上包含的实例可能同时含有新、旧两种概念,若利用
34、这些实例建立 KnnM-IB 模型可能导致分类模型不够精确.由于增量贝叶斯算法对噪音具有一定的鲁棒性,因此,KnnM-IB 算法首先利用当前数据块上的实例建立一个增量贝叶斯分类模型.在使用该模型以继续对待分类实例快速分类的同时,算法开始累积一定数量的蕴含新概念的实例,以建立 KnnM-IB 分类模型.模型重建具体过程如算法 5 所示.算法 5.KnnM-IB 算法重建过程.输入:需要累积的用于重建模型的实例个数 n、当前数据块实例集合Instances、数据流 DS(Ins ,Ins );输出:Ins 0,Ins1的类别标签.3.5 KnnM-IB 算法实现总结 KnnM-IB 算法的具体过程
35、如下:算法 6.KnnM-IB 算法.输入:训练实例集合 TrainIns(实例个数为 n)、容忍度 Dif、标记比例Percent、数据流 DS(Ins ,Ins );输出:Ins ,Ins ,的类别标签.4 实验分析与讨论为了评估 KnnM-IB 算法的性能,我们分别在人工数据流和真实数据流上对算法的精确度和适应性进行实验.本节实验对应的环境是:Pentium? D3.0GHz CPU 和2GB RAM;操作系统为 Windows;开发环境为基于 JAVA 语言的 Weka 平台;编译运行环境为 jdk1.5.对比算法使用数据流上经典的 SEA 算法、集成分类器算法中流行的加权集成分类算法(aggregate ensemble,AE)以及最近提出的同样基于混合集成方法的 WE-DTB 算法.各种算法的具体参数分别参照对应文献9,14,35中的设置.4.1 数据集