搜索
查看
编辑修改
首页
UNITY
NODEJS
PYTHON
AI
GIT
PHP
GO
CEF3
JAVA
HTML
CSS
搜索
繁依Fanyi0
这个屌丝很懒,什么也没留下!
关注作者
热门标签
jquery
HTML
CSS
PHP
ASP
PYTHON
GO
AI
C
C++
C#
PHOTOSHOP
UNITY
iOS
android
vue
xml
爬虫
SEO
LINUX
WINDOWS
JAVA
MFC
CEF3
CAD
NODEJS
GIT
Pyppeteer
article
热门文章
1
深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)_yolov5s和yolov5x差别是什么
2
【算法】常用的排序算法简介:冒泡、选择、插入、归并、快速_冒泡排序、选择排序、插入排序、快速排序区别
3
Maven下载依赖踩坑:Could not transfer artifact org.springframework.bootspring-boot-starter-parent
4
双向SSM: Vision Mamba Encoder_vision mamba代码
5
Linux:终端输出保存为txt文件并保持终端输出_linux zhongduan baocun txt
6
2023年湖北工程师职称评审条件,伴德诚
7
终端安全管理防护的措施之一_有效防止用户非授权登录用户终端保证终端系统及数据安全
8
认识python教案_python课程教案
9
深入理解人工智能(Artificial Intelligence,AI)_传统软件与人工智能区别
10
麦肯锡七步成诗法
当前位置:
article
> 正文
量子化信息素蚁群优化特征选择算法_蚁群算法特征选择
作者:繁依Fanyi0 | 2024-05-16 00:01:00
赞
踩
蚁群算法特征选择
近年来,许多涉及信息的领域中产生了包含众
多特征的高维数据,然而并不是所有特征都是重要
的。许多特征甚至是不相关或冗余的,这不仅使数
据处理过程变得困难,还降低了学习算法的效率,
如分类算法等学习算法的性能
[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
进行特征选择问题
的求解,将是下一步重点研究的内容。
声明:
本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:
https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/575604
推荐阅读
article
MySQL:
redo
log
buffer
...
什么是
redo
log
buffer
我们平时执行完增删改之后,要写入磁盘的
redo
log,其实应该是先进入
redo
l...
赞
踩
article
【
WEB3
】如何使用
Web3J
库开发应用连接到
以太
坊
区块链网络_
android
web3j
...
Web3j 是一个与
以太
坊
智能合约交互并与
以太
坊
节点集成的 Java 库。它是高度模块化、类型安全和反应式的,专为
以太
坊
...
赞
踩
article
iphone
苹果
IOS
越狱
详细图文保姆级教程
非常简单
_苹果
uncover
打不开
...
现在随着各个工具的升级,
越狱
的难度也是越来越低,还记得
iphone
4 的时候我
越狱
还是花钱请别人搞得,现在只要你的机...
赞
踩
article
H5 移动端
识别
二维码
或
条形码
_
h5
识别
条形码
...
移动端实现扫一扫,对
二维码
或者
条形码
进行
识别
_
h5
识别
条形码
h5
识别
条形码
移动端实现扫一扫,对...
赞
踩
article
【笔记】
Android
平台
下的
JNI
开发
_
android
jni
开发
...
【笔记】
Android
平台
下的
JNI
开发
(2012-03-14 11:26:06)转载▼标签:andorid
jni
cec...
赞
踩
article
如何
查看
端口
号
是否被
占用
_
查看
端口
占用
情况...
所谓的
端口
,就好像是门牌号一样,客户端可以通过ip地址找到对应的服务器端,但是服务器端是有很多
端口
的,每个应用程序对应一...
赞
踩
article
Spring
boot
入门教程
-
AOP
详细介绍及使用_spring
boot
aop
...
毕竟工作也这么久了 ,除了途虎一轮,也七七八八面试了不少大厂,像阿里、饿了么、美团、滴滴这些面试过程就不一一写在这篇文章...
赞
踩
article
【基于
LSTM
的
电商
评论
情感分析:
Flask
与
Sklearn
的完美结合】...
在当今数字化时代,
电商
平台上涌现出大量的用户
评论
数据。本文将介绍一种基于长短时记忆网络(
LSTM
)的
电商
评论
情感分析方法...
赞
踩
article
企业
管理
Mac
电脑
的
三种方式_
mac
多台环境统一...
2015-08-07 来源:techtarget虽然
Mac
电脑
很少见,但也成功走入IT
企业
。IT必须找出与现有Wind...
赞
踩
article
【
Go
lang
】一篇文章带你快速了解
Go
语言
&
为什么
你要
学习
Go
语言
_
go
语言
...
Go
语言
(或
Go
lang
)起源于 2007 年,并在 2009 年正式对外发布。
Go
是非常年轻的一门
语言
,它的主要目...
赞
踩
article
【保姆级教程】
Mac
卸载
JDK8
、安装
JDK11
_
mac
下载
jdk11
...
【2023保姆级教程】
Mac
安装新版本JDK,卸载旧JDK_
mac
下载
jdk11
mac
下载
jdk11
...
赞
踩
article
navicat
连接腾讯云轻
应用服务器
docker
启动
mysql
失败经验_启动
mysql
.servic...
1.
docker
pull
mysql
:5.72.运行
mysql
命令:
docker
run--name
mysql
-p330...
赞
踩
article
js
扫描
(上传)图片解析
二维码
_
error
decoding
qr
code
...
getUserMedia.访问摄像头(
扫描
以及上传图片)解析
二维码
1.核心准备工作话不多说先上效果图:1.核心准备工作_...
赞
踩
article
Mac
OS
加入
域...
公司开始用
Mac
OS作为办公的系统,开始学习
Mac
。关于这个
加入
域的问题,小小研究了下。需要用到 Directory ...
赞
踩
article
基于
SpringBoot
+
mysql
实现
一个
简单的
增删
改查_
idea
创建
springboot
项目并配...
使用
SpringBoot
+
mysql
去实现
一个
简单的
增删
改查_
idea
创建
springboot
项目并配置
mysql
完成增...
赞
踩
article
Linux
系统
/
var
/
log
/
journal
/ 垃圾日志清理_
var
log
journal
...
CentOS
系统
中有两个日志服务,分别是传统的 rsys
log
和 systemd-
journal
systemd-jou...
赞
踩
article
Docker
(一)_
web
pulling
失败
...
Docker
文章目录
Docker
一. 容器化技术1. 历史演变2.
Docker
优势二.
Docker
简介1. cs架构...
赞
踩
article
spring
-创建Web
service
服务_
spring
web
service
...
web
service
_
spring
web
service
spring
web
service
...
赞
踩
article
6
天
玩转
mysql
_六天带你
玩转
MySQL
...
教程列表:01数据库课程介绍02数据库(基础知识)03数据库(关系型数据库)04数据库(关系型数据库关键字说明)05数据...
赞
踩
article
Java
源码
--
JDK
1.8
HashMap
重点源码部分剖析_
为什么
如果是红
黑
树
,直接在
树
中插入...
注:感谢 美团点评技术团队 的分享~~,博客部分内容摘抄自其中。侵删!今天我们来探究一下
HashMap
的内部实现机制...
赞
踩
相关标签
mysql
数据库
database
区块链
web3
以太坊
ios
iphone
vue.js
前端
javascript
服务器
p2p
asp.net
spring boot
java
后端
lstm
flask
sklearn
企业
Apple
企业设备管理
Casper Suite