本发明涉及数据挖掘领域,尤其涉及一种基于贪心策略的多粒度粗糙集简约方法及系统。
背景技术:
随着信息时代的发展,面对的数据规模越来越大,而导致数据规模增大的一个重要原因是用来描述数据的属性越来越多。海量的数据存储在服务器中,不仅对硬件资源造成极大的消耗,更主要的问题是现有的模式识别方法在面对这么大规模的数据时往往达不到预期的性能。为此,属性简约成为了解决该问题的一个重要手段。属性简约的目的在于从众多数据属性中选择那些与后续应用,如分类任务密切相关的属性,而去除那些对分类不重要或冗余的属性,从而提高分类过程的计算速度和分类的准确率。
现有的属性简约方法大部分是基于封装器或滤波器的。基于封装器的方法通常采用某种学习策略来评估选择的属性子集,而基于滤波器的方法在选择属性子集时通常采用某些重要性评价准则如信息增益、距离、依赖关系等来指导属性选择的过程。在众多方法中,粗糙集理论是近年提出并被广泛研究的新方法,目前该方法已被大量用在模式识别、图像处理、数据挖掘和从大规模数据中挖掘知识等领域。粗糙集理论为属性简约提供了一个系统的理论框架,与传统方法不同的是,粗糙集理论对属性简约的目的不是为了最大化类间的可区分性,而是为了保持原始属性中具有鉴别能力的属性,从而能够避免过拟合。
在利用粗糙集理论做属性简约的过程中,由于属性存在的组合情况非常多,导致目前基于粗糙集理论做属性简约的方法运算复杂度都较高,很难满足一些大规模数据处理的应用场合。
因此,现有技术还有待于改进和发展。
技术实现要素:
鉴于上述现有技术的不足,本发明的目的在于提供一种基于贪心策略的多粒度粗糙集简约方法及系统,旨在解决现有的属性简约方法复杂度高、难以满足大规模数据处理的应用场合的问题。
本发明的技术方案如下:
一种基于贪心策略的多粒度粗糙集简约方法,其中,包括步骤:
构造一个空的属性子集;分别计算每个属性的内在重要性;从具有最大内在重要性的属性开始,依次循环,将具有最大外在重要性的属性添加入属性子集中;判断属性子集是否满足循环终止条件,若不满足则返回继续循环,若满足则退出循环并得到初步的属性子集;通过进一步的优化策略去除冗余属性得到最终的属性子集。
所述的基于贪心策略的多粒度粗糙集简约方法,其中,具体包括:
步骤(1)、构建决策信息系统S=(U,C∪D),其中,U为世界,C为条件属性集,C中的每一个属性都为条件属性;D为决策属性集,D中每一个属性都为决策属性;
步骤(2)、分别设置简约属性子集GS和核心属性子集GS_core,且令GS=Φ,GS_core=Φ;
步骤(3)、选择条件属性集C的非空子集B,分别计算B中任意一个属性ai的内在重要性,若属性ai的内在重要性SIGin(ai,B,D)>0,则将属性ai添加到核心属性子集GS_core中;
步骤(4)、若核心属性子集GS_core为空集,则执行步骤(5),否则跳转执行步骤(6);
步骤(5)、令B=GS,对于集合C-B内每个属性aj,计算其外在重要性,选择外在重要性最高的属性ajm,并将其添加到集合B中,然后跳转执行步骤(7);
步骤(6)、如果则利用核心属性子集GS_core覆盖简约属性子集GS,然后跳转执行步骤(8);如果则利用核心属性子集GS_core覆盖集合B,然后执行步骤(7);
步骤(7)、如果利用集合B覆盖简约属性子集GS,然后执行步骤(8);否则返回执行步骤(4);
步骤(8)、前向贪心搜索结束,返回简约属性子集GS作为初步的属性子集。
所述的基于贪心策略的多粒度粗糙集简约方法,其中,优化策略去除冗余属性的步骤具体包括:
找到世界域Ug={x1,x2,...,xp}的一个最大覆盖Cg={g1,g2,...,gp},其中,Cg是一族不同粒度Ug的集合,并满足初始化最优属性子集GO=Cg;
对于任意gi∈Cg,如果存在另一个gj同时满足gj∈Cg(i≠j)和则将其从最优属性子集中去除;
返回最优属性子集GO。
所述的基于贪心策略的多粒度粗糙集简约方法,其中,内在重要性的计算方式如下:
所述的基于贪心策略的多粒度粗糙集简约方法,其中,外在重要性的计算方式如下:
一种基于贪心策略的多粒度粗糙集简约系统,其中,包括:
属性子集构造模块,用于构造一个空的属性子集;
内在重要性计算模块,用于分别计算每个属性的内在重要性;
属性添加模块,用于从具有最大内在重要性的属性开始,依次循环,将具有最大外在重要性的属性添加入属性子集中;
循环判断模块,用于判断属性子集是否满足循环终止条件,若不满足则返回继续循环,若满足则退出循环并得到初步的属性子集;
优化模块,用于通过进一步的优化策略去除冗余属性得到最终的属性子集。
所述的基于贪心策略的多粒度粗糙集简约系统,其中,所述属性子集构造模块具体包括:
决策信息系统构建单元,用于构建决策信息系统S=(U,C∪D),其中,U为世界,C为条件属性集,C中的每一个属性都为条件属性;D为决策属性集,D中每一个属性都为决策属性;
属性子集构造单元,具体分别设置简约属性子集GS和核心属性子集GS_core,且令GS=Φ,GS_core=Φ;
所述内在重要性计算模块具体包括:
内在重要性计算单元,具体用于选择条件属性集C的非空子集B,分别计算B中任意一个属性ai的内在重要性,若属性ai的内在重要性SIGin(ai,B,D)>0,则将属性ai添加到核心属性子集GS_core中;
判断单元,用于若核心属性子集GS_core为空集,则执行属性添加单元,否则跳转执行第一覆盖单元;
所述属性添加模块具体包括:
属性添加单元,用于令B=GS,对于集合C-B内每个属性aj,计算其外在重要性,选择外在重要性最高的属性ajm,并将其添加到集合B中,然后跳转执行第二覆盖单元;
所述循环判断模块具体包括:
第一覆盖单元,用于如果则利用核心属性子集GS_core覆盖简约属性子集GS,然后跳转执行初步返回单元;如果则利用核心属性子集GS_core覆盖集合B,然后执行第二覆盖单元;
第二覆盖单元,用于如果利用集合B覆盖简约属性子集GS,然后执行初步返回单元;否则返回执行判断单元;
初步返回单元,用于前向贪心搜索结束,返回简约属性子集GS作为初步的属性子集。
所述的基于贪心策略的多粒度粗糙集简约系统,其中,所述优化模块具体包括:
初始化单元,用于找到世界域Ug={x1,x2,...,xp}的一个最大覆盖Cg={g1,g2,...,gp},其中,Cg是一族不同粒度Ug的集合,并满足初始化最优属性子集GO=Cg;
去除单元,用于对于任意gi∈Cg,如果存在另一个gj同时满足gj∈Cg(i≠j)和则将其从最优属性子集中去除;
返回单元,用于返回最优属性子集GO。
所述的基于贪心策略的多粒度粗糙集简约系统,其中,内在重要性的计算方式如下:
所述的基于贪心策略的多粒度粗糙集简约系统,其中,外在重要性的计算方式如下:
有益效果:本发明通过设计合理的启发函数,采用前向贪心搜索策略,能够降低属性简约算法的时间复杂度和空间复杂度,提取出重要的属性子集并忽略不重要和冗余的属性,从而有利于提高后续应用,如分类任务的准确率和稳定性。
附图说明
图1为本发明一种基于贪心策略的多粒度粗糙集简约方法较佳实施例的流程图。
具体实施方式
本发明提供一种基于贪心策略的多粒度粗糙集简约方法及系统,为使本发明的目的、技术方案及效果更加清楚、明确,以下对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明一种基于贪心策略的多粒度粗糙集简约方法较佳实施例,如图1所示,其包括步骤:
构造一个空的属性子集;分别计算每个属性的内在重要性;从具有最大内在重要性的属性开始,依次循环,将具有最大外在重要性的属性添加入属性子集中;判断属性子集是否满足循环终止条件,若不满足则返回继续循环,若满足则退出循环并得到初步的属性子集;通过进一步的优化策略去除冗余属性得到最终的属性子集。
本发明的方法基于前向贪心搜索策略(可简称贪心策略或者前向贪心搜索)实现多粒度属性集简约,采用属性的内在重要性和外在重要性两种评价准则作为贪心策略的启发式函数。其中,内在重要性评价用于估计每种属性本身的重要性,而外在重要性评价在前向搜索过程中可用于属性选择,根据这两个重要性评价,能够在多粒度粗糙集简约中保留重要的属性同时去除不重要的属性。本发明通过贪心策略对多粒度属性集进行快速简约,得到的属性子集即保持了原始数据中存在的某些特定性质,又能够去除数据中的冗余性质,从而有利于提高后续应用(例如利用属性子集训练分类器)的可靠性。
本发明中的几个关键步骤(只是几个关键步骤,并不代表整个实施流程)是:
一、一个决策表(决策信息系统)可形式化定义为S=(U,C∪D),C∩D=Φ。其中,U称为世界。C为条件属性集,C中的每一个属性都为条件属性;D为决策属性集,D中每一个属性都为决策属性。
对于C中的任何非空子集B具有等价关系:
其中,a(x)和a(y)分别表示物体x和y在某个条件属性a下的取值。而该等价关系RB可将集合U划分为多个等价类:
U/RB={[x]B|x∈U}
对集合U的划分提供了一种描述目标概念的多粒度世界。因此,通过一系列粒度由粗到精的属性集,能够构造出一系列粒度与之对应的由粗到精的世界。
二、设计启发函数:采用内在重要性和外在重要性两种评价准则作为贪心策略的启发函数。在决策表S=(U,C∪D)中,令B是C的一个非空子集,则对于属性集合B(本发明中的集合均指属性集合)中的任意属性a,其内在重要性定义为:
SIGin(a,B,D)=γB(D)-γB-{a}(D)
对于属性集合C-B(集合C中除去B之后剩下的)中的任意属性a,其外在重要性定义为:
SIGout(a,B,D)=γB∪{a}(D)-γB(D)。
三、循环终止条件:利用某种评估函数作为循环终止条件,用于判断是否选择出了适应性的属性子集。
四、去除冗余属性:通过前向贪心搜索得到的属性子集往往仍包含一些冗余属性,需要通过某种优化策略进一步去除属性子集中的这些冗余属性。
目前常用的属性选择方法通常是对属性集中的每个属性独立地评估,最后根据前若干个最佳的属性作为属性子集。本发明采用的粗糙集简约的方法容易与后续应用(如分类)结合具有明显的优点,即可以利用分类任务的评价函数对属性进行重要性标定,从而能够提高分类的准确率和稳定性。本发明中目标的概念可以被多粒度描述,从而克服了传统的单粒度粗糙集通常由简单的二值关系生成,扩展了粗糙集在实际应用中的应用方式。本发明采用了贪心策略来加速属性简约算法的时间复杂度和空间复杂度,使得该方法能够适用于一些数据规模较大的场合,有利于提高后续应用,如分类任务的准确率和稳定性。
作为一个具体实施例,本发明的方法具体包括:
步骤(1)、构建决策信息系统S=(U,C∪D),其中,U为世界(世界域),C为条件属性集,C中的每一个属性都为条件属性;D为决策属性集,D中每一个属性都为决策属性;
步骤(2)、分别设置简约属性子集GS和核心属性子集GS_core,且令GS=Φ,GS_core=Φ,即令GS=Φ,GS_core=Φ;
步骤(3)、选择条件属性集C的一个非空子集B,分别计算B中任意一个属性ai的内在重要性,若属性ai的内在重要性SIGin(ai,B,D)>0,则将属性ai添加到核心属性子集GS_core中,即令GS_core=GS_core∪{ai};
内在重要性的计算方式如下:
步骤(4)、若核心属性子集GS_core为空集,即GS_core=Φ,则执行步骤(5),否则跳转执行步骤(6);
步骤(5)、令B=GS,对于集合C-B内每个属性aj,计算其外在重要性,选择外在重要性最高的属性ajm,并将其添加到集合B中,即令B=B∪{ajm},然后跳转执行步骤(7);
外在重要性的计算方式如下:
步骤(6)、如果则利用核心属性子集GS_core覆盖简约属性子集GS,即令GS=GS_core,然后跳转执行步骤(8);
如果则利用核心属性子集GS_core覆盖集合B,即令B=GS_core,然后执行步骤(7);
步骤(7)、如果利用集合B覆盖简约属性子集GS,即令GS=B,然后执行步骤(8);否则返回执行步骤(4);
步骤(8)、前向贪心搜索结束,返回简约属性子集GS作为初步的属性子集。
在上述属性简约过程结束后,得到一个包含不同粒度结构的最小属性子集(即前述的初步的属性子集),然而,在该属性子集中,某些粒度的属性有可能是互相冗余的,为了去除这些冗余的属性,优化策略去除冗余属性的步骤具体包括:
找到世界域Ug={x1,x2,...,xp}(即前述的U)的一个最大覆盖Cg={g1,g2,...,gp},其中,Cg是一族不同粒度Ug的集合,并满足初始化最优属性子集GO=Cg(此处的GO是为方便说明,其即为前述步骤8得到的GS);
对于任意gi∈Cg,如果存在另一个gj同时满足gj∈Cg(i≠j)和则将其从最优属性子集中去除;
返回最优属性子集GO。
在本发明中,包括如下两个重要性评价准则:
属性的内在重要性评价准则,用于估计每种属性本身固有的重要性,内在重要性高的属性相对于内在重要性低的属性往往具有更大的可能性出现在最终的简约属性子集中。某个属性a的内在重要性定义为:
SIGin(a,B,D)=γB(D)-γB-{a}(D)
属性的外在重要性评价准则,用于在前向搜索的过程中决定某个属性是否应当被选择。外在重要性高的属性会优先被添加进简约属性子集中。某个属性a的外在重要性定义为:
SIGout(a,B,D)=γB∪{a}(D)-γB(D)
通过同时采用属性的内在重要性和外在重要性作为贪心搜索的启发函数,能够大大提升粗糙集简约方法的运行效率。
本发明引入目标概念的多粒度描述方式,给定一个决策表S=(U,C∪D),U/D={Y1,Y2,...,Yr}称为一个目标决策,而每个等价类Yi(i≤r)被当做一个目标概念。这些概念有利于理解粒度的秩序和集合近似原理,是设计基于多粒度粗糙集简约方法的基础。
本发明通过引入目标概念的多粒度描述方式,能够克服传统单粒度粗糙集存在的缺陷,使得粗糙集能够满足实际应用中多样化的需求。
本发明还提供一种基于贪心策略的多粒度粗糙集简约系统较佳实施例,其包括:
属性子集构造模块,用于构造一个空的属性子集;
内在重要性计算模块,用于分别计算每个属性的内在重要性;
属性添加模块,用于从具有最大内在重要性的属性开始,依次循环,将具有最大外在重要性的属性添加入属性子集中;
循环判断模块,用于判断属性子集是否满足循环终止条件,若不满足则返回继续循环,若满足则退出循环并得到初步的属性子集;
优化模块,用于通过进一步的优化策略去除冗余属性得到最终的属性子集。
进一步,所述属性子集构造模块具体包括:
决策信息系统构建单元,用于构建决策信息系统S=(U,C∪D),其中,U为世界,C为条件属性集,C中的每一个属性都为条件属性;D为决策属性集,D中每一个属性都为决策属性;
属性子集构造单元,具体分别设置简约属性子集GS和核心属性子集GS_core,且令GS=Φ,GS_core=Φ;
所述内在重要性计算模块具体包括:
内在重要性计算单元,具体用于选择条件属性集C的非空子集B,分别计算B中任意一个属性ai的内在重要性,若属性ai的内在重要性SIGin(ai,B,D)>0,则将属性ai添加到核心属性子集GS_core中;
判断单元,用于若核心属性子集GS_core为空集,则执行属性添加单元,否则跳转执行第一覆盖单元;
所述属性添加模块具体包括:
属性添加单元,用于令B=GS,对于集合C-B内每个属性aj,计算其外在重要性,选择外在重要性最高的属性ajm,并将其添加到集合B中,然后跳转执行第二覆盖单元;
所述循环判断模块具体包括:
第一覆盖单元,用于如果则利用核心属性子集GS_core覆盖简约属性子集GS,然后跳转执行初步返回单元;如果则利用核心属性子集GS_core覆盖集合B,然后执行第二覆盖单元;
第二覆盖单元,用于如果利用集合B覆盖简约属性子集GS,然后执行初步返回单元;否则返回执行判断单元;
初步返回单元,用于前向贪心搜索结束,返回简约属性子集GS作为初步的属性子集。
进一步,所述优化模块具体包括:
初始化单元,用于找到世界域Ug={x1,x2,...,xp}的一个最大覆盖Cg={g1,g2,...,gp},其中,Cg是一族不同粒度Ug的集合,并满足初始化最优属性子集GO=Cg;
去除单元,用于对于任意gi∈Cg,如果存在另一个gj同时满足gj∈Cg(i≠j)和则将其从最优属性子集中去除;
返回单元,用于返回最优属性子集GO。
进一步,内在重要性的计算方式如下:
进一步,外在重要性的计算方式如下:
关于上述模块单元的技术细节在前面的方法中已有详述,故不再赘述。
本发明采用贪心策略实现对多粒度粗糙集的快速简约,通过内在重要性和外在重要性两种启发函数,逐渐构造出重要性的简约属性子集。最后通过最大覆盖原理对该简约属性子集做进一步的优化得到最终的优化属性子集。因此,本发明具有提取重要属性以及去除冗余属性的功能,能够用于大规模数据中降低数据的维度。
应当理解的是,本发明的应用不限于上述的举例,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,所有这些改进和变换都应属于本发明所附权利要求的保护范围。