基于线性递减权重粒子群算法优化Xgboost模型方法
技术领域
本发明涉及网络入侵检测领域,具体是一种基于线性递减权重粒子群算法优化Xgboost模型方法。
背景技术
近年来随着计算机技术、大数据技术的发展,网络空间的规模呈现大幅度地增长,一系列网络安全问题也随之产生。网络入侵检测领域一直是学术界和工业界关注的重点,网络入侵检测的方法是将入侵行为转换为分类和识别的问题,通过有效的算法来准确的识别其攻击类型使得入侵检测***能够更好地应对攻击。随着机器学习技术的日渐成熟,相关领域的学者已成功将其应用于网络入侵检测中,但是识别的准确率还有待提升。
Xgboost模型是集成学习算法中的一种,将Xgboost模型应用于网络入侵检测数据集NSL-KDD中,识别的效果很大程度上取决于参数的选择。如果使用默认的参数,虽然取得的效果还不错,但是还有很大提升的空间,Xgboost模型由于其参数数量较多,人工进行调参的工作量巨大。目前机器学习模型的参数往往是根据人们的经验来进行调整,参数可调整的局限性较大,当参数数量较多时,人工调参基本是不太可行的方案。现有使用较多的一种优化参数的方法是网格搜索,该方法通过对所有的参数组合进行穷举来寻找效果最佳的参数组合,但是非常耗时,并且最后搜索的参数是预先指定的。
本申请的发明人在实现本发明的过程中经过研究发现:线性递减权重粒子群优化(Linear Decrement Weight Particle Swarm Optimization,LDWPSO)算法采用群体智能策略,在基本粒子群算法(Particle Swarm Optimization,PSO)的基础上引入惯性权重因子,在搜索空间内具有的良好的搜索能力和更快的收敛速度,因此本发明提出了使用线性递减权重粒子群优化算法去自适应地优化Xgboost模型的参数,并将其应用于网络入侵检测领域中,使模型能够取得更好的识别和分类的效果。
线性递减权重粒子群算法LDWPSO:
Vid=ωVid+C1random(0,1)(Pid-Xid)+C2random(0,1)(Pgd-Xid)
Xid=Xid+Vid
其中C1和C2分别为个体和社会学习因子,Pid为第i个粒子个体极值的第d维,Pgd为全局最优解的第d维,ω为非负的惯性因子,其中iter为最大迭代次数,iteri为当前迭代次数,ωmax为ω的最大值,ωmin为ω的最小值。
Xgboost算法:
Xgboost模型共包含三大类参数,其主要的参数及其解释如下:
eta:学习率,通过减少每一步的权重,可以提高模型的稳定性。通过设置eta可以过拟合;
min_child_weight:最小叶子节点权重和,如果在一次***中,叶子节点上所有样本的权重和小于min_child_weight则停止***,能够有效的防止过拟合,防止学到特殊样本;
max_depth:最大树深度,防止树模型过于复杂;
max_leaf_nodes:树上叶子节点数;
gamma:惩罚项和叶子节点结合的项;
subsample:每棵树随机采样的样本的比例,减小这个参数的值,算法会更加保守,避免过拟合。如果值设置得过小,也可能会导致欠拟合;
colsample_bytree:用来控制每棵随机采样的列数的占比;
lambda:权重的L2正则化项;
alpha:权重的L1正则化项;
objective:定义损失函数;
其算法原理公式如下所示:
其中obj(t)表示Xgboost模型第t轮的目标函数,其中l表示第t轮的损失项,constant表示常数项,Ω表示模型的正则项,γ和λ都是Xgboost自定义参数。
发明内容
本发明的目的是为了解决在网络入侵检测中使用机器学习模型人工调参工作量大的问题,提出了一种基于线性递减权重粒子群算法优化Xgboost模型方法,本发明分析了Xgboost模型参数的含义,选取了对模型影响较大的4个参数进行优化,并将优化后的模型应用于NSL-KDD数据集中。
一种基于线性递减权重粒子群算法优化Xgboost模型方法,包括:
步骤一:选取对Xgboost模型影响较大的4个参数,分别为学习率eta、最大树深度max_depth、最小叶子节点权重和min_child_weight以及gamma值,根据要优化的参数数量确定粒子的维度为4,并初始化每个粒子的位置和速度;
步骤二:根据下面等式来更新每个粒子的速度Vid和位置Xid:
Vid=ωVid+C1random(0,1)(Pid-Xid)+C2random(0,1)(Pgd-Xid) (1)
Xid=Xid+Vid (2)
其中C1和C2分别为个体和社会学习因子,Pid为第i个粒子个体极值的第d维,Pgd为全局最优解的第d维;
并根据下面等式对惯性权重因子ω进行变换:
其中ω为非负的惯性权重因子,iter为最大迭代次数,iteri为当前迭代次数,ωmax为ω的最大值,ωmin为ω的最小值;
步骤三:将粒子的新位置作为参数并赋值给Xgboost模型并计算验证集上的适应度值,然后将新的适应度值与之前进行比较来确定哪些粒子的个体最优值需要进行更新,并更新全局最优值;
步骤四:线性递减权重粒子群算法进行迭代并且在满足最大迭代次数或收敛时终止,得到算法的最优适应度值和对应的最优位置,并且最优位置的4个分量分别对应eta、max_depth、min_child_weight和gamma四个参数,然后使用四个最优参数值来构造LDWPSO-Xgboost模型,并将其通过网络入侵数据集NSL-KDD拟合后,应用到测试集上,计算在测试集上的各项指标。
进一步的,所述步骤二具体为:
在4维搜索空间中,某时刻t,第i个粒子的位置为
Xi(t)=[Xi1,Xi2,Xi3,Xi4],
将Xi1到Xi4分别赋值给eta、max_depth、min_child_weight和gamma四个参数,并根据PR曲线面积指标计算第i个粒子此参数下模型的适应度值Fi(t);在t+1时刻,对第i个粒子的4个维度均进行速度分量的生成,速度分量中采用随机数的方式保证随机性,粒子添加速度分量后的位置可表示为Xi(t+1)=[Xi1+Vi1,Xi2+Vi2,Xi3+Vi3,Xi4+Vi4],并计算第i个粒子新的适应度值Fi(t+1),如果Fi(t+1)>Fi(t),则更新第i个粒子的个体最优值;对所有的粒子均进行相同的操作,并从所有粒子中找出使适应度值最大所对应最优的参数,一旦某个粒子所计算的适应度值最大,则其他的粒子朝着该粒子的位置移动。
进一步的,所述步骤三具体为:
第i个粒子在t时刻的适应度值为Fi(t),并且其个体最优适应度值为Pi(t),粒子群的全局最优适应度值为Gt,若Fi(t)≤Pi(t),则t时刻不对该粒子的个体最优值和全局最优进行更新;在t+1时刻,更新第i个粒子的位置后,计算出来新的适应度值为Fi(t+1),该粒子的个体最优适应度值为Pi(t)并且全局最优为Gt,若Fi(t+1)≥Pi则更新该粒子的个体最优值,在t+1时刻这一轮对所有粒子均进行相同的操作,在t+1时刻结束后,全局最优值Gt+1=max(Fk(t+1)),k=1,2,...,M,其中M为粒子群的数目。
进一步的,所述步骤四中的网络入侵数据集NSL-KDD中共包含5种类型,分别为Normal(正常)、Dos(拒绝服务攻击)、R2L(远程主机未授权访问)、U2R(未授权本地超级用户特权访问)和Probe(端口监视或扫描),LDWPSO-Xgboost模型首先通过训练集进行训练,使得该模型能够较好的挖掘出数据中潜在的规律,然后使用训练好的模型对测试集进行类别预测,根据预测的准确率来评价模型的好坏。
本发明通过群体智能的搜索策略,在一定程度上可以找出较优参数,从而提高入侵检测的准确率,通过本发明线性递减权重粒子群优化参数后的Xgboost模型应用于NSL-KDD测试集数据,能够有效的优化Xgboost模型参数,提升模型的性能。
附图说明
图1是本发明基于线性递减权重粒子群算法优化Xgboost模型方法的流程示意图;
图2是本发明LDWPSO-Xgboost模型与现有Xgboost模型的mAP曲线对照图;
图3是本发明LDWPSO-Xgboost模型和现有网格搜索(GridSearch)优化mAP曲线对照图。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述。
请参阅图1,本发明实施例提出的基于线性递减权重粒子群算法优化Xgboost模型参数的方法,其步骤为:
步骤一:本发明选取了对Xgboost模型影响较大的4个参数,分别为学习率(eta)、最大树深度(max_depth)、最小叶子节点权重和(min_child_weight)和gamma值(惩罚项和叶子节点结合的项),根据要优化的参数数量确定粒子的维度为4,并初始化每个粒子的位置和速度。
由于不同参数其有效的范围不同,因此需要分别对每个参数进行初始化操作。在N维搜索空间中,在时间t,第i个粒子的位置可以表示为:Xi(t)=[Xi,1,Xi,2,…,Xi,N],i=1,2,…,M,其中M是粒子数。粒子的个体最佳位置是:Pi(t)=[Pi,1,Pi,2,…,Pi,N],粒子群的全局最优位置是:G(t)=[G1,G2,…,GN],全局最佳位置从个体的最佳位置中找到。对于每个粒子,其速度在每个维度上均进行(0,1)初始化,然后将粒子的每个维度的初始位置值赋值给Xgboost模型的相应参数,并且将其在NSL-KDD验证集上P-R曲线与X轴围成的面积作为初始适应值,同时,初始化全局最优值和个体最优值。
步骤二:根据下面等式来更新每个粒子的速度Vid和位置Xid:
Vid=ωVid+C1random(0,1)(Pid-Xid)+C2random(0,1)(Pgd-Xid) (1)
Xid=Xid+Vid (2)
其中C1和C2分别为个体和社会学习因子,Pid为第i个粒子个体极值的第d维,Pgd为全局最优解的第d维;
并根据下面等式对惯性权重因子ω进行变换:
其中ω为非负的惯性权重因子,iter为最大迭代次数,iteri为当前迭代次数,ωmax为ω的最大值,ωmin为ω的最小值。
在4维搜索空间中,某时刻t,第i个粒子的位置为Xi(t)=[Xi1,Xi2,Xi3,Xi4],将Xi1到Xi4分别赋值给eta、max_depth、min_child_weight和gamma四个参数,并根据PR曲线面积指标计算第i个粒子此参数下模型的适应度值Fi(t);在t+1时刻,对第i个粒子的4个维度均进行速度分量的生成,速度分量中采用随机数的方式保证随机性,粒子添加速度分量后的位置可表示为Xi(t+1)=[Xi1+Vi1,Xi2+Vi2,Xi3+Vi3,Xi4+Vi4],并计算第i个粒子新的适应度值Fi(t+1),如果Fi(t+1)>Fi(t),则更新第i个粒子的个体最优值;对所有的粒子均进行相同的操作,并从所有粒子中找出使适应度值最大所对应最优的参数,一旦某个粒子所计算的适应度值最大,则其他的粒子朝着该粒子的位置移动;
步骤三:将粒子的新位置作为参数并赋值给Xgboost模型并计算验证集上的适应度值,然后将新的适应度值与之前进行比较来确定哪些粒子的个体最优值需要进行更新,并更新全局最优值。
第i个粒子在t时刻的适应度值为Fi(t),并且其个体最优适应度值为Pi(t),粒子群的全局最优适应度值为Gt,若Fi(t)≤Pi(t),则t时刻不对该粒子的个体最优值和全局最优进行更新;在t+1时刻,更新第i个粒子的位置后,计算出来新的适应度值为Fi(t+1),该粒子的个体最优适应度值为Pi(t)并且全局最优为Gt,若Fi(t+1)≥Pi则更新该粒子的个体最优值。在t+1时刻这一轮对所有粒子均进行相同的操作,在t+1时刻结束后,全局最优值Gt+1=max(Fk(t+1)),k=1,2,...,M,其中M为粒子群的数目。
步骤四:线性递减权重粒子群算法进行迭代并且在满足最大迭代次数或收敛时终止,得到算法的最优适应度值和对应的最优位置,并且最优位置的4个分量分别对应eta、max_depth、min_child_weight和gamma四个参数,然后使用四个最优参数值来构造LDWPSO-Xgboost模型,并将其通过NSL-KDD训练集拟合后,应用到测试集上,计算在测试集上的各项指标。
网络入侵数据集NSL-KDD中共包含5种类型,分别为Normal(正常)、Dos(拒绝服务攻击)、R2L(远程主机未授权访问)、U2R(未授权本地超级用户特权访问)和Probe(端口监视或扫描),LDWPSO-Xgboost模型首先需要通过训练集进行训练,使得该模型能够较好的挖掘出数据中潜在的规律,然后使用训练好的模型对测试集进行类别预测,根据预测的准确率来评价模型的好坏。LDWPSO-Xgboost模型能够较好的提升分类的效果。
最终线性递减权重粒子群优化算法适应度值收敛于85.68,其最优的参数分别是eta为0.49,max_depth为4,min_child_weight为16,gamma值为0.74。
目前国内相关领域学者已将多种机器学***衡数据集会降低检测准确率,尤其体现在少数类,并且大部分机器学习算法都需要人为的根据经验来设置参数,因此本发明的提出的线性递减权重粒子群优化Xgboost的方法,通过群体智能的搜索策略,在一定程度上可以找出较优参数,从而提高入侵检测的准确率。
实际效果验证:
将本发明线性递减权重粒子群优化参数后的Xgboost模型应用于NSL-KDD测试集数据,并与未优化的Xgboost和网格搜索参数的方式进行对比。分析比较的评价指标采用mAP(mean Average Precision)值,该值表示模型对各类别PR曲线与X轴围成面积即AP值(Average Precision)的综合度量,mAP值越大则表示模型在数据集上的效果越好。
测得的5组mAP值如表1所示,由于机器学习的随机性较大,结果存在不稳定性,综合5组的mAP值结果可看出,LDWPSO-Xgboost模型的表现效果优于Xgboost模型和网格搜索的方法。第5组对比结果如图2和图3所示,从图中可知,未优化参数的Xgboost模型的mAP值为0.60,网格搜索优化后的Xgboost模型mAP值为0.61,线性递减权重粒子群优化参数后的Xgboost模型的mAP值为0.63。结果表明,使用本发明线性递减权重粒子群优化算法能够有效的优化Xgboost模型参数,提升模型的性能。
表1三个模型的mAP值对比
|
第1组 |
第2组 |
第3组 |
第4组 |
第5组 |
Average |
LDWPSO-Xgboost |
0.62 |
0.62 |
0.62 |
0.62 |
0.63 |
0.622 |
Xgboost |
0.60 |
0.60 |
0.59 |
0.60 |
0.60 |
0.598 |
GridSearch |
0.61 |
0.60 |
0.60 |
0.62 |
0.61 |
0.608 |