MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\\(','\\)']]}}); function MyAutoRun() {    var topp=$(window).height()/2; if($(window).height()>450){ jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); }  }    window.onload=MyAutoRun; $(window).resize(function(){ var bodyw=$win.width(); var _leftPaneInner_width = jQuery(".rich_html_content #leftPaneInner").width(); var _main_article_body = jQuery(".rich_html_content #main_article_body").width(); var rightw=bodyw-_leftPaneInner_width-_main_article_body-25;   var topp=$(window).height()/2; if(rightw<0||$(window).height()<455){ $("#nav-article-page").hide(); $(".outline_switch_td").hide(); }else{ $("#nav-article-page").show(); $(".outline_switch_td").show(); var topp=$(window).height()/2; jQuery(".outline_switch_td").css({ position : "fixed", top:topp+"px" }); } }); 云平台下基于粗糙集的并行增量知识更新算法
  软件学报  2015, Vol. 26 Issue (5): 1064-1078   PDF    
云平台下基于粗糙集的并行增量知识更新算法
张钧波1,2, 李天瑞1, 潘毅2, 罗川1, 滕飞1    
1 西南交通大学 信息科学与技术学院, 四川 成都 610031;
2 Department of Computer Science, Georgia State University, Atlanta, USA
摘要:日益复杂和动态变化的海量数据处理,是当前人们普遍关注的问题,其核心内容之一是研究如何利用已有的信息实现快速的知识更新.粒计算是近年来新兴的一个研究领域,是信息处理的一种新的概念和计算范式,主要用于描述和处理不确定的、模糊的、不完整的和海量的信息,以及提供一种基于粒与粒间关系的问题求解方法.作为粒计算理论中的一个重要组成部分,粗糙集是一种处理不确定性和不精确性问题的有效数学工具.根据云计算中的并行模型MapReduce,给出了并行计算粗糙集中等价类、决策类和两者之间相关性的算法;然后,设计了用于处理大规模数据的并行粗糙近似集求解算法.为应对动态变化的海量数据,结合MapReduce模型和增量更新方法,根据不同的增量策略,设计了两种并行增量更新粗糙近似集的算法.实验结果表明,该算法可以有效地快速更新知识;而且数据量越大,效果越明显.
关键词云计算     MapReduce     粗糙集     增量学习    
Parallel and Incremental Algorithm for Knowledge Update Based on Rough Sets in Cloud Platform
ZHANG Jun-Bo1,2, LI Tian-Rui1, PAN Yi2, LUO Chuan1, TENG Fei1    
1 School of Information Science and Technology, Southwest Jiaotong University, Chengdu 610031, China;
2 Department of Computer Science, Georgia State University, Atlanta, USA
Abstract: The increasing complexity and dynamic change of massive data processing currently receive widespread attention. One of its core content is to study how to use the existing information to achieve rapid updating of knowledge. Granular computing (GrC), a new computing paradigm of information processing, is an emerging research field which is mainly used to describe and deal with uncertain, vague, incomplete and massive data, and provides a solution based on the granularity and the relationship between the granularities. As an important part of GrC, rough set theory is an effective mathematical tool to deal with the uncertainty and imprecise problems. Based on the MapReduce model in cloud computing, this paper first presents a parallel algorithm for computing the equivalence classes, decision classes and the association between them in rough set theory. A parallel algorithm is then designed for computing rough set approximations from large-scale data. To adapt to the dynamic real-time system, the MapReduce model and incremental method are combined to build two parallel incremental algorithms for updating rough set approximations in different incremental strategies. An extensive experimental evaluation on big data sets show that the proposed algorithms are very effective and have better performance with the increasing size of the data.
Key words: cloud computing     MapReduce     rough set     incremental learning    

粒计算是当前信息处理中一种新的计算范式,可用于描述和处理不确定的、模糊的、不完整的和海量的信息以及提供一种基于粒和粒间关系的问题求解方法.它可对问题进行不同层次的抽象和处理来寻求不同粒度上的近似解,以达到简化问题和快速求解的目的.通过使用不同信息粒度,粒计算可以容忍不确定、不完全或有噪音的信息,从而获得具有鲁棒性的解决方案.粗糙集是一种处理不确定性和不精确性问题的有效数学工具,是粒计算理论中的一个重要组成部分.它无需提供问题所需处理的数据集合之外的任何先验知识,可以在保持分类能力不变的前提下,通过知识约简,导出问题的决策或分类规则,为决策提供服务,已广泛应用于数据挖掘、机器学习、模式识别及商务智能等领域.

针对静态的信息系统,研究人员提出了许多基于粗糙集理论的知识发现方法.Blaszczynski等人设计了变精度粗糙集方法下的一个序列覆盖规则抽取算法[1].Chen等人基于幂集树提出了一种特征提取的粗糙集方法[2].Hong等人给出利用模糊粗糙集从不完备定量数据中挖掘知识的方法[3].Inuiguchi给出了从两个决策表中基于粗糙集获取规则的方法[4].Kaneiwa讨论了从多个数据集中知识发现的粗糙集方法[5].Leung等人提出了从区间值信息系统中提取分类规则的方法[6].Miao等人提出了基于粗糙集理论的杂合算法,用于信息检索中的文本分类[7].Wang等人采用粗糙集方法来构造模糊决策树[8].Wu等人提出了不完备模糊信息系统下粗糙集模型的知识获取方法[9].Hu等人采用邻域粗糙集方法来构造邻域分类器[10].Yao讨论了三枝决策应用于概率粗糙集模型的方法[11].张清华等人提出了在已有知识基(粒)空间下寻找目标集合(概念)的近似集的方法[12].

