一种基于混洗蛙跳的特征选择方法与流程

文档序号:15388016发布日期:2018-09-08 00:48阅读:165来源:国知局

本发明涉及一种特征选择方法。特别是涉及一种针对高维度特征描述的复杂问题的基于混洗蛙跳的特征选择方法。



背景技术:

1、混洗蛙跳算法简介

混洗蛙跳算法(shuffledfrogleapingalgorithm,sfla)是eusuff等人在2003年提出一种新型的群体智能优化算法,它模拟了青蛙种群的觅食和迁移过程。整个过程可以描述成如下方式:多只青蛙共同组成了一个大种群,其中又分成了若干个初始子种群,每个子种群包含数只青蛙。每只青蛙的对环境的适应能力都不同。这里用与食物的距离来表示青蛙的适应能力。为了获取食物,每只青蛙都会靠近子种群中距离食物最近的那只青蛙,也就是每只青蛙都会向距离食物最近的青蛙跳跃,从而缩短自己与食物的距离,提高自己的适应能力。当整个青蛙种群完成一次跳跃后,不同的青蛙之间会进行信息交换与共享,目的是提高整个青蛙种群的适应能力。在子种群中,为了避免青蛙积聚在同一位置,每次交换信息之后,要重新形成新的子种群。每只青蛙都携带着各自的信息加入新的子种群。子种群中适应能力最高的青蛙是子种群内部的青蛙的跳跃方向,每次重新生成子种群保证了子种群之间的信息交互。通过交替进行子种群内部每只青蛙向最优青蛙的跳跃(局部搜索)和所有青蛙子种群之间的重新混洗(全局搜索),可以保证整个青蛙种群是向着最优的方向前进。

算法的数学描述如下:首先生成由n只青蛙个体组成的初始种群p={x1,x2,…,xn},在生成初始种群之后,首先按照每只青蛙的适应能力进行降序排列,将排在第一位的青蛙记为xg,它是整个种群中适应能力最佳的一只。然后将整个种群分成n个子种群,每个子种群包含m只青蛙,满足关系n=m*n。初始子种群的分类规则如下:把第1只青蛙分入第1个子种群中,第2只青蛙分入第2个子种群中,第n只青蛙分入第n个子种群中,然后将第n+1只青蛙分入第1个子种群中,以此类推,直至所有的青蛙都分入了某个子种群中。整个分配过程可描述如下:

mk={xk+m(l-1)∈p|1≤l≤n},1≤k≤m

其中,xi,j(i=1,2,…n;j=1,2,…,m)表示第i个子种群中的第j只青蛙的位置。在每个子种群中,将适应能力最好的青蛙记为xb,适应能力最差的青蛙记为xw。然后对每个子种群中的xw进行跳跃,更新规则如下:

d=r*(xb-xw)

x′w=xw+d

其中,r是0到1之间的随机数,d表示青蛙跳跃距离。如果更新后,新的青蛙x′w比原来的适应力强,则代替原来的;如果没有改善,则用xg代替xb进行更新;如果仍没有改善,则随机产生一个新的青蛙取代xw。当每个子种群都完成局部搜索后,将所有的青蛙重新混合并排序,然后重新划分子种群,再进行局部搜索,直到达到预定的收敛条件,例如达到混合迭代次数、指定迭代次数内青蛙没有跳跃等。

2、特征选择原理

不管是信号数据还是特征数据,当数据量增加到一定程度时,都会对模型的建立产生。数据一般存在强相关、弱相关和无关三种特征,除此之外特征之间也存在相关性,这些特征称为冗余特征。这些无关特征、冗余特征的存在,不仅会降低降低数据挖掘和模式识别的性能,还会数据处理的复杂度。

解决特征过多的一个方法就是特征选择。特征选择指从原始特征集f={f1,f2,…,fn}中选择一个特征子集s={f1,f2,…,fm},满足(m<<n)。其中:n为原始特征集的维度;m为特征子集的维度。特征选择的目标是在不改变原始特征集性质的前提下,从中选择一部分特征,组成一个新的特征空间。

一个典型的特征选择方法包括四个基本步骤,它的过程被分为:生成过程,评估函数,停止准则和验证过程。生成过程是一个搜索过程,评估函数是评估正在检查的子集,停止准则是决定特征选择何时停止,验证过程是检查子集是否有效。可将一个特征选择问题看做一个最优化问题,优化的最终目的是得到一个维度足够小但能有效识别目标的特征子集。特征子集用一个含有m个由0到n-1之间的整数组成的无序不重复的序列来表示,序列中的每个数对应一个特征。

