一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种基于RFECV特征选择的Bayes-LightGBM软件缺陷预测方法

2022-08-10 15:56:52 来源:中国专利 TAG:

一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法
技术领域
1.本发明涉及软件缺陷预测领域,尤其涉及一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法。


背景技术:

2.软件缺陷是软件开发过程中难以避免的问题,而软件缺陷又会给软件项目带来危害,在软件的开发周期中,发现存在的软件缺陷时间越晚,修复软件缺陷的代价也就越高,可能会对软件系统造成越大的损害。因此,尽早的避免,减少软件缺陷的发生,对于软件质量有很大提升。而软件缺陷预测是一种可行的方法,该方法通过挖掘软件代码和历史提交记录,提炼出与软件缺陷相关的特征,通过机器学习或是神经网络模型来学习构建软件缺陷预测模型,来预测软件缺陷的发生。因此一种有效的软件缺陷预测方法能很大程度避免软件缺陷的发生。
3.闫岭岭等人提出了一种基于混合采样和random_stacking的软件缺陷预测方法,该方法为通过混合采样算法对不平衡数据集进行采样,并利用stacking分类器对软件缺陷进行预测,相比现有的算法有更好的性能。
4.王芳提出了对不平衡软件缺陷数据集进行不平衡处理后再进行预测,发现有更好的软件缺陷预测性能,对类别不平衡问题有一定的缓解。


技术实现要素:

