一种基于二进制蜜蜂觅食算法的特征选择方法

文档序号:28271153发布日期:2021-12-31 19:45阅读:94来源:国知局
一种基于二进制蜜蜂觅食算法的特征选择方法

1.本发明涉及数据挖掘技术领域,具体为一种基于二进制蜜蜂觅食算法的特征选择方法。


背景技术:

2.现有技术中,蜜蜂觅食算法是近年来新提出的连续优化算法,该算法是一种有效的求解包裹式特征选择问题的方法,算法将蜜蜂种群分为侦察蜂、采蜜蜂和待工蜂,利用侦察蜂进行全局搜索,利用采蜜蜂的全维度搜索来对食物源位置进行更新,利用待工蜂的随机单维度搜索让食物源位置更新更加高效。蜜蜂觅食算法效率高,需要调节的参数少,具有很强的搜索能力,这些性质说明该算法可以应用于解决特征选择问题。
3.现有的蜜蜂觅食算法其实并不是专门用来处理特征选择任务,而是为了处理连续优化问题,因此将蜜蜂觅食算法直接用于解决特征选择问题时存在一些缺点,比如分类精度低、选取的特征数目偏大、鲁棒性较差、搜索速度较慢等问题,这大大影响了蜜蜂觅食算法在对高维数据进行特征选择时的实际应用效果。


技术实现要素:

4.针对现有技术的不足,本发明提供了一种基于二进制蜜蜂觅食算法的特征选择方法,解决了上述背景技术中提出的原始的蜜蜂觅食算法直接用来解决特征选择问题时存在的一些缺点,比如分类精度低、选取的特征数目偏大、鲁棒性较差、搜索速度较慢等问题。
5.为实现以上目的,本发明通过以下技术方案予以实现:一种基于二进制蜜蜂觅食算法的特征选择方法,包括下述操作步骤:
6.s1、从公共数据集中提取特征数据;
7.s2、进行参数初始化,设置最大迭代次数max_iteration,独立运行次数runtime,种群规模pop,整个蜂群包含侦察蜂、采蜜蜂和待工蜂;
8.s3、n个侦察蜂随机搜索空间,其搜索空间被限制在[0,1]之间,其位置如式:
[0009][0010]
其中,p
s
是侦察蜂的位置,rand是大小在[0,1]之间的随机数,如果这个随机数小于0.5,则侦察蜂的位置取0,反之取1。
[0011]
s4、计算适应度函数值,根据适应度函数值对食物源进行排序,选择适应度函数值较小的0.5n个食物源作为选定食物源,适应度函数的计算过程如式所示:
[0012][0013]
其中,γ
r
d是通过将错误分类的实例数除以实例总数得出的分类错误率。r是所选特征子集的长度,m是特征的总数,参数α与β是权系数,其中β=1

