首页> 中国专利> 一种基于特征提取和Stacking集成学习的软件缺陷预测方法

一种基于特征提取和Stacking集成学习的软件缺陷预测方法

摘要

本发明公开了一种基于特征提取和Stacking集成学习的软件缺陷预测方法,包括:(1)利用核主成分分析对原始数据集进行特征提取,得到降维后的缺陷数据集DS′;(2)利用本发明提出的协同过滤算法为新的软件缺陷数据推荐适用的抽样方法,使用推荐的抽样算法在缺陷数据集DS′上进行不平衡处理,得到不平衡处理后的缺陷数据集DS″;(3)使用K‑Means算法对缺陷数据集DS″进行聚类,对于偏离主流类别的异常值进行剔除,得到缺陷数据集DS″′;(4)构建基于Stacking集成学习的软件缺陷预测模型,为第一层的基学习器和第二层的元学习器选择合适的分类器,构建出性能良好的软件缺陷预测模型;(5)在处理后的缺陷数据集DS″′上使用集成后的模型与基模型和主流集成模型进行对比,以此验证本发明提出的集成预测模型的性能优劣。研究结果表明,本发明提出的KSSDP集成预测模型比基模型和主流集成模型的性能更好。

著录项

  • 公开/公告号CN113837266A

    专利类型发明专利

  • 公开/公告日2021-12-24

    原文格式PDF

  • 申请/专利权人 西南民族大学;

    申请/专利号CN202111106611.0

  • 申请日2021-09-22

  • 分类号G06K9/62(20060101);G06F11/36(20060101);

  • 代理机构51223 成都华风专利事务所(普通合伙);

  • 代理人杜朗宇

  • 地址 610000 四川省成都市武侯区一环路南四段16号

  • 入库时间 2023-06-19 13:49:36

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2022-05-20

    授权

    发明专利权授予

说明书

技术领域

本发明涉及软件缺陷领域,具体涉及一种基于特征提取和Stacking集成学习的软件缺陷预测方法。

背景技术

开源软件作为软件产业未来发展的主要趋势之一,如何保证其质量始终是业内关注且至关重要的问题。开源软件的开放性和基于社区的共享性使得源码中经常包含很多漏洞,导致缺陷处理的成本大幅增加,阻碍了开源软件的应用推广。因此,在软件开发前期就识别并控制缺陷的引入因素,对制定有效的缺陷预防措施、降低缺陷引入率和保证软件质量有着十分重要的现实意义。目前主流的缺陷预测技术是利用机器学习中的一些经典分类算法及其改进算法来找出存在缺陷的模块,主要存在如下的局限性:(1)针对大部分缺陷数据集都存在高维数据和冗余特征等问题,现有的模型使用特征选择的方法进行降维,会丢失较多的原始数据特征,对后续的缺陷预测造成不良影响,例如准确率会降低、F-Measure值不高等问题。(2)目前为软件缺陷数据集选择适用的抽样方法,大多都是凭专家的经验和抽样方法的平均性能进行人工选取,这也使得抽样方法选取的效率不高,过于依赖专家经验。(3)目前进行软件缺陷预测,大多都是采用单一预测模型对软件缺陷进行预测。由于缺陷数据的特征复杂多变,单一预测模型自身也存在一定的局限性,当缺陷数据的特征比较复杂时,可能导致预测效果不佳。

发明内容

要解决的技术问题

为克服现有缺陷预测方法的不足,本发明提出一种基于特征提取和Stacking集成学习的软件缺陷预测方法,从而解决现有技术中存在的前述问题。

技术方案

一种基于特征提取和Stacking集成学习的软件缺陷预测方法,其特征在于步骤如下:

步骤1:对原始数据集进行特征提取,通过核主成分分析(KPCA)对原始缺陷数据集DS进行特征提取,以降低数据集的特征维数,将原始缺陷数据集DS的维数降到10维,得到降维后的缺陷数据集DS′;