然而,这些针对静态的信息系统基于粗糙集的知识发现方法在面对大规模的复杂现实问题时,都面临高复杂性计算的困难.因此,如何提高基于粗糙集的知识发现算法的效率,以充分体现粗糙集解决不确定性问题的优势,成为粗糙集研究领域的主要任务之一.增量式知识更新方法由于其能够充分利用已有的知识,可以有效提高知识更新的效率,因此,很多学者致力于利用增量式知识更新方法来提高基于粗糙集的知识发现的效率.Shan等人首次提出了基于粗糙集的增量式规则获取算法[13].Guo等人给出了基于搜索树的规则增量挖掘方法,其优点是不需要创建区分矩阵[14].Zheng等人提出了基于规则树的增量式高效知识获取算法,其特点是在原有的决策树规则集基础上进行规则的增量式更新,避免了重复学习,提高了效率[15].Fan等人提出了增量式提取具有最大长度的决策规则方法[16].王利等人讨论了新增记录与已有条件属性等价类的关系以及对规则集的影响,提出了基于变精度粗糙集模型的增量式规则获取算法[17].Liu等人在变精度粗糙集模型中定义了覆盖矩阵和支持矩阵,提出了对象增加时,通过动态更新覆盖矩阵和支持矩阵方法可以实现兴趣知识的快速更新[18].Zhang等人给出了邻域粗糙集模型下多对象增加删除时近似集快速更新的方法[19].

虽然目前粒度变化下基于粗糙集的增量式学习算法很多,但在文献里很少利用大规模数据集来进行测试评价算法的性能和适用性,而且不同算法之间的比较与性能测试的相关结果较少,极大地制约了基于粗糙集和粒计算的知识发现理论与方法的发展与实际应用;其次,由于云计算技术可以极大地提高海量数据处理的效率[20],如何应用云计算技术提高基于粒计算和粗糙集理论的知识发现效率具有重要意义.但这方面的工作目前还很罕见,已有的工作有:Liu等人给出了基于改进的分辨矩阵规则增量挖掘的并行算法[21];Qian等人提出了云计算环境下基于MapReduce的属性约简方法[22];Zhang等人给出了一种基于MapReduce的并行计算粗糙近似集的方法[23],并在此基础上提出了基于MapReduce的规则提取算法[24].粗糙集上、下近似集的计算,是基于粗糙集的属性约简和知识获取方法的基础.本文在已有工作的基础上,结合增量更新技术,提出了基于MapReduce的快速更新粗糙集近似集的并行增量算法,可以有效地加快动态知识更新过程.

1 相关理论 1.1 云计算编程模型MapReduce

MapReduce是由Google公司提出的一种处理海量数据的并行编程模式[25],Apache基金会在此基础上实现了开源的Hadoop并行平台[26].用户将实际应用问题分解成若干可并行操作的子问题,设计相应的Map函数,Combine函数(可选)与Reduce函数就能将自己的应用程序运行在云计算环境中.

· Map函数:接受一个输入对,然后产生一个中间ákey,valueñ对集.MapReduce库把所有具有相同中间key I的中间value聚合在一起,经过归并/排序过程,然后把它们传递给Reduce函数.

· Combine函数(可选):是本地的Reduce过程.从本地的Map接受一个中间key和相关的一个value集,形成一个较小的value集,并传给Reduce.一般情况下,Combine函数与Reduce函数是一致的.

· Reduce函数:接受一个中间key I和相关的一个value集.它合并这些value,形成一个较小的value集.

图 1显示了MapReduce在开源云计算平台Hadoop上的流程图,其中,HDFS(Hadoop distributed file system)是指Hadoop分布式文件系统[26].

Fig. 1 MapReduce model图 1 MapReduce模型
1.2 粗糙集模型

本节我们回顾下本文用到的一些粗糙集的基本定义[23,27].

设四元组S=(U,A,V,f)是一个信息系统,其中,U为非空有限的对象集合,称为论域;A表示非空属性集合; $V = \bigcup\nolimits_{a \in A} {{V_a}} {\rm{,}}$其中,Va称为属性a的值域;f:UxA®V是一个信息函数,满足对任意xÎU,aÎAf(x,a)ÎVa.特别地,如果A=CÈD,其中,C为非空有限条件属性集,D为非空有限决策集,那么信息系统被称为决策表.

定义1(对象x关于属性集B的信息集[23, 27]).设B={b1,b2,…,bl}ÍA为非空属性子集.对任意xÎU,关于属性集B的信息集定义如下:

${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _B} = \langle f(x,{b_1}),f(x,{b_2}),...,f(x,{b_l})\rangle $ (1)

关于属性B的等价关系,也称为不可区分关系,表示为IND(B),定义如下:

$IND(B) = \{ (x,y)|(x,y) \in U \times U,{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _B} = {\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over y} _B}\} $ (2)

等价关系IND(B)把论域U切分成若干个等价类,记为

U/IND(B)={[x]B|xÎU} (3)

其中,[x]B表示等价类,[x]B={yÎU|(x,y)ÎIND(B)}.为简便起见,我们用U/B代替U/IND(B).

定义2(等价类E关于属性集B的信息集[23, 27]). 设BÍA为非空属性子集.对任意EÎU/B,关于属性集B的信息集定义如下:

${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over E} _B} = {\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _B},x \in U$ (4)

定义3(上近似集与下近似集[23, 27]). 设XÍU,R为一个等价关系,U/R={E1,E2,…,Et}.X的上、下近似集定义如下:

