1、基于改进量子进化算法的特征选择 周丹 吴春明 浙江大学计算机系统结构研究所 台州职业技术学院电信学院 摘 要: 特征选择作为一种数据预处理技术被广泛研究, 由于其具有 NP 难度而一直无法找到有效的求解方法。鉴于目前在特征选择中应用较多的遗传算法存在进化机制上的局限, 将量子进化算法应用于特征选择, 提出了一种基于改进量子进化算法的特征选择算法。以增加种群多样性和提高寻优性能为目标改进了量子进化算法, 以 Fisher 比和特征维度为特征子集的评价准则构造了适应度函数, 按照量子进化算法求解优化问题的步骤设计了特征选择算法。使用 UCI 数据库中的数据集对三种算法作对比验证, 通过识别重要特征
2、、提高学习算法性能、特征选择效率三组实验, 结果表明, 该算法能够识别出重要特征, 并随着数据集特征维度升高, 特征选择的性能逐渐优于对比算法, 到了高维数据集, 特征选择效率明显优于对比算法。关键词: 特征选择; 量子进化算法; 遗传算法; 特征子集; 特征维度; 作者简介:周丹 (1980) , 女, 高级工程师, 讲师, 研究领域为系统安全、云计算、可重构网络技术, E-mail:。收稿日期:2017-04-01基金:国家高技术研究发展计划 (863) (No.2015AA015602) Feature selection based on improved quantum evolut
3、ionary algorithmZHOU Dan WU Chunming Institute of Computer System Architecture, Zhejiang University; Abstract: Feature selection is widely studied as a data preprocessing technology because it has the NP difficulty and an effective solution has not been found. Since the genetic algorithm which appli
4、es most in feature selection at present has the limit in evolutionism, Quantum Evolutionary Algorithm (QEA) is applied to feature selection, and a feature selection algorithm based on improved QEA is put forward. Firstly, QEA is improved in order to enhance its optimization performance and increase
5、its population diversity. Then, the fitness function is constructed according to the evaluation criteria of feature subset based on the Fisher ratio and the feature dimensionality. Lastly, a feature selection algorithm is designed in the light of the steps to solve the optimization problem by QEA. U
6、se data in UCI data base to make comparison validation experiments to 3 algorithms, such as identify important features, improve learning algorithm performance, and feature selection efficiency. The experimental results show that the algorithm can identify important features, and with the going up o
7、f the data set feature dimension, the performance of feature selection is gradually better than contrast algorithm; when it comes to high dimensional data set, feature selection efficiency is obviously better than the contrast algorithm.Keyword: feature selection; Quantum Evolutionary Algorithm (QEA
8、) ; Genetic Algorithm; feature subset; feature dimension; Received: 2017-04-011 引言特征选择作为机器学习和数据挖掘领域中的数据预处理技术而被广泛研究。在机器学习和数据挖掘过程中, 处理的数据集由于包含大量的冗余特征和噪声特征而影响了学习算法的性能。特征选择的目的就是剔除冗余特征和噪声特征, 从原始特征集合中搜索有效特征构成特征子集, 降低学习算法的时间和空间复杂度1。特征选择已被证明是具有 NP 难度的组合优化问题, 没有多项式算法可以精确求解, 因此人们致力于使用启发式搜索算法来求得最优解。遗传算法作为一种典型的
9、启发式搜索算法在特征选择研究中已取得一些标志性成果, Siedlecki 等人率先将遗传算法应用于大规模数据集的特征选择, 开启了基于遗传算法的特征选择研究之门2;Majid 等人使用过滤式特征选择技术, 将遗传算法应用于卫星降水估计的特征选择中3;王利琴等人在遗传算法中引入了存优去劣扩空间选择算子和拼接切断算子后, 应用到特征选择中4;这些特征选择研究, 在他们各自设定的条件范围内都取得了比较好的效果, 但是遗传算法始终要受到进化机制的限制, 反映在优化问题中就是收敛速度慢, 易出现停滞或收敛于局部最优。2002 年 Han 和 Kim 将量子计算引入进化算法, 提出了量子进化算法 (Qua
10、ntum Evolutionary Algorithm, QEA) , 并通过求解小规模背包问题证明其寻优能力和寻优速度均优于进化算法5。之后, QEA 迅速被深入研究和广泛应用, 根据进化算法的框架, QEA 在研究发展中也分为了量子遗传、量子进化规划、量子进化策略三类算法。鉴于遗传算法的进化机制缺陷, 一些研究者尝试将 QEA 应用到特征选择中, 利用 QEA 的寻优性能来获取最优特征子集, 目前这方面的研究文献比较少, 主要集中在国内的研究, 如:文献6以 QEA 为优化搜索策略, 基于邻域粗糙集理论定义适应度函数, 提出了一种新的表情特征选择方法, 对选自 Cohn-Kanade 人脸
11、表情库中的 405 个样本进行特征选择实验, 表明该方法能有效地选出有利于表情分类的特征;文献7提出了一种眼动数据指导下的基于 QEA 的图像特征选择算法, 首先在感兴趣的区域中粗选出图像的 75 个底层特征, 然后对底层特征做进一步选择, 对选自 Hemera 图库中的 100 幅图片进行特征选择实验, 表明该算法能够较好地提取出符合人眼识别机制的特征组合;文献8提出了一种基于 QEA 的轴向柱塞泵故障特征选择方法, 使用该方法对轴向柱塞泵正常、缸体与配流盘磨损、柱塞滑履松动三种状态的特征集进行选择, 使用神经网络分类器对特征子集进行验证表明, 与遗传算法相比, QEA 能够更有效地减少特征
12、维数, 提高分类正确率和分类效率。量子进化算法是量子计算与进化算法相结合的一种新的智能优化算法, 使用量子位编码表示染色体, 通过量子门更新染色体, QEA 这种独特的编码和进化机制, 使其在组合优化问题的求解中表现出良好的性能5-9。但是, 随着 QEA 应用研究的深入, 研究者发现, 对于具有 NP 难度的复杂优化问题, QEA 的求解性能仍然不够理想, 主要表现为进化过程中种群多样性缺失和早熟问题10-11。自从 QEA 的提出者 Han 等在 2004 年改进了 QEA 提高了算法优化性能后, 对 QEA的改进研究就从未停止过, 改进 QEA 是目前使用 QEA 求解复杂优化问题的基本
13、策略。基于上述研究背景, 本文将 QEA 应用于特征选择, 首先对 QEA 进行改进提高其优化性能, 然后给出一种基于改进 QEA 的特征选择算法。2 相关研究工作2.1 特征选择策略Dash 和 Liu 总结了前人研究, 对大量的特征选择方法进行分析后在 1997 年提出了一个特征选择技术框架12, 成为后来人们研究特征选择问题的通用框架, 包括特征搜索和特征子集评价两项关键技术, 如图 1 所示。本文也是在该框架基础上展开研究的, 采用量子进化算法作为特征搜索策略, 以 Fisher 比准则作为特征子集评价策略。图 1 特征选择技术框架 下载原图2.2 特征子集模型设数据集 D 中的数据对
14、象包含 m 个特征, 为了方便后续特征选择算法编码, 本文给特征子集建立模型如下:特征集合表示为 F=f1, f2, , fm, 用一个二进制字符串来表示它的一个特征子集, 表示为 S= (s1, s2, , sm) , si0, 1, i=1, 2, , m, si=1 表示包含 F 中的第 i 个特征, 即 fi被选择;s i=0 表示不包含 F 中的第 i 个特征, 即 fi不被选择。此时, 可以将特征选择问题转化为优化问题:S best=Sma FxG (S) , G () 为特征子集的评价函数。2.3 量子进化算法改进现有文献对 QEA 的改进主要集中在两方面:一是改进染色体的编码方
15、式, 达到维持种群多样性的目的13-14;二是改进染色体更新策略, 达到提高搜索性能, 防止陷入早熟的目的15-16。这些改进策略在增加了种群多样性和提高了优化性能的同时, 也带来了一些弊端:染色体编码复杂度大大增加, 其编码和解码的开销也相应增加了17;量子门旋转角调整时引入的初始旋转角, 缺乏理论上的指导值, 增加了算法的不稳定性18。本文也以增加种群多样性和提高优化性能为目标改进 QEA, 避开复杂的染色体编码方式, 通过改进 QEA 的种群初始化和种群观测方式来维持种群的多样性, 设计一种简单易理解的动态变步长旋转角调整策略来提高搜索性能, 防止早熟。2.3.1 种群初始化改进策略2.
16、3.2 种群观测改进策略种群观测是对初始化种群及各代更新后种群 中个体的各量子位实施测量操作, 目的是使个体的各量子位从不稳定的叠加态坍塌到稳定的基态, 获得观测态种群 P (t) 。2.3.3 种群进化改进策略种群进化是 QEA 寻优的驱动机制, 通过染色体的更新来实现, 通常使用式 (2) 的量子旋转门通过式 (3) 更新量子位来实现染色体更新操作。其中, 为旋转角度。其中, i, i为更新染色体第 i 个量子位的概率幅, i, i为更新后染色体第 i 个量子位的概率幅。 i为更新第 i 个量子位时的旋转角, 式由 (4) 进行调整。其中, i为旋转角的大小, s ( i i) 表示旋转角
17、的方向。更新过程中旋转角的调整是关键, 直接影响着算法的性能。基本 QEA 中 i的值通过查表方式获得, 表中给出的 i值是固定、静态的, 而 s ( i i) 的值中判断条件复杂5。在复杂优化问题中, 这种有限、静态的旋转角大小调整方式, 容易使算法陷入局部收敛, 而判断旋转方向时涉及多路条件, 影响算法效率。据此, 本文提出一种动态变步长的 i的计算方式和简单易理解的s ( i i) 的旋转策略。(1) i计算方式的设计本文根据当前个体与最优个体的距离来设计搜索步长, 其基本思想是当当前个体与最优个体差异比较大时, 则加大旋转角度, 实现粗搜索, 以提高算法的寻优速度;当当前个体与最优个体
18、比较接近时, 则缩小旋转角度, 实现精细搜索, 以防止算法陷入局部收敛, 结合旋转角的区间值, 设计如下计算公式:其中, min为旋转角区间的最小值 0.001, max为旋转角区间的最大值0.05;a 为当前个体的观测态, b 为当前最优个体的观测态;Ham_Dist (a, b) 为个体 a 与个体 b 的汉明距离, 即两个二进制字符串对应位的值不同的个数;m为个体的长度, 即染色体的位数。在算法运行初期, 个体之间的差异较大, 此时当前个体与最优个体之间的差异也较大。Ham_Dist (a, b) 的值可接近于 m, 由式 (6) 可知 的值可接近于 1, 由式 (5) 可得 i的值可接
19、近于 max, 这种大幅度调整有利于使当前解迅速逼近最优解;随着种群在最优个体的指导下逐代进化, 个体之间的差异逐步缩小, 由式 (5) 、 (6) 可得 i的值也逐步减少, 到了算法运行后期, 个体之间的差异十分接近时, Ham_Dist (a, b) 的值可接近于 0, 此时 i的值可接近于 min, 这种精细幅度调整有利于对解空间进行充分搜索, 从而找到全局最优解。(2) s ( i i) 旋转策略的设计对于组合优化问题, 通常将量子位概率幅 、 简化为实数, 此时量子位可以映射为二维实空间上的单位向量, 如图 2 所示。更新量子位时, 使量子位发生偏转的目的是增大其取 0 或取 1 的
20、概率。假设当前个体的观测态为 a, 第 i 个量子位的观测值为 0;当前最优个体的观测态为 b, 第 i 个量子位的观测值为1;f (b) f (a) , 此时在更新当前个体的第 i 个量子位 ( i, i) 时就应该增大其取 1 的概率。由图 2 可知:如果 ( i, i) 处于第 1、3 象限, 即 i i0, 则旋转角应向逆时针方向旋转;如果 ( i, i) 处于第 2、4 象限, 即 i i0, 则旋转角应向顺时针方向旋转。据此, 设计了 s ( i i) 的旋转策略如表 1 所示。图 2 二维实空间中的量子位表示 下载原图表 1 s (ii) 旋转策略 下载原表 表 1 中, a i
21、为当前观测态个体的第 i 位, b i为当前最优观测态个体的第 i 位;f (a) 为当前个体的适应度值, f (b) 为当前最优个体的适应度值;-1 表示逆时针方向, +1 表示顺时针方向, 0 表示不需要旋转。2.4 改进的量子进化算法基于上述的改进策略, 提出了一种改进的量子进化算法 (IQEA) 。(1) IQEA 的流程根据基本量子进化算法 (QEA) 的流程, 结合本文的改进策略, 得到 IQEA 的流程如图 3 所示。图 3 IQEA 流程结构图 下载原图(2) IQEA 的计算复杂度分析由图 3 可知, 量子进化算法的计算复杂度取决于种群初始化、种群观测、适应度评价、个体更新这
22、几个步骤。适应度评价的计算复杂度由具体问题领域的适应度函数决定, 因此暂不在此处讨论。对于一个个体来说, IQEA 在种群初始化和种群观测上分别比 QEA 多了 O (1) 的时间复杂度, 但是在个体更新时, QEA要做 35 次的比较计算, 而 IQEA 只需要 1 次乘法、1 次除法和 1 次加法的计算, 加法、乘法、除法运算的时间开销要比比较运算少得多;另一方面, IQEA 由于采用了动态变步长的旋转角调整策略, i能够在0.001, 0.05的最佳范围内自适应调整, 使得更新个体能够迅速逼近最优个体, 因此在求解具体问题时, IQEA 的迭代次数会比 QEA 少得多, 即计算的次数要明
23、显减少, 算法的执行效率会得到显著提高。3 特征选择算法将 2.4 节中的 IQEA 应用于特征选择中, 提出了一种基于改进量子进化算法的特征选择算法 (FS-IQEA) 。3.1 算法设计根据 QEA 求解优化问题的步骤, 设计 FS-IQEA 过程如下。(1) 量子染色体构造及种群初始化根据 2.2 节构建的特征子集模型, FS-IQEA 使用 m 位量子位构成的量子染色体来编码一个特征子集, 由式 (7) 结构表示:其中, m 表示量子位的个数, 即量子染色体的长度; i、 i为对应量子位状态的概率幅, 且满足: | i|+| i|=1, | i|、| i|表示该量子位处于 0、1 基态
24、的概率, i=1, 2, , m。若干个式 (7) 结构的量子染色体就可以构成量子态种群 Q (t) :其中, t 表示进化代数。随机产生 n 个量子染色体构成初始种群, 然后按式 (1) 计算对种群进行初始化, 得到初始化种群。(2) 观测态种群生成按照 2.3 节提出的“2 次观测取优”策略对各代量子态种群 Q (t) 进行观测, 得到观测态种群 P (t) , P (t) =p1, p2, , pn, 其中观测态个体 pj (j=1, 2, , n) 是长度为 m 的二进制串 S, S= (s1, s2, , sm) , 代表一个特征子集。(3) 适应度函数设计本文使用基于距离度量准则的
25、 Fisher 比来设计特征子集的评价函数, FS-IQEA的适应度函数的设计过程如下。步骤 1 根据文献19中对单特征 Fisher 比的计算方法, 可推导出特征子集的Fisher 比计算公式, 即特征子集的评价函数:其中, n 表示样本总数, n j表示第 j 类样本的样本数, c 表示样本的类别数, k表示特征子集的特征数, x 表示样本 x 的第 i 个特征值, m j和 m 分别表示第 j类样本和所有样本的第 i 个特征的均值。步骤 2 采用指数比例变换方法将目标函数转换成适应度函数:其中, f 为个体对应的特征子集的评价函数, np 为个体对应的二进制串中“1”的数目。(4) 染色
26、体更新FS-IQEA 通过对个体进行逐代更新而使种群得到净化, 从而获得全局最优个体。使用式 (2) 的量子旋转门按照式 (3) 更新各染色体, 更新过程中, 旋转角的大小按照式 (5) 、 (6) 计算, 方向按照表 1 旋转。(5) 搜索停止设定FS-IQEA 的求解目标是在合理的时间内搜索到一个适应度值最大的特征子集, 即最优个体, 本文将最优个体定义为:连续 5 代进化中最优个体适应度值的变化小于给定的极小阀值 。当 FS-IQEA 获得这样的个体时, 就停止搜索, 对该个体进行解码输出。3.2 算法流程对 3.1 节的算法设计步骤进行整理, 得到 FS-IQEA 的流程如下。步骤 1
27、 染色体编码:使用量子态概率幅编码染色体, 并构造初始种群。步骤 2 种群初始化:对初始种群进行初始化操作, 获得初始化种群 Q (t) , 设置进化代数 t=0。步骤 3 种群观测:对 Q (t) 中的各个体进行测量, 获得观测态种群 P (t) 。步骤 4 种群评价:使用适应度函数计算 P (t) 中各个体的适应度值, 并记录当前适应度值最大的个体。步骤 5 终止条件判断:如果满足搜索停止条件, 则输出最优个体, 算法结束;否则转步骤 6。步骤 6 种群进化:使用量子旋转门更新 Q (t) 中的各个体, 获得新一代种群 Q (t) , t=t+1, 转步骤 3。4 实验与结果分析4.1 实
28、验方案为了测试 FS-IQEA 算法的有效性, 本文通过 3 组实验试图验证以下 3 个问题: (1) FS-IQEA 能否识别重要特征; (2) FS-IQEA 能否提高学习算法的分类性能; (3) FS-IQEA 能否快速选出特征子集。与文献4的基于改进遗传算法的特征选择算法 FS-IGA、基于基本量子进化算法的特征选择算法 FS-QEA 做对比验证。所有实验在同一台 PC 机上实施, 配置为:Intel Pentium G32203.00 GHz CPU, 4.00 GB 内存, Win7 x64 操作系统, 使用 Java 语言在 Eclipse Standard 开发工具中实现代码。
29、实验中, FS-IQEA 和 FS-QEA 的参数设置:种群大小为 50, 算法搜索停止阀值 为 0.01;FS-IGA 的参数设置:种群大小为 80, 变异概率为0.1, 其他参数参考文献4设置。4.2 实验过程与结果比较4.2.1 识别重要特征验证首先从 UCI 机器学习数据库20中选取 3 个低维度少样本数据集, 并根据先验知识获得 3 个数据集的重要特征, 如表 2 所示。然后在 3 个数据集上分别运行FS-IGA、FS-QEA、FS-IQEA 算法 30 次, 运行后分别获得 30 个特征子集, 取其交集作为评估结果, 实验统计结果如表 3 所示。表 2 第一组实验数据集及重要特征
30、下载原表 表 3 3 种算法在 3 个数据集上选择得到的重要特征 下载原表 表 3 数据表明, 3 种算法均能识别出重要特征, 观察表中数据可以发现 FS-QEA、FS-IQEA 选出的特征子集的准确率要略优于 FS-IGA。4.2.2 提高学习算法性能验证从 UCI 机器学习数据库中选取特征维度在 30100 之间的 8 个数据集, 数据集信息列于表 4 中。对数据集中的缺失特征值进行补充:对于连续型特征, 使用该特征现有值的平均值来填补;对于离散型特征, 使用该特征现有值的众数值来填补。表 4 第二组实验数据集 下载原表 为了避免单个学习算法的过拟合现象, 本组实验使用两种学习算法:决策树 (C4.5) 和贝叶斯 (NB) 来测试特征集的分类性能。首先使用特征选择算法对数据集进行特征选择获得特征子集, 然后以该数据集的全部特征及特征子集在 C4.5和 NB 上通过十折交叉验证方式进行分类测试。对每个数据集以随机打乱数据顺序方式测试 10 次, 以 10 次测试的平均分类准确率作为评估结果。实验统计结果如表 5、表 6 所示。表 5 全部特征及各算法得到的特征子集在 C4.5 上的分类准确率 下载原表 表 6 全部特征及各算法得到的特征子集在 NB 上的分类准确率 下载原表