α,将α设置为0.99,β设置为0.01。
[0014]
s5、根据以下公式设置停滞上限:
[0015][0016]
其中limit
st
表示食物源停滞的上限,如果停滞数大于limit
st
,则相应的选定食物源将被抛弃,n
sc
是邻域收缩系数,被设为0.8。
[0017]
s6、进行采蜜蜂局部搜索阶段,采蜜蜂更新食物源的步骤如下:
[0018]
(6

1)、根据下式给每个选定食物源平均分配采蜜蜂:
[0019][0020]
其中n
i
是第i个选定食物源招募的采蜜蜂数量,n
f
表示采蜜蜂总数,n
s
表示选定食物源的数目;
[0021]
(6

2)、对于每个选定食物源,使用下式所示的v形传递函数更新采蜜蜂位置,公式如下:
[0022][0023]
其中,t
v
代表所使用的v形传递函数;y
i
是新定义的一个随机变量,用于产生采蜜蜂位置改变的概率,此变量的取值在[0,1]之间;
[0024]
采蜜蜂根据以下公式更新位置:
[0025][0026]
其中,p
f
是采蜜蜂的位置,rand是大小在[0,1]之间的随机数;
[0027]
(6

3)、将当前采蜜蜂找到的食物源位置带入分类算法中计算分类准确率以及选择的特征数目,计算新的适应度值;如果新的食物源适应度值更小,则接受采蜜蜂找到的食物源,并将停滞次数设置为0;否则保留原有的食物源位置,停滞次数加一,并根据式对搜索范围进行收缩,公式如下:
[0028]
s
nh
(n+1)=n
sc
·
s
nh
(n)
[0029]
其中,s
nh
(n)是当前的搜索范围;s
nh
(n+1)是下一次迭代的搜索范围;n
sc
是收缩系数,设为0.8;
[0030]
(6

4)、在采蜜蜂局部搜索之后,所有选定食物源均根据适应度函数值进行排序和分类;
[0031]
s7、进行待工蜂局部搜索阶段,具体步骤如下:
[0032]
(7

1)、根据下述公式所示给每个选定食物源分配待工蜂:
[0033]
[0034]
其中n
j
是第j个选定食物源招募的待工蜂数量;fitness
j
是第j个选定食物源的适应度函数值;n0表示待工蜂总数;k是选定食物源的数量,等于侦察蜂数量的一半;fix表示取整;
[0035]
(7

2)、为了保证每次迭代的有效性,待工蜂从其所在的选定食物源中随机选取一个维度,根据下述公式进行位置更新:
[0036][0037]
其中,d代表[1,m]之间随机选取的待更新的单一维度,代表待工蜂本次更新的位置,代表待工蜂所在选定食物源的位置;
[0038]
(7

3)、将当前待工蜂找到的食物源位置带入分类算法中计算分类准确率以及选择的特征数目,计算新的适应度值并与原来比较。如果新的适应度值更小,则接受待工蜂找到的食物源,并将停滞次数设置为0;否则保留原有的食物源位置,停滞次数加一;
[0039]
(7

4)、判断停滞次数是否大于停滞上限,如果停滞次数大于停滞上限,则相应的选定食物源将排在所有食物源的最后,并将在全局搜索阶段被抛弃,将停滞次数设为0,邻域范围恢复为原始大小;
[0040]
s8、进入全局搜索阶段,n个侦察蜂随机搜索,寻找新的食物源;
[0041]
s9、计算所有食物源的适应度函数值,包括由侦察蜂发现的新食物源与本轮迭代得到的选定食物源,根据适应度函数值给所有食物源排序,记录迄今为止最好的食物源;
[0042]
s10、选择适应度函数值较小的0.5n个食物源作为下次迭代中的选定食物源;
[0043]
s11、判断是否满足终止条件,如果不满足,返回s6步骤,若满足终止条件,输出全局最优解,得到最优特征子集。
[0044]
可选的,所述s2步骤中,侦察蜂占整个蜂群的10%,采蜜蜂和待工蜂的数量各占整个蜂群的45%。
[0045]
可选的,所述s3步骤中,p
s
是侦察蜂的位置,rand是大小在[0,1]之间的随机数,如果这个随机数小于0.5,则侦察蜂的位置取0,反之取1。
[0046]
可选的,所述s4步骤中,γ
r
(d)是通过将错误分类的实例数除以实例总数得出的分类错误率,r是所选特征子集的长度,m是特征的总数,参数α与β是权系数,其中β=1

α,将α设置为0.99,β设置为0.01,以提高特征选择后的分类准确率。
[0047]
可选的,所述s5步骤中,limit
st
表示食物源停滞的上限,如果停滞数大于limit
st
,则相应的选定食物源将被抛弃,n
sc
是收缩系数,可设为0.8。
[0048]
可选的,所述s11步骤中,特征子集是一个维度为特征数目的二进制向量,其中的1代表对应的特征被选中,0则代表对应的特征不被选中。
[0049]
本发明提供了一种基于二进制蜜蜂觅食算法的特征选择方法,具备以下有益效果:
[0050]
该基于二进制蜜蜂觅食算法的特征选择方法,针对现有的对高维数据进行特征选择的需求,该方法将搜索空间限制在[0,1]之间,并采用v形传递函数对采蜜蜂的位置进行更新,为了提高每次迭代待工蜂搜索的有效性,待工蜂更新采用单一维度更新,并采用对待
工蜂更新位置取反的策略。此方法具有特征选择准确性高,鲁棒性强,搜索效率高等特点,实现了对高维数据集进行特征选择的高效求解。
附图说明
[0051]
图1为本发明整体流程示意图。
具体实施方式
[0052]
请参阅图1,本发明提供一种技术方案:一种基于二进制蜜蜂觅食算法的特征选择方法,包括下述操作步骤:
[0053]
s1、从公共数据集中提取特征数据;
[0054]
s2、进行参数初始化,设置最大迭代次数max_iteration,独立运行次数runtime,种群规模pop,整个蜂群包含侦察蜂、采蜜蜂和待工蜂,侦察蜂占整个蜂群的10%,采蜜蜂和待工蜂的数量各占整个蜂群的45%;
[0055]
s3、n个侦察蜂随机搜索空间,其搜索空间被限制在[0,1]之间,其位置如式:
[0056][0057]
p
s
是侦察蜂的位置,rand是大小在[0,1]之间的随机数,如果这个随机数小于0.5,则侦察蜂的位置取0,反之取1;
[0058]
s4、计算适应度函数值,根据适应度函数值对食物源进行排序,选择适应度函数值较小的0.5n个食物源作为选定食物源,适应度函数的计算过程如式所示:
[0059][0060]
γ
r
(d)是通过将错误分类的实例数除以实例总数得出的分类错误率,r是所选特征子集的长度,m是特征的总数,参数α与β是权系数,其中β=1

