1. 引言
在机器学习处理实际问题中,往往存在着大量冗余、无关和不必要的特征 [1] ,这些特征会占用大量的存储空间、计算资源和时间成本,同时还会导致模型过拟合和泛化能力下降。因此,特征筛选 [2] [3] 已经成为了机器学习领域的重点研究问题之一。通过合理的特征选择,可以减少特征维度,提高模型的可解释性和泛化能力,从而更好地解决实际问题。本文提出了一种特征选择方法(X-ACO方法),将XGBoost和蚁群算法结合在一起,根据XGBoost的内置特征重要性评分进行特征排序 [4] ,同时利用特征间的Pearson相关系数表示特征间的距离,根据特征相关性系数调节信息素浓度,使用各特征重要性作为本文蚁群算法部分的启发式函数。实验表明,这种方法可以确保选取的特征之间不会产生强烈的线性关联,减少特征冗余,提高数据分类的精确性,同时还可以减少选择的特征数量。
2. 研究背景
在实际应用中,特征选择在数据预处理过程中非常重要,可以帮助去除冗余和无关特征,提高模型的解释性和泛化性能。特征选择的研究已经有很长的历史,并且一直受到学术界和工业界的广泛关注。近年来,随着机器学习算法和数据科学应用的广泛应用,特征选择的重要性也越来越突出。然而,由于现实数据集通常包含大量特征,因此进行特征选择时往往会面临一些挑战。例如,可能存在高度相关的特征,这会导致模型过度拟合和性能下降。另外,某些特征可能会包含噪声或无关信息,这也会影响模型的精度和可解释性。
为了应对这些挑战,学术界和工业界已经提出了许多特征选择方法和算法 [5] [6] [7] [8] [9] 。这些方法可以根据不同的目标和需求,选择最佳的特征子集,以提高模型的性能和效率。一些常用的特征选择方法包括基于过滤器的方法、基于包装器的方法和基于嵌入式的方法等。Relief算法就是一种常用的特征选择算法,具有较高的计算效率和较好的稳定性,但Relief算法的特征选择结果具有随机性,不同的初始采样会有不同的结果,且对于特征之间存在较强依赖关系的数据集,如共线性等,可能会导致结果不准确。
为了解决上述问题,本文提出了一种将XGBoost与蚁群算法相结合的特征选择方法,并引入了皮尔森(Pearson)系数来表示特征间的相关性系数,经实验验证,相对于传统特征选择方法,本文特征选择方法可以更好地改善模型的各种性能与泛化能力。
3. 相关理论
3.1. XGBoost算法
梯度提升决策树(Extreme Gradient Boosting, XGBoost)即一种高效的梯度提升决策树算法。它在原有的GBDT基础上进行了改进,使得模型效果得到大大提升。作为一种前向加法模型,他的核心是采用集成思想——Boosting思想,将多个弱学习器通过整合为一个强学习器。即用多棵树共同决策,并且用每棵树的结果都是目标值与之前所有树的预测结果之差,并累加所有的结果,得到最终的结果,以此达到整个模型效果的提升 [10] [11] [12] [13] 。
XGBoost是由多棵CART (Classification And Regression Tree),即分类回归树组成,因此它可以处理分类回归等问题。研究证明,在高维数据处理方面,XGBoost算法可以根据特征重要性自动选择特征,提高模型的泛化能力,降低过拟合。
3.2. XGBoost特征重要度
本文方法选择XGBoost算法的基尼系数来度量特征重要性,具体原理公式如下:
假设有m个特征
,用V表示特征重要性,计算出每个特征
的Gini指数评分
。Gini指数的计算公式为:
(1)
表示特征
在节点m的重要性,即节点m分枝前后的Gini指数变化量:
(2)
对求得的各特征的重要性进行归一化:
(3)
其中,
是特征
的基尼指数,
是特征的增益之和。
3.3. 皮尔森(Pearson)系数
皮尔森相关系数即皮尔森积矩相关系数(Pearson Product-moment Correlation Coefficient),是最常用的一种线性相关系数。用来反映两个属性X和Y的线性相关程度,绝对值越大表明属性间相关性越强。
两个属性间的皮尔森系数越高,属性间的相关性越强,在特征选择时,尽量避免同时选取相关性较强的特征。皮尔森系数的计算公式如下:
(4)
其中,
表示属性X,Y的协方差,
表示属性X,Y的标准差的乘积。
3.4. 蚁群算法
蚁群算法(Ant Colony Optimization, ACO)由意大利学者Colorni等人于1991年提出 [14] ,是一种基于蚂蚁觅食行为的启发式优化算法。该算法模拟了蚂蚁觅食的过程:每只蚂蚁在寻找食物的过程中,会释放一种化学物质——信息素,且能够感知到其它蚂蚁释放的信息素。蚂蚁之间正是通过这种信息素来选择觅食路线,信息素浓度越高,对应路线被选择的概率便越高 [15] 。
蚁群算法通过信息素的挥发与更新来搜索最优解,常用于解决优化问题 [16] ,如最小化函数值,寻找最优路径等。
4. 基于XGBoost和蚁群算法的特征选择方法
针对传统Relief选择算法对多维度数据特征选择有效性差、对存在较强依赖关系的特征选择结果不精确等问题,本文提出了一种基于XGBoost和蚁群算法的特征选择方法,简称X-ACO。
4.1. 路径转移概率计算
对于每一只蚂蚁来说,它经过的每一个特征,都有两种状态:0或1,0表示该节点未被选中状态,1表示被选中状态。对于每只蚂蚁从初始位置出发到终点的路径上,对于特征i和j,则存在4条可供选择的路径,分别是0→0、0→1、1→0、1→1。
对于每只蚂蚁所经过路径上的每一个节点,其被选择的概率如下:
(5)
其中,i表示当前节点;j表示下一个待选节点;C表示蚂蚁能够访问且尚未被访问到的节点集合;
表示节点间的信息素;
是信息素因子;
表示节点的启发性信息;
是启发式信息因子。
4.2. 参数设置与信息素的更新
设初始时刻有n只蚂蚁,并随机初始化n只蚂蚁的初始位置,各条路径上的信息素
初始值相等。
,XGBoost特征重要性V的计算公式见式(2),经过t时刻,当蚁群的所有蚂蚁全部完成一次遍历后,及时更新各条路径上的信息素 [13] ,首先是各路径上信息素的挥发,更新公式如下:
(6)
其中,
为信息素挥发系数,通常设置
。其次是蚂蚁在它们所经过边上释放信息素。
(7)
其中,
是第k只蚂蚁向它经过的边释放的信息素,定义为:
(8)
其中,Q为信息素常数,表示每只蚂蚁循环一次释放的信息素总量,
为路径长度,即皮尔森相关系数,见公式(4)。结合公式(5)和公式(8)可知,皮尔森线性相关系数越小,该路径上的信息素浓度越高,且特征重要度越高,该路径被其他的蚂蚁选择的概率就越高。
4.3. 算法描述
本文结合XGBoost算法和蚁群算法,并引入皮尔森系数作为节点间的路径长度,提出一种特征选择方法,X-ACO算法。算法描述如下:首先运用XGBoost算法来计算每个特征的特征重要度V;然后利用皮尔森系数计算函数,见式(4),算出特征间的相关性系数
;接下来构建X-ACO算法,计算各特征的选择概率P,并进行参数的初始化和信息素
的更新;最后运用X-ACO方法输出选择的最优特征子集Sx。
为了对本文算法进行更为准确直观的描述,现给出X-ACO算法伪代码见表1。

