近年来, 随着信息技术的飞速发展, 现实生活中出现了非常多具有大量特征的数据集, 从而引发了高维数据的处理问题. 高维数据的处理方法可以分为特征提取和特征选择[1], 其中, 特征选择的主要目的是从原始特征集中选择出使得评估指标最佳的特征子集. 特征选择保留了数据的原始特征, 具有良好的可解释性, 因此得到了广泛应用.
特征选择本质上是一个组合优化问题, 因此, 很多学者利用各类智能优化算法来解决特征选择问题. Hancer等[2]提出了一种基于改进蜂群算法的特征选择方法, 该方法将遗传算子和非支配排序过程引入到蜂群算法并应用到特征选择中. Mashhour等[3]提出了一种基于萤火虫算法和卡方的特征选择方法, 该方法通过用每次移动后改变的细胞卡方值模拟萤火虫位置, 并通过计算一组不同的适应度函数作为特征权重来模拟萤火虫强度进而应用到特征选择中. 孙林等[4]提出了一种基于改进帝王蝶优化算法的特征选择方法, 该方法使用差分进化算法中的变异操作替换帝王蝶算法的迁移算子, 其次融入了自适应调整策略, 对每次种群进行柯西变异, 然后引入KNN分类器构造适应度函数, 最终获得最优特征子集.
作为一种处理不确定性的有效工具, 粗糙集理论[5, 6]在特征选择方面也可以发挥重要的作用. 很多学者利用粗糙集理论来进行特征选择. 王锋等[7]提出了一种组增量式的粗糙特征选择算法. 江峰等[8]利用粗糙集的近似精度来定义近似决策熵, 并提出了一种基于近似决策熵的特征选择算法. 董红斌等[9]提出了一种基于关联信息熵的特征选择算法. 王鹏等[10]提出了一种基于改进模糊决策粗糙集的最小化决策代价特征选择算法. 然而, 基于粗糙集的特征选择方法还存在计算效率低、性能难以满足要求等问题. 针对这些问题, 有不少学者将粗糙集理论与智能优化算法结合在一起来进行特征选择的相关研究, 从而可以有效发挥这两类方法各自的优势. Tawhid等[11]提出了基于粗糙集与二进制鲸鱼优化的特征选择算法. Azar等[12]提出了一种基于粗糙集和灰狼算法的特征选择方法. Chen等[13]将鱼群算法与粗糙集结合在一起来进行特征选择. 高薇等[14]提出了一种基于粗糙集与人工蜂群算法的动态特征选择方法.
人工蜂群(artificial bee colony, ABC)算法作为一种经典的群智能优化算法已被广泛应用于特征选择问题. 人工蜂群算法是由土耳其教授Karaboga等[15, 16]受蜜蜂蜂群采蜜机制的启发而提出的. 该算法运算简单、具有较好的探索能力且参数较少, 因此引起了大量的关注. 但是, 收敛速度较慢、容易陷入局部最优等仍然是该算法在实际应用中面临的问题.
针对人工蜂群算法的不足, 本文将粗糙集理论[6]引入到人工蜂群算法中, 并由此提出一种基于粒度粗糙熵与改进蜂群算法的特征选择算法FS_GREIABC. FS_GREIABC算法的主要思路如下: 首先, 针对人工蜂群算法中的适应度函数构建问题, 将粗糙集中的知识粒度与粗糙熵有机地结合在一起, 从而得到一种新的信息熵模型——粒度粗糙熵. 粒度粗糙熵中采用到的粗糙熵能够有效度量知识的完备性, 但却不能有效度量知识的粒度大小, 而知识粒度可以度量知识的粒度大小, 两者有机地结合起来能够更加全面地对信息表中的属性进行度量, 为后续的特征选择提供了一种更加全面的度量机制; 其次, 人工蜂群算法的关键步骤之一就是如何为算法选择一个合适的适应度函数, 我们提出了一种基于粒度粗糙熵的适应度函数, 针对特征选择中两个相互冲突的目标是必须完成所选特征的最小数目和最大的分类精度, 我们利用粒度粗糙熵来构造适应度函数能够更好地对特征子集进行评估; 第三, 为了提高人工蜂群算法的局部搜索能力, 考虑到云模型具有稳定性和随机性等优势[17, 18], 因此, 将云模型引入到跟随蜂阶段, 并采用一维正态云模型来调整局部搜索范围, 以增强算法的局部开采能力, 提高蜂群算法的鲁棒性和收敛速度.
本文的主要贡献如下: (1)提出了一种新的信息熵模型——粒度粗糙熵. 粒度粗糙熵将粗糙集中的知识粒度与粗糙熵这两个基本概念结合在一起, 既考虑了知识的不完备性, 又刻画了知识的粒度大小, 是一种更加全面的不确定性度量机制. (2)提出了一种基于粒度粗糙熵的适应度函数, 通过粒度粗糙熵来计算每只蜜蜂的适应度值, 从而为人工蜂群算法提供一种新的适应度计算策略. (3)为了提高ABC算法的局部搜索能力, 将云模型引入到人工蜂群算法的跟随蜂阶段, 采用一维正态云模型来改进跟随蜂阶段的搜索策略.
1 相关技术介绍 1.1 粗糙集的相关概念在粗糙集中, 信息表[6]是一个四元组
给定一个信息表
$ IND(B) = \{ (x, y) \in U \times U:f(x, a) = f(y, a), \forall a \in B\} $ |
其中,
定义1. 知识粒度[19]. 给定一个信息表
$ GK(B) = \frac{{\displaystyle\sum\limits_{i = 1}^t {|{X_i}{|^2}} }}{{|U{|^2}}} $ |
其中, 对任意
可以证明, 对任意
定义2. 粗糙熵[20]. 给定一个信息表
$ {E_r}(B) = - \sum\limits_{i = 1}^t {\frac{{|{X_i}|}}{{|U|}}{{\log }_2}\frac{1}{{|{X_i}|}}} $ | (1) |
可以证明, 对任意
传统的人工蜂群算法的具体步骤如下.
① 初始化种群. 假设随机产生N个初始解, 并且
$ {X_{i, j}} = {X_{\min , j}} + Rand(0, 1) \times ({X_{\max , j}} - {X_{\min , j}}) $ | (2) |
其中,
② 计算适应度. 蜂群将位置替换为适应度最优的位置. 雇佣蜂使用目标函数来评估每个解
$ fi{t_i} = \left\{ {\begin{array}{*{20}{l}} {\dfrac{1}{{1 + {f_i}}}, {f_i} \geqslant 0} \\ {1 + {\rm{abs}}({f_i}), {f_i} \lt 0} \end{array}} \right. $ | (3) |
其中,
③ 雇佣蜂(引领蜂)搜索. 雇佣蜂对食物源进行领域搜索, 产生候选解, 并计算候选解的适应度值. 具体而言, 雇佣蜂基于贪婪策略来选择食物源, 保留适应度最高的食物源. 根据当前的解
$ {V_{i, j}} = {X_{i, j}} + {r_{i, j}}({X_{i, j}} - {X_{k, j}}) $ | (4) |
其中,
④ 跟随蜂阶段. 在传统的人工蜂群算法中, 跟随蜂采用轮盘赌的方式(即按照一定的概率
$ {p_i} = \frac{{fi{t_i}}}{{\displaystyle\sum\limits_{i = 1}^{N/2} {fi{t_i}} }} $ | (5) |
其中,
由式(6)可知, 选择概率
$ {p_i} = \frac{{1/fi{t_i}}}{{\displaystyle\sum\limits_{i = 1}^N {(1/fi{t_i})} }} $ | (6) |
⑤ 侦查蜂阶段. 侦查蜂基于概率
$ pro{b_i} = \frac{{0.9 \times fi{t_i}}}{{max \_fit}} + 0.1 $ | (7) |
其中,
云模型是李德毅院士等所提出的一种表示某个定性概念
一维正态云算子
① 生成以
② 生成以
③ 计算
人工蜂群算法的跟随蜂在搜索新的食物源时, 不够稳定且随机性较大, 当搜索次数迭代到一定的数目后, 便由于很难提高蜜源寻优的能力而陷入局部最优, 降低了算法的求解精度. 由于云模型具有稳定倾向性和随机性等优势, 本文运用正态云模型对跟随峰的搜索方式进行改进, 以提高算法的局部开采能力, 从而改善ABC算法求解精度低、收敛速度慢的缺点, 提高ABC算法的鲁棒性和收敛速度. 我们利用一维正态云模型
$\left\{ { \begin{split} & Ex = {x_{ij}} \\ & En = - ({X_{\max , j}} - {X_{\min , j}})(iter/iter\_max {)^2} + {X_{\max , j}} \\ & He = En/10 \end{split} } \right.$ | (8) |
其中,
人工蜂群算法的一个关键环节就是适应度的计算, 我们有必要为该算法选择一个合适的适应度函数. 本节将在文献[18]中所提出的粗糙熵模型基础上, 进一步提出一种新的信息熵模型——粒度粗糙熵, 并利用粒度粗糙熵来构建人工蜂群算法的适应度函数. 粒度粗糙熵不仅能够刻画出知识的粒度大小, 而且还可以对知识的不完备性进行度量, 因此, 它非常适合于为人工蜂群算法构建适应度函数.
下面, 我们首先给出粒度粗糙熵的具体定义, 并对粒度粗糙熵的基本性质进行分析, 最后将粒度粗糙熵应用于人工蜂群算法的适应度计算中.
定义3. 粒度粗糙熵. 给定一个信息表
$ GK{E_r}(B) = GK(B) \times {E_r}(B) $ | (9) |
其中,
从定义3可以看出, 粒度粗糙熵将知识粒度和粗糙熵有机地结合在一起, 既考虑了知识的不完备性, 又刻画了知识的粒度大小, 从而得到了一种更加全面的不确定性度量机制.
下面, 给出粒度粗糙熵的一些基本性质.
定理1. 给定一个信息表
1)
2)当
3)当
证明:
1)当
$\left\{ { \begin{split} &GK(B) = \frac{{\displaystyle\sum\limits_{i = 1}^t {|{X_i}{|^2}} }}{{|U{|^2}}} = \frac{{\displaystyle\sum\limits_{i = 1}^{|U|} {{1^2}} }}{{|U{|^2}}} = \frac{{|U|}}{{|U{|^2}}} = \frac{1}{{|U|}}\\ &{E_r}(B) = - \sum\limits_{i = 1}^t {\frac{{|{X_i}|}}{{|U|}}{{\log }_2}\frac{1}{{|{X_i}|}}} = - \displaystyle\sum\limits_{i = 1}^{|U|} {\frac{1}{{|U|}}{{\log }_2}\frac{1}{1}} = 0 \end{split}} \right.$ |
这时, 我们有:
在上述情形下, 粒度粗糙熵
2)当
$\left\{ { \begin{split} &GK(B) = \frac{{\displaystyle\sum\limits_{i = 1}^t {|{X_i}{|^2}} }}{{|U{|^2}}} = \frac{{|U{|^2}}}{{|U{|^2}}} = 1 \\ &{E_r}(B) = - \sum\limits_{i = 1}^t {\frac{{|{X_i}|}}{{|U|}}{{\log }_2}\frac{1}{{|{X_i}|}}} = - \frac{{|U|}}{{|U|}}{\log _2}\frac{1}{{|U|}} = {\log _2}|U| \end{split}} \right.$ |
这时, 我们有:
在上述情形下, 粒度粗糙熵
根据上述证明, 可知
由于2)和3)的证明可以由1)的证明直接得到, 因此这里忽略具体过程.
定理2. 给定一个信息表
证明: 假设
$ {Y_j} = \bigcup\limits_{i \in {C_j}} {{X_i}{, ^{}}1 \leqslant j \leqslant n} $ |
由定义2, 我们可以得出:
$ \begin{split} {E}_{r}({B}_{2})&=-{\displaystyle \sum _{j=1}^{n}\frac{\left|{Y}_{j}\right|}{\left|U\right|}}{\mathrm{log}}_{2}\frac{1}{\left|{Y}_{j}\right|}\\ &=-\frac{1}{\left|U\right|}{\displaystyle \sum _{j=1}^{n}\left|{\displaystyle \underset{i\in {C}_{j}}{\bigcup }{X}_{i}}\right|}{\mathrm{log}}_{2}\frac{1}{\left|{\displaystyle \underset{i\in {C}_{j}}{\bigcup }{X}_{i}}\right|}\\ &=-\frac{1}{\left|U\right|}\displaystyle \sum _{j=1}^{n}\left({\displaystyle \sum _{i\in {C}_{j}}\left|{X}_{i}\right|}\mathrm{log}{}_{2}\left(\frac{1}{{\displaystyle \sum _{i\in {C}_{j}}\left|{X}_{i}\right|}}\right)\right)\\ &=\frac{1}{\left|U\right|}\displaystyle \sum _{j=1}^{n}\left({\displaystyle \sum _{i\in {C}_{j}}\left|{X}_{i}\right|}\mathrm{log}{}_{2}\left({\displaystyle \sum _{i\in {C}_{j}}\left|{X}_{i}\right|}\right)\right) \end{split} $ |
由于
根据上述结果, 我们可以进一步得出:
$ \begin{split} {E}_{r}({B}_{2})=&\frac{1}{\left|U\right|}{\displaystyle \sum _{j=1}^{n}\left({\displaystyle \sum _{i\in {C}_{j}}\left|{X}_{i}\right|}{\text{log}}_{2}\left({\displaystyle \sum _{i\in {C}_{j}}\left|{X}_{i}\right|}\right)\right)}\\ \geqslant& \frac{1}{\left|U\right|}\displaystyle \sum _{j=1}^{n}\left({\displaystyle \sum _{i\in {C}_{j}}\left|{X}_{i}\right|}{\text{log}}_{2}|{X}_{i}|\right)\\ =&\frac{1}{\left|U\right|}{\displaystyle \sum _{i=1}^{m}\left|{X}_{i}\right|{\text{log}}_{2}\left|{X}_{i}\right|}\\ =&-{\displaystyle \sum _{i=1}^{m}\frac{\left|{X}_{i}\right|}{\left|U\right|}{\mathrm{log}}_{2}\frac{1}{\left|{X}_{i}\right|}} \\ =&{E}_{r}({{B}_{1}}) \end{split} $ |
另一方面, 根据文献[17], 我们可以得出: 如果
传统的人工蜂群算法采用式(4)计算适应度, 本文则为人工蜂群算法提供一种基于粒度粗糙熵的适应度函数, 具体定义如下:
定义4. 基于粒度粗糙熵的适应度函数. 假设当前有N个解(食物源), 对任意
$ fi{t_i} = \frac{1}{{1 + GK{E_r}({B_i})}} $ | (10) |
其中,
由定理1可知, 对任意
本节首先给出一种计算粒度粗糙熵的算法(即算法1), 然后给出特征选择算法FS_GREIABC (即算法2).
算法1. 粒度粗糙熵的计算
输入: 给定的信息表
输出: 属性子集
1) 初始化: 令
2) 通过计数排序的方法[8]计算划分
3) 根据划分
4) 对任意
令
5) 对任意
令
6) 计算粒度粗糙熵
7) 返回属性子集
算法2. FS_GREIABC
输入: 给定的信息表
输出: 最终选择的特征子集.
1) 初始化: 随机产生初始种群, 得到N个初始解
2) 对信息表S进行离散化处理.
3) 对任意
4) 根据算法1计算种群中各只蜜蜂的粒度粗糙熵
5) 根据式(11)计算种群中各只蜜蜂的适应度值
6) 对任意
7) 雇佣蜂阶段: 对任意
8) 跟随蜂阶段:
9) 对任意
10) 根据式(9)计算各食物源一维正态云模型的参数Ex、En、He并构造一维正态云模型;
11) 根据式(7)计算选择蜜源
12) 对任意1≤k≤OnlookerCount, 循环执行: 选择较好的蜜源
13) 侦查蜂阶段: 对任意
14) 获得全局最佳蜜源bestfood.
15) 对最佳蜜源进行0-1编码.
16) 得到当前最优的特征子集并返回该特征子集.
5 实验 5.1 实验数据与实验设置为了验证FS_GREIABC算法的性能, 我们首先选取了10个UCI数据集[22]进行特征选择实验, 具体包括: 1) Heart; 2) German; 3) Diabetes; 4) Ionosphere; 5) Smart_grid; 6) Sonar; 7) Musk2; 8) Spmbase_disc; 9) WDBC; 10) Dress. 这10个数据集的详细信息如表1所示.
除上述10个UCI数据集之外, 为了将FS_GREIABC算法与实际应用更好地结合在一起, 我们还考虑将该算法应用于软件缺陷预测领域. 当前软件的规模和复杂度日益增长, 因此, 软件的可靠性备受关注. 在软件工程中, 如果可以找出软件系统中有可能存在缺陷的模块及其分布, 对软件开发者合理配置资源以及提高软件质量将起到至关重要的作用. 软件缺陷预测便是这样一种技术, 它对软件模块中是否存在缺陷进行预测, 能够根据历史数据以及已经发现的缺陷等软件度量数据, 提前预测哪些模块有出错的倾向. 合理地预测软件缺陷可以有效帮助测试者快速定位并弥补软件缺陷, 从而达到显著减少软件开发成本和提高软件可信度的效果.
当前的研究通常将缺陷预测的实现形式化为一个机器学习问题, 很多机器学习技术被用于软件缺陷预测. 然而, 现有的缺陷预测方法在实际应用中还存在许多问题. 例如, 这些方法在高维数据情况下(如存在大量冗余、不相关的度量元), 预测精度不高, 而在实际应用中高维的缺陷预测数据是非常普遍的[23].
针对软件缺陷预测中所存在的高维数据问题, 本文尝试采用FS_GREIABC算法来进行特征选择, 通过对度量元进行有效降维, 从而提高软件缺陷预测模型的性能. 我们选取了5个来自于Jureczko和Madeyski[24]所整理的Promise数据集进行特征选择实验, 具体包括: 1) Ant-1.3; 2) Camel-1.0; 3) Jedit-4.3; 4) Synapse-1.0; 5) Log4j-1.0. 这5个数据集的详情信息如表2所示.
由于粗糙集理论更适合于处理离散型属性, 因此, 对于上述数据集中的连续型属性, 我们统一采用Weka平台中所提供的等宽离散化算法进行了离散化处理, 其中, bins=5.
我们基于Python语言实现了FS_GREIABC算法, 实验所采用的硬件环境具体如下: 1.8 GHz Intel处理器、8.0 GB内存. 我们将FS_GREIABC算法与以下5种具有代表性的基于智能优化技术的特征选择算法进行了对比: 1)哈里斯鹰算法(HHO)[25]; 2)樽海鞘算法(SSA)[26]; 3)鲸鱼算法(WOA)[27]; 4) Jaya算法[28]; 5)正余弦算法(SCA)[29].
为了有效评价FS_GREIABC算法及其他对比算法的性能, 本文分别采用了如下3种性能评价指标: Accuracy、F1-score和AUC. 其中, Accuracy代表分类正确率, 正确率越高, 分类效果越好;F1-score代表由Accuracy和Recall的调和平均值, 取值范围为[0, 1], 当F1-score取得1时, 代表模型的输出结果最好, 当F1-score取得0时, 代表模型的输出结果最差; AUC代表ROC曲线下方的面积, 用来判断二分类预测模型的优劣, 其考虑了因数据不均衡而导致的预测偏差问题, 当AUC越接近1时, 代表模型的分类效果越好, 当AUC低于0.5时, 代表模型的分类效果较差.
对于每一个实验数据集, 我们通过随机抽样的方式将其划分成训练集和测试集, 其中, 70%的样本作为训练集, 其余30%的样本作为测试集. 我们采用机器学习中常用的一种分类算法——CART在特征选择之后的训练集上训练分类器, 并利用测试集来测试分类器的分类性能(即计算该分类器的Accuracy值、F1-score值以及AUC值). 此外, 我们还比较了不同特征选择算法所选择的特征子集的大小.
在实验过程中, 我们发现, 对于FS_GREIABC算法, 不同的参数会达到不同的效果. 通过多次实验, 我们逐步调节FoodCount、OnlookerCount、MaxIterCount、nc的值, 并选择能够获得最优实验结果的参数值. 最终, 将FoodCount设置40、OnlookerCount设置为40、MaxIterCount设置为100、nc设置为 500. 对于5个对比算法, 它们的参数均采用相关文献中所提供的参数值进行设置.
5.2 实验结果图1–图3分别表示实验过程中在Heart、Diabetes以及Ionosphere这3个数据集上采用500个云滴所构造出的云模型示图.
从图1–图3可以看出, 熵
表3给出了在不同数据集上6种特征选择算法所选择的特征子集的大小.
从表3可以看出FS_GREIABC算法所选择的特征数量在大部分数据集上都要少于或等于5种对比算法. 除了在Smart_grid和Sonar这两个数据集上要差于HHO之外, FS_GREIABC在其他数据集上都表现最好(即其所选择的特征数量最少). 事实上, 在Smart_grid和Sonar这两个数据集上, FS_GREIABC的表现也非常接近于表现最好的HHO算法. 因此, 从整体上看, 相对于HHO、SSA、WOA、Jaya、SCA这5种对比算法, FS_GREIABC算法能够获得更小的特征子集.
表4–表6分别给出了6种特征选择算法在Accuracy值、F1-score值以及AUC值上的对比结果.
从表4看出, FS_GREIABC算法的Accuracy值在大部分数据集上都要高于或等于5种对比算法. 除了在Smart_grid和Dress这两个数据集上分别低于Jaya和SCA算法之外, 在其余13个数据集上, FS_GREIABC算法都具有最高的Accuracy值. 事实上, 在Smart_grid和Dress数据集上, FS_GREIABC算法的Accuracy值也只是略低于Jaya和SCA算法, 比其余4个算法都要高. 因此, 从Accuracy这个评价指标来看, FS_GREIABC算法的性能要优于5种对比算法, 即FS_GREIABC在提升分类器的分类性能方面表现更好.
从表5可看出, FS_GREIABC算法的F1-score值在大部分数据集上都要高于5种对比算法. 除了在Smart_grid数据集上, 在其余14个数据集上, FS_GREIABC算法都具有最高的F1-score值. 事实上, 在Smart_grid数据集上, FS_GREIABC算法的性能也是非常接近于最优的算法. 因此, 从F1-score这个评价指标来看, FS_GREIABC算法的性能要优于5种对比算法.
从表6可以看出, FS_GREIABC算法的AUC值在所有15个数据集上都要高于或等于5种对比算法. 除了在German数据集上, 在其余14个数据集上, FS_GREIABC算法的AUC值都要高于其他算法. 因此, 从AUC这个评价指标来看, FS_GREIABC算法的性能要优于5种对比算法.
综合表3–表6中的实验结果, 我们可以得出: 本文所提出的基于粒度粗糙熵与改进蜂群算法的特征选择算法FS_GREIABC具有更好的特征选择性能.
6 结论本文利用粗糙集理论和云模型来改进传统的人工蜂群算法, 并由此提出一种新的特征选择算法FS_GREIABC. FS_GREIABC通过粒度粗糙熵来计算每个解的适应度. 作为一种新的信息熵模型, 粒度粗糙熵不仅可以对知识的不完备性进行度量, 而且还能够刻画出知识的粒度大小. 此外, 为了提高人工蜂群算法的局部搜索能力, FS_GREIABC采用一维正态云模型来改进跟随蜂阶段的搜索策略. 实验结果表明, FS_GREIABC所选择的特征子集不仅更小, 而且基于这些特征子集所训练的分类器也具有更好的分类性能.
FS_GREIABC通过粒度粗糙熵来为人工蜂群算法构建适应度函数. 由于粒度粗糙熵是基于经典的粗糙集模型定义的, 该模型更适合于处理离散型属性, 因此, 对于连续型属性, 必须提前进行离散化处理. 然而, 离散化过程必然会带来信息的损失问题. 针对上述问题, 下一步将考虑如何把本文所提出的特征选择方法推广到邻域粗糙集或模糊粗糙集等扩展的粗糙集模型中, 这些模型不需要经过离散化阶段就可以直接处理连续型属性.
[1] |
Bennasar M, Hicks Y, Setchi R. Feature selection using joint mutual information maximisation. Expert Systems with Applications, 2015, 42(22): 8520-8532. DOI:10.1016/j.eswa.2015.07.007 |
[2] |
Hancer E, Xue B, Zhang MJ, et al. Pareto front feature selection based on artificial bee colony optimization. Information Sciences, 2018, 422: 462-479. DOI:10.1016/j.ins.2017.09.028 |
[3] |
Mashhour EM, El Houby EMF, Wassif KT, et al. Feature selection approach based on firefly algorithm and chi-square. International Journal of Electrical and Computer Engineering, 2018, 8(4): 2338-2350. |
[4] |
孙林, 赵婧, 徐久成, 等. 基于改进帝王蝶优化算法的特征选择方法. 模式识别与人工智能, 2020, 33(11): 981-994. |
[5] |
刘艳, 程璐, 孙林. 基于K-S检验和邻域粗糙集的特征选择方法. 河南师范大学学报(自然科学版), 2019, 47(2): 21-28. |
[6] |
Pawlak Z. Rough sets. International Journal of Computer & Information Sciences, 1982, 11(5): 341-356. |
[7] |
王锋, 魏巍. 缺失数据数据集的组增量式特征选择. 计算机科学, 2015, 42(7): 285-290. |
[8] |
江峰, 王莎莎, 杜军威, 等. 基于近似决策熵的属性约简. 控制与决策, 2015, 30(1): 65-70. |
[9] |
董红斌, 滕旭阳, 杨雪. 一种基于关联信息熵度量的特征选择方法. 计算机研究与发展, 2016, 53(8): 1684-1695. |
[10] |
王鹏, 王玉红. 基于改进模糊决策粗糙集的最小化决策代价特征选择算法. 计算机应用与软件, 2021, 38(1): 284-292, 296. |
[11] |
Tawhid MA, Ibrahim AM. Feature selection based on rough set approach, wrapper approach, and binary whale optimization algorithm. International Journal of Machine Learning and Cybernetics, 2020, 11(3): 573-602. DOI:10.1007/s13042-019-00996-5 |
[12] |
Azar AT, Anter AM, Fouad KM. Intelligent system for feature selection based on rough set and chaotic binary grey wolf optimisation. International Journal of Computer Applications in Technology, 2020, 63(1–2): 4–24.
|
[13] |
Chen YM, Zhu QX, Xu HR. Finding rough set reducts with fish swarm algorithm. Knowledge-based Systems, 2015, 81: 22-29. DOI:10.1016/j.knosys.2015.02.002 |
[14] |
高薇, 解辉. 基于粗糙集与人工蜂群算法的动态特征选择. 计算机工程与设计, 2019, 40(9): 2697-2703. |
[15] |
Karaboga D. An idea based on honey bee swarm for numerical optimization. Kayseri: Erciyes University, 2005. 1899–1902.
|
[16] |
Karaboga D, Basturk B. A powerful and efficient algorithm for numerical function optimization: Artificial bee colony (ABC) algorithm. Journal of Global Optimization, 2007, 39(3): 459-471. DOI:10.1007/s10898-007-9149-x |
[17] |
李德毅, 刘常昱, 杜鹢, 等. 不确定性人工智能. 软件学报, 2004, 15(11): 1583-1594. |
[18] |
张飞舟, 范跃祖, 沈程智, 等. 利用云模型实现智能控制倒立摆. 控制理论与应用, 2000, 17(4): 519-523. |
[19] |
苗夺谦, 范世栋. 知识的粒度计算及其应用. 系统工程理论与实践, 2002, 22(1): 48-56. |
[20] |
Liang JY, Shi ZZ. The information entropy, rough entropy and knowledge granulation in rough set theory. International Journal of Uncertainty, Fuzziness and Knowledge-based Systems, 2004, 12(1): 37-46. DOI:10.1142/S0218488504002631 |
[21] |
张光卫, 何锐, 刘禹, 等. 基于云模型的进化算法. 计算机学报, 2008, 31(7): 1082-1091. DOI:10.3321/j.issn:0254-4164.2008.07.003 |
[22] |
Dua D, Graff C. UCI machine learning repository. https://archive.ics.uci.edu/ml/index.php. (2021-06-05)[2022-12-29].
|
[23] |
李瑞. 软件缺陷预测中高维数据处理研究[硕士学位论文]. 青岛: 青岛科技大学, 2020.
|
[24] |
Jureczko M, Madeyski L. Towards identifying software project clusters with regard to defect prediction. Proceedings of the 6th International Conference on Predictive Models in Software Engineering. Timișoara: ACM, 2010. 9.
|
[25] |
Heidari AA, Mirjalili S, Faris H, et al. Harris hawks optimization: Algorithm and applications. Future Generation Computer Systems, 2019, 97: 849-872. DOI:10.1016/j.future.2019.02.028 |
[26] |
Mirjalili S, Gandomi AH, Mirjalili SZ, et al. Salp swarm algorithm: A bio-inspired optimizer for engineering design problems. Advances in Engineering Software, 2017, 114: 163-191. DOI:10.1016/j.advengsoft.2017.07.002 |
[27] |
Mirjalili S, Lewis A. The whale optimization algorithm. Advances in Engineering Software, 2016, 95: 51-67. DOI:10.1016/j.advengsoft.2016.01.008 |
[28] |
Rao RV. Jaya: A simple and new optimization algorithm for solving constrained and unconstrained optimization problems. International Journal of Industrial Engineering Computations, 2016, 7(1): 19-34. |
[29] |
Mirjalili S. SCA: A sine cosine algorithm for solving optimization problems. Knowledge-based Systems, 2016, 96: 120-133. DOI:10.1016/j.knosys.2015.12.022 |