1、一种基于时间衰减模型的数据流闭合模式挖掘方法 韩萌 王志海 原继东 北京交通大学计算机与信息工程学院 北方民族大学计算机科学与工程学院 摘 要: 数据流是随着时间顺序快速变化的和连续的, 对其进行频繁模式挖掘时会出现概念漂移现象.在一些数据流应用中, 通常认为最新的数据具有最大的价值.数据流挖掘会产生大量无用的模式, 为了减少无用模式且保证无损压缩, 需要挖掘闭合模式.因此, 提出了一种基于时间衰减模型和闭合算子的数据流闭合模式挖掘方式 TDMCS (Time-Decay-Model-based Closed frequent pattern mining on data Stream) .该
2、算法采用时间衰减模型来区分滑动窗口内的历史和新近事务权重, 使用闭合算子提高闭合模式挖掘的效率, 设计使用最小支持度-最大误差率-衰减因子的三层架构避免概念漂移, 设计一种均值衰减因子平衡算法的高查全率和高查准率.实验分析表明该算法适用于挖掘高密度、长模式的数据流;且具有较高的效率, 在不同大小的滑动窗口条件下性能表现是稳态的, 同时也优于其他同类算法.关键词: 事务数据流; 数据流挖掘; 频繁模式挖掘; 闭合模式挖掘; 时间衰减模型; 概念漂移; 作者简介:韩萌, 女, 1982 年生, 博士研究生, 副教授, 主要研究方向为数据挖掘与机器学习.E-mail:compute2006_;.作者
3、简介:王志海, 男, 1963 年生, 博士, 教授, 博士生导师, 主要研究领域为数据挖掘与机器学习.作者简介:原继东, 男, 1989 年生, 博士研究生, 主要研究领域为数据挖掘与机器学习.收稿日期:2013-09-04基金:国家自然科学基金 (71061001) Efficient Method for Mining Closed Frequent Patterns from Data Streams Based on Time Decay ModelHAN Meng WANG Zhi-Hai YUAN Ji-Dong School of Computer and Informatio
4、n Technology, Beijing Jiaotong University; Abstract: A data stream is a continuous, unbounded and time changed sequence of data elements.Therefore, there will be a concept drift of mining frequent patterns on data stream.In some data stream applications, the information embedded in recent transactio
5、ns is of particular value.Mining frequent pattern on data stream always generates useless and redundant patterns.In order to obtain the result set of lossless compression, generating closed pattern is needed.This paper proposed a method TDMCS for mining closed frequent patterns on data stream effici
6、ently based on time decay model and closure operator.In order to distinguish between recent and historical transactions in the sliding window, time decay model is used in algorithm TDMCS.The frame of minimum support-maximal error rate-decay factor is designed to avoid concept drift.An average decay
7、factor is designed to balance high Recall with high Precision.The performance of proposed method is evaluated via experiments, and the results show that the proposed method is efficient and steady-state, it applies to high density and long patterns data streams, it is suitable for different sizes of
8、 sliding windows, and it is also superior to other analogous algorithms.Keyword: transactional data stream; data stream mining; frequent pattern mining; closed pattern mining; time decay model; concept drift; Received: 2013-09-041 引言数据流 (Data Streams) 作为一种新型数据模型广泛出现在多种应用领域.与传统的数据集不同, 数据流是按时间顺序的、快速变化
9、的、海量的和潜在无限的.频繁模式的挖掘是数据挖掘的热点问题, 在传统数据库中挖掘频繁模式这个问题已经被广泛地研究和应用.然而, 在流数据的环境下挖掘频繁模式给研究者带来更大的机遇和挑战.近年来, 针对数据流的频繁模式挖掘算法被陆续提出.算法 Sticky Sampling1、Lossy Counting1和 FDPM2挖掘数据流中满足误差界和最小支持度的频繁模式, 这是一种近似结果.这类算法没有区分新旧数据, 没有考虑最新数据的重要性.MSW3和 SWP-Tree4等算法采用了时间衰减模型设置新旧事务的权重, 强调新事务的重要性, 可以得到更加合理的结果集.但是这些算法用于挖掘完整的模式结果集
10、, 会产生大量的无用的模式.为了减少模式的数量, 需要挖掘精简模式, 包括最大模式、闭合模式和 top-k 模式等.为了进行无损压缩, 通常的方式是挖掘闭合模式.如算法 Moment5、CloStream6、Stream_FCI7、TMoment8、IncMine9和 CloStream*10等采用滑动窗口挖掘数据流的闭合频繁模式.这类算法的不足在于: (1) 采用最小支持度阈值进行频繁模式挖掘, 未处理概念漂移问题; (2) 虽然采用了滑动窗口, 但是窗口内的数据赋予相同的重要性.为了解决概念漂移, 强调新旧事务不同的重要性, 更加高效的发现压缩频繁模式, 本文设计一种基于时间衰减模型的数据
11、流闭合模式挖掘方法.主要的工作与创新点在于: (1) 已有设置衰减因子 f 的方法包括:仅考虑 100%查全率 (Recall) 或 100%查准率 (Precision) 2-4时得到的上下边界值或在 f 的取值范围 (0, 1) 内设置随机值11-16.前者会使得对应算法的查准率或查全率较低, 而随机值则使得算法的性能不稳定.本文设计一种平均衰减因子取值方式, 目的是使设计的算法可以在高查全率和高查准率之间得到平衡, 且得到的算法性能是稳定的; (2) 算法中采用最小支持度-最大误差率-衰减因子的框架, 可以解决概念漂移, 避免丢失可能的频繁模式; (3) 使用闭合算子6,10提高算法执行
12、的效率; (4) 设计了基于时间衰减模型的闭合频繁模式挖掘方法, 可以得到压缩的无损的模式集合.使用时间衰减模型3-4,11-12,17-26增加了最新事物的权重, 同时降低了历史事务的重要性.通过对数据流处理得到的查准率进行比较得出, 与已有方式相比能得到更准确的结果集.本文第 2 节介绍数据流闭合模式挖掘的预备知识, 包括闭合算子和时间衰减模型的介绍;第 3 节详细介绍基于时间衰减模型的闭合模式挖掘算法;第 4 节通过实验验证衰减因子选择的合理性, 并且给出本文提出算法的实验性能分析;第 5节进行总结.2 预备知识本节主要介绍数据流闭合模式挖掘的相关知识, 包括闭合算子和闭合频繁模式的定义
13、, 时间衰减模型介绍, 并提出概念漂移问题的解决方式.数据流 DS=T 1, T2, , Tn, 是一个有时间顺序的、连续的、无限的事务 (Transaction) 序列, 其中 Tn (n=1, 2, ) 是第 n 个产生的事务, 如表 1 所示.由于数据流是无限的和不断流动的, 模式 P 的支持数定义为已出现的 N 个事务中包含模式 P 的事务数据个数, 记为 freq (P, N) 3.频繁模式、临界频繁模式和非频繁模式的定义如定义 1、定义 2 所示.表 1 事务数据库 下载原表 定义 1.频繁模式3.令 N 为数据流中已有的事务项的个数, ( (0, 1) 为最小支持度阈值.如果项集
14、 P 满足 freq (P, N) N, 则 P 为频繁模式.定义 2.临界频繁模式, 非频繁模式3.令 N 为数据流中已有的事务项的个数, ( (0, 1) 为最小支持度阈值, 为最大允许误差阈值 ( (0, ) ) .如果项集 P 满足 Nfreq (P, N) N, 则 P 为临界频繁模式.如果 freq (P, N) N, 则 P 为非频繁模式.概念漂移是指由于数据流实时变化, 之前的非频繁模式随着时间的推移可能变为频繁模式.为了减少丢失可能的模式个数.挖掘过程中不仅要维持频繁模式, 还需要维持临界频繁模式.此外, 为了减少维护模式的代价, 需要丢失非频繁模式.丢失这些模式的可能误差不
15、大于 3-4, 因此挖掘过程中采用 - 框架可以解决概念漂移问题.频繁模式挖掘的过程中存在的最大问题在于出现大量的无用的模式, 为了减少模式的数量, 通常挖掘压缩模式.闭合模式是一种常用的模式无损压缩方式, 它包含完整结果集的所有信息.为了提高发现闭合模式的速度, 本文采用了闭合算子6,10.采用闭合算子发现闭合模式的效率优于 CFI-Stream27、NewMoment28和 Moment5等经典数据流闭合模式挖掘方式10.闭合算子以及采用闭合算子的闭合模式概念为定义 35 所示.定义 3.闭合算子6,10.设 T 是事务集合 D 的子集, TD.Y 是 D 中出现的所有项集合 I 的子集,
16、 YI.定义函数 h 和 g:其中函数 h 的输入参数是事务集合 T, 输出是 T 中所有事务都包含的一个项集.函数 g 的输入是项集 Y, 输出是包含 Y 的事务集.函数 C=hg=h (g) 称为闭合算子.定义 4.闭合项集10.如果项集 P 满足式 (3) , 则 P 是闭合项集;否则为非闭合模式.其中 C (P) 称为 P 的闭合.定义 5.闭合频繁模式.如果项集 P 满足 P=C (P) 且其支持度不小于最小支持度, 则 P 为闭合频繁模式.如果 P 满足 P=C (P) 且其支持度不小于最大误差支持度, 则 P 为临界闭合频繁模式;否则 P 为非闭合频繁模式.由于数据流的连续无限性
17、, 其中包含的知识会随着时间的推移而发生改变.通常情况下, 最近产生的事务的价值比历史事务要高的多.因此, 需要增加最近事务的权重.时间衰减模型 TDM (Time Decay Model) 是一种随着时间的推移而逐步衰减历史事务模式支持数权重的方法3-4.设模式支持数在单位时间内的衰减比例为衰减因子 f (f (0, 1) ) , 记事务 Tn到达时模式 P 的衰减支持数为freqd (P, Tn) .则第 m 个事务 Tm到达时, 模式 P 的衰减支持数满足式 (4) 和 (5) .即随着新事务的到达, 每次模式的支持数都进行衰减.其中如果新事务 Tm中包含模式 P, 则 r 的值为 1;
18、否则为 0.3 TDMCS 算法描述本节首先介绍配合闭合算子使用的数据结构, 其次介绍了衰减因子的确定方法, 最后详细讨论基于 -f 三层框架的闭合频繁模式挖掘算法 TDMCS (TDM-based Closed frequent pattern mining on data Stream) .TDMCS 算法采用滑动窗口模型与时间衰减模型在数据流中挖掘闭合频繁模式, 主要包括处理新事物和旧事物的两个方法:TDMCSADD (T new) 和 TDMCSREMOVE (Told) .TDMCS 使用了与算法 CloStream6,10相似的 3 个数据结构, 包括ClosedTable6、Ci
19、dList6和 NewTransactionTable.其中 ClosedTable 用于存储闭合模式相关的信息, 包括 3 个字段:Cid、CP 和 SCP.Cid 用于唯一的标识每一个闭合模式 CP, SCP 是闭合模式 CP 对应的支持数.CidList 用于维护数据流中出现的每个项 item 和其对应的 cid 集合.NewTransactionTable 包含与新事务 Tnew相关的信息, 包括两个字段:TempItem 和 Cid.其中 TempItem 存储满足条件T iNewTransaction, T iClosdeTable的项集信息.假设衰减因子 f=0.8, 最小支持度
20、阈值 =0.1, 以表 1 中事务数据为例介绍TDMCS 算法处理新事务的工作过程.当新事务 T4=2, 3, 4, 5到达时, ClosedTable、CidList 和 NewTransactionTable 中的信息如表 2表 4 所示.处理事务 T1, T2和 T3后, ClosedTable 中有 4 个闭合模式, 如表 2 左侧所示.当处理事务 T4后, ClosedTable 中包含 6 个闭合模式如表 2 右侧所示.新的频繁项集如果满足最小支持度阈值和最大允许误差阈值, 则需要的工作包括:(1) 添加频繁项为新的模式, 加入 ClosedTable.同步更新 CidList.(
21、2) 更新已有模式.(1) 如果依然是闭合模式, 则更新其支持数.(2) 新事务的到来使之成为非闭合模式, 则删除.同步更新 CidList.具体的过程是, 事务 T4到达时, 将 T4存入 NewTransactionTable, 然后比较CidList 和 T4中的每个项 item, 更新 NewTransactionTable 如表 4 所示.然后参照 NewTransactionTable, 在 ClosedTable 中添加新的模式或者更新已有的模式.同时更新 CidList.如此反复, 随着数据的到达不断的更新.表 2 ClosedTable (=0.1) 下载原表 表 3 Cid
22、List 下载原表 表 4 NewTransactionTable 下载原表 上述示例中设置最小支持度阈值 =0.1, 挖掘过程中发现的所有模式都被保留了下来.这样可能会产生大量无用的模式.如果设置最小支持度阈值 =0.3, 当事务 T4到达时需要满足的最小支持数为 40.3=1.2.产生的 ClosedTable 如表5 所示.通过对比表 2 和表 5 可以发现满足最小支持数的频繁模式3 4丢失.表 5 ClosedTable (=0.3) 下载原表 从示例中可以分析出, 使用了衰减因子后模式的衰减支持数远小于非衰减时的支持数.如当 f=0.8 时, 采用式 (6) 可以得到模式的支持数小于
23、:1/ (1-f) =1/ (1-0.8) =5.因此, 按照常规的最小支持数进行挖掘会丢失可能的频繁模式.为了解决这个问题, 使得采用时间衰减模型后正确率等于常规模式挖掘, 需要设置最大允许误差阈值 .即挖掘过程中保存频繁模式和临界频繁模式, 而不仅仅保存频繁模式.给定最小支持阈值和最大允许误差阈值之后, 如何确定衰减因子 f 的值?已有的方式采用假定 100%的查全率和 100%的查准率来估计3-4.即设定 Recall 为100%时, f 应满足式 (7) , 称为下界值.设定 Precision=100%时, f 满足式 (8) , 称为上界值.现有的 f 估计方式是采用满足式 (7)
24、 和 (8) 的上下边界值之一.这种方式的最大不足是仅考虑了查全率或查准率, 而忽略了对应的查准率或查全率.由于 Recall 和 Precision 不可能同时为 100%, 所以选择 f 是应考虑对二者的平衡.为此本文提出了均值衰减因子设置方式, 即设置 f 为上下边界的平均值, 标记为 faverage.例如, 假设 N=10K, 设定 , 如表 6 所示.其中 frecall为假定 Recall=100%时得到的下界值.f precision为假定 Precision=100%时得到的上界值.在得到 frecall和 fprecision后, 如何选择 f 的值?可以有 3 个策略,
25、如式 (9) 所示.以=0.025, =0.05 为例, 可以选定表 6 设置最佳的衰减因子 下载原表 通过实验验证 (第 4 节中) 选择设置 f 为 faverage不仅可以得到更加合理的模式结果集的个数, 且得到结果集的查全率与查准率更平衡.因此本算法中设计衰减因子 f 的值为 frecall和 fprecision的平均值 faverage是合理的.从滑动窗口中移除旧事务的核心问题在于如何对已有的数据结构进行剪枝处理, 已有的方式常采用滑动一步剪枝一步, 这样消耗较大.为了增加算法处理的效率, 采用移动步长 STEPM 进行处理.即处理旧事务时先设置删除标记 removeTAG, 当窗
26、口滑动 M 条事务后再进行实际的剪枝操作.为了区分历史事务与新事务的权重, 从而提高模式发现的准确性, 并且为了避免丢失可能的频繁模式, 本文提出了基于 -f 框架的闭合模式挖掘算法TDMCS.该算法采用 ClosedTable, CidList 和NewTransactionTable/OldTransactionTable 存储数据信息, 使用时间衰减模型估计模式的支持数, 挖掘出满足 - 的闭合频繁和临界闭合频繁模式.算法的描述如算法 1 所示.4 实验分析实验运行环境的 CPU 为 2.1GHz, 内存为 2GB, 操作系统是 Win7, 所有的实验采用 Java 实现.实验中采用两类
27、数据, 一是真实数据流 msnbc 来自 UCI, 此数据描述的是 1999 年 9 月 28 日访问 网站的用户信息.用户访问的页面按照 URL 分类, 并按照时间顺序记录.包括 989 818 个事务序列, 平均事务长度5.7, 数据重复项多, 为高密度数据流.二是采用 IBM 模拟数据生成器产生不同平均事务长度和不同平均模式长度的数据.模拟数据流包括T5I5D1000K、T10I4D1000K、T10I5D1000K、T10I10D1000K、T20I5D1000K 和T20I20D1000K.这些数据流用于分析不同事务长度和不同模式长度时算法的性能.其中 T10I5D1000K 表示
28、数据的平均事务长度为 10, 平均模式长度为 5, 数据事务个数为 1000K.TDMCS 算法中设置最大误差率 =0.1, 衰减因子 f 为 faverage.实验中设置滑动窗口 N 的大小为 0.1M, 0.2M, 0.3M, 0.4M, 0.5M, 0.7M 和 0.8M, 设置最小支持度 的范围为0.06, 0.1, 衰减因子 f 的取值如表 7 中所示.表 7 衰减因子 f 的值 下载原表 首先分析设置 f 为平均衰减因子的合理性.实验从两个角度进行比较:一是比较得到结果集的模式个数;二是比较设置不同衰减因子得到的算法查全率和查准率.表 8 中是对数据流 msnbc 进行处理得到的闭
29、合模式的个数.选择最小支持度 为 0.025 和 0.05, 最大误差率 =0.05.表中第 2 列是衰减因子 f, 排列顺序是 frecall、f precision和 faverage.以 =0.025 为例, 可以得到当 =0.05 时也可以得到相同的结论.因此从得到的模式数据量角度而言, 算法中选择 faverage作为衰减因子相比上下边界值而言更加合理.表 8 3 种衰减因子的比较 下载原表 从算法的查全率与查准率角度进行分析.以数据流 msnbc 为例, 比较 f 设置为frecall, fprecision和 faverage算法性能的优劣.比较不同窗口大小时算法的平均性能, 表
30、现如图 1 所示.从算法的查全率可以看出设置 f=frecall可以得到几乎 100%的Recall, 而 f=fprecision得到的 Recall 值最低, f=f average得到的 Recall 值介于二者之间.接着比较算法的查准率.设置 f=fprecision和 f=faverage时得到的查准率几乎相同, 而 f=frecall得到的值最低.因此, 可以得出设置衰减因子为 faverage可以得到比 fprecision和 frecall更优的算法性能:即得到的算法的查全率和查准率更加的平衡.图 1 设置衰减因子为 frecall, fprecision, faverage
31、得到的算法性能比较 (其中纵向坐标为算法得到的 Recall 与 Precision 百分比) 下载原图接着比较设置 f 为 faverage与随机值的优劣.为了使设置的随机衰减因子更加合理, 取其范围为 (0.9, 1) , 标记为 frandom, 采用 Java 中 Math.random () 函数生成.随机生成 5 个衰减因子值.设置 f 为 faverage与 frandom得到的算法性能如图 2 所示.从中可以看出, 设置 f 为 faverage与 frandom得到的查准率差别不大.而采用 frandom得到的算法查全率差别较大, 即得到的结果集的性能不稳定.设置 f为 fa
32、verage的表现明显优于设置为 frandom, 且其得到的结果集是稳定的.图 2 设置衰减因子为 faverage 和随机值得到的算法性能比较 (其中纵向坐标为算法得到的 Recall 与 Precision 的百分比) 下载原图对模拟数据进行处理时也可以得到相似的结论.因此, 本文中提出的算法使用时间衰减模型时设置平均衰减因子是合理的.其次, 分析窗口大小对 TDMCS 算法的影响.图 3 和图 4 所示是窗口大小 N 为0.1M、0.2M 和 0.3M 时, 算法 TDMCS 在真实数据流 msnbc 与模拟数据流上的执行时间和占用最大内存空间的比较.实验设置衰减因子 f 的值如表 7
33、 中 f1f3所示.设置剪枝步长为 0.1M3-4, 即数据流每滑动 0.1M 条事务时进行实际剪枝操作.图 3 在不同窗口大小下算法 TDMCS 在 msnbc 上的比较 (其中横向坐标为处理的事务数量) 下载原图图 4 在不同窗口大小下算法 TDMCS 在不同模拟数据流上的比较 (其中横向坐标为不同特征的模拟数据流) 下载原图图 3 是采用 TDMCS 算法对数据流 msnbc 处理 1M, 1.5M, 2M 和 2.5M 条事务进行分析.图 3 (a) 显示的是 TDMCS 算法在数据流 msnbc 上的执行时间.可以看出处理事务数量较少时, 窗口大小的增大会导致执行时间小幅度增加.但是
34、随着处理事务数量的增加, 采用大的滑动窗口时间消耗反而更小.如当处理 1M 条事务时, 随着 N 的增加, 时间消耗增加.而当处理 2M 或 2.5M 条事务时, 随着 N 的增加, 时间消耗反而减少.从图 3 (a) 中可以看出, 采用大的滑动窗口处理数据时, 随着数据量的增加时间消耗增加的幅度比小的滑动窗口少.如当 N=0.3M 时, 处理 2.5M 事务与处理 1M 事务相比, 处理的数据量增加了 150%, 而时间消耗增加了约 99.9%.而当 N=0.1M 时, 相同条件下, 时间消耗增加了 586.5%.因此, 采用不同的滑动窗口大小对数据流进行处理时, 时间消耗差别较大.图 3
35、(b) 为算法执行使用的空间大小.可以看出, 不同的窗口大小对使用的内存空间影响很小;随着处理事务数量的增加, 内存消耗增加幅度较小.综合时间和内存消耗可以得出结论:对数据流 msnbc 进行处理时, 相同的事务数量下, TDMCS 算法使用的执行时间会随着 N 的不同而不同, 而使用的存储空间受窗口大小 N 的影响不大.因此, 从空间复杂度角度而言, 该算法适用于挖掘任意大小滑动窗口内的频繁模式.图 4 比较不同滑动窗口大小 N 时, TDMCS 在不同事务长度和不同模式长度的数据流上的性能.从图 4 中可以看出随着 N 的增大, 算法执行时间成倍增加, 内存消耗有较小幅度的增加.首先分析事
36、务长度对算法性能的影响.通过比较两组数据流:T5I5, T10I5 和 T20I5, T10I10 和 T20I10 可以看出随着平均事务长度的增加, 算法的执行时间增加幅度较大, 使用内存幅度增加相对较小.接着分析模式长度对算法性能的影响.通过比较两组数据流:T10I5 和 T10I10, T20I5 和T20I10 可以看出随着平均模式长度的增加, 算法执行时间和内存消耗增加, 但增加的幅度不大.如当 N=0.3 时, 在数据流 T10I10 上的执行时间甚至比在T10I5 上略微减少, 而内存消耗几乎不变.可以得出结论, TDMCS 算法处理不同的数据流时, 受到事务长度的影响较大, 而
37、受到模式长度的影响较小.这表明该算法适用于挖掘长模式的数据流.第三, 分析剪枝步长对 TDMCS 算法性能的影响.设定滑动窗口大小 N 为 0.5M, 0.7M 和 0.8M, 剪枝步长 SETPM 为 0.1M0.5M (SETPMN) , 设定衰减因子 f 的取值为表 7 中 f5f7.图 5 (a) 为不同滑动窗口条件下采用不同的剪枝步长时算法执行的时间.从图中可以看到, 当 N=0.5M 时, 剪枝步长对算法的处理时间影响不大.当 N=0.7M 时, 设定 SETPM 为 0.2M 时算法执行过程运行时间最少, 而SETPM=0.5M 时运行时间最多, 后者比前者运行时间增加了 57%.当 N=0.8M 时, SETPM=0.3M 时算法执行时间最少, SETPM=0.4M 时运行时间最多, 后者比前者运行时间增加了 70.4%.从执行时间的实验结果可以得到结论: (1) 最优剪枝步长与滑动窗口大小 N 相关; (2) 随着 N 的增大, 不同的 SETPM 带来的执行时间差增大.图 5 (b) 为采用不同剪枝步长和不同滑动窗口大小时算法执行需要的最大存储空间.从图中可以看出最大存储空间消耗受剪枝步长大小的影响不大.从图 5 中可以得出结论, 当设定滑动窗口较小时, 剪枝步长的大小对算法的执行