$\left\{ {\begin{array}{*{20}{l}} {R(X) = \{ x \in U|{{[x]}_R} \subseteq X\} }\\ {\bar R(X) = \{ x \in U|{{[x]}_R} \cap X = \emptyset \} } \end{array}} \right.$ (5)

或者相当于:

$\left\{ {\begin{array}{*{20}{l}} {R(X) = \bigcup {\{ E \in U/R|E \subseteq X\} } }\\ {\bar R(X) = \bigcup {\{ E \in U/R|E \cap X = \emptyset \} } } \end{array}} \right.$ (6)

显然,$R(X) \subseteq X \subseteq \bar R(X)$.X的边界域定义如下:

$BN{D_B}(X) = \bar R(X) - R(X)$ (7)

定义4(决策D的上、下近似集[23, 27]). 给出决策表S=(U,CÈD,V,f).U/D={D1,D2,…,Dr}决策类的集合,是决策属性D把对象集U切分成了r个互斥的子集.设BÍC为非空属性子集,IND(B)为等价关系,决策D的上、下近似集定义如下:

$\left\{ {\begin{array}{*{20}{l}} {{R_B}(D) = \{ {R_B}({D_1}),{R_B}({D_2}),...,{R_B}({D_r})\} }\\ {{{\bar R}_B}(D) = \{ {{\bar R}_B}({D_1}),{{\bar R}_B}({D_2}),...,{{\bar R}_B}({D_r})\} } \end{array}} \right.$ (8)

决策D的正域定义如下:

$PO{S_B}(D) = \bigcup\nolimits_{{D_i} \in U/D} {{R_B}({D_i})} $ (9)
2 基于MapReduce的粗糙近似集计算方法

本节简要回顾我们提出的并行计算粗糙近似集的方法[23].

定义5(决策表的划分[23]). 给出决策表S=(U,CÈD,V,f).设Si=(Ui,CÈD,V,f),iÎ{1,2,…,m}.它满足:

(1) $U = \bigcup\nolimits_{i = 1}^m {{U_i}} {\rm{;}}$

(2) UjÇUk=Æ,"j,kÎ{1,2,…,m},j¹k.这意味着决策表S被切分为m个决策子表.

定理1(两个等价类的合并[23]). 给出决策表S1=(U1,CÈD,V,f)与S2=(U2,CÈD,V,f).设BÍCÈD为非空属性子集,EÎU1/BFÎU2/B是两个来自不同决策表的等价类.下面的结果成立:

(1) 如果${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over E} _B} = {\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over F} _B}{\rm{,}}$那么等价类EF可以合并为一个等价类G,G=EÈF且${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over G} _B} = {\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over E} _B} = {\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over F} _B}{\rm{;}}$

(2) 如果${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over E} _B} \ne {\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over F} _B}{\rm{,}}$那么等价类EF不能合并为一个等价类.

定理2(多个等价类的合并[23]). 给出决策表S=(U,CÈD,V,f)和决策子表Si=(Ui,CÈD,V,f),iÎ{1,2,…,m}.

"BÍC,令U/B={E1,E2,…,Et},${U_i}/B = \{ {E_{i1}},{E_{i2}},...,{E_{i{p_i}}}\} $和${E_{all}} = \bigcup\nolimits_{i = 1}^m {{U_i}/B} = \{ {E_{11}},{E_{12}},...,{E_{1{p_1}}},...,{E_{m1}},{E_{m2}},...,{E_{m{p_1}}}\} {\rm{.}}$那么,"EkÎU/B,我们有${E_k} = \bigcup {\{ F \in {E_{all}}|{{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over F} }_B} = {E_{kB}}\} } {\rm{.}}$

定理3(决策类的合并[23]). 给出决策表S=(U,CÈD,V,f)和决策子表Si=(Ui,CÈD,V,f),iÎ{1,2,…,m}."BÍCÈD,令U/D={D1,D2,…,Dr},${U_i}/D = \{ {D_{i1}},{D_{i2}},...,{D_{i{q_i}}}\} $和${D_{all}} = \bigcup\nolimits_{i = 1}^m {{U_i}/B} = \{ {D_{11}},{D_{12}},...,{D_{1{p_1}}},...,{D_{m1}},{D_{m2}},...,{D_{m{q_1}}}\} {\rm{.}}$那么,"DjÎU/D,我们有${D_j} = \bigcup {\{ F \in {D_{all}}|{{\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over F} }_D} = {D_{jD}}\} } {\rm{.}}$

定义6(等价类与决策类的相关性[23]). 给出决策表S=(U,CÈD,V,f),BÍC.U/B={E1,E2,…,Et},U/D={D1,D2,…,Dr}.如果EkÇDj=Æ,EkÎU/B,DjÎU/D,我们称EkDj是相关的,表示为Ass(Ek,Dj)=True;否则,Ass(Ek,Dj)=False.

定理4(合并相关性[23]). 给出决策表S=(U,CÈD,V,f)和决策子表Si=(Ui,CÈD,V,f),iÎ{1,2,…,m}."BÍC,令U/B={E1,E2,…,Et},U/D={D1,D2,…,Dr},${U_i}/B = \{ {E_{i1}},{E_{i2}},...,{E_{i{p_i}}}\} $和${U_i}/D = \{ {D_{i1}},{D_{i2}},...,{D_{i{q_i}}}\} {\rm{.}}$设

如果Ass(Eih,Dig)=True,那么Ass(Ek,Dj)=True.

定理5(等价类的Boolean表示[23]). 给出决策表S=(U,CÈD,V,f)."BÍC,令U/B={E1,E2,…,Et},U/D={D1,D2,…,Dr}.下面的结果成立:

(1) 如果$Ass({E_k},{D_{{j_1}}}) = True$且$Ass({E_k},{D_{{j_2}}}) = True,({j_1} \ne {j_2},{j_1},{j_2} \in \{ 1,2,...,r\} ,k \in \{ 1,2,...,t\} ){\rm{,}}$那么"DjÎU/D,${E_k} \not\subset {R_B}({D_j}){\rm{,}}$表示为Boolean(Ek)=False;