Table 1. X-ACO algorithm pseudo-code
表1. X-ACO算法伪代码
5. 实验结果与分析
本文从UCI数据库中选择了一些经典的数据集对算法进行验证。经典的数据集见表2。
5.1. 实验环境与方法
本文实验环境为ThinkPad E550c笔记本,Intel(R) Core(TM) i3-4005U CPU @ 1.70 GHz,4.0 GB内存,Windows 10 64位操作系统,软件环境为Jupyter 6.3.0、Python 3.8.3。
在分类器选择上,选取逻辑回归作为分类器,对本文方法选取的特征、与原始数据特征进行了分类预测准确率比较;首先对实验数据进行预处理,先将各数据进行归一化操作,将每个特征属性列的数据都归一到[0, 1]之间,然后对预处理后的数据进行特征选择实验。本文方法与数据集原始特征数据在逻辑回归分类器上的分类准确率和特征个数的对比结果见表3。
5.2. 实验分析
对比分类精度,从表3不难看出,在UCI数据集上,本文方法分类准确率相较于原始数据的分类准确率均取得较优提升。本文方法选取特征更少,拟合效果较优。通过对比表4中的精确率、F1分数以及AUC三项评价指标发现X-ACO算法大多数情况下三项评价指标都略高于Relief算法。

Table 3. Comparison of classification accuracy and number of features
表3. 分类准确率和特征个数对比

Table 4. Experimental performance comparison between X-ACO and Relief algorithms
表4. X-ACO算法与传统Relief算法实验性能比较
表4为本文方法X-ACO与传统Relief特征选择算法在UCI的数据集上各项评价指标对比结果。与Relief算法相比,本文方法在分类准确率、F1分数、AUC等指标性能上都有明显的优势。在Sonar数据集上,本文方法分类准确率略低于Relief算法;但本文方法的F1分数为0.852,高于Relief算法的F1分数0.826;在wpbc、wdbc和Spambase数据集上,本文方法分类准确率、F1分数、AUC均优于传统Relief;在多分类数据集Wine上,本文方法在分类准确率、加权F1分数、AUC三项评价指标上均优于Relief算法。
综上所述,本文X-ACO特征选择方法在分类准确率、F1分数、AUC上均优于传统的特征选择算法,不仅达到了数据降维的目标,同时提高了算法的泛化能力。
6. 结论
本文提出的基于XGBoost算法和蚁群算法的特征选择方法(X-ACO方法),运用各个特征的XGBoost特征重要度作为蚁群算法部分的启发式函数,同时利用特征间的皮尔森(Pearson)相关系数表示各特征之间的距离长短,进而选择最优特征子集,从而达到数据降维的效果。实验表明,本文方法能在降低特征维度的同时,确保数据集分类的准确率,减少特征冗余,提高算法的各项性能,为实际生产中的特征选择问题提供了重要的方法依据。