步骤2:对缺陷数据集DS′进行不平衡处理,本发明提出面向软件缺陷数据的协同过滤抽样推荐方法,首先进行抽样方法排序,用户根据缺陷数据的特征选择分类算法,以度量指标accuracy为依据,利用主流抽样方法在历史缺陷数据上进行采样,使用选择的分类算法在历史缺陷数据上对主流抽样方法进行排序,得到主流抽样方法的性能排序,然后进行数据相似性挖掘,当新缺陷数据和历史缺陷数据属于同一个项目,计算新缺陷数据和历史缺陷数据之间的杰卡德(Jaccard)相似系数,把杰卡德相似系数作为新缺陷数据和历史缺陷数据之间的相似性得分,当新缺陷数据和历史缺陷数据属于不同项目,对新缺陷数据和历史缺陷数据进行特征提取,并进行归一化,然后计算新缺陷数据和历史缺陷数据之间的欧式距离,把欧式距离的倒数作为新缺陷数据和历史缺陷数据之间的相似性得分,最后进行基于用户的推荐,将抽样方法排名和数据相似性的信息结合起来,利用协同过滤算法为新的软件缺陷数据推荐适用的抽样方法,使用推荐的抽样算法在缺陷数据集DS′上进行不平衡处理,得到不平衡处理后的缺陷数据集DS″;

步骤3:对缺陷数据集DS″中的异常值进行检测并剔除,使用K-Means算法对缺陷数据集DS″进行聚类,对于偏离主流类别的异常值进行剔除,得到缺陷数据集DS″′;

步骤4:构建基于Stacking集成学习的软件缺陷预测模型,为第一层的基学习器和第二层的元学习器选择合适的分类器,构建出性能良好的软件缺陷预测模型(KSSDP);

步骤5:对KSSDP集成预测模型进行性能验证,在处理后的缺陷数据集DS″′上使用集成后的模型与基模型和主流集成模型进行对比,以此验证KSSDP集成预测模型的性能优劣。

有益效果

本发明提出的一种基于特征提取和Stacking集成学习的软件缺陷预测方法(KSSDP),采用核主成分分析对缺陷数据集进行特征提取,以降低数据特征之间的相关性,使用面向软件缺陷数据的协同过滤抽样推荐方法解决缺陷数据集的类不平衡问题,该方法首先在用户选择的分类算法下计算训练集在主流的抽样方法处理后的预测准确率,并以此为衡量标准对抽样方法进行排序,然后使用杰卡德相似系数计算新缺陷数据集与历史缺陷数据集之间的相似度,或者计算新缺陷数据集和历史缺陷数据集之间的欧式距离的倒数作为相似度,最后通过前面的排名分数和相似度值就能得到推荐分数,根据推荐分数为用户推荐适用的抽样方法,以平衡数据集的正负样本数量,使用K-Means算法对缺陷数据集进行聚类,以找到并剔除数据集的异常值,使用Stacking集成学习构建软件缺陷预测模型,通过在多个NASA缺陷数据集上进行仿真实验,实验结果表明该模型比基模型和主流集成模型的性能更好;因此,本发明在为新数据集推荐抽样方法时,不需要人工介入,实现了自动为新缺陷数据集选择适用的抽样方法,同时,本发明提出的基于特征提取和Stacking集成学习的软件缺陷预测方法在误报率和F-Measure指标上表现良好,比基模型和主流集成模型的泛化性更好。

附图说明

图1KSSDP集成预测模型的流程图

图2面向软件缺陷数据的协同过滤抽样推荐方法流程图

图3包含3个历史数据集和4种抽样方法的推荐网络结构图

图4-图5与基模型的误报率(Pf)、F-Measure对比图

图6-图7与最优主流集成模型的误报率(Pf)、F-Measure对比图

具体实施方式

现结合实施例、附图对本发明作进一步描述:

本发明提出了基于特征提取和Stacking集成学习的软件缺陷预测方法(KSSDP),KSSDP集成预测模型的流程图见图1,解决其技术问题所采用的技术方案包括以下内容:

1.对原始数据集进行特征提取

利用非线性映射核函数将低维特征空间内的原始数据点映射到高维特征空间,进而提取具有代表性的特征,并对复杂的缺陷数据结构进行表征。其核心原理如下:

假设x通过相应的函数ρ映射到u中,其定义如下:

u=ρ(x) (1)

核函数将数据映射到相应的N维特征空间,映射特征空间中的数据满足以下特定条件:

2.面向软件缺陷数据的协同过滤抽样推荐方法

