一种基于sql语言的粗糙集属性约简方法

文档序号:6573216阅读:262来源:国知局
专利名称:一种基于sql语言的粗糙集属性约简方法
技术领域
本发明涉及一种粗糙集属性约简方法,具体属于一种基于SQL语言的粗糙集属性约简方法。
背景技术
在数据挖掘的诸多方法中,粗糙集理论与方法对于处理复杂系统不失为一种较为有效的方法,它是由波兰的Pawlak Z教授于1982年提出的,是一种处理不精确、不确定和模糊知识的软计算工具。经过二十多年的发展,粗糙集理论已经在信息系统分析、人工智能、决策支持系统、知识与数据发现、模式识别与分类、故障检测等方面取得了较为成功的应用。属性约简是粗糙集理论中的核心内容之一,它是指在保持知识库分类能力不变的条件下,删除其中不相关或不重要的知识。粗糙集属性约简的目标就是最小属性约简,它已经被证明是NP问题。经典的最小属性约简方法是基于区分矩阵的粗糙集属性约简方法,但由于该方法在面对大数据集的时候,由于运行时间过长而变得不再实用。

发明内容
本发明的目的在于克服基于区分矩阵的粗糙集属性约简方法的不足,提供一种运行速度快又实用的基于SQL语言的粗糙集属性约简方法。
本发明提供了一种基于SQL语言的粗糙集属性约简方法,该方法利用标准SQL语言中的GROUP BY子句对信息系统分组得到的元组数与原信息系统元组数的比值作为属性区分能力的度量,对信息系统的属性集生成的幂集,将幂集中的所有元素按照基数大小排序,根据属性约简的目的,如果属性集中的一个子集为约简,则包含该子集的其他元素一定不是约简,这样可以减少搜索空间,提高约简速度。具体包括如下步骤(1)输入信息系统S=(U,A),其中U是对象的非空有限集合,A是属性的非空有限集合;(2)初始化约简结果集red为空集;(3)生成属性集A的幂集对属性集A的元素进行排序,用二进制数(k1,k2,…,k|A|)2来表示A的子集,其中ki=0或1,当ki=0表示该子集中不包含A的第i个属性,当ki=1表示该子集中包含A的第i个属性,初始值为(01,02,…,0|A|-1,1)2,用二进制的方法依次加1,直到(11,12,…,1|A|-1,1)2,则得到属性集A不包含空集的幂集Powerset,对幂集Powerset中元素按照其元素基数大小从小到大排序,将结果放入存储区中;(4)计算属性集A的区分能力α(A)通过GROUP BY子句,在属性集A上对U进行分组运算,得到的元组数|UA|与|U|的比值,即为α(A)=|UA||U|;]]>(5)搜索过程依次从存储区取幂集Powerset中的第一个元素,如果它与整个属性集A的区分能力一样,则第一个元素即为一个约简,并将其放入到约简结果集中,在幂集Powerset中查找包含该约简的所有元素,并将其删除,重复以上过程,直到幂集Powerset为空,这样可以逐步减少搜索空间,提高约简速度;(6)停止条件判别幂集Powerset为空,即幂集中所有元素均已处理,停止判断。
基于SQL语言的粗糙集属性约简方法的设计思想在粗糙集理论中,对于信息系统S=(U,A),其中U是对象的非空有限集合,A是对象的属性集,设PA,求不可区分关系IND(P)的一般方法是将对象集U中未分类的个体两两比较,比较它们对P的每一个属性,如果所有的取值都相同,则属于同一个等价类。根据IND(P)的定义,两个个体同属于一个等价类当且仅当对P中的每一个属性,它们的取值都相同。在标准SQL(Structured Query Language)语言中,GROUP BY子句和COUNT(*)集函数将数据集按某一列(属性)或多列(属性)值分组,值相等的为一组,同时得到每组个数。组的个数在粗糙集理论中也就是划分的等价类的数目,每组所包含对象的个数也就是某一等价类所包含的对象数目。根据上述原理,给出了属性集区分能力的计算方法设SS=(U,A)是一个信息系统。设PA,则属性集P对S=(U,A)分组(GROUP BY)后,得到信息系统为SP=(UP,PU{Pnum}),其中Pnum为通过集函数COUNT(*)得到的附加属性,简记为SP=(UP,P′),则属性集P的区分能力的计算方法如下式α(P)=|Up||U|]]>α(P)越大,它的区分能力越强,说明属性集P对U的分类越细,且有0<α(P)≤1。
与现有技术相比,本发明通过粗糙集理论与数据库技术的耦合,用SQL语言来定义知识以及在约简过程中搜索策略的改进,减少了搜索空间,提高了约简速度。


图1为本发明方法的流程图。
具体实施例方式
为了更好地理解本发明的技术方案,下面结合附图和实施例作进一步描述。
实施例1
(1)信息系统S=(U,A)如表1,其中U={1,2,3,4,5},A={a,b,c,d}表1