显然,初始特征子集的维度越大,其对应的不同特征子集种类越多,并且两者之间呈指数关系。对于一个初始特征集维度为n,通过随机的方式生成一个特征子集,对应的序列记为:s={s1,s2,...,sm},s1,s2,...,sm∈{0,1,...,n-1}。特征子集有2n种不同的的组合,特征选择就是要从这2n中组合中搜索到最优的组合。

3、特征选择现有方法

特征选择的结果直接影响分类器的复杂度、精度以及稳定性。随着巨大数据库的创建以及对良好机器学习技术的要求,大量特征被提取以更好地表征目标。然而,并非所有的特征都是有效的。因此,在开发模式分类系统时,选择合适的特征子集是至关重要的。

目前对特征选择方法的研究主要集中于搜索策略和评价准则。按照特征子集的形成过程,特征选择的基本搜索策略可分为以下3种:全局最优、随机搜索和启发式搜索。全局搜索方法如分支定界法虽然能够得到最优的特征子集,但是存在计算复杂度高等问题。随机搜索方法如relief系列算法具有较高的不确定性,需要进行较多循环,且参数的设置存在一定的困难。启发式搜索如单独最优组合、序列前向选择方法、广义序列前向选择方法(gsfs),序列后向选择方法(sbs),广义序列后向选择方法(gsbs),增l去r选择方法,广义增l去r选择方法,浮动搜索方法等。启发式搜索策略虽然效率高,但是以牺牲全局最优为代价。一个具体的搜索算法会采用两种或多种基本搜索策略,例如遗传算法是基于随机搜索和启发式搜索算法。

特征选择因为搜索空间大和特征之间具有相关性的问题,使其具有很大的挑战性。目前,大量的有效特征选择方法被提出,但是在实际的应用中存在着很多不足。大部分的特征选择方法存在局部最优或者是计算复杂度高的问题。



技术实现要素:

本发明所要解决的技术问题是,提供一种能够提高数据挖掘与模式识别效率的基于混洗蛙跳的特征选择方法。

本发明所采用的技术方案是:一种基于混洗蛙跳的特征选择方法,包括如下步骤:

1)输入一个初始特征集维度为m的数据,每个特征包含有若干个样本;

2)对青蛙种群进行初始化,并确定算法最大迭代次数;

3)将青蛙个体的位置利用适应度函数进行适应度计算,适应度函数表达式为:

这里s是特征子集,si和sj分别表示特征子集s中的第i和第j个特征,l表示样本数据对应的目标类标签,i(si;l)表示特征子集s中第i个特征与目标类标签的平均互信息量,

i(si;sj)表示特征子集s中第i个特征与第j个特征的平均互信息量。

4)按照青蛙个体的适应度值对整个青蛙种群进行降序排序,并按照模因分组法对青蛙种群进行分组,将青蛙种群分为p组,每组有q只青蛙,其中p和q满足青蛙的数量n=p*q的关系,确定每组中的组内最优青蛙、组内最差青蛙以及整个青蛙种群中的全局最优青蛙;

5)每组中首先利用组内最优青蛙更新组内最差青蛙,若发现更新后的组内最差青蛙的适应度值优于更新前的最差青蛙的适应度值,且满足优化的约束条件,则完成一次更新过程;否则,采用全局最优青蛙更新,若更新后的组内最差青蛙的适应度值优于更新前的最差青蛙的适应度值,且满足特征子集内特征不重复的约束条件,则完成更新过程;若依然无法更新成功,则采用随机更新的方式更新组内最优青蛙,迭代次数自加1,得到更新后的青蛙种群;

6)对更新后的青蛙种群重复步骤4)到步骤5),直到迭代次数达到最大迭代次数,此时得到的青蛙种群中全局最优青蛙的位置即为最佳的特征子集。

步骤2)包括:首先随机生成由n只青蛙组成的青蛙种群,每个青蛙的位置对应一个无序不重复的序列,所述的序列含有m个整数,所述的m个整数是0到m-1之间的整数,序列中的每个整数对应一个特征,青蛙的位置对应于从维度为m的初始特征集中随机产生的一个维度为m的特征子集,其中,m和m满足m<<m关系,算法最大迭代次数确定为itermax,初始迭代次数iter=0。

步骤4)中:n表示整青蛙种群中青蛙的数量,青蛙的排序序号x与分组组号k的关系为:

同时标记每组中适应度值最大的为组内最优青蛙xb、适应度值最小的为组内最差青蛙xw以及全局适应度值最大的为整个青蛙种群中的全局最优青蛙xg。

步骤5)中所述的组内最优青蛙更新组内最差青蛙公式如下:

x'w=xw+round(r)×(xb-xw)

