博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
量子化信息素蚁群优化特征选择算法
阅读量:3903 次
发布时间:2019-05-23

本文共 5480 字,大约阅读时间需要 18 分钟。

近年来,许多涉及信息的领域中产生了包含众
多特征的高维数据,然而并不是所有特征都是重要
的。许多特征甚至是不相关或冗余的,这不仅使数
据处理过程变得困难,还降低了学习算法的效率,
如分类算法等学习算法的性能
[1]
。特征选择旨在利
用一种选择策略,消除不相关和冗余的特征,找到
最佳特征子集
[2]
根据选择策略的不同,特征选择方法可以分为
三类:过滤式方法、包裹式方法和嵌入式方法
[3]
过滤式:过滤式方法不依赖于任何的学习算法。
它们依靠训练数据的一般特性(如类间距离或统计
依赖关系)来选择特征
[4]
。这种方法具有很高的计
算效率。然而过滤式方法由于缺少具体的学习算法
指导特征选择阶段,选择出来的特征对于目标学习
算法而言可能并不是最优的。
包裹式:不同于过滤式方法,包裹式方法在评
价特征子集时,会检测特征变量间可能的相互作用
[5]
。此外,包裹式方法在评价特征子集时会根据不
同的问题选择不同的学习模型,因此,这种方法对
于某种学习模型往往更容易找到好的结果。
嵌入式:嵌入式方法将学习算法与特征选择部
分进行结合,这类方法所考虑的函数模型的结构在
其中起重要作用
[6]
。但是对于嵌入式方法而言,建
立合适的函数优化模型往往是一项艰巨的任务
[7]
特征选择是一个复杂的问题,对于一个有
n
特征的数据集,可能的解决方案的总数是
2
n
-1
[8]
其搜索空间十分庞大。因此,用穷举搜索选择一组
最优特征的时间复杂度是
O(2
n
)
[9]
,这在大多数情况
下是不切实际的。与传统方法相比,基于演化算法
的特征选择方法更适合于解决这种问题。
本文设计了一种基于随机二元蚁群网络的特征
选择方法,更换了启发式因子的计算方法,并提出
了一种新的信息素更新思路,将整体的信息素量子
化,赋予每个信息素生命周期,形成了量子化蚁群
特征选择算法(
QPACO
)。本文的其余部分如下
:
第一部分介绍相关工作,第二部分介绍基于
QPACO
的特征选择方法,第三部分展示实验结果并分析,
第四部分总结。
1
相关工作
近年来,基于演化计算的特征选择算法受到了
广泛研究,
Xue
等人在文献中指出,最近已经有超
500
篇的基于演化计算的特征选择算法发表
[1]
1.1
基于演化算法的特征选择算法
基于演化计算的特征选择算法的研究近年来取
得了较为令人满意的结果。如
Rashedi
等人提出了
通过增强传递函数克服停滞问题的
IBGSA
[10]
IBGSA
将二进制向量每个位与一个特征相关联,通
过寻找最优二进制向量找到特征选择的最优解;
Chuang
等人在二元粒子群算法
BPSO
中引入鲶鱼效
应提出了
CatfishBPSO
[11]
CatfishBPSO
将局部最优
中的粒子通过鲶鱼效应引导到新的搜索空间,同时
使用种群中最差的适应值替换
10%
的原始粒子,最
终避免了局部最优,进一步获得了更好的解;
Il-Seok
等人提出了一种新的混合遗传特征选择算法
BGA
[12]
,他们在该算法中设计局部搜索操作并将其
加入
GA
中以微调搜索过程,这种操作会根据其微
调效率进行参数化,并分析和比较它们的有效性和
时序性要求。
1.2
基于蚁群算法的特征选择
本文主要讨论基于蚁群算法的特征选择算法。
蚁群优化(
ACO
)是
Dorigo
等人提出的一种演化算
[13]
。蚂蚁之间的通信会产生正反馈行为,引导蚁
群收敛到最优解。蚁群路径上分布的信息素模拟了
真实蚂蚁所经过的路线上的化学物质
[14]
蚁群算法(
ACO
)解决特征选择的主要思想是
将问题建模为求解搜索图的最小成本路径问题,创
建一个包含节点的搜索空间并设计一个程序来寻找
解决方案的路径,蚂蚁的路径表示特征的子集。
ACO
基于信息素和启发式信息计算蚂蚁选择解路
径的转移概率。
Chen
等人使用这种类型的
ACO
行特征选择,提出了
ACOFS
[15]
ACOFS
中使用了
F-score
标准作为启发式值,但采用了不同的信息素
更新策略;
Kashef
等人提出了一种优化的二进制蚁
群算法
ABACO
[16]
,该算法的不同之处在于每个特
征都有两个节点,一个节点用于选择,另一个用于
取消选择相应的特征,最优特征子集是满足遍历停
止条件的最小节点数的蚂蚁遍历图。
与上述蚁群特征选择算法相比,本文提出的
QPACO
算法,采用了新的启发式因子的计算方法,
改变了传统的信息素的更新策略,避免了搜索特征
时的局部最优,提高了特征选择的精度。
2 QPACO
算法
2.1
基于蚁群的特征选择算法
基于蚁群的特征选择算法首先构造了由
n
个特
征组成的有向图,算法假设蚂蚁在初始时刻被随机
放置在
n
个特征节点中,并维护一张禁忌列表记录
每只蚂蚁已经访问过的节点,每条边的信息素
i
,
j
τ
始值为
0
,蚂蚁依据边上的信息素计算在
t
次迭代
时,蚂蚁
k
从特征
i
移动到特征
j
的概率(公式
1
):
 