α,将α设置为0.99,β设置为0.01,以提高特征选择后的分类准确率;
[0061]
s5、根据以下公式设置停滞上限:
[0062][0063]
limit
st
表示食物源停滞的上限,如果停滞数大于limit
st
,则相应的选定食物源将被抛弃,n
sc
是收缩系数,可设为0.8;
[0064]
s6、进行采蜜蜂局部搜索阶段,采蜜蜂更新食物源的步骤如下:
[0065]
(6

1)、根据下式给每个选定食物源平均分配采蜜蜂:
[0066][0067]
其中n
i
是第i个选定食物源招募的采蜜蜂数量,n
f
表示采蜜蜂总数,n
s
表示选定食物源的数目;
[0068]
(6

2)、对于每个选定食物源,使用式所示的v形传递函数更新采蜜蜂位置,公式如下:
[0069][0070]
其中,t
v
代表所使用的v形传递函数;y
i
是新定义的一个随机变量,用于产生采蜜蜂位置改变的概率,此变量的取值在[0,1]之间;
[0071]
采蜜蜂根据以下公式更新位置:
[0072][0073]
其中,p
f
是采蜜蜂的位置,rand是大小在[0,1]之间的随机数;
[0074]
(6

3)、将当前采蜜蜂找到的食物源位置带入分类算法中计算分类准确率以及选择的特征数目,计算新的适应度值;如果新的食物源适应度值更小,则接受采蜜蜂找到的食物源,并将停滞次数设置为0;否则保留原有的食物源位置,停滞次数加一,并根据式对搜索范围进行收缩,公式如下:
[0075]
s
nh
(n+1)=n
sc
·
s
nh
(n)
[0076]
其中,s
nh
(n)是当前的搜索范围;s
nh
(n+1)是下一次迭代的搜索范围;n
sc
是收缩系数,设为0.8;
[0077]
(6

4)、在采蜜蜂局部搜索之后,所有选定食物源均根据适应度函数值进行排序和分类;
[0078]
s7、进行待工蜂局部搜索阶段,具体步骤如下:
[0079]
(7

1)、根据下述公式所示给每个选定食物源分配待工蜂:
[0080][0081]
其中n
j
是第j个选定食物源招募的待工蜂数量;fitness
j
是第j个选定食物源的适应度函数值;n0表示待工蜂总数;k是选定食物源的数量,等于侦察蜂数量的一半;fix表示取整;
[0082]
(7

2)、为了保证每次迭代的有效性,待工蜂从其所在的选定食物源中随机选取一个维度,根据下述公式进行位置更新:
[0083][0084]
其中,d代表[1,m]之间随机选取的待更新的单一维度,代表待工蜂本次更新的位置,代表待工蜂所在选定食物源的位置;
[0085]
(7

3)、将当前待工蜂找到的食物源位置带入分类算法中计算分类准确率以及选择的特征数目,计算新的适应度值并与原来比较。如果新的适应度值更小,则接受待工蜂找到的食物源,并将停滞次数设置为0;否则保留原有的食物源位置,停滞次数加一;
[0086]
(7

4)、判断停滞次数是否大于停滞上限,如果停滞次数大于停滞上限,则相应的
选定食物源将排在所有食物源的最后,并将在全局搜索阶段被抛弃,将停滞次数设为0,邻域范围恢复为原始大小;
[0087]
s8、进入全局搜索阶段,n个侦察蜂随机搜索,寻找新的食物源;
[0088]
s9、计算所有食物源的适应度函数值,包括由侦察蜂发现的新食物源与本轮迭代得到的选定食物源,根据适应度函数值给所有食物源排序,记录迄今为止最好的食物源;
[0089]
s10、选择适应度函数值较小的0.5n个食物源作为下次迭代中的选定食物源;
[0090]
s11、判断是否满足终止条件,如果不满足,返回s6步骤,若满足终止条件,输出全局最优解,得到最优特征子集,特征子集是一个维度为特征数目的二进制向量,其中的1代表对应的特征被选中,0则代表对应的特征不被选中。
[0091]
该基于二进制蜜蜂觅食算法的特征选择方法,针对现有的对高维数据进行特征选择的需求,该方法将搜索空间限制在[0,1]之间,并采用v形传递函数对采蜜蜂的位置进行更新,为了提高每次迭代待工蜂搜索的有效性,待工蜂更新采用单一维度更新,并采用对待工蜂更新位置取反的策略。此方法具有特征选择准确性高,鲁棒性强,搜索效率高等特点,实现了对高维数据集进行特征选择的高效求解。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1