式中,xb表示组内最优青蛙,xw表示组内最差青蛙,x'w表示更新后的组内最差青蛙,r表示的是随机的方式产生的0-1的随机数,round(r)表示采用四舍五入的方式对随机数r取整。

步骤5)中所述的全局最优青蛙更新公式如下:

x'w=xw+round(r)×(xg-xw)

式中,xg表示整个青蛙种群中的全局最优青蛙,xw表示组内最差青蛙,x'w表示更新后的组内最差青蛙,r表示的是随机的方式产生的0-1的随机数,round(r)表示采用四舍五入的方式对随机数r取整。

本发明的一种基于混洗蛙跳的特征选择方法,是针对一个给定的高维初始特征集,通过将混洗蛙跳算法的搜索和寻优能力,寻找最佳的特征子集,提高数据挖掘和模式识别的效率。可以有效解决目前已有特征选择算法存在的搜索能力差、收敛速度慢等问题,更高效的完成特征选择任务,最终提高数据挖掘与模式识别的效率。

附图说明

图1是发明一种基于混洗蛙跳的特征选择方法的流程图。

具体实施方式

下面结合实施例和附图对本发明的一种基于混洗蛙跳的特征选择方法做出详细说明。

如图1所示,本发明的一种基于混洗蛙跳的特征选择方法,包括如下步骤:

1)输入一个初始特征集维度为m的数据,每个特征包含有若干个样本;

2)对青蛙种群进行初始化,并确定算法最大迭代次数;包括:首先随机生成由n只青蛙组成的青蛙种群,每个青蛙的位置对应一个无序不重复的序列,所述的序列含有m个整数,所述的m个整数是0到m-1之间的整数,序列中的每个整数对应一个特征,青蛙的位置对应于从维度为m的初始特征集中随机产生的一个维度为m的特征子集,其中,m和m满足m<<m关系,算法最大迭代次数确定为itermax,初始迭代次数iter=0。本实施例中,最大迭代次数itermax=1000。

3)将青蛙个体的位置利用适应度函数进行适应度计算,即计算在特征选择中,该方案对应的特征子集的评估函数值。适应度函数表达式为:

这里s是特征子集,si和sj分别表示特征子集s中的第i和第j个特征,l表示样本数据对应的目标类标签,i(si;l)表示特征子集s中第i个特征与目标类标签的平均互信息量,i(si;sj)表示特征子集s中第i个特征与第j个特征的平均互信息量。

对青蛙种群的每个个体所在的位置进行评估,即实值编码序列送入评估模块,评估模块对应特征选择的评估函数,以特征子集有效性最好为目标进行评估函数求值得到评估结果,找出当前最佳的特征子集。

4)按照青蛙个体的适应度值对整个青蛙种群进行降序排序,并按照模因分组法对青蛙种群进行分组,将青蛙种群分为p组,每组有q只青蛙,其中p和q满足n=p*q的关系,确定每组中的组内最优青蛙、组内最差青蛙以及整个青蛙种群中的全局最优青蛙;其中,n表示整青蛙种群中青蛙的数量,青蛙的排序序号x与分组组号k的关系为:

同时标记每组中适应度值最大的为组内最优青蛙xb、适应度值最小的为组内最差青蛙xw以及全局适应度值最大的为整个青蛙种群中的全局最优青蛙xg。

5)每组中首先利用组内最优青蛙更新组内最差青蛙,若发现更新后的组内最差青蛙的适应度值优于更新前的最差青蛙的适应度值,且满足优化的约束条件,则完成一次更新过程;否则,采用全局最优青蛙更新,若更新后的组内最差青蛙的适应度值优于更新前的最差青蛙的适应度值,且满足特征子集内特征不重复的约束条件,则完成更新过程;若依然无法更新成功,则采用随机更新的方式更新组内最优青蛙,迭代次数自加1,得到更新后的青蛙种群;其中,

所述的组内最优青蛙更新组内最差青蛙公式如下:

x'w=xw+round(r)×(xb-xw)

式中,xb表示组内最优青蛙,xw表示组内最差青蛙,x'w表示更新后的组内最差青蛙,r表示的是随机的方式产生的0-1的随机数,round(r)表示采用四舍五入的方式对随机数r取整。

所述的全局最优青蛙更新公式如下:

x'w=xw+round(r)×(xg-xw)

式中,xg表示整个青蛙种群中的全局最优青蛙,xw表示组内最差青蛙,x'w表示更新后的组内最差青蛙,r表示的是随机的方式产生的0-1的随机数,round(r)表示采用四舍五入的方式对随机数r取整。

6)对更新后的青蛙种群重复步骤4)到步骤5),直到迭代次数达到最大迭代次数,此时得到的青蛙种群中全局最优青蛙的位置即为最佳的特征子集。

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