(2) 如果$!jÎ{1,2,…,r},Ass(Ek,Dj)=True(kÎ{1,2,…,t}),那么${E_k} \subseteq {R_B}({D_j}){\rm{,}}$表示为Boolean(Ek)=True.

定理6(根据相关性计算上近似集). 给出决策表S=(U,CÈD,V,f)."BÍC,令U/B={E1,E2,…,Et},U/D={D1,D2,…,Dr}."DjÎU/D,Dj的上近似集可以表示为

${\bar R_B}({D_j}) = \bigcup {\{ {E_k} \in U/B|Ass({E_k},{D_j}) = {\rm{True}}\} } $ (10)

证明:因为Ass(Ek,Dj)=TrueÛEkÇDj¹Æ,那么根据定义3,有:

${\bar R_B}({D_j}) = \bigcup {\{ {E_k} \in U/B|{E_k} \cap {D_j} \ne \emptyset \} } = \bigcup {\{ {E_k} \in U/B|Ass({E_k},{D_j}) = {\rm{True}}\} } {\rm{.}}$

证毕.

定理7(根据相关性计算下近似集). 给出决策表S=(U,CÈD,V,f)."BÍC,令U/B={E1,E2,…,Et},U/D={D1,D2,…,Dr}."DjÎU/D,Dj的下近似集可以表示为

${R_B}({D_j}) = \bigcup {\{ {E_k} \in U/B|Ass({E_k},{D_j}) = {\rm{True}}|Boolean({E_k}) = {\rm{True}}\} } $ (11)

证明:证明过程同定理6的证明.证毕.

2.1MapReduce算法设计与实现

根据上文,我们给出了并行计算近似集的流程,如图 2所示.

Fig. 2 Flowchart of the parallel computing method图 2 并行计算方法流程图

根据定理2~定理4,我们给出了基于MapReduce的等价类、决策类及其相关性并行计算的流程图(如图 3所示),并设计了相关算法,见算法1.

Fig. 3 Flowchart of parallel computing equivalence classes,decision classes and associations based on MapReduce图 3 基于MapReduce的等价类、决策类、相关性并行计算流程图

算法1. 基于MapReduce的等价类、决策类、相关性并行计算算法(并行算法).

Map(key,value)

输入:key为文档名;valueSi=(Ui,CÈD,V,f).

开始:

for each xÎUido

let key¢=‘E’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _B}$ //‘E’标识符号,用于等价类

output.collect(key¢,1);

let key¢=‘D’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _D}$ //‘D’标识符号,用于决策类

output.collect(key¢,1);

let key¢=‘F’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _{B \cup D}}$ //‘F’标识符号,用于描述等价类与决策类是否相关

output.collect(key¢,1);

endfor

结束

Combine(key,V)/Reduce(key,V)

输入:key为相对于属性集BDBÈD的信息集;V为该信息集出现个数的列表;

开始:

if (key.startsWith(‘F’))

output.collect(key,1)

else:

let sum=0

for each val in V do

sum+=val

endfor

output.collect(key,sum)

endif

结束

我们通过以下两个方面优化了文献[23]中提出的算法:

· 在算法设计上,将计算等价类、决策类与相关性放到同一个函数中,用标识符‘E’,‘D’,‘F’分别区分;

· 添加Combine阶段:用于Map结束后本地合并等价类、决策类与相关性.

在计算完等价类、决策类与相关性之后,根据定理5、定理6,根据已有的MapReduce结果,我们给出快速计算上、下近似集的流程图(如图 4所示).基于此,我们设计了快速计算上、下近似集的算法,见算法2.

Fig. 4 Flowchart of fast computing the upper and lower approximations图 4 快速计算上、下近似集的流程图

算法2. 计算粗糙集上、下近似集计算算法.

输入:MapReduce程序输出的结果.

输出:各个决策Dj的上、下近似集的个数.

开始:

//计算决策D的上近似集的个数

for each $|R({D_j})|$ do

let $|\bar R({D_j})| = 0$;

for each S=(U,CÈD,V,f) do

if Ass(Ek,Dj)=True then

//||为信息集个数

;

endif

endfor

endfor

//计算决策D的下近似集的个数

for each Ek do

if $Ass({E_k},{D_{{j_1}}}) = = {\rm{True}}$ and $Ass({E_k},{D_{{j_2}}}) = = {\rm{True}},{j_1} \ne {j_2},{j_1},{j_2} \in \{ 1,2,...,r\} $ then

Boolean(Ek)=False;

else Boolean(Ek)=True

endfor

for each Dj do

let $|R({D_j})| = 0$;

for each Ek do

if Boolean(Ek)=True and Ass(Ek,Dj)=True then

; //||为信息集个数

end if

endfor

endfor

输出每个决策的上下近似集的个数$|\bar R({D_j})|,|R({D_j})|$.

结束

3 基于MapReduce的粗糙近似集的增量更新方法

这里,我们将讨论有新的数据进入到决策表的情况,假设新增决策表为S¢=(U¢,CÈD,V,f).下面我们将给出更新等价类、决策类及其相关性的相关理论.

推论1. 给出决策表S=(U,CÈD,V,f)."BÍC,令U/B={E1,E2,…,Et}.新增决策表S¢=(U¢,CÈD,V,f),令U¢/B=$\{ {E'_1},{E'_2},...,{E'_{t'}}\} {\rm{.}}$对更新后的决策表S*=(U,CÈD,V,f),U=UÈU¢,设${U^*}/B = \{ E_1^*,E_2^*,...,E_{{t^*}}^*\} {\rm{.}}$那么,$\forall E_{{j^*}}^* \in {U^*}/B{\rm{,}}$$EjÎ U/B或$\exists {E'_{j'}} \in U'/B{\rm{,}}$使得或换言之,$E_{{j^*}}^* = {E_j}$或$E_{{j^*}}^* = {E'_{j'}}$或$E_{{j^*}}^* = {E_j} \cup {E'_{j'}}{\rm{.}}$