(2)初始化red=;(3)生成属性集A的幂集PowersetPowerset={{a},{b},{c},{d},{a,b},{a,c},{a,d},{b,c}{b,d},{c,d},{a,b,c},{a,b,d},{b,c,d},{a,c,d},{a,b,c,d}};(4)计算α(A)=|UA||U|=1;]]>(5)由于Powerset不为空,则取Powerset中的第一个元素{a},有α({a})=35,]]>由α({a})≠α(A),从Powerset中删除{a};(6)由于Powerset={{b},{c},{d},{a,b},{a,c},{a,d},{b,c}{b,d},{c,d},{a,b,c},{a,b,d},{b,c,d},{a,c,d},{a,b,c,d}}不为空,则取Powerset中的第一个元素{b},有α({b})=35,]]>由α({b})≠α(A),从Powerset中删除{b};(7)同理依次从Powerset中删除{c}和{d};(8)由于Powerset={{a,b},{a,c},{a,d},{b,c}{b,d},{c,d},{a,b,c},{a,b,d},{b,c,d},{a,c,d},{a,b,c,d}}不为空,则取Powerset中的第一个元素{a,b},有α({a,b})=1,由α({a,b})=α(A),则red=red∪{{a,b}},在Powerset中删除包含{a,b}的元素,即删除{a,b},{a,b,c},{a,b,d}和{a,b,c,d};(9)由于Powerset={{a,c},{a,d},{b,c},{b,d},{c,d},{b,c,d},{a,c,d}}不为空,则取Powerset中的第一个元素{a,c},有α({a,c})=45,]]>由α({a,c})≠α(A),从Powerset中删除{a,c};(10)同理依次从Powerset中删除{a,d}和{b,c};(11)由于Powerset={{b,d},{c,d},{b,c,d},{a,c,d}}不为空,则取Powerset中的第一个元素{b,d},有α({b,d})=1,由α({b,d})=α(4),则red=red∪{{b,d}},在Powerset中删除包含{b,d}的元素,即删除{b,d},{b,c,d};(12)由于Powerset={{c,d},{a,c,d}}不为空,则取Powerset中的第一个元素{c,d},有α({c,d})=45,]]>由α({c,d})≠α(A),从Powerset中删除{c,d};(13)由于Powerset={{a,c,d}}不为空,则取Powerset中的第一个元素{a,c,d},有α({a,c,d})=45,]]>由α({a,c,d})≠α(A),从Powerset中删除{a,c,d};(14)由于Powerset=,则得到所有约简为red={{a,b},{b,d}},计算完毕。
为了验证该方法的有效性,从UCI数据集中挑选了5组数据,并和基于区分矩阵的粗糙集属性约简方法进行了比较,实验环境使用的是Windows XP,CPU 2.4GHz,Ram 1GB,C#编程,SQL Server2000为后台数据库,实验结果如下表2表2 两种约简算法比较表

从实验结果数据可以看到,基于SQL语言的粗糙集属性约简方法和基于区分矩阵的方法结果完全一样,但基于SQL语言的粗糙集属性约简方法约简速度快,特别是在属性少、实例多的时候效果更为明显。
权利要求
1.一种基于SQL语言的粗糙集属性约简方法,其特征在于包括如下步骤(1)输入信息系统S=(U,A),其中U是对象的非空有限集合,A是属性的非空有限集合;(2)初始化约简结果集为空集;(3)生成属性集A的幂集对属性集A的元素进行排序,用二进制数(k1,k2,…,k|A|)2来表示A的子集,其中ki=0或1,当ki=0表示该子集中不包含A的第i个属性,当ki=1表示该子集中包含A的第i个属性,初始值为(01,02,…,0|A|-1)2,用二进制的方法依次加1,直到(11,12,…,1|A|-1,1)2,则得到属性集A不包含空集的幂集Powerset,对幂集Powerset中元素按照其元素基数大小从小到大排序,将结果放入存储区中;(4)计算属性集A的区分能力α(A)通过GROUP BY子句,在属性集A上对U进行分组运算,得到的元组数|UA|与|U|的比值,即为α(A)=|UA||U|;]]>(5)搜索过程依次从存储区取幂集Powerset中的第一个元素,如果它与整个属性集A的区分能力一样,则第一个元素即为一个约简,并将其放入到约简结果集中,在幂集Powerset中查找包含约简的所有元素,并将其删除,重复以上过程,直到幂集Powerset为空;(6)停止条件判别幂集Powerset为空。
全文摘要
一种基于SQL语言的粗糙集属性约简方法,该方法利用标准SQL语言中的GROUP BY子句对信息系统分组得到的元组数与原信息系统元组数的比值作为属性区分能力的度量,对信息系统的属性集生成的幂集,将幂集中的所有元素按照基数大小排序,根据属性约简的目的,如果属性集中的一个子集为约简,则包含该子集的其他元素一定不是约简,这样可以减少搜索空间,提高约简速度。本发明方法实现灵活简单,针对性强,和数据库实现了有效地耦合,可广泛应用于粗糙集属性约简领域。
文档编号G06F17/30GK101082925SQ20071006228
公开日2007年12月5日 申请日期2007年7月9日 优先权日2007年7月9日
发明者曹付元, 梁吉业, 姜广, 宁姝 申请人:山西大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1