基于人工鱼群与蛙群混合算法的粗糙集属性约简方法与流程

文档序号:17776356发布日期:2019-05-28 20:13阅读:172来源:国知局
基于人工鱼群与蛙群混合算法的粗糙集属性约简方法与流程

本发明属于数据挖掘,粗糙集,群体智能领域,具体涉及一种基于人工鱼群与蛙群混合算法的粗糙集属性约简方法。



背景技术:

粗糙集理论是由波兰科学家pawlak于1982年提出的数据分析处理理论。它能够对不完整的、不精确的信息进行处理,从而发掘数据中的有用信息和知识。目前,粗糙集理论广泛应用于越来越多的行业和领域,包括机器学习、医学诊断、交通运输、环境科学等。

属性约简,也被称为特征选择,是重要的数据预处理技术。在信息系统中,有些属性是必要的,而有些属性是冗余或者有噪声的。这些属性不仅会占用额外的计算资源,而且会影响分类准确性。而属性约简可以在保持信息系统决策能力不变的前提下将无用信息移除。在机器学习过程中,属性约简成为一种降低数据计算成本的重要方法。粗糙集理论有着不需要附加条件、不需要参数设置等优点,因而通过粗糙集进行属性约简成为了研究热门。

假设属性集中的属性个数为m,则属性约简的目标是在2m-1个候选集中找到最优属性子集。目前国内外有多个属性约简方法,主要的方法有三种:一是基于可辨识矩阵的属性约简算法;二是代数观,即基于正域的属性约简算法;三是信息观,即基于启发式信息的属性约简算法。可辨识矩阵最早是由skowron教授提出,其主要思想是:在可分辨矩阵的基础上构造可分辨函数,利用逻辑运算转换求得所有约简。但是由于逻辑运算的复杂性,这种方法只适合小型的数据集系统。基于正域的属性约简方法则主要集中于贪心算法。贪心算法也被称为登山算法,在空集或者属性核的基础上逐个增加属性,通过正域的变化来寻找属性约简。这种方法的缺点是容易陷入局部最优解。启发式信息的属性约简算法包括基于属性重要度的、基于属性依赖度的、基于属性频率的方法等。同样的,只依靠这些信息也会陷入到局部最优解中。

群体智能算法受启发于自然中的种群概念,通过自上而下的寻优模式从构造个体的底层行为开始,通过种群中各个体的局部寻优,达到全局最优值在群体中凸显出来的目的。目前此算法已成功应用于np-难问题比如二次分配问题、旅行商问题中。最小属性约简问题同样也被证明为np-难问题,因此研究者将群体智能算法应用于属性约简中,并取得了一定的研究成果。例如,把属性抽象为节点,通过蚁群算法搜索获取节点的多种组合从而得到属性约简;将蜂群算法与粗糙集理论相结合,使蜜蜂群觅食行为的机理应用于属性约简问题。这些群体启发式约简算法取得了较好的效果,但在实际计算中获得最小属性约简的概率依旧偏低,求解质量有待进一步提高。



技术实现要素:

为克服现有技术的不足,本发明旨在提出一种基于人工鱼群与蛙跳的混合算法用于属性约简,可以有效提升运行效率和后期的收敛速度和搜索精度,实现粗糟集属性约简。为此,本发明采用的技术方案是,基于人工鱼群与蛙群混合算法的粗糙集属性约简方法,步骤如下:

步骤1)使用粗糙集理论中的概念求得决策系统的核属性,并计算其相应的属性依赖度;

步骤2)决策系统中的条件属性除核属性外,均使用人工鱼群算法进行属性约简的前期寻优,鱼群按照网格化方法进行初始化,每条人工鱼进行觅食、聚群、追尾行为更新自己的位置与对应的适应度函数值,同时公告板记录鱼群最大适应度函数值与对应鱼的位置;

步骤3)鱼群进行多次迭代后适应度没有改变或变化极小时,将产生的输出结果按适应度值排序,取其前1/2最优种群切换至蛙跳算法;

步骤4)将整个蛙群分成多个子群,在每个子群中最差位置根据与最优位置之间的汉明距离完成位置更新,所有子群更新结束后,将各子群中的青蛙混合在一起重新排序分组,继续进行上述过程直至达到预设迭代次数,取最高适应度函数值对应的青蛙位置,将其转换为等价的属性子集,得到最小属性约简集。