证明:这里,我们用反证法来证明.$\forall E_{{j^*}}^* \in {U^*}/B{\rm{,}}$假设使得或那么${E_j} \not\subset E_{{j^*}}^*$或${E'_{j'}} \not\subset E_{{j^*}}^*{\rm{,}}$也就是EjÏU*或${E'_{j'}} \notin {U^*}{\rm{.}}$而这与EjÎUÍU*且${E'_{j'}} \in U' \subseteq {U^*}$相矛盾.因此,假设不成立.那么,使得对于$EjÎU/B或$\exists {E'_{j'}} \in U'{\rm{,}}$我们分3种情况来讨论:

(a) $\forall E_{{j^*}}^* \in {U^*}/B{\rm{,}}$$EjÎU/B且$\exists {E'_{j'}} \in U'{\rm{,}}$我们有$E_{{j^*}}^* = {E_j}{\rm{;}}$

(b) $\forall E_{{j^*}}^* \in {U^*}/B{\rm{,}}$且$\exists {E'_{j'}} \in U'{\rm{,}}$我们有$E_{{j^*}}^* = {E'_{j'}}{\rm{;}}$

(c) $\forall E_{{j^*}}^* \in {U^*}/B{\rm{,}}$$EjÎU/B且$\exists {E'_{j'}} \in U'{\rm{,}}$我们有$E_{{j^*}}^* = {E_j} \cup {E'_{j'}}{\rm{.}}$

换言之,$\forall E_{{j^*}}^* \in {U^*}/B{\rm{,}}$$EjÎU/B或$\exists {E'_{j'}} \in U'{\rm{,}}$或$E_{{j^*}}^* = {E'_{j'}}{\rm{;}}$或$E_{{j^*}}^* = {E_j} \cup {E'_{j'}}{\rm{.}}$

推论2. 给出决策表S=(U,CÈD,V,f),令U/D={D1,D2,…,Dr}.新增决策表S¢=(U¢,CÈD,V,f),令$U'/D = \{ {D'_1},$${D'_2},...,{D'_{r'}}\} {\rm{.}}$对更新后的决策表S*=(U,CÈD,V,f),U=UÈU¢,设${U^*}/D = \{ D_1^*,D_2^*,...,D_{{r^*}}^*\} {\rm{.}}$那么,$\forall D_{{j^*}}^* \in {U^*}/D{\rm{,}}$$DjÎ U/D或$\exists {D'_{j'}} \in U'{\rm{,}}$使得换言之,$D_{{j^*}}^* = {D_j}$或$D_{{j^*}}^* = {D'_{j'}}$或$D_{{j^*}}^* = {D_j} \cup {D'_{j'}}{\rm{.}}$

证明:证明过程同推理1的证明.

推论3. 给出决策表S=(U,CÈD,V,f)."BÍC,令U/B={E1,E2,…,Et},U/D={D1,D2,…,Dr}.新增决策表S¢=(U¢,CÈD,V,f),$U'/B = \{ {E'_1},{E'_2},...,{E'_{t'}}\} ,U'/D = \{ {D'_1},{D'_2},...,{D'_{r'}}\} {\rm{.}}$对更新后的决策表S*=(U,CÈD,V,f),U=UÈU¢,设U*/B= $\{ E_1^*,E_2^*,...,E_{{t^*}}^*\} ,{U^*}/D = \{ D_1^*,D_2^*,...,D_{{r^*}}^*\} {\rm{.}}$设,如果Ass(Ek,Dj)=True或Ass(Ek¢,Dj¢)= True,那么有$Ass(E_k^*,D_j^*) = {\rm{True}}{\rm{.}}$

证明:证明过程同推理1的证明.

根据推论1~推论3,我们知道在数据增加时,等价类、决策类及其相关性可以通过增量更新方法快速得到.基于此,我们给出了并行增量更新的方法,如图 5所示.根据原有的中间结果和新增的决策表,我们分别处理,并合并成新的等价类、决策类及其相关性,然后根据算法2直接求得上、下近似集.具体的算法将在下一节中详细讨论.

Fig. 5 Flowchart of the parallel and incremental updating method图 5 并行增量更新方法流程图
3.1 并行增量算法设计与实现

根据推论1~推论3可知,我们需要额外的存储空间来保存原始决策表产生的中间结果.给出决策表S=(U,CÈD,V,f),BÍC,U/B={E1,E2,…,Et},U/D={D1,D2,…,Dr},那么中间结果会产生t个等价类、r个决策类及txr个它们之间的相关性.因为每个等价类包含|B|个属性,每个决策包含|D|个属性,相关性只有一个值,所以需要的总的辅助存储空间为O(|B|xt+|D|xr+txr).

因为涉及到并行编程模型MapReduce,所以如何设计增量算法变得额外重要.不同于串行增量算法,如何将原有中间结果合并到现有过程,在并行增量算法变得至关重要.为此在本文中,我们尝试了从Map阶段和Reduce阶段分别导入原有中间结果,并为此设计了两种不同的基于MapReduce的并行增量算法.

3.1.1 并行增量算法I

对于原有决策表S=(U,CÈD,V,f)和新增决策表S¢=(U¢,CÈD,V,f).一般来说,MapReduce算法产生结果的数据规模远远小于之前的数据规模,这里,我们的更新方法很好地利用了这个性质,通过对原有决策表的MapReduce产生的中间结果保存,将其与新增决策表S¢=(U¢,CÈD,V,f)同时作为新的MapReduce算法的输入(即,从Map阶段导入原有中间结果),其流程如图 6(a)所示,具体操作详见算法3.在Map阶段,对新增决策子表及原来中间结果子集进行分别处理;在Combine和Reduce阶段,进行等价类、决策类及相关性的合并.然后,我们再调用算法2即可快速更新粗糙集上、下近似集.

Fig. 6 Two different strategies图 6 两种不同的策略

算法3. 基于MapReduce的等价类、决策类、相关性并行增量更新算法(并行增量算法I).

Map(key,value)

输入:key为文档名.value为:

(1) 新增决策子表${S'_i} = ({U'_i},C \cup D,V,f){\rm{;}}$

(2) 原来的中间结果子集:OldRetj=áInformationSet,Countñ键值对.

开始:

(1) 对新增决策表的处理:

for each $x \in {U'_i}$ do

let key¢=‘E’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _B}$

output.collect(key¢,1);

let key¢=‘D’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _D}$