其中,
S
是蚂蚁
k
的禁忌列表;
α
是信息启发
因子;
β
是期望启发式因子,用于分配启发式信息
和信息素浓度的权重;
η
i
,
j
是启发式信息,通常计
算为(公式
2
): 
y
之间的边
ix
jy
)上的信息素;
η
i
x,
j
y
反映了边
缘(
ix
jy
)可取性的启发式信息;
α
β
是确定信息素值和启发信息的两个参
数。
7
q
为信息素模拟消失常量,
old
τ
为原来的
信息素值,
new
τ
为更新后的信息素值,
τ
为信息素变化量。
8
dead
τ
为在该次迭代中生命周期结束的信
息素量,其余符号意同公式(
7
)。
9
m
τ
为该条路径上所有的蚂蚁所留下
的信息素总和,
k
τ
为该条路径在本次
迭代(
k
次迭代)时的更新量,
k
-
cnt
τ
cnt
次迭代前该条路径上的信息素更新
量,需注意这三者间的区分。
cnt
变量即
为我们最初所说的信息素单元的生命周
期。
10
c
是类别的数目,
N
是特征的数目;
k
N
i
k
k=1
2
C
)类中的特征
i
i=1
2
n
)的样本数;
k
ij
x
k
类中的特
i
j
j=1,2
k
N
i
)次训练样本;
i
x
是所有类的特征
i
的平均值;
ki
x
k
类中样本的特征
i
的平均值
11
n
是特征的总数,变量
ξ
(0,1)
的常数。
2 QPACO
伪代码
Table 2 Pseudo code of
QPACO
Algorithm QPACO(dataset, dataclass, t_per,
iteration)
输入:数据集、数据集类别、数据训练分割百分
比、迭代次数(
dataset, dataclass, t_per, iteration
输出:拥有最高适应度的最优特征子集
1. Procedure QPACO
2.
检验读入数据
3.
初始化
alpha, beta, T0=0, MinT, MaxT
(信息素
值的上下限)
4.
置信息素初
tau
是值为
T0
5. for i=1 to iteration do
6.
运用公式
10
11
计算启发式信息
7.
运用公式
6
计算每只蚂蚁在每条路上的选择概
8.
运用公式
9
更新信息素
tau
9.
记录
tau
的更新量
delta_tau
10.
评估构造子集并选择局部最优和全局最优子
11. End for
12.
返回拥有最高适应度的最优特征子集
3
实验结果与分析
3.1
实验数据与对比算法
我们从
UCI
数据库中选择了一些典型的数据集
对算法进行验证。表
3
列出了这些数据集的名称、
分类数、特征数、样本数。
 
为了更好的展现算法的可比性,我们选择了一
些具有代表性的特征选择算法与我们的算法进行比
较,其中包括
Catfish BPSO
[11]
、二元遗传算法(
BGA
[12]
、改进二元引力搜索(
IBGSA
[10]
、基于蚁群的
特征选择算法
ACOFS
[15]
ABACO
H [18]
、较新颖高
效的改进的森林优化特征选择算法
IFSFOA
[19]
和二
元蝴蝶优化特征选择算法
S-bBOA
[20]
等。
3.2
实验环境、评估指标及实验参数
3.2.1
实验环境
实验中,我们使用了
python 3.6
实现了我们的
算法,同时使用了公开的工具包
scikit-learn
。所有
实验均在一台配置为
Intel Core i5-4210H
CPU
)、
8G
内存、
1TB
硬盘的电脑上完成。
3.2.2
评估指标
在本实验中,我们使用分类精度
(accuracy)
、精
确率(
precision
),召回率
(recall)
和维度缩减率
(feature-reduction, fr)
来评估我们所提出的算法性
能。
分类精度
(accuracy)
,即正确分类的样本数和测
试集的总样本数的百分比,其定义如下(公式
12
):
( )
测试集的总样本数
正确分类的样本数 分类精度
=
12
精确率(
precision
)和召回率
(recall)
如下(公式
 
其中,
TP
i
是第
i
类下正确分类的测试样本数;
FP
i
i
类下错误分类的测试样本数;
TN
i
是在其
他类别下正确分类的测试样本数;
FN
i
是在其他类
别下错误分类的测试样本数。
定义维度缩减率
(feature-reduction, fr)
如下(公
15
):
15
nn
- p
Fr
=
其中,
n
是总特征数,
p
是算法所选择的特征数。
3.2.3
算法参数设置
QPACO
与其他算法的对比实验中,我们统
一设置了算法的一些参数,它们的设置为:所有算
法的种群数量和迭代次数为
50
;在每次实验中,
60
%的样本随机选择进行训练,剩下
40
%的样本用
于测试;实验结果在每个数据集和算法中独立运行
超过
20
次,最后统计平均值;蒸发系数
ρ
0.049
每条路径上的最小和最大信息素强度分别设定为
0.1
6
;每个边缘的初始信息素强度设定为
0.1
α
β
是决定信息素和启发信息的相对重要性的两个
参数,我们设
α=1
β=0.5
;在分类器的选择上,
们使用了
K
近邻(
KNN
)分类器作为基分类器。
之所以使用
KNN
是因为它是一个通用简便的分
类方法,并且由于
KNN
分类器相较于其它分类
器来说,并不需要调整过多的参数,因此较容易
进行对比实验来验证特征选择算法的性能。最近
提出的许多特征选择,也都只使用了
KNN
作为
唯一的基分类器
[21-23]
。在实验中我们将参数
K
置为
1
3.3
实验结果与分析
3.3.1
实验结果
为了确保对比实验的准确性,表
4
与表
5
中的
部分数据结果采用了文献
[18]
中公开发表的实验结
果,表
4
QPACO
与其对比算法在不同数据集上
的分类精度的对比,括号中的数字表示了在各个数
据集上每种算法性能的排名。表
5
QPACO
与其
对比算法在不同数据集上的精确率、召回率及维度
缩减率的对比,最后一列为每个算法在所有数据集
上的指标和,和越大说明算法总体性能越好。
3.3.2
实验分析
QPACO
在时间效率上是基本等同于二进制蚁
群算法的,在算法的改进过程中,计算和记录每次
信息素的更新量,以及查找生命周期结束信息素量
的时间复杂的都是
O(1)
的,因此时间上的开销差距
并不明显,所以本文遵从了相关的基于演化计算的
特征选择方法的实验设计模式,并未采用时间效率
来衡量算法性能
[18-24]
,但计算了其它常用的评估指
标进行算法间的对比。
对比分类精度,在表
4
中我们不难看出,
QPACO
Glass
Iris
Letter
Shuttle
Spambase
Waveform
Wisconsin
这些数据集上均位居第一,在
Tae
Wine
Yeast
上位居第二,只在
Vehicle
上稍显逊色。因
QPACO
在分类精度上有了很明显的提升。通过
对比表
5
中的精确率、召回率以及维度缩减率,我
们发现
QPACO
算法在大多数情况下精确率和召回
率都略高于其他算法,且维度缩减率维持在平均水
平以上。
4 QPACO
及其对比算法的平均分类精度对比
 
5.478
4
本文提出了基于传统蚁群算法和二进制蚁群
算法的量子化蚁群特征选择算法
QPACO
QPACO
中将信息素量子化,赋予每个信息素单独的生命周
期,同时修改了启发式因子的更新方式,增强了算
法的搜索能力。经过
11
个数据集和
12
个特征选择
算法的对比实验,验证了
QPACO
良好的性能。如
何在高维数据集中应用
QPACO
进行特征选择问题
的求解,将是下一步重点研究的内容。

转载地址:http://tzxen.baihongyu.com/

你可能感兴趣的文章
Lucene5学习之Directory理解
查看>>
Lucene5学习之TermQuery使用
查看>>
Lucene5学习之TermRangeQuery使用
查看>>
Lucene5学习之NumericRangeQuery使用
查看>>
Lucene5学习之PrefixQuery使用
查看>>
Lucene5学习之WildcardQuery使用
查看>>
Activiti的Eclipse插件安装指南
查看>>
Lucene5学习之PhraseQuery短语查询
查看>>
the exception "Failure to transfer org.apache.maven:maven-parent" about Maven
查看>>
Lucene5学习之使用MMSeg4j分词器
查看>>
跟益达学Solr5之使用Jetty部署Solr
查看>>
跟益达学Solr5之玩转post.jar
查看>>
跟益达学Solr5之core.properties配置详解
查看>>
跟益达学Solr5之solrconfig.xml配置详解
查看>>
跟益达学Solr5之Schema.xml详解
查看>>
跟益达学Solr5之使用Tika从PDF中提取数据导入索引
查看>>
跟益达学Solr5之索引文件夹下所有文件
查看>>
跟益达学Solr5之增量索引MySQL数据库表数据
查看>>
跟益达学Solr5之批量索引JSON数据
查看>>
关于Volatile关键字的一点个人理解
查看>>