进一步的,所述步骤1)决策系统表示为s=(u,a,v,f),其中u为对象的非空有限集合,称为论域;a=c∪d为属性的非空有限集合,子集c和d分别称为条件属性集和决策属性集,va是属性a的值域;f:u×a→v是一个信息函数,它为每个对象的每个属性赋予一个信息值,即

进一步的,所述步骤1)依赖度的计算是根据条件属性相对决策属性的正域和决策系统的论域获得,如果核属性的依赖度等于原条件属性的依赖度,则核属性即为属性约简结果。

进一步的,所述步骤3)适应度函数值没有改变或变化极小是指第k次迭代得到的群体最佳适应度值与第k-1次迭代得到的和第k+1次迭代得到的群体最佳适应度值的差均小于预先设定的阈值。

进一步的,2004-2013年间气候类型为冰雹或暴雨的1926个样本,每个样本均有27维属性,通过步骤1)-4),降为方差、熵、灰度平均值、面积、50dbz回波比、回波顶高度、液态含水量密度共七种,从而降低决策表的复杂程度。

本发明的特点及有益效果是:

本发明提供一种基于人工鱼群与蛙跳混合算法的属性约简方法。要解决的问题包括:信息系统中含有较多的冗余属性,这些属性不仅会会占用额外的计算资源,而且会影响分类准确性,传统的属性约简方法容易陷入局部最优解,不能够获得较好的约简结果。通过将人工鱼群算法与蛙跳算法两种仿生算法进行有机融合,能够将属性约简问题转化为优化问题,最后以适应度函数为迭代准则,完成数据集的属性约简。该方法兼具人工鱼群算法前期收敛迅速与蛙跳算法局部搜索准确的优势,能够取得更好的求解结果,并提高了获得最小属性约简的可能性。

附图说明:

图1是本发明基于人工鱼群与蛙跳混合算法的属性约简方法流程框图。

图2决策树示意图。

具体实施方式

本发明的目的就是解决现有技术中的问题,提出一种基于人工鱼群与蛙跳的混合算法用于属性约简。人工鱼群算法是一种基于模拟鱼群行为的随机搜索优化算法,能够快速找到满意解所在区域,但该算法在后期精确寻找最优值过程中收敛较慢,计算量增大。而蛙跳算法模拟青蛙觅食行为,将被优化参数分组更新,具有较强的局部搜索能力,但前期收敛速度较慢,计算量较大。在属性约简背景下,将两种仿生算法进行优化改进,在适当条件下进行切换,可以有效提升运行效率和后期的收敛速度和搜索精度。

本发明提供一种基于人工鱼群与蛙跳混合算法的粗糙集属性约简方法,包括如下步骤:

步骤1)使用粗糙集理论中的概念求得决策系统的核属性,并计算其相应的属性依赖度;

步骤2)决策系统中的条件属性除核属性外,均使用人工鱼群算法进行属性约简的前期寻优。鱼群按照网格化方法进行初始化,每条人工鱼进行觅食、聚群、追尾行为更新自己的位置与对应的适应度函数值,同时公告板记录鱼群最大适应度函数值与对应鱼的位置。

步骤3)鱼群进行多次迭代后适应度没有改变或变化极小时,将产生的输出结果按适应度值排序,取其前1/2最优种群切换至蛙跳算法。

步骤4)将整个蛙群分成多个子群,在每个子群中最差位置根据与最优位置之间的汉明距离完成位置更新。所有子群更新结束后,将各子群中的青蛙混合在一起重新排序分组,继续进行上述过程直至达到预设迭代次数。取最高适应度函数值对应的青蛙位置,将其转换为等价的属性子集,得到最小属性约简集。

进一步的,所述步骤1)决策系统表示为s=(u,a,v,f),其中u为对象的非空有限集合,称为论域;a=c∪d为属性的非空有限集合,子集c和d分别称为条件属性集和决策属性集,va是属性a的值域;f:u×a→v是一个信息函数,它为每个对象的每个属性赋予一个信息值,即