output.collect(key¢,1);

let key¢=‘F’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _{B \cup D}}$

output.collect(key¢,1);

endfor

(2) 原来的MapReduce结果子集处理:

for each val in OldRetj do

let key¢=val.getKey(×);

let value¢=val.getValue(×);

output.collect(key¢,value¢);

endfor

结束

Combine(key,V)/Reduce(key,V)

输入:key为相对于属性集BDBÈD的信息集;V为该信息集出现个数的列表.

开始:

if (key.startsWith(‘F’))

output.collect(key,1)

else:

let sum=0

for each val in V do

sum+=val

endfor

output.collect(key,sum)

endif

结束

3.1.2 并行增量算法II

在第2种增量策略中,我们利用Hadoop中的分布式Cache直接将原有中间结果导入到Reduce阶段,其流程如图 6(b)所示,详细的算法描述见算法4.在Map阶段,只对新增决策子表进行处理;在Combine阶段,进行等价类、决策类及相关性的合并;在Reduce阶段,先进行初始化,导入原有的中间结果,再进行等价类、决策类及相关性的合并.之后,我们同样调用算法2即可快速更新粗糙集上、下近似集.

算法4. 基于MapReduce及分布式Cache的等价类、决策类、相关性并行增量更新算法(并行增量算法II).

Map(key,value)

输入:key为文档名;value为新增决策字表${S'_i} = ({U'_i},C \cup D,V,f){\rm{.}}$

开始:

//对新增决策表的处理:

for each $x \in {U'_i}$ do

let key¢=‘E’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _B}$

output.collect(key¢,1);

let key¢=‘D’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _D}$

output.collect(key¢,1);

let key¢=‘F’+${\mathord{\buildrel{\lower3pt\hbox{$\scriptscriptstyle\rightharpoonup$}} \over x} _{B \cup D}}$

output.collect(key¢,1);

endfor

结束

Combine(key,V)

输入:key为相对于属性集BDBÈD的信息集;V为该信息集出现个数的列表.

开始:

if (key.StartsWith(‘F’))

output.collect(key,1)

else:

let sum=0

for each val in V do

sum+=val

endfor

output.collect(key,sum)

endif

结束

Reduce(key,V)

初始化输入:原来的中间结果:OldRetj=áInformationSet,Countñ键值对,存于分布式Cache.

输入:key为相对于属性集BDBÈD的信息集;V为该信息集出现个数的列表.

Let old_ret=Æ

初始化:

for each val in OldRetj do

let key¢=val.getKey(×);

let value¢=val.getValue(×);

old_ret.put(key¢,value¢);

endfor

初始化结束

开始:

if (key.startsWith(‘F’))

output.collect(key,1)

else:

let sum=0

for each val in V do

sum+=val

endfor

old_val=old_ret.get(key); //如果不存在key,则返回值0;反之,则返回对应的值

sum+=old_val

output.collect(key,sum)

endif

结束

3.2 算法复杂度分析

给出决策表S=(U,CÈD,V,f),BÍC,在文献[28]中,徐章艳等人利用基数排序的思想,给出了一种计算等价类U/B时间复杂度为O(|B||U|)的算法.因此,假定工作核数为p,并行计算等价类、决策类、相关性的时间复杂度(即算法1的时间复杂度)为

O(|B||U|/p+|D||U|/p+|BÈD||U|/p)=O(|BÈD||U|/p).

对应地,算法1将产生|U/B|个等价类、|U/D|个决策类和|U/BÈD|个相关性作为算法2的输入,因此,算法2的时间复杂度为

O(|U/D|log|U/BÈD|+|U/BÈD|log|U/BÈD|+|U/B|log|U/B|)=O(|U/BÈD|log|U/BÈD|).

因为并行算法由算法1和算法2构成,所以并行算法的时间复杂度为O(|BÈD||U|/p+|U/BÈD|log|U/BÈD|).

给出原有决策表S=(U,CÈD,V,f)的中间结果和新增决策表S¢=(U¢,CÈD,V,f),BÍC.在并行增量算法中,算法3针对新增决策表部分的时间复杂度与算法1相似,为O(|BÈD||U¢|/p).因为中间结果有|U/B|个等价类、|U/D|个决策类和|U/BÈD|个相关性,所以其时间复杂度为O(|BÈD||U/BÈD|/p).因此,算法3的时间复杂度为

O(|BÈD||U¢|/p+|BÈD||U/BÈD|/p)=O(|BÈD|(|U¢|+|U/BÈD|)/p).

因为并行算法由增量算法与算法2构成,令U*=UÈU¢,所以并行增量算法的时间复杂度为O(|BÈD|(|U¢|+|U/BÈD|)/p+|U/BÈD|log|U/BÈD|).

在并行增量算法中,即算法3和算法4,它们只是导入原有中间结果的阶段有所不同,其时间复杂度相同.