本发明提出的面向软件缺陷数据的协同过滤抽样推荐方法,其流程图见附图2。该方法采用十折交叉验证方法对历史数据集进行训练,把历史数据集OD={OD

RankScore[i][j]=RankScore[i][j]+accuracy (3)

通过十次迭代,最终得到取不同份作为测试集情况下的性能度量值accuracy的累加和,对数据集OD

RankScore[i][j]=RankScore[i][j]/10 (4)

最后得到的性能度量值总和的平均值RankScore[i][j]作为抽样方法排序的依据。

本发明计算新缺陷数据集ND与历史缺陷数据集OD={OD

当新缺陷数据和历史缺陷数据属于不同项目时,利用核主成分分析对新缺陷数据集ND与历史缺陷数据集OD进行特征提取,把ND和OD的维数都降到10维,本发明使用如下的公式对ND和OD的特征x

记新缺陷数据集ND归一化后的特征为y

为了保证相似度的取值范围在0到1之间,对每一个历史缺陷数据集OD

本发明将抽样方法排名得分和相似性得分对应相乘并把其积作为推荐分数RecScore,采用TOP-N排序方法向新数据集推荐适用的抽样方法。对于抽样方法集合T={T

对于不同的抽样方法,在计算出其推荐分数RecScore之后,根据推荐分数RecScore值的大小进行排序,得到抽样方法的Top-N排序,进而实现为新的软件缺陷数据自动推荐适用的抽样方法。本发明给出了由三个历史缺陷数据集和四种抽样方法组成的推荐网络结构示意图,具体见附图3,其将抽样方法排名和数据相似性的信息结合起来构建一个三层推荐网络,第一层与第二层的连接权重为数据集之间的相似性得分,第二层与第三层之间的连接权重为排名得分。

3.检测出缺陷数据集的异常值

基于聚类准则函数最小化的原则,通过迭代将数据划分到不同的类中,使生成的类尽可能地紧凑和独立,对偏离主流类别的异常值进行剔除。其核心原理如下:

对于i=1,2,…,m,计算样本x

4.构建基于Stacking集成学习的软件缺陷预测模型

在Stacking集成学习模型中,第一层的基学习器需要满足以下特性:具备足够强的性能、尽量小的相关性和差距不能太大的性能表现。

根据以上的特性,本发明选用KNN模型、随机森林模型和高斯朴素贝叶斯模型作为第一层的基学习器。其中,KNN模型被广泛应用,由于它具有理论成熟、训练方式高效等特点;随机森林模型是在Bagging集成框架下以决策树为基本模型集合而成,在实践应用中具有较好的效果;高斯朴素贝叶斯模型只需要较少的样本量就能进行训练,擅长处理可分的二分数据,还具有训练速度快等特性。由于Stacking集成学习模型可能会出现过拟合的情况,为了减少过拟合的发生,Stacking模型中第二层的元学习器应该使用较为简单的模型进行学习,故本发明选择逻辑回归模型作为第二层的元学习器。

5.对KSSDP集成预测模型进行性能验证

通过误报率及F-Measure这些通用指标进行比较,分析本发明的KSSDP集成模型与基模型和主流集成模型的性能优劣。从图4中可以看出,KSSDP在数据集JM1上的误报率比较高,随机森林模型、高斯朴素贝叶斯模型和逻辑回归模型都比KSSDP模型低,其中高斯朴素贝叶斯模型甚至比KSSDP模型的误报率低18.8%。在数据集PC4上,高斯朴素贝叶斯模型的误报率也比KSSDP模型低,相差7.1%。但是KSSDP模型在其余的6个数据集上都表现良好,达到最低的误报率或者接近最低的误报率,整体上看,KSSDP模型的误报率控制的还是比较理想的。

从图5中可以看出,本发明提出的KSSDP模型在这8个数据集上的表现都还不错,F-Measure是一个综合指标,能客观地反映出一个模型的好坏。KSSDP模型在8个数据集上均取得最高值,可以说明KSSDP模型的性能是优于单个的基分类器的,包括KNN模型、随机森林模型、高斯朴素贝叶斯模型和逻辑回归模型,进而说明本发明提出的KSSDP模型是可行和有效的。

本发明选取了最优的主流集成模型进行对比,如果KSSDP集成预测模型比最优的主流集成模型性能更好,自然就比所有的主流集成模型性能好。在F-Measure和Pf这两个指标上,最优的主流集成模型是ExtraTrees模型。由图6和图7可知,本发明提出的方法在这8个数据集上保持着很高的F-Measure值,并且保持着较低的误报率。在数据集PC1上,ExtraTrees模型比KSSDP模型的F-Measure值高,但在剩下的7个数据集上,KSSDP模型的F-Measure值都比ExtraTrees模型高。在误报率这个指标上,虽然ExtraTrees模型在数据集JM1和PC1上比KSSDP模型低,但是ExtraTrees模型的波动比较大,ExtraTrees模型的平均误报率为11.36%,KSSDP模型的平均误报率为9.7%,说明ExtraTrees模型不够稳定。综上所述,本发明提出的方法有着优良的性能,因为在8个数据集上的整体性能表现要优于基模型和主流集成模型。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号