进一步的,所述步骤1)依赖度的计算是根据条件属性相对决策属性的正域和决策系统的论域获得。如果核属性的依赖度等于原条件属性的依赖度,则核属性即为属性约简结果。

进一步的,所述步骤3)适应度函数值没有改变或变化极小是指第k次迭代得到的群体最佳适应度值与第k-1次迭代得到的和第k+1次迭代得到的群体最佳适应度值的差均小于预先设定的阈值。

下面结合附图,对本发明中的技术方案进行清楚、详细地描述。本发明解决上述问题的技术方案是,提出一种基于人工鱼群与蛙跳混合算法求出属性约简的方法,包括以下步骤:

首先,求取信息表知识表达系统的核属性,计算属性依赖度。其次,基于粗糙集理论知识设立适应度函数,并根据条件属性构建人工鱼群,使用网格化方法进行初始化。每条人工鱼通过觅食、聚群、追尾行为进行寻优来更新最佳适应度函数值。然后,当适应度函数值的变化满足设定要求时,使用蛙跳算法继续进行寻优,直到达到最大迭代次数。最后,取最高适应度函数值对应的青蛙位置,将其转换为等价的属性子集,得到整个信息系统的属性约简。

具体地,一个信息知识表达系统s可以表示为s=(u,a,v,f),其中u为对象的非空有限集合,称为论域;a=c∪d为属性的非空有限集合,子集c和d分别称为条件属性集和决策属性集,va是属性a的值域;f:u×a→v是一个信息函数,它为每个对象的每个属性赋予一个信息值,即

然后设x为u的子集,r是u上的等价关系,则有:称为x的r下近似集,其中y是u上等价关系r对u的划分。posr(x)=r_(x)称为x的正域,它包含了论域u中所有可以通过属性信息r准确划分到u/x的类中的个体元素集合。p和q为定义在u上的两个等价关系簇,q的p正域定义为若posp(q)=pos(p-{a})(q),则称p中条件属性a为q不必要的。p中所有q必要条件属性形成的集合,称为p的q核,记作coreq(p)。令k=(u,r)为一知识库,且令时,称知识q是k度依赖p的,其中||表示集合的个数。

求取核属性集并代入上式计算出其依赖度后,设立适应度函数。考虑到属性约简的目的在于:找到与原始条件属性集合分类准确性相当的最小条件属性集,即要求最大的依赖度和最小的属性数目。因此,适应度函数中依赖度增加或属性数减少都有利于总的适应度增加。基于这个考虑,适应度函数分为两部分,即:

其中:k为属性依赖度,主要目的是验证所选属性集是否为约简属性集。|c|表示所有条件属性的数量,|p|表示所选属性集的数量,(|c|-|p|)/|c|表示约简率。α表示权重因子,是衡量属性依赖度重要性程度的参数。

然后根据条件属性初始化人工鱼群。人工鱼群算法是由李晓磊等人提出的群体智能优化算法,它来源于自然界水域中鱼群总是聚集于富含食物最多的位置的特点,模仿鱼群觅食、聚群、追尾3种基本行为。以被优化参数作为每条鱼的位置坐标,如第i条人工鱼位置可表述为xi=(x1i,x2i,...,xni),其中xni为被优化参数。将参数带入目标函数所求得的适应度值作为该位置的食物量,通过迭代更新每条鱼的位置,实现食物量最大的位置聚集最多的人工鱼。鱼类有3种行为:1)觅食行为。设人工鱼i当前位置为xi,对应的食物量为yi,在视野范围内随机挑选一个位置xj,对应的食物量为yj。如果yj>yi,那么xi就朝着xj前进一步。反之,yj<yi,则在xi的视野范围之内再次随机寻找一个位置进行比较。如果在尝试了一定次数之后,仍然没有发现优于自身的人工鱼,则在视野范围内向一个位置随机移动一步。2)聚群行为。xc是视野范围内中心人工鱼的位置,xi当前状态下的食物量为yi,xc当前状态下的食物量为yc,δ为拥挤度因子,nfc为xc邻域内其他人工鱼的数目。若yc/nfc>δyi,表明人工鱼xc的周围具有较高的食物量并且周围环境不太拥挤,则朝xc的方向游动一步。否则目标人工鱼转而执行觅食行为。3)追尾行为。xmax是在视野范围内食物量最大的最优人工鱼,xmax当前状态下的食物量为ymax,nfm为xmax视野范围内其他人工鱼的数目。若ymax/nfm>δyi,表明人工鱼xmax的周围具有较高的食物量并且周围环境不太拥挤,则朝xmax的方向游动一步。否则目标人工鱼执行觅食行为。寻优过程中同时设立一个公告板,记录每次位置更新位置后所有鱼中最优位置以及它所对应的食物量。