假设原始对象集为U,增加的对象集为U¢,增加后的对象集为U*=UÈU¢,并行算法和并行增量算法的时间复杂度分别为:

· 并行算法:O(|BÈD||U/p+|U/BÈD|log|U/BÈD|);

· 并行增量算法:O(|BÈD|(|U¢|+|U/BÈD|)/p+|U/BÈD|log|U/BÈD|);

我们不难发现:当U¢趋于无穷时,U=UÈU¢将近似等于U¢,两者时间复杂度趋于相等.这说明,随着增量数据的不断增多,增量算法的优势会越来越弱.

4 实验分析

在文献[23]中,我们已经验证了基于MapReduce的并行算法可以很有效地处理大数据,这里我们只测试了并行增量算法的性能.

我们利用开源云计算平台Hadoop-1.0.1(http://hadoop.apache.org/)和Java 1.7.0_05在5台计算机(AMD Opteron Processor 2376处理器,8核,主频2.3 GHz,16GB内存)构建的云计算环境下进行实验,其中1台作为主节点,4台作为计算节点,每个计算节点提供4个Map槽和Reduce槽.

为了验证增量算法的性能,我们从UCI中选取了大数据集KDD99,该数据集含有近500万条记录和1个决策属性及41个条件属性,其中6个为符号型属性,35个数值型属性.我们的算法目前只针对符号型数据,因此,我们首先对35个数值型属性进行离散化处理.此外,我们用WEKA[29]数据生成器RDG1,通过设置不同的样本数、属性个数、类别数据,产生了3个更大的数据集,大小分别为1.8GB,3.2GB和6.4GB,详细的数据描述见表 1.

Table 1 Datasets 表 1 数据集

我们把每个数据集平均分成10份,其中5份作为原有数据,另外5份作为增量数据,我们第1次增加1份,第2次增加2份,…令Ra为增量数据与原有数据的比值,称为增量变化率.这样,Ra分别为20%,40%,60%,80%和100%.然后测试这5种增量变化情况下,并行算法、并行增量算法I、并行增量算法II的性能,如图 7所示.

图 7(a)中我们可以看出,在数据集KDD99上,随着数据的增多,运行时间基本维持不变.这是因为KDD99这个数据集相对于我们的云计算平台而言规模太小.从图 7(b)~图 7(d)可以看出,随着数据规模的不断增大,两种增量算法的性能越来越好.

Fig. 7 Computational time of three algorithms on different datasets图 7 3种算法在不同数据集下的计算时间

为了更直观地表示增量变化率与运行时间之间的关系,我们采用以下增量加速比[30]来说明:

$IncS = \frac{{{T_s}}}{{{T_i}}},$

其中,Ts表示并行算法的运行时间,Ti表示并行增量算法的运行时间.

表 2表 3分别显示了并行增量算法I和并行增量算法II的增量加速比.与并行算法(非增量)相比,增量并行算法可以更快地执行完成.由结果可以看出:增量算法在数据集KDD99效果并不好,加速并不明显.其原因是Hadoop运行平台本身的延时较大,使得在小规模数据上表现不佳.总体而言,当增量变化率为20%时,并行增量算法I和并行增量算法II可以分别获得平均1.658 0倍和1.728 9倍的运行速度.同时,我们注意到,在前3个数据集上,增量加速比与增量变化率之间的关系并不明显,其中一个可能的原因是:当数据量不大时,系统测试时的波动性比较大.但是在最大的数据集Weka-6.4G,我们发现,随着增量变化率的增加,增量加速比递减,这与第3.2节中的算法复杂度分析相匹配.同时说明,随着新数据的逐渐增多,并行增量算法慢慢地失去优势;反之,新增数据越少,性能加速则越明显.从这一层面来看,并行增量算法对不断更新的实时模型有更好的支持,可以有效地应用于实时性要求更强的在线应用.

Table 2 IncS of parallel incremental algorithm I 表 2 并行增量算法I的增量加速比

Table 3 IncS of parallel incremental algorithm II 表 3 并行增量算法II的增量加速比
5 结 论

粗糙集算法已经广泛应用于数据挖掘与知识发现等领域.传统的粗糙集算法无法处理日益增长的海量数据.通过云计算中的MapReduce技术,用户可以很容易地使用云计算平台处理海量数据.不断变化的数据加大了云计算环境下知识更新的成本.本文结合MapReduce模型与增量更新算法,设计与实现了两种基于MapReduce的并行增量更新算法,并在较大的4个数据集上进行测试.结果表明:数据越多,增量算法取得的效果越好.同时,增量模型可以很好地利用原有结果,有效地减少运行时间,加快基于粒计算和粗糙集的海量数据挖掘与知识发现等的过程,继而降低云计算环境下知识更新的成本,对不断更新的实时模型有更好的支持,可以有效地应用于实时性要求更强的在线应用.我们将在未来的研究中,继续探讨基于粗糙集和MapReduce的并行增量算法在海量知识发现与知识提取中的应用与实现.

参考文献
[1] Blaszczynski J, Slowinski R, Szelag M. Sequential covering rule induction algorithm for variable consistency rough set approaches. Information Sciences, 2011,181(5):987-1002 .
[2] Chen YM, Miao DQ, Wang RZ, Wu KS. A rough set approach to feature selection based on power set tree. Knowledge-Based Systems, 2011,24(2):275-281 .
[3] Hong TP, Tseng LH, Chien BC. Mining from incomplete quantitative data by fuzzy rough sets. Expert Systems with Applications, 2010,37(3):2644-2653 .
[4] Inuiguchi M, Miyajima T. Rough set based rule induction from two decision tables. European Journal of Operational Research, 2007,181(3):1540-1553 .
[5] Kaneiwa K. A rough set approach to multiple dataset analysis. Applied Soft Computing, 2011,11(2):2538-2547 .
[6] Leung Y, Fischer M, Wu WZ, Mi JS. A rough set approach for the discovery of classification rules in interval-valued information systems. Int’l Journal of Approximate Reasoning, 2008,47(2):233-246 .
[7] Miao DQ, Duan QG, Zhang HY, Na J. Rough set based hybrid algorithm for text classification. Expert Systems with Applications, 2009,36(5):9168-9174 .
[8] Wang XZ, Zhai JH, Lu SX. Induction of multiple fuzzy decision trees based on rough set technique. Information Sciences, 2008, 178(16):3188-3202 .
[9] Wu WZ, Zhang WX, Li HZ. Knowledge acquisition in incomplete fuzzy information systems via the rough set approach. Expert Systems, 2003,20(5):280-286 .
[10] Hu QH, Yu DR, Xie ZX. Neighborhood classifiers. Expert Systems with Applications, 2008,34(2):866-876 .
[11] Yao YY. Three-Way decisions with probabilistic rough sets. Information Sciences, 2010,18(3):341-353 .
[12] Zhang QH, Wang GY, Xiao Y. Approximation sets of rough sets. Ruan Jian Xue Bao/Journal of Software, 2012,23(7):1745-1759 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/4226.htm
[13] Shan N, Ziarko W. Data-Based acquisition and incremental modification of classification rules. Computational Intelligence, 1995, 11(2):357-370 .
[14] Guo S, Wang ZY, Wu ZC, Yan HP. A novel dynamic incremental rules extraction algorithm based on rough set theory. In: Proc. of the 4th Int’l Conf. on Machine Learning and Cybernetics. Piscataway: IEEE Press, 2005. 1902-1907 .
[15] Zheng Z, Wang GY. RRIA: A rough set and rule tree based incremental knowledge acquisition algorithm. Fundamenta Informaticae, 2004,59(2-3):299-313.
[16] Fan YN, Tseng TL, Chern CC, Huang CC. Rule induction based on an incremental rough set. Expert Systems with Applications, 2009,36(9):11439-11450 .
[17] Wang L, Wang GY, Wu Y. An incremental rule acquisition algorithm based on variable precision rough set model. Journal of Chongqing University of Posts and Telecommunications (Natural Science), 2005,17(6):709-713 (in Chinese with English abstract).
[18] Liu D, Li TR, Ruan D, Zhang JB. Incremental learning optimization on knowledge discovery in dynamic business intelligent systems. Journal of Global Optimization, 2011,51(2):325-344 .
[19] Zhang JB, Li TR, Ruan D, Liu D. Neighborhood rough sets for dynamic data mining. Int’l Journal of Intelligent Systems, 2012, 27(4):317-342 .
[20] Chen K, Zheng WM. Cloud computing: System instances and current research. Ruan Jian Xue Bao/Journal of Software, 2009,20(5): 1337-1348 (in Chinese with English abstract). http://www.jos.org.cn/1000-9825/3493.htm
[21] Liu Y, Xu CF, Pan YH. A parallel approximate rule extracting algorithm based on the improved discernibility matrix. Lecture Notes in Artificial Intelligence, 2004,3066:498-503.
[22] Qian J, Miao DQ, Zhang ZH. Knowledge reduction algorithms in cloud computing. Chinese Journal of Computers, 2011,34(12): 2332-2343 (in Chinese with English abstract) .
[23] Zhang JB, Li TR, Ruan D, Gao ZZ, Zhao CB. A parallel method for computing rough set approximations. Information Sciences, 2012,194(1):209-223 .
[24] Zhang JB, Li TR, Pan Y. Parallel rough set based knowledge acquisition using MapReduce from big data. In: Proc. of the 1st Int’l Workshop on Big Data, Streams and Heterogeneous Source Mining: Algorithms, Systems, Programming Models and Applications (BigMine 2012). New York: ACM Press, 2012. 20-27 .
[25] Dean J, Ghemawat S. MapReduce: Simplified data processing on large clusters. Communications of the ACM, 2008,51(1):107- 113 .
[26] White T. Hadoop: The Definitive Guide. 2nd ed., Sebastopol: O’Reilly Media/Yahoo Press, 2010.
[27] Pawlak Z. Rough Sets: Theoretical Aspects of Reasoning about Data. Dordrecht: Kluwer Academic Publishers, 1991.
[28] Xu ZY, Liu ZP, Yang BR, Song W. A quick attribute reduction algorithm with complexity of max(O(|C||U|),O(|C|2|U/C|)). Chinese Journal of Computers, 2006,29(3):391-398 (in Chinese with English abstract) .
[29] Hall M, Frank E, Holmes G, Pfahringer B, Reutemann P, Witten IH. The WEKA data mining software: An update. SIGKDD Explorations, 2009,11(1):10-18 .
[30] Zhang JB, Li TR, Chen HM. Composite rough sets for dynamic data mining. Information Sciences, 2014,257:81-100 .
[12] 张清华,王国胤,肖雨.粗糙集的近似集.软件学报,2012,23(7):1745-1759. http://www.jos.org.cn/1000-9825/4226.htm
[16] 王利,王国胤,吴渝.基于可变精度粗集模型的增量式规则获取算法.重庆邮电学院学报,2005,17(6):709-713 .
[20] 陈康,郑纬民.云计算:系统实例与研究现状.软件学报,2009,20(5):1337-1348. http://www.jos.org.cn/1000-9825/3493.htm
[22] 钱进,苗夺谦,张泽华.云计算环境下知识约简算法.计算机学报,2011,34(12):2332-2343 .
[28] 徐章艳,刘作鹏,杨炳儒,宋威.一个复杂度为max(O(|C||U|),O(|C|2|U/C|))的快速属性约简算法.计算机学报,2006,29(3):391- 398 .