近年来,许多涉及信息的领域中产生了包含众
多特征的高维数据,然而并不是所有特征都是重要
的。许多特征甚至是不相关或冗余的,这不仅使数
据处理过程变得困难,还降低了学习算法的效率,
如分类算法等学习算法的性能[1]。特征选择旨在利
用一种选择策略,消除不相关和冗余的特征,找到
最佳特征子集[2]。
根据选择策略的不同,特征选择方法可以分为
三类:过滤式方法、包裹式方法和嵌入式方法[3]。
过滤式:过滤式方法不依赖于任何的学习算法。
它们依靠训练数据的一般特性(如类间距离或统计
依赖关系)来选择特征[4]。这种方法具有很高的计
算效率。然而过滤式方法由于缺少具体的学习算法
指导特征选择阶段,选择出来的特征对于目标学习
算法而言可能并不是最优的。
包裹式:不同于过滤式方法,包裹式方法在评
价特征子集时,会检测特征变量间可能的相互作用
[5]。此外,包裹式方法在评价特征子集时会根据不
同的问题选择不同的学习模型,因此,这种方法对
于某种学习模型往往更容易找到好的结果。
嵌入式:嵌入式方法将学习算法与特征选择部
分进行结合,这类方法所考虑的函数模型的结构在
其中起重要作用[6]。但是对于嵌入式方法而言,建
立合适的函数优化模型往往是一项艰巨的任务[7]。
特征选择是一个复杂的问题,对于一个有 n 个
特征的数据集,可能的解决方案的总数是 2n-1[8],
其搜索空间十分庞大。因此,用穷举搜索选择一组
最优特征的时间复杂度是 O(2n) [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)上的信息素;ηix, jy 反映了边
缘(ix,jy)可取性的启发式信息;α 和
β 是确定信息素值和启发信息的两个参
数。
(7) q 为信息素模拟消失常量, old τ 为原来的
信息素值, new τ 为更新后的信息素值,
τ 为信息素变化量。
(8) dead τ 为在该次迭代中生命周期结束的信
息素量,其余符号意同公式(7)。
(9)
∑∆
m
τ 为该条路径上所有的蚂蚁所留下
的信息素总和, kτ 为该条路径在本次
迭代(k 次迭代)时的更新量, k -cntτ
cnt 次迭代前该条路径上的信息素更新
量,需注意这三者间的区分。cnt 变量即
为我们最初所说的信息素单元的生命周
期。
(10)
c 是类别的数目,N 是特征的数目; k Ni
k(k=1,2,…,C)类中的特征 i(i=1,
2,…,n)的样本数;
k
ij x
是 k 类中的特
征 i 的 j(j=1,2,…, k Ni )次训练样本;
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]和 ABACOH [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)如下(公式
其中,TPi 是第 i 类下正确分类的测试样本数;
FPi 第 i 类下错误分类的测试样本数;TNi 是在其
他类别下正确分类的测试样本数;FNi 是在其他类
别下错误分类的测试样本数。
定义维度缩减率(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.4784 总 结
本文提出了基于传统蚁群算法和二进制蚁群
算法的量子化蚁群特征选择算法 QPACO。QPACO
中将信息素量子化,赋予每个信息素单独的生命周
期,同时修改了启发式因子的更新方式,增强了算
法的搜索能力。经过 11 个数据集和 12 个特征选择
算法的对比实验,验证了 QPACO 良好的性能。如
何在高维数据集中应用 QPACO 进行特征选择问题
的求解,将是下一步重点研究的内容。

量子化信息素蚁群优化特征选择算法相关推荐

  1. 蚁群优化(ACO)算法与变种

    ACO与变种(参考资料) ACO算法 基本原理 ​ 蚁群算法(Ant Colony Optimization,ACO)是一种基于种群寻优的启发式搜索算法,有意大利学者M.Dorigo等人[6]于199 ...

  2. 【配送路径规划】基于matlab蚁群优化节约算法单中心多城市配送车辆路径规划【含Matlab源码 017期】

    一.VRP简介 1 VRP基本原理 车辆路径规划问题(Vehicle Routing Problem,VRP)是运筹学里重要的研究问题之一.VRP关注有一个供货商与K个销售点的路径规划的情况,可以简述 ...

  3. 基于蚁群优化算法的特征选择相关文献

    Dorigo等人在20世纪90年代初提出了蚁群优化算法(Ant colony optimization ,ACO).ACO是一种元启发式群智能算法,旨在解决组合优化问题.它利用了真实蚂蚁的觅食行为,由 ...

  4. 【优秀作业】蚁群优化算法

    蚁群优化算法 一.概述 生物学家发现,自然界中的蚁群觅食是一种群体性行为,并非单只蚂蚁自行寻找食物源.蚂蚁在寻找食物源时,会在其经过的路径上释放一种信息素,并能够感知其它蚂蚁释放的信息素.信息素浓度的 ...

  5. 揽货最短路径解决方案算法 - C# 蚁群优化算法实现

    需求为(自己编的,非实际项目): 某配送中心进行揽货,目标客户数为50个客户,配送中心目前的运力资源如下: 现有车辆5台 单台运力最大行驶距离200千米 单台运力最大载重公斤1吨 问:运力怎样走法才能 ...

  6. 蚁群优化算法 ACO

    群体智能(swarm intelligence) 定义: 由单个复杂个体完成的任务可由大量简单个体组成的群体合作完成,而后者往往更具有健壮性.灵活性等优势.在没有集中控制,不提供全局模型的前提下,为寻 ...

  7. 蚁群优化算法(ACO)

    背景知识 蚁群优化算法是Marco Dorigo 受到蚂蚁寻找食物发现路径的行为启发,在博士论文提出的算法,是一种用来寻找优化路径的概率型算法,刚开始是为了解决 TSP(旅行商问题) ,即旅行家要旅行 ...

  8. 蚁群优化算法(ACO)详细介绍

    今年有幸上岸,导师是做群体智能控制方向的,会涉及到一些算法,所以提前学习 今天早上看到了一个中科院的群体智能视频https://www.bilibili.com/video/BV1KZ4y137sX/ ...

  9. Python实现ACO蚁群优化算法优化支持向量机回归模型(SVR算法)项目实战

    说明:这是一个机器学习实战项目(附带数据+代码+文档+视频讲解),如需数据+代码+文档+视频讲解可以直接到文章最后获取. 1.项目背景 蚁群优化算法(Ant Colony Optimization, ...

  10. m基于ACO蚁群优化的FCM模糊聚类算法matlab仿真

    目录 1.算法概述 2.仿真效果预览 3.核心MATLAB程序 4.完整MATLAB程序 1.算法概述 蚁群算法是通过对自然界中真实蚂蚁的集体行为的观察,模拟而得到一种仿生优化算法,它具有很好的并行性 ...

最新文章

  1. Go 学习笔记(40)— Go 标准库之 log
  2. PAT(甲级)2019年春季考试 7-3 Telefraud Detection
  3. python自定义函数参数_python自定义函数的参数之四种表现形式
  4. 飞秋2010下载企业信息化办公
  5. KP-ABE基于属性的加密加解密算法及Access Tree构建
  6. 云图说|图解DGC:基于华为智能数据湖解决方案的一体化数据治理平台
  7. 开机先看广告!智能电视这流氓操作被整治,这家厂商败诉
  8. python 下载文件-Python实现批量下载文件
  9. 电子科技大学计算机课程表,电子科技大学课表.doc
  10. ORM正向和反向查询
  11. 全国资格考试网报平台证件照片审核处理系统报错:打开照片文件类型还是JPG或JPEG格式,请选择JPG或JPEG格式照片文件。
  12. 多级联动下拉菜单 支持中英文检索
  13. Python-pandas对excel筛选(分组)查询
  14. 搜题公众号题库对接教程
  15. 微信第三方平台授权时域名问题
  16. 再见,马云!再见,世界首富!
  17. java中echat如何动态_ECharts Java 动态加载数据,echartsjava
  18. python生成多级文件夹_利用 python 遍历多级文件夹处理不同文件
  19. 01.swagger
  20. python使用ctypes调用c/c++函数

热门文章

  1. Android Palette吸色原理及源码解析
  2. linux安装lrzsz工具
  3. POP3邮件客户端程序
  4. 学习【新版的】韦东山嵌入式_day01
  5. 迟到的秋招经验分享贴,希望能帮到大家
  6. 流畅接口(Fluent Interface)
  7. 笨方法学python --习题12
  8. java基础知识总结
  9. java 浏览器 爬虫_[Java教程]在浏览器客户端进行爬虫开发
  10. 短视频APP测试要点