在初始化阶段,为了更高效地遍历搜索区域,将鱼群网格化,使初始人工鱼群均匀分布,有利于人工鱼更快的在全局范围内寻优。其中xi表示第i(i=1,...,n)条人工鱼的位置,min,max分别为解空间的下界与上界。

同时,将鱼群的视野和步长动态化。第i条人工鱼的视野和步长由下面的公式计算得到:

a×visual=b×step=||xi-xc||,a和b分别是大于0的系数,visual表示人工鱼的视野,xi为第i条人工鱼当前位置。

当适应度函数值满足条件:|fitnessk-fitnessk-1|<ε&|fitnessk+1-fitnessk|<ε,fitnessk-1,fitnessk,fitnessk+1分别为第k-1次,第k次和第k+1次迭代得到的群体最佳适应度值;ε为预设的误差阈值。这说明人工鱼群算法已经寻找到全局较优区域,但收敛开始变慢,开始采用蛙跳算法。

蛙跳算法(shuffledfrogleapingalgorithm,简称sfla)最早由eusuff和lansey提出,与人工鱼群算法相似,用青蛙所处位置代表被优化参数,以适应度函数值大小作为青蛙位置的评价标准。该算法将被优化参数分组更新,模拟青蛙寻找食物的过程中,较差位置的青蛙不断朝较好位置的青蛙跳跃的过程,具有较强的局部搜索能力。算法计算过程如下:

(1)初始化蛙群,其中有n只青蛙。第i只青蛙的位置用k维向量xi=(x1i,x2i,...,xki)表示,其中xki为被优化参数。y=f(x)表示当前青蛙位置的食物量,即为适应度函数值。

(2)将蛙群中全部青蛙位置代入适应度函数,得到各青蛙位置的适应度函数值。然后按照适应度函数值由大到小将所有青蛙进行排列,并分为p个子群。具体分配规则为:第1只青蛙放至第1个子群,第2只青蛙放至第2个子群,第p只青蛙放至第p个子群,第p+1只青蛙放至第1个子群,第p+2只青蛙放至第2个子群,依次类推,直至所有青蛙分组完毕。

(3)对于每个子群,首先确定最优青蛙和最差青蛙的位置,记为xb和xw。同时,整个蛙群中最优青蛙的位置记为xg。然后,最差青蛙朝同一子群中的最优位置青蛙跳跃,更新策略为:

xw-new=xw-current+r(step)×||xb-xw||

式中,xw-current表示最差青蛙当前位置,xw-new为最差青蛙更新后位置。step表示步长,r(step)为[0,step]之间的随机数值。

(4)如果位置xw-new的适应度函数值大于位置xw-current,则对最差青蛙进行位置更新。否则,使用xg代替xb重新计算公式(3-16)求取新位置。若新位置的适应度函数值仍小于当前位置,则随机移动一步。

(5)所有子群进行完上述操作后,将全部青蛙混合在一起,重新按适应度函数值排序分组,然后重复上述步骤,直至达到最大迭代次数。

在本文中,为了更好的将蛙跳算法应用于属性约简,我们将蛙群中所有青蛙的位置用二进制表示。同时,使用汉明距离来衡量青蛙xi和青蛙xj之间的位置差异。对应的数学表达式为:

设xi-b、xj-b分别为青蛙xi和青蛙xj位置的二进制字符串表示,则xi和xj之间的汉明距离为:

式中:表示异或,xin,xjn∈{0,1}。xin和xjn分别代表xi-b、xj-b中的二进制位。

例如,xi-b={0,1,1,0,1},xj-b={0,0,0,0,1},则两者的汉明距离为h(xi,xj)=1+1=2。