5.有鉴于现有技术的上述缺陷,本发明所要解决的技术问题是在软件缺陷领域领域,通过静态代码检查工具检查代码,往往能得出许多特征,导致特征过多。而使用原始的高维特征集不但会增加分类器的计算成本,还可能降低其识别性能,所以需要使用特征选择方法优化特征数量。本发明提供了一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,基于随机森林和rfecv的组合特征选择方法,从软件缺陷数据集中,选择对软件缺陷预测模型有增益的相关特征,并使用基于贝叶斯优化的lightgbm算法使得软件缺陷预测模型有更好的预测性能。
6.为实现上述目的,本发明提供了一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,包括以下步骤:
7.将原始数据集进行标准化操作;
8.然后对标准化后的数据集使用随机森林和rfecv的组合特征选择方法,选出交叉验证得分最高的特征组合;
9.再使用bayes-lightgbm算法构建预测模型,根据数据集中的特征,来预测软件缺陷是否会发生。
10.进一步地,将原始数据集进行标准化操作具体包括:
11.对原始数据进行standardscaler标准化,使原始数据归一化;
12.将归一化后的数据进行robustscaler标准化,用来去除四分位数之外的异常值。
13.进一步地,对标准化后的数据集使用随机森林和rfecv的组合特征选择方法,选出交叉验证得分最高的特征组合,是把随机森林算法作为特征评估器,用来评估特征子集的得分,使用rfecv算法来选择出得分最高的特征子集。
14.进一步地,对标准化后的数据集使用随机森林和rfecv的组合特征选择方法,选出交叉验证得分最高的特征组合,包括以下步骤:
15.将所有的初始特征作为当前可用的特征组合,然后使用当前特征组合,并计算每个特征的特征重要性的评分;
16.删除特征重要性评分最低的一个或者多个特征,然后更新当前的特征组合;
17.根据rfe阶段确定的当前的特征组合,对选定的特征组合进行交叉验证;
18.然后使用随机森林评估器,对选定的特征集进行建模评分,然后回到rfe阶段,重复上述步骤,直到完成所有特征组合的交叉验证评分;
19.选取交叉验证评分最高的特征组合作为最优的特征组合。
20.进一步地,rfecv包括rfe阶段和cv阶段,其中,rfe阶段用来递归特征消除和cv阶段用来交叉验证。
21.进一步地,rfe阶段包括以下步骤:
22.将数据集中所有的特征设置为初始的特征组合;
23.使用当前特征集进行建模,并计算当前特征集中每个特征的特征重要性;
24.根据计算所得的特征重要性并排序,删除最不重要的一个或多个特征,然后更新特征组合;
25.对更新后的特征组合再次进行建模,重复上述步骤,直到完成所有的特征组合根据随机森林评估器得出的交叉验证评分。
26.进一步地,cv阶段包括以下步骤:
27.根据rfe阶段确定的特征重要性,对更新后的特征集进行交叉验证;
28.利用评估器对更新后的特征集进行评分,确定平均分最高的特征数量和特征,最后完成特征集的选择;具体包括每次删除特征后更新的特征组合,此为一组特征组合,循环往复获得n组特征组合,直至无特征可删除;然后针对每次的特征组合,会使用随机森林的评估器进行交叉验证评分,根据最后每组的特征组合的交叉验证得分,选出交叉验证得分的特征组合,则为性能最优的特征组合。
29.进一步地,再使用bayes-lightgbm算法构建预测模型,根据数据集中的特征,来预测软件缺陷是否会发生,具体包括以下步骤:
30.根据使用rfecv与随机森林算法,在初始的数据集中选出合适的特征后,构建特征选择后的新数据集;
31.将新数据集以8:2的比例划分为训练集和测试集;
32.使用贝叶斯优化算法,优化lightgbm的超参数,获得bayes-lightgbm预测模型;
33.使用k折交叉验证训练bayes-lightgbm预测模型;
34.根据测试集和预测结果的比对,得出预测模型的auc数值,得到的auc数值越高,则说明软件缺陷预测模型分类性能约好。
35.技术效果
36.本发明的一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,针对软件缺陷数据集中软件缺陷特征过多的问题,提出了基于随机森林和rfecv的组合特征选择方法,不仅能选出最佳的特征组合,更能表明每种组合的交叉验证得分,使得选择出的最佳的特征组合更有说服力,并且使得软件缺陷预测模型有更好的预测性能;同时提出了贝叶斯优化对其进行超参数调优,使得软件缺陷预测模型有更好的预测性能。
37.以下将结合附图对本发明的构思、具体结构及产生的技术效果作进一步说明,以充分地了解本发明的目的、特征和效果。
附图说明
38.图1是本发明的一个较佳实施例的一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法的流程示意图;
39.图2是本发明的一个较佳实施例的一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法的原始数据的统计图;
40.图3是本发明的一个较佳实施例的一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法的归一化后的数据统计图;
41.图4是本发明的一个较佳实施例的一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法的标准化后的数据统计图;
42.图5是本发明的一个较佳实施例的一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法的交叉验证得分图;
43.图6是本发明的一个较佳实施例的一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法的原始数据集的特征重要性排名示意图。
具体实施方式
44.为了使本发明所要解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
45.以下描述中,为了说明而不是为了限定,提出了诸如特定内部程序、技术之类的具体细节,以便透彻理解本发明实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本发明。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本发明的描述。
46.如图1所示,本发明实施例提供了一种基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,包括以下步骤:
47.步骤100,将原始数据集进行标准化操作;具体包括:
48.对原始数据进行standardscaler标准化,使原始数据归一化;
49.将归一化后的数据进行robustscaler标准化,用来去除四分位数之外的异常值。
50.步骤200,然后对标准化后的数据集使用随机森林和rfecv的组合特征选择方法,选出交叉验证得分最高的特征组合;具体包括:
51.步骤200-1,把标准化后的数据集,作为新数据集;
52.步骤200-2,针对新数据集,使用rfe算法进行特征消除,用来对特征进行重要性评
级,并更新新数据集;
53.步骤200-3,再使用cv算法对更新后的新数据集的特征评级后,对特征集合进行交叉验证;
54.步骤200-4,使用随机森林算法作为评估器,在交叉验证阶段对特征集合进行打分,获得该特征集合的交叉验证得分;
55.步骤200-5,重复200-2至200-4的步骤,直至原始特征集合中,特征消除完毕;
56.步骤200-6,选择交叉验证得分最高的特征集合,作为软件缺陷预测的特征,并作为软件缺陷预测的数据集。
57.步骤300,再使用bayes-lightgbm算法构建预测模型,根据数据集中的特征,来预测软件缺陷是否会发生;具体包括:
58.步骤300-1,将软件缺陷预测的数据集,以8:2的比例分为训练集和测试集;
59.步骤300-2,使用训练集,训练lightgbm预测模型;
60.步骤300-3,使用贝叶斯优化算法,优化lightgbm预测模型的超参数,并将超参数优化后的预测模型称之为bayes-lightgbm预测模型;
61.步骤300-4,使用bayes-lightgbm预测模型对测试集进行预测,得出预测结果,并与真实结果相比较;
62.步骤300-5,根据预测结果与真实结果的比较,得到auc数值,auc值越大,则说明软件缺陷预测模型效果越好。
63.其中,步骤200,对标准化后的数据集使用随机森林和rfecv的组合特征选择方法,选出交叉验证得分最高的特征组合,是把随机森林算法作为特征评估器,用来评估特征子集的得分,使用rfecv算法来选择出得分最高的特征子集;因此,对标准化后的数据集使用随机森林和rfecv的组合特征选择方法,选出交叉验证得分最高的特征组合,包括以下步骤:
64.该步骤中,使用随机森林和rfecv的组合特征选择方法的具体步骤如下:
65.1.将原始数据集作为当前的特征组合;原始数据集包含的特征数为166个,但过多的特征数会导致预测模型过拟合,从而进行特征选择,来从原始数据集中的特征中,选出合适的特征;
66.2.计算特征组合中每个特征的重要性评级;
67.3.在特征组合中删除重要性评级最低一个特征;
68.4.将删除重要性最低特征后的特征组合更新为当前的特征组合;
69.5.对当前的特征组合,进行交叉验证;
70.6.在交叉验证的过程中,使用随机森林作为评估器,对当前的特征组合进行评估;
71.7.获取当前的特征组合的交叉验证得分;
72.8.跳转至步骤2,并重复上述步骤,直至当前的特征组合中,无特征可删除;
73.9.在过往的特征组合中,选出交叉验证得分最高的特征组合,作为最优的特征组合,该步骤的算法完毕。
74.其中,rfecv包括rfe阶段,用来递归特征消除和cv阶段,用来交叉验证。
75.rfe阶段包括以下步骤:
76.rfe阶段步骤简述为:
77.1.将原始数据集作为当前的特征组合。
78.2.计算特征组合中每个特征的重要性评级。
79.3.在特征组合中删除重要性评级最低一个特征。
80.4.将删除重要性最低特征后的特征组合更新为当前的特征组合。
81.具体为:
82.将所有可用的特征设置为初始的特征集;
83.使用当前特征集进行建模,并计算当前特征集中每个特征的特征重要性;
84.根据计算所得的特征重要性并排序,删除最不重要的一个或多个特征,然后更新特征集;
85.对更新后的特征集再次进行建模,重复上述步骤,直到完成所有特征的重要性评级。
86.而cv阶段在rfe阶段之后,但是两者都要进行循环,cv阶段包括以下步骤:
87.1.对当前的特征组合,进行交叉验证。
88.2.在交叉验证的过程中,使用随机森林作为评估器,对当前的特征组合进行评估。
89.3.获取当前的特征组合的交叉验证得分。
90.具体为:
91.根据rfe阶段确定的特征重要性,对选定的特征集进行交叉验证;
92.利用评估器对特征集进行评分,确定平均分最高的特征数量和特征,最后完成特征集的选择。
93.步骤300,再使用bayes-lightgbm算法构建预测模型,根据数据集中的特征,来预测软件缺陷是否会发生,具体包括以下步骤:
94.步骤300-1,将软件缺陷预测的数据集,以8:2的比例分为训练集和测试集。
95.步骤300-2,使用训练集,训练lightgbm预测模型。
96.步骤300-3,使用贝叶斯优化算法,优化lightgbm预测模型的超参数,并将超参数优化后的预测模型称之为bayes-lightgbm预测模型。
97.步骤300-4,使用bayes-lightgbm预测模型对测试集进行预测,得出预测结果,并与真实结果相比较。
98.步骤300-5,根据预测结果与真实结果的比较,得到auc数值,auc值越大,则说明软件缺陷预测模型效果越好。
99.本发明实施例使用baseline-lightgbm算法和bayes-lightgbm算法,根据数据集中的特征,来预测软件缺陷是否会发生,进行对比。baseline-lightgbm算法和bayes-lightgbm算法,两个算法是在同一个特征选择后的新数据集上进行的,相较于默认超参数的lightgbm算法,本发明实施例提出的贝叶斯优化lightgbm的超参数,能使得模型的预测性能更加提升。
100.做auc评估指标,是为了说明本发明实施例提出的软件缺陷预测方法性能有效,当auc指标《0.5,则说明该预测方法还不如随机预测,方法无效。
101.贝叶斯优化指的是,在机器学习训练的过程中,使用贝叶斯(bayes)算法来优化模型超参数的一种方法。一般使用默认超参数的机器学习模型,我们称之为基线模型(baseline)。
102.而基线模型所使用的默认超参数,一般不代表最优的模型性能表现,因为不同的超参数组合可能会导致模型在预测性能上的不同,因此有必要对模型的超参数进行调参。而手动调参不仅费时费力,而且往往效果并不理想。
103.贝叶斯优化算法是一种高效的优化算法,在数学上,可以统一将此问题描述为求解未知目标函数的全局最优解,具体公式如公式(1)所示:
104.x=argmaxf(x),其中(x∈x)#(1)
105.其中:x表示待优化的参数;x表示待优化的参数集合;f(x)表示目标函数。
106.在执行贝叶斯优化算法有两个关键步骤,首先,选择一个先验函数来表示被优化函数的分布假设,一般我们选择高斯过程;其次,构建一个采集函数,用于从模型后验分布中确定下一个需要评估的点。
107.贝叶斯优化包括高斯过程和采集函数,具体如下。
108.高斯过程是多维高斯分布在无限纬随机过程上的扩展,其中的高斯过程的具体公式如公式(2)所示:
109.f(x)~gp(m(x),k(x,x

))#(2)
110.在执行为了方便起见,通常将均值函数设为0,已知{(xi,fi)|i=1,2,...,n},则存在一个高斯分布可满足公式(3):
111.f~n(0,k(x,x))#(3)
112.其中协方差矩阵k(x,x)的公式可如公式(4)所示:
[0113][0114]
而通过采集函数可以确定下一个需要评估的点,可以减少算法迭代的次数,降低评估的成本。常见的采集函数有3种:置信区间上界(ucb),改善概率(pi),预期改进(ei),本发明实施例主要介绍pi函数,其具体公式如公式(5)所示:
[0115][0116]
超参数v用于调节,f(x

)是现有的最大值,v=0表示倾向于收敛到f(x

)附近,而φ()表示正态累积分布函数。其原理是找到新点的函数值比f(x

)大的概率,取这些点中概率最大的点。
[0117]
lightgbm算法是由微软公司提出的一个迭代提升树系统,它是由梯度提升决策树(gbdt)改良后的一种变体。传统的梯度提升决策树一般只采用损失函数的一阶负梯度,而它却同时使用损失函数的一二阶负梯度计算当前树的残差,并以此结果去拟合下一轮的新树。
[0118]
lightgbm算法主要是在传统的gbdt算法上进行了如下优化:
[0119]
1)基于histogram的决策树算法;
[0120]
2)单边梯度采样(goss):使用goss可以减少大量只具有小梯度的数据实例,这样在计算信息增益的时候只利用具有高梯度的数据就可以了,相比xgboost遍历所有特征节省了不少时间和空间上的开销;
[0121]
3)互斥特征捆绑(efb):使用efb可以将许多互斥的特征绑定为一个特征,这样就达到了降维的目的;
[0122]
4)带深度限制的leaf-wise的叶子生长策略:大多数gbdt工具使用低消的按层生长的决策树生长策略,因为它不加区分的对待同一层的叶子,带来了很多没必要的开销。实际上很多叶子的分裂增益较低,没必要进行搜索和分裂。lightgbm使用了带有深度限制的按叶子生长算法。
[0123]
5)直接支持类别特征
[0124]
6)支持高效并行
[0125]
7)cache命中率优化
[0126]
本发明实施例提出的基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,使开源数据集来构建软件缺陷预测模型。
[0127]
首先第一步是将数据集进行数据标准化,而数据标准化分为两个阶段,第一个阶段是standardscaler标准化,第二个阶段是robustscaler标准化,通过这两个阶段的数据标准化,获得一个标准化后的数据集;
[0128]
第二步是使用基于随机森林和rfecv的组合特征选择方法,把随机森林算法作为特征评估器,用来评估特征子集的得分,使用rfecv算法来选择出得分最高的特征子集,并使用baseline-lightgbm算法构建预测模型,来评估特征选择后的特征子集相比使用所有特征集合,其分类模型性能是否有提升;
[0129]
第三步是使用贝叶斯优化算法,该算法能对baseline-lightgbm算法的超参数进行优化,并对比优化前的baseline-lightgbm算法和优化后的bayes-lightgbm算法,软件缺陷预测模型的分类性能是否有提升。具体的软件缺陷预测方法的流程如图1所示。
[0130]
数据预处理环节中,有一个很关键的步骤就是数据的标准化。因为不同的特征可能具有不同的量纲和量纲单位,这样的情况会影响到数据分析的结果。因此为了消除指标之间的量纲影响,因此需要进行数据标准化处理,来解决数据指标之间不同的量纲,使其处于同一数量级,方便后续进行比较与评价。
[0131]
考虑到数据集本身拥有大量数值为0的样本特征,以及一定量的样本离群数值,本发明实施例混合了standardscaler和robustscaler两种方法来对数据集进行预处理,使数据集标准化,正态分布在0附近,并剔除了一些离群值。
[0132]
standardscaler标准化也可称之为标准差标准化,该方法使用均值与方差,对服从正态分布的数据进行处理,得到符合标准正态分布的数据。该标准化处理方法是通过标准化数据减去均值,然后除以标准差,经过处理后的数据符合标准正态分布,即均值为0,标准差为1。适用于没有明显边界的情况,有可能出现极端数据值,转化函数如公式(6)所示:
[0133][0134]
robustscaler标准化也可称为稳健标准化,该方法是使用具有鲁棒性的统计量缩放带有异常值的数据。该缩放器删除中位数,并根据百分位数范围(默认值为iqr:四分位间距)来缩放数据。iqr指的是第一个四分位数(25%)和第三个四分位数(75%)之间的范围,转化函数如公式(7)所示:
[0135][0136]
本发明实施例使用的模型评价指标为auc,其全名是area under the curve,表达的是roc曲线下的面积。
[0137]
auc是一个用来评估分类模型性能的常见指标,其优点是适用于正负样本分布不一致的场景。auc的数值越大,那么意味着该分类模型性能越好,最大可以为1;而当auc的数值小于0.5的时候,可以认为该分类模型没有意义。
[0138]
本发明实施例的具体实施方法如下:
[0139]
原始数据集中的特征有166个,因此仅选取部分特征作为举例
[0140]
原始数据集的统计图如图2所示:
[0141]
原始数据集经过归一化后,归一化后的数据统计图如图3所示;
[0142]
再经过标准化后,标准化后的数据统计图如图4所示:
[0143]
经过随机森林和rfecv的组合特征选择算法后,得到各种特征组合的其交叉验证得分,可以发现当特征组合为43个的时候,交叉验证得分最高,得分为0.9718,该交叉验证得分图如图5所示:
[0144]
并且本发明实施例得出了特征重要性的排名,其中特征重要性排名为1的特征有43个,把这43个选出的特征作为新数据集,原始数据集的特征重要性排名如图6所示:
[0145]
因此本发明实施例后续的特征组合选择这43个特征作为软件缺陷预测的特征集合。
[0146]
机器学习模型方面使用baseline-lightgbm算法,来对使用rfecv特征选择算法前后的数据集,构建软件缺陷预测模型,并使用auc作为模型评估指标对模型性能进行评估。
[0147]
表2展示了使用rfecv算法前后模型的auc值对比,结果可以表明,使用rfecv算法后,预测模型的auc值从0.8715提升到了0.8772,auc值提升了0.0057,证明该方法有效。
[0148]
表2 rfecv算法前后模型的auc值对比
[0149] rfecv算法前rfecv算法后auc0.85150.8582
[0150]
本发明实施例使用基于rfecv算法特征选择后的数据集,并进行贝叶斯优化。对比贝叶斯优化前的baseline-lightgbm算法与贝叶斯优化后的bayes-lightgbm算法,两者相比,模型性能是否有提升。
[0151]
表3展示了使用贝叶斯优化前后的lightgbm算法模型的auc值对比,结果表明贝叶斯优化后,lightgbm算法的模型在auc值上,从0.8973提升到了0.9223,提升了0.025,证明贝叶斯优化算法有效有效。
[0152]
表3展示了使用贝叶斯优化前后的lightgbm算法模型的auc值对比,结果表明贝叶斯优化后,lightgbm算法的模型在auc值上,从0.8973提升到了0.9223,提升了0.025,证明贝叶斯优化算法有效有效。
[0153]
表3贝叶斯算法前后模型的auc值对比
[0154] 贝叶斯优化前贝叶斯优化后auc0.85820.8665
[0155]
表4展示了贝叶斯优化后的bayse-lightgbm模型的参数设定:
[0156]
表4贝叶斯算法后的模型参数设定
[0157]
参数名称数值colsample_bytree0.77learning_rate0.15max_depth7min_child_samples7min_gain_to_split0.86n_estimators228num_leaves593reg_alpha1.12reg_lambda5.79subsample0.61
[0158]
表5对比了baseline-lightgbm算法在未经过特征选择的数据集上所需要的运行时间与bayes-lightgbm算法在rfecv算法特征选择后的数据集上所需要的运行时间:
[0159]
表5方法改进前后所需运行时间对比
[0160] 原始方法本发明实施例方法时间(秒)9.356.56
[0161]
根据上述实验表明,本发明实施例提出的软件缺陷预测方法能达到0.8665的auc值,相较于原始的软件缺陷预测方法达到的0.8515的auc值,提高了0.015的auc值,并且降低了算法的运行时间,从原始方法的9.35秒,降低为6.56秒,证明本发明实施例提出的方法更优秀。
[0162]
本发明实施例的实验在以下环境中进行实验:操作系统为mac os,芯片为apple m1 pro芯片,内存为16gb,实验软件为pycharm,编程语言为python。
[0163]
在实验过程中,均采用将数据集分割为80%的训练集和20%的测试集的分割方法,并采取十折交叉验证的方式进行验证,来保证结论的可靠性。
[0164]
本发明实施例的数据集,是使用了文献[3]中开源的数据集,该数据集对21个java项目进行采样,这些项目都是从apache软件基金会中选取的,具体项目如表6所示:
[0165]
表6开源数据集项目
[0166]
[0167][0168]
最终得到一个含有39518条样本,200个特征度量以及一个是否引入软件缺陷的标签的数据集。
[0169]
本发明实施例首先对原始数据集进行标准化,标准化步骤分为两个阶段,第一阶段是standardscaler标准化,该标准化方法使大部分数据正太分布地处于0附近,但其中有可能有异常值没有剔除,对模型效果造成影响;所以第二阶段使用robustscaler标准化,该方法可以根据iqr来剔除异常值。
[0170]
然后使用基于随机森林和rfecv的组合特征选择方法对标准化后的数据集进行特征选择处理。本发明实施例使用随机森林算法作为rfecv算法的评估器,来评估各个特征子集组合的交叉验证得分。当特征子集中的特征数量为43个特征时,该特征子集的交叉验证得分最高,其交叉验证的得分为0.9718。因此本发明实施例后续的特征集合选择这43个特征作为软件缺陷预测的特征集合。
[0171]
机器学习模型方面使用baseline-lightgbm算法,来对使用rfecv特征选择算法前后的数据集,构建软件缺陷预测模型,并使用auc作为模型评估指标对模型性能进行评估。
[0172]
表2展示了使用rfecv算法前后模型的auc值对比,结果可以表明,使用rfecv算法后,预测模型的auc值从0.8715提升到了0.8772,auc值提升了0.0057,证明该方法有效。
[0173]
表2 rfecv算法前后模型的auc值对比
[0174] rfecv算法前rfecv算法后auc0.85150.8582
[0175]
本发明实施例使用基于rfecv算法特征选择后的数据集,并进行贝叶斯优化。对比贝叶斯优化前的baseline-lightgbm算法与贝叶斯优化后的bayes-lightgbm算法,两者相比,模型性能是否有提升。
[0176]
表3展示了使用贝叶斯优化前后的lightgbm算法模型的auc值对比,结果表明贝叶斯优化后,lightgbm算法的模型在auc值上,从0.8973提升到了0.9223,提升了0.025,证明贝叶斯优化算法有效有效。
[0177]
表3贝叶斯算法前后模型的auc值对比
[0178] 贝叶斯优化前贝叶斯优化后auc0.85820.8665
[0179]
本发明实施例基于rfe特征选择后的数据集,选取了几种传统的机器学习模型与本发明实施例提出的方法进行比较。本发明实施例选取了逻辑回归(lr),决策树(dt),k最近邻算法(knn),选取这三个传统的机器学习模型进行比较,是因为这三个传统的机器学习模型在分类模型中,较为常用。
[0180]
表7展示了本发明实施例提出的基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,与另外三种传统的机器学习模型进行对比:
[0181]
表7不同方法间的auc值比较
[0182] bayes-lightgbmlrdtknnauc0.86650.66850.47740.6794
[0183]
根据表7的结果可以表明,本发明实施例提出的基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,优于传统的机器学习模型,获得了最高的auc值为0.8665,而决策树的auc值最低,仅为0.4774。
[0184]
由经过上述实验可以证明,本发明实施例提出的基于rfecv特征选择的bayes-lightgbm软件缺陷预测方法,相较于其他机器学习算法,可以有效得预测软件缺陷的发生,对于提前避免软件缺陷的发生有很好的效果。
[0185]
以上详细描述了本发明的较佳具体实施例。应当理解,本领域的普通技术人员无需创造性劳动就可以根据本发明的构思作出诸多修改和变化。因此,凡本技术领域中技术人员依本发明的构思在现有技术的基础上通过逻辑分析、推理或者有限的实验可以得到的技术方案,皆应在由权利要求书所确定的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献