基于此,我们对算法过程中的第3步进行改进,即:当最差青蛙个体更新自己位置时,计算其与最优青蛙个体位置之间的汉明距离。然后设定一个在[0,1]区间的阈值δ,从最差青蛙个体左边第一位开始按位查看。如果位值为1,则以δ的概率变异为0;如果位值为0,则以1-δ的概率变异为1。当改变位数等于汉明距离时,位置更新完成。

将最后一次迭代产生的人工鱼群按适应度降序排列,取前1/2种群,将其位置赋予等数量的青蛙种群,按照上述过程进行局部搜索。记录蛙群迭代次数,当达到预设值时,终止循环。

取最高适应度函数值对应的青蛙位置,将其转换为等价的属性子集,输出最小属性约简集。

实施例1:

从uci公共数据集中选取常用的离散型数据集作为实施例,所描述的实施例仅仅是本发明的一部分实施例。

(1)数据集对应信息系统s=(u,a,v,f),其中u={1,2,3,...,101},a=c∪d={a,b,c...,p}∪{f}。

表1

(2)计算核属性集core(c)={c,f,i}。由于r(core(c),d)≠r(c,d),最小属性约简结果不是核属性集,执行后续寻优。

(3)定义适应度函数fitness,设α=0.9,用函数值表示不同位置的食物量。

(4)采用网格化方法初始化人工鱼群,条件属性中除了核属性均参与搜索过程。设人工鱼数量n为20,解空间的下界min和上界max分别为1和213。每条人工鱼的初始位置由网格化公式得到。

(5)每条人工鱼执行觅食、聚群和追尾行为来更新自己位置,同时在公告板记录最大适应度函数值与对应位置。

(6)设适应度函数值的误差阈值ε=0.02,在第8次、第9次和第10次迭代得到的群体最佳适应度值分别为0.9678、0.9678和0.9678,满足预设条件,说明人工鱼群算法已经寻找到全局最优区域,收敛速度开始下降,切换至蛙跳算法。

(7)对人工鱼按照适应度函数值进行排序,使用前10个初始化蛙群,位置使用二进制形式表示。

(8)将已排序好的所有青蛙分成3个子群,第1只青蛙进入第1个子群,第2只进入第2个子群,第3只进入第3个子群,第4只青蛙再次进入第1个子群,依次类推。

(9)设δ=0.7,在每个子群中,计算最优和最差位置青蛙之间的汉明距离,基于此完成最差青蛙位置的更新。

(10)将各子群中的青蛙混合在一起,重新排序分组。重复(8)和(9),直至蛙群迭代次数等于预设值6。

(11)取最高适应度函数值对应的青蛙位置,将其转换为等价的属性子集为{c,f,i,m,p},即为最小属性约简结果。

实施例2:

强对流天气作为一种破坏性很强的灾害性天气,常常对我国的经济、农业、民生造成严重损失。可以根据天气雷达提供的反射率因子产品和气象局给出的天气实况分型表实现强对流天气的有效识别,帮助气象研究人员实现相关跟踪与监测。已知有2004-2013年间气候类型为冰雹或暴雨的1926个样本,每个样本均有27维属性,具体信息如下表。

表2

按照上述流程进行属性约简,得到最小属性集合:方差,熵,灰度平均值,面积,50dbz回波比,回波顶高度,液态含水量密度。这样就大大降低了决策表的复杂程度,去除了冗余信息。为了验证约简的有效性,基于得到的决策表,采用cart决策树建立强对流天气识别模型。以方差、熵、灰度平均值、面积、50dbz回波比、回波顶高度、液态含水量密度为属性变量c={c2,c8,c10,c12,c17,c21,c23},以天气类型d为目标变量,1代表天气类型为冰雹,2代表为暴雨,生成决策树,如图2。

气象学上通常引入命中率(percentofdoom,记为pod)、误警率(falsealarmrate,记为far)和临界成功指数(criticalsuccessindex,记为csi)对识别结果进行统计和分析。以冰雹天气为例,命中率、误警率、临界成功指数的定义如下:

基于上述评价指标,收集2014-2015年间的雷达基数据作为测试,其中包含385个样本数据,对应181个冰雹样本、204个暴雨样本,识别结果如下表。

表3

从表中可以看出,约简后保留的属性依旧保持对于强对流天气的准确分类能力。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1