CN116185817A - 一种软件缺陷预测规则的筛选方法及系统 - Google Patents
一种软件缺陷预测规则的筛选方法及系统 Download PDFInfo
- Publication number
- CN116185817A CN116185817A CN202211512762.0A CN202211512762A CN116185817A CN 116185817 A CN116185817 A CN 116185817A CN 202211512762 A CN202211512762 A CN 202211512762A CN 116185817 A CN116185817 A CN 116185817A
- Authority
- CN
- China
- Prior art keywords
- rules
- rule
- frequent item
- association rule
- software defect
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 230000007547 defect Effects 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims abstract description 51
- 238000012216 screening Methods 0.000 title claims abstract description 22
- 238000012360 testing method Methods 0.000 claims abstract description 64
- 238000012549 training Methods 0.000 claims abstract description 51
- 238000004422 calculation algorithm Methods 0.000 claims abstract description 21
- 230000002950 deficient Effects 0.000 claims description 53
- 230000008569 process Effects 0.000 claims description 8
- 238000002790 cross-validation Methods 0.000 claims description 5
- 230000006872 improvement Effects 0.000 description 9
- 238000005259 measurement Methods 0.000 description 7
- 238000005065 mining Methods 0.000 description 3
- 238000013138 pruning Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 238000007635 classification algorithm Methods 0.000 description 2
- 230000008878 coupling Effects 0.000 description 2
- 238000010168 coupling process Methods 0.000 description 2
- 238000005859 coupling reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 208000025174 PANDAS Diseases 0.000 description 1
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 1
- 240000000220 Panda oleosa Species 0.000 description 1
- 235000016496 Panda oleosa Nutrition 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000004043 responsiveness Effects 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及一种软件缺陷预测规则的筛选方法及系统,属于关联规则筛选技术领域,解决了现有软件缺陷特征选择复杂且预测规则存在冗余的问题。包括获取历史软件缺陷数据,构建样本集;基于样本集执行如下步骤,进行迭代训练和测试:将样本集划分为训练集和测试集;基于关联规则算法,根据三个支持度阈值从训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合;从关联规则集合中提取类关联规则,根据选择的预测指标对测试集进行预测,根据预测结果计算分类性能指标;迭代训练和测试结束后,取分类性能指标最优时的类关联规则,作为软件缺陷预测规则。提高了筛选预测规则的准确性和高效性。
Description
技术领域
本发明涉及关联规则筛选技术领域,尤其涉及一种软件缺陷预测规则的筛选方法及系统。
背景技术
软件缺陷以一种静态形式存在于软件内部,是软件开发过程中人为错误的结果。软件作为思维的产物不可避免地受到开发人员自身、所使用的编程语言特点及软件运行环境等多方面的影响。但是,由于人所具有的思维定势以及编程语言自身的特性,使得软件缺陷出现具有一定的统计规律。
软件缺陷预测技术通过各种分类器模型判断软件模块的缺陷倾向,基于关联规则算法的缺陷预测技术目前已用于软件缺陷预测领域。关联规则挖掘是从事务集合中挖掘出满足支持度和置信度最低要求的所有规则,这类规则也称强关联规则。
大多数经典关联分类算法采用单支持度和置信度挖掘规则以降低算法的复杂度、规则数和整体准确度为目标,未考虑类不平衡对关联分类算法的影响。而且,由于关联规则通过使用者人为设置支持度阈值与置信度阈值,这使得中间生成了大量的频繁项集生成导致大量冗余关联规则的生成,这对于关联规则算法在运行时的效率与性能都带来了很大负面影响。传统的关联规则置信度指标主要关注关联规则前件与后件之间的正相关关联关系,而忽略了关联规则中的负相关关系。
发明内容
鉴于上述的分析,本发明实施例旨在提供一种软件缺陷预测规则的筛选方法及系统,用以解决现有软件缺陷特征选择复杂且关联规则存在冗余的问题。
一方面,本发明实施例提供了一种软件缺陷预测规则的筛选方法,包括如下步骤:
获取历史软件缺陷数据,构建样本集;
基于样本集执行如下步骤,进行迭代训练和测试:将样本集划分为训练集和测试集;基于关联规则算法,根据三个支持度阈值从训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合;从关联规则集合中提取类关联规则,根据选择的预测指标对测试集进行预测,根据预测结果计算分类性能指标;
迭代训练和测试结束后,取分类性能指标最优时的类关联规则,作为软件缺陷预测规则。
基于上述方法的进一步改进,样本集中每条样本包括多个软件缺陷度量元和1个缺陷标签;所述从关联规则集合中提取类关联规则,包括:从关联规则集合中获取后件是缺陷标签的关联规则;根据类关联规则的长度和双置信度,去除冗余的类关联规则。
基于上述方法的进一步改进,样本集根据缺陷标签被划分为有缺陷数据集和无缺陷数据集;所述迭代训练和测试,是采用M次K折交叉验证方法,进行M×K次迭代训练和测试,每次训练和测试过程中,分别将有缺陷数据集和无缺陷数据集划分为K折,训练集包括K-1折有缺陷数据集和K-1折无缺陷数据集,测试集中包括1折有缺陷数据集和1折无缺陷数据集。
基于上述方法的进一步改进,三个支持度阈值分别对含有有缺陷标签的频繁项集、含有无缺陷标签的频繁项集和仅有软件缺陷度量元的频繁项集进行设置。
基于上述方法的进一步改进,不同长度的频繁项集的提升度阈值,通过下式计算得到:
lift(Setn)=1+θipv×(n-1)
其中,θipv表示提升度阈值递增步长,n表示频繁项集的长度,Setn表示长度为n的频繁项集,n>1。
基于上述方法的进一步改进,类关联规则的双置信度通过下式计算得到:
基于上述方法的进一步改进,根据类关联规则的长度和双置信度,去除冗余的类关联规则,包括:
根据类关联规则的长度和双置信度对类关联规则进行排序,得到类关联规则集合;
依次从排序后的类关联规则集合中取出类关联规则,获取当前类关联规则的前件的所有子集,如果任一子集存在于类关联规则集合中其它类关联规则的前件中且后件相同,则从类关联规则集合中去除当前类关联规则。
基于上述方法的进一步改进,根据类关联规则的长度和双置信度对类关联规则进行排序,包括:
计算每个类关联规则的前件长度,及类关联规则的双置信度;
根据前件长度从大到小对类关联规则进行排序,如果前件长度相等但双置信度不相等,则根据双置信度从高到低进行排序,如果前件长度相等且双置信度相等,则根据字典顺序进行排序。
基于上述方法的进一步改进,选择的预测指标是类关联规则的双置信度或线性相关系数;所述分类性能指标包括AUC、Balance和G-mean的一个或多个,其中,AUC通过下式计算得到:
其中,TPR为真阳性率,FPR为假阳性率。
另一方面,本发明实施例提供了一种软件缺陷预测规则的筛选系统,包括:
样本获取模块,用于获取历史软件缺陷数据,构建样本集;
规则生成模块,用于基于样本集执行如下步骤,进行迭代训练和测试:将样本集划分为训练集和测试集;基于关联规则算法,根据三个支持度阈值从训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合;从关联规则集合中提取类关联规则,根据选择的预测指标对测试集进行预测,根据预测结果计算分类性能指标;
规则筛选模块,用于迭代训练和测试结束后,取分类性能指标最优时的类关联规则,作为软件缺陷预测规则。
与现有技术相比,本发明至少可实现如下有益效果之一:
1、根据软件缺陷度量元和缺陷标签,对不同种类的频繁项集设置多支持度对频繁项集进行挖掘,利用其中的软件度量元之间的支持度进行软件缺陷特征选择,提升了软件缺陷预测中软件缺陷度量元的质量,使软件缺陷度量元在生成带有缺陷标签的关联规则时更准确,而且不需要额外进行人为特征选择,提升了关联规则算法的效率与性能。
2、同时支持度阈值和提升度阈值,并根据频繁项集的长度逐渐增加提升度的阈值,使得大量负相关性的频繁项集被剔除的同时提升了预测关联规则的生成效率与性能。
3、使用双置信度同时考虑关联规则中前件与后件之间的正相关关系与负相关关系,并根据关联规则的长度和双置信度进行冗余规则剪枝,提高了关联规则的筛选效率和准确性。
本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本发明实施例1中一种软件缺陷预测规则的筛选方法流程图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理,并非用于限定本发明的范围。
实施例1
本发明的一个具体实施例,公开了一种基于类关联规则的软件缺陷预测方法,如图1所示,包括如下步骤:
S11:获取历史软件缺陷数据,构建样本集。
需要说明的是,历史软件缺陷数据可以根据定义的软件缺陷的度量指标,使用现有静态软件代码分析工具对项目下的各软件模块扫描来获取各度量指标值,并根据实际软件模块是否存在缺陷,打上缺陷标签,从而以每个模块的多个度量指标值(即软件缺陷度量元)和1个缺陷标签作为一条样本,构建成样本集;也可以直接使用开源软件缺陷领域的公开数据集,比如Promise库的Ant项目的软件缺陷数据集,其中软件缺陷的度量指标包括:代码行数(loc)、类的加权方法数(wmc)、继承树的深度(dit)、缺陷数量等,根据缺陷数量可以获取有无缺陷标签,从而构建出样本集。
根据缺陷标签将样本集划分为有缺陷数据集和无缺陷数据集。
S12:基于样本集执行如下步骤,进行迭代训练和测试:将样本集划分为训练集和测试集;基于关联规则算法,根据三个支持度阈值从训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合;从关联规则集合中提取类关联规则,根据类关联规则的双置信度,对测试集进行预测,根据预测结果计算分类性能指标;
需要说明的是,为了减小采样误差,增强算法的泛化能力,本步骤中采用多次迭代训练和测试,并在每次迭代中随机划分新的训练集和测试集,下面通过步骤S121-步骤S123详细说明训练和测试过程。
S121:将样本集划分为训练集和测试集。
需要说明的是,本实施例采用M次K折交叉验证方法,进行M×K次迭代训练和测试,每次训练和测试过程中,分别将有缺陷数据集和无缺陷数据集划分为K折,训练集包括K-1折有缺陷数据集和K-1折无缺陷数据集,测试集中包括1折有缺陷数据集和1折无缺陷数据集。
优选地,采用10次5折交叉验证方法,迭代50次,每次运行时采用不同的随机种子将有缺陷数据集和无缺陷数据集划分为5折,其中4折有缺陷数据集和4折无缺陷数据集组成训练集,1折有缺陷数据集和1折无缺陷数据集组成测试集。
需要说明的是,本步骤中构建的训练集和测试集中同时包含有缺陷标签的样本和无缺陷标签样本,最大化保留了原始数据特征分布,解决了因数据不平衡导致的测试集缺失某类数据,更有利于软件缺陷规则模型的学习。
S122:基于关联规则算法,根据三个支持度阈值从当前训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合。
需要说明的是,关联规则中的支持度反映了项集出现的概率,也就是项集与总事务数的比例。然而针对软件缺陷数据的不平衡问题,即软件有缺陷数据与软件无缺陷数据服从二八分布,仅仅依靠单一支持度无法处理类不平衡数据。因此,本实施例分别对有缺陷的频繁项集、无缺陷的频繁项集和仅有软件缺陷度量元的频繁项集设置各自的支持度阈值,保证了不同类的频繁项集的数量与质量。
值得注意的是,虽然最终用于预测的关联规则是带有缺陷标签的关联规则,但是通过对仅有软件缺陷度量元的频繁项集设置支持度,可以剔除掉一部分支持度较低的特征(软件缺陷度量元),从而使剩下的软件缺陷度量元质量更高,即:用于软件缺陷预测的软件特征质量更高,使软件缺陷度量元在生成带有缺陷标签的关联规则时更准确。而且,该过程不需要额外进行人为特征选择,提升了关联规则算法的效率与性能。
需要说明的是,由于软件缺陷数据集中数据是连续数据,但关联规则处理的是离散数据,因此对训练集中的数据进行五阶等频离散化,以便关联规则算法可以更好地处理软件缺陷数据。
优选地,通过python pandas库中的qcut等频划分函数对软件缺陷训练集中的每条数据进行五阶等频离散化。
将训练集中每条数据等频离散化并转换为一条事务性数据,将其中的软件缺陷度量元和缺陷标签作为项,根据三个最小支持度阈值,采用关联规则算法,生成频繁项集。优选地,采用Apriori算法。
为了避免生成过多冗余的频繁项集,对生成的频繁项集再根据提升度进行筛选。提升度用于表示关联规则中前件和后件之间的相关性,当提示度大于1表示前件和后件之间是正相关关系,前件X与后件Y之间的提升度定义如下:
其中,P(XY)表示前件X与后件Y同时发生的概率,P(X)表示前件X发生的概率,P(Y)表示后件Y发生的概率。
通过提升度的公式(1)可以看出,提升度至少针对长度大于1的频繁项集才可以使用。同时随着频繁项集的长度不断增加,虽然频繁项集所包含的信息越来越多,但是这会使得生成的关联规则容易出现过拟合的情况。所以本实施例根据频繁项集长度设置对应的提升度阈值。
具体来说,不同长度的频繁项集的提升度阈值,通过下式计算得到:
lift(Setn)=1+θipv×(n-1) 公式(2)
其中,θipv表示提升度阈值递增步长,n表示频繁项集的长度,Setn表示频繁n-项集,n>1。
需要说明的是,筛选出频繁项集是当频繁项集的提升度大于等于公式(2)计算得到提升度阈值时,保留该频繁项集。最后,根据最小置信度阈值,将筛选出来的频繁项集转化为关联规则,得到关联规则集合。
示例性地,对Promise库的ANT1.3项目的软件缺陷数据集划分出训练集后,有缺陷的频繁项集的支持度支设置为0.06,无缺陷的频繁项集的支持度设置为0.21,仅有软件缺陷度量元的频繁项集的支持度设置为0.2,提升度阈值递增步长设置为0.04,置信度阈值设置为0.14,生成的关联规则的部分结果如下所示:
rule=rfc=(41.4,inf]=>defects=truesupport=:0.0805confidence=:0.4,其中,defects是缺陷标签,defects=true表示有缺陷,inf表示无穷大,该规则表示如果软件模块出现类的响应度(rfc)在(41.4,inf]这个范围时,软件模块倾向于发生缺陷,该规则的支持度为0.0805,置信度为0.4;
rule=ca=(0.0,1.0]=>defects=falsesupport=:0.4161confidence=:0.9688,其中,defects是缺陷标签,defects=false表示无缺陷,该规则表示如果软件模块出现传出耦合度(ca)在(0.0,1.0]这个范围时,软件模块倾向于不会发生缺陷,该规则的支持度为0.4161,置信度为0.9688;
rule=mfa=(-inf,0.0]=>cbm=(-inf,0.0],dit=(-inf,1.0]support=:0.3243confidence=:0.6857,其中,-inf表示负无穷大,该规则仅有软件缺陷度量元,表示如果软件模块出现功能抽象的度量(mfa)在(-inf,0.0]这个范围时,软件模块倾向于出现方法间的耦合度(cbm)在(-inf,0.0]范围内,及继承树的深度(dit)在(-inf,1.0]范围内,该规则的支持度为0.3243,置信度为0.6857。
与现有技术相比,本实施例根据频繁项集的长度逐渐增加提升度的阈值,使得大量负相关性的频繁项集被剔除的同时提升了预测关联规则的生成效率与性能。
S123:从关联规则集合中提取类关联规则,根据选择的预测指标对当前测试集进行预测,根据预测结果计算分类性能指标。
需要说明的是,为了提升预测效率,本实施例通过考虑类关联规则中前件与后件的关联关系的紧密性,对步骤S122最后得到的关联规则集合进一步提取出后件是缺陷标签的类关联规则,并根据类关联规则的长度和双置信度,去除冗余的类关联规则。
需要说明的是,在关联规则算法中根据最小置信度阈值提取的关联规则主要关注关联规则前件与后件之间的正相关关联关系,而忽略了关联规则中的负相关关系。形如的关联规则表示如果前件A发生则后件B也将发生,这就表示前件A与后件B之间存在正相关关系,而关联规则/>则表示如果前件A不发生则后件B发生,这就表示前件A与后件B之间存在负相关关系。因此,本实施例使用双置信度同时考虑关联规则中前件与后件之间的正相关关系与负相关关系,从而去除紧密性不强的类关联规则。
具体来说,双置信度是根据前件发生的前提下后件也发生的概率,减去前件不发生的前提下后件发生的概率而得到,定义如下:
根据公式(3)可以看出:针对关联规则的前件X与后件Y,当X发生的前提下Y也发生的概率尽可能高,同时X不发生的前提下而Y发生的概率尽可能低,这样的前件X与后件Y之间的相关关系更加紧密。
需要说明的是,长度越长的类关联规则虽然所含信息多但是可能会造成过拟合,长度越短的类关联规则虽然所含信息少但是泛化性更好。因此,本实施例根据类关联规则的长度和双置信度对类关联规则进行排序后,再根据长度进行剪枝,确保两者达到平衡。
具体来说,根据类关联规则的长度和双置信度,去除冗余的类关联规则包括:
①根据类关联规则的长度和双置信度对类关联规则进行排序,得到类关联规则集合;
需要说明的是,排序方法包括:
计算每个类关联规则的前件长度,及类关联规则的双置信度;
根据前件长度从大到小对类关联规则进行排序,如果前件长度相等但双置信度不相等,则根据双置信度从高到低进行排序,如果前件长度相等且双置信度相等,则根据字典顺序进行排序。其中,字典顺序即按字母顺序排列的方法。
②依次从排序后的类关联规则集合中取出类关联规则,获取当前类关联规则的前件的所有子集,如果任一子集存在于类关联规则集合中其它类关联规则的前件中且后件相同,则从类关联规则集合中去除当前类关联规则。
示例性地,对于规则R1:X1,X2,X3=>Y1的前件的所有子集包括:{X1},{X2},{X3},{X1,X2},{X1,X3},{X2,X3},{X1,X2,X3},如果类关联规则集合中还存在规则R2:X1,X3=>Y1,则去除规则R1。
去除冗余的类关联规则后,得到用于预测的类关联规则,根据选择的预测指标对测试集进行预测。
需要说明的是,预测指标包括双置信度和线性相关系数,其中,线性相关系数采用皮尔逊相关系数计算得到,用以反映类关联规则中软件缺陷度量元与缺陷标签之间相关关系的密切程度,定义如下:
其中,P(XY)表示关联规则的前件X和后件Y同时发生的概率,P(X)表示关联规则的前件发生的概率,P(Y)表示关联规则的后件发生的概率。
根据选择的类关联规则的双置信度或线性相关系数构造预测有缺陷决策器和无缺陷决策器;在对当前测试集进行预测时,依次从测试集中取出每条测试样本,将当前测试样本中软件缺陷度量元数据,分别与用于预测的类关联规则的前件进行匹配,根据被匹配的类关联规则的缺陷标签和预测指标,将预测指标值累加入对应的预测有缺陷或无缺陷决策器;根据最大值对应的决策器,得到当前测试样本的缺陷预测结果。
具体来说,根据后件的缺陷标签将用于预测的类关联规则划分为预测有缺陷的关联规则与预测无缺陷的关联规则;以双置信度或线性相关系数为预测指标,若当前测试样本中软件缺陷度量元数据可以匹配用于预测有缺陷的关联规则的前件,则将被匹配的关联规则的预测指标值累加入预测有缺陷决策器,若当前测试样本中软件度量元数据可以匹配用于预测无缺陷的关联规则的前件,则将被匹配的关联规则的预测指标值累加入预测无缺陷决策器,最终判断预测有缺陷决策器与预测无缺陷决策器的值哪个更大,从而预测出当前测试样本是否有缺陷,即:如果有缺陷决策器的值最大,则预测当前测试样本有缺陷,否则预测当前测试样本无缺陷。
根据预测结果计算分类性能指标,包括:
①将测试集的预测结果与测试样本实际的缺陷标签进行比对,计算出真阳性TP、假阴性FN、假阳性FP和真阴性TN。
需要说明的是,TP是将有缺陷的测试样本分类为有缺陷的个数,FN是将有缺陷的测试样本分类为无缺陷的个数,FP是将无缺陷的测试样本分类为有缺陷类的个数,TN是将无缺陷的测试样本分类为无缺陷类的个数。
②根据真阳性TP、假阴性FN、假阳性FP和真阴性TN,通过下式计算真阳性率TPR和假阳性率FPR。
③根据真阳性率TPR和假阳性率FPR,通过下式计算得到分类性能指标AUC值。
需要说明的是,根据真阳性率TPR和假阳性率FPR,还可以计算出G-mean指标和Balance指标,其中,G-mean指标是缺陷检测率和缺陷误报率的几何平均值,如公式(8)所示;Balance指标是从理想点(1,0)到实际点(TPR,1-FPR)的欧氏距离,如公式(9)所示。
采用M次K折交叉验证方法,重复上述步骤S121-步骤S123进行训练和测试,记录每次用于预测的关联规则,以及分类性能指标值。
S13:迭代训练和测试结束后,取分类性能指标最优时的类关联规则,作为软件缺陷预测规则。
需要说明的是,本实施例比较每次迭代中得到的AUC、Balance和G-mean,根据实际情况,取其中一个或多个最优时的类关联规则作为软件缺陷预测规则。
示例性地,获取公开的软件缺陷数据集Promise的ANT1.3数据集构建样本集,在相同的参数和运行环境下,分别采用本实施例中的方法与传统的Apriori算法进行50次迭代,结果对比情况如下:
①本实施例在运行时间、用于预测的关联规则的数量,以及分类性能AUC指标上都有显著提升。具体结果如表1所示。
表1本实施例方法与Apriori算法的运行结果对比表
②分别以双置信度和线性相关系数作为预测指标,与经典的支持度,置信度进行对比,在AUC、Balance和G-mean三个性能指标上都有提升。具体结果如表2所示:
表2 ANT1.3数据集性能指标的结果对比表
评价指标 | 支持度 | 置信度 | 双置信度 | 线性相关系数 |
AUC | 0.754 | 0.806 | 0.814 | 0.811 |
G-mean | 0.800 | 0.800 | 0.808 | 0.802 |
Balance | 0.788 | 0.782 | 0.788 | 0.788 |
与现有技术相比,本实施例提供的一种基于类关联规则的软件缺陷预测方法,根据软件缺陷度量元和缺陷标签,对不同种类的频繁项集设置多支持度对频繁项集进行挖掘,利用其中的软件度量元之间的支持度进行软件缺陷特征选择,提升了软件缺陷预测中软件缺陷度量元的质量,使软件缺陷度量元在生成带有缺陷标签的关联规则时更准确,而且不需要额外进行人为特征选择,提升了关联规则算法的效率与性能;同时支持度阈值和提升度阈值,并根据频繁项集的长度逐渐增加提升度的阈值,使得大量负相关性的频繁项集被剔除的同时提升了预测关联规则的生成效率与性能;使用双置信度同时考虑关联规则中前件与后件之间的正相关关系与负相关关系,并根据关联规则的长度和双置信度进行冗余规则剪枝,选择双置信度或线性相关系数作为预测指标,提高了关联规则的筛选效率和准确性。
实施例2
本发明的另一个实施例,公开了一种软件缺陷预测规则的筛选系统,从而实现实施例1中的软件缺陷预测规则的筛选方法。各模块的具体实现方式参照实施例1中的相应描述。该系统包括:
样本获取模块,用于获取历史软件缺陷数据,构建样本集;
规则生成模块,用于基于样本集执行如下步骤,进行迭代训练和测试:将样本集划分为训练集和测试集;基于关联规则算法,根据三个支持度阈值从训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合;从关联规则集合中提取类关联规则,根据选择的预测指标对测试集进行预测,根据预测结果计算分类性能指标;
规则筛选模块,用于迭代训练和测试结束后,取分类性能指标最优时的类关联规则,作为软件缺陷预测规则。
由于本实施例一种基于类关联规则的软件缺陷预测系统与前述一种基于类关联规则的软件缺陷预测方法相关之处可相互借鉴,此处为重复描述,故这里不再赘述。由于本系统实施例与上述方法实施例原理相同,所以本系统实施例也具有上述方法实施例相应的技术效果。
本领域技术人员可以理解,实现上述实施例方法的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读存储介质中。其中,所述计算机可读存储介质为磁盘、光盘、只读存储记忆体或随机存储记忆体等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种软件缺陷预测规则的筛选方法,其特征在于,包括如下步骤:
获取历史软件缺陷数据,构建样本集;
基于样本集执行如下步骤,进行迭代训练和测试:将样本集划分为训练集和测试集;基于关联规则算法,根据三个支持度阈值从训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合;从关联规则集合中提取类关联规则,根据选择的预测指标对测试集进行预测,根据预测结果计算分类性能指标;
迭代训练和测试结束后,取分类性能指标最优时的类关联规则,作为软件缺陷预测规则。
2.根据权利要求1所述的软件缺陷预测规则的筛选方法,其特征在于,所述样本集中每条样本包括多个软件缺陷度量元和1个缺陷标签;所述从关联规则集合中提取类关联规则,包括:从关联规则集合中获取后件是缺陷标签的关联规则;根据类关联规则的长度和双置信度,去除冗余的类关联规则。
3.根据权利要求1所述的软件缺陷预测规则的筛选方法,其特征在于,所述样本集根据缺陷标签被划分为有缺陷数据集和无缺陷数据集;所述迭代训练和测试,是采用M次K折交叉验证方法,进行M×K次迭代训练和测试,每次训练和测试过程中,分别将有缺陷数据集和无缺陷数据集划分为K折,训练集包括K-1折有缺陷数据集和K-1折无缺陷数据集,测试集中包括1折有缺陷数据集和1折无缺陷数据集。
4.根据权利要求3所述的软件缺陷预测规则的筛选方法,其特征在于,所述三个支持度阈值分别对含有有缺陷标签的频繁项集、含有无缺陷标签的频繁项集和仅有软件缺陷度量元的频繁项集进行设置。
5.根据权利要求1所述的软件缺陷预测规则的筛选方法,其特征在于,所述不同长度的频繁项集的提升度阈值,通过下式计算得到:
lift(Setn)=1+θipv×(n-1)
其中,θipv表示提升度阈值递增步长,n表示频繁项集的长度,Setn表示长度为n的频繁项集,n>1。
7.根据权利要求6所述的软件缺陷预测规则的筛选方法,其特征在于,所述根据类关联规则的长度和双置信度,去除冗余的类关联规则,包括:
根据类关联规则的长度和双置信度对类关联规则进行排序,得到类关联规则集合;
依次从排序后的类关联规则集合中取出类关联规则,获取当前类关联规则的前件的所有子集,如果任一子集存在于类关联规则集合中其它类关联规则的前件中且后件相同,则从类关联规则集合中去除当前类关联规则。
8.根据权利要求7所述的软件缺陷预测规则的筛选方法,其特征在于,所述根据类关联规则的长度和双置信度对类关联规则进行排序,包括:
计算每个类关联规则的前件长度,及类关联规则的双置信度;
根据前件长度从大到小对类关联规则进行排序,如果前件长度相等但双置信度不相等,则根据双置信度从高到低进行排序,如果前件长度相等且双置信度相等,则根据字典顺序进行排序。
10.一种软件缺陷预测规则的筛选系统,其特征在于,包括:
样本获取模块,用于获取历史软件缺陷数据,构建样本集;
规则生成模块,用于基于样本集执行如下步骤,进行迭代训练和测试:将样本集划分为训练集和测试集;基于关联规则算法,根据三个支持度阈值从训练集中生成频繁项集,根据不同长度的频繁项集的提升度阈值,筛选出频繁项集并转化为关联规则,得到关联规则集合;从关联规则集合中提取类关联规则,根据选择的预测指标对测试集进行预测,根据预测结果计算分类性能指标;
规则筛选模块,用于迭代训练和测试结束后,取分类性能指标最优时的类关联规则,作为软件缺陷预测规则。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211512762.0A CN116185817A (zh) | 2022-11-30 | 2022-11-30 | 一种软件缺陷预测规则的筛选方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211512762.0A CN116185817A (zh) | 2022-11-30 | 2022-11-30 | 一种软件缺陷预测规则的筛选方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116185817A true CN116185817A (zh) | 2023-05-30 |
Family
ID=86443068
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211512762.0A Pending CN116185817A (zh) | 2022-11-30 | 2022-11-30 | 一种软件缺陷预测规则的筛选方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116185817A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117787946A (zh) * | 2023-12-15 | 2024-03-29 | 华能济南黄台发电有限公司 | 一种电厂安全生产管理方法及系统 |
CN117827937A (zh) * | 2024-03-05 | 2024-04-05 | 山东天大清源信息科技有限公司 | 基于多源数据整合与数据挖掘的监控方法、系统及存储介质 |
CN117787946B (zh) * | 2023-12-15 | 2024-09-27 | 华能济南黄台发电有限公司 | 一种电厂安全生产管理方法及系统 |
-
2022
- 2022-11-30 CN CN202211512762.0A patent/CN116185817A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117787946A (zh) * | 2023-12-15 | 2024-03-29 | 华能济南黄台发电有限公司 | 一种电厂安全生产管理方法及系统 |
CN117787946B (zh) * | 2023-12-15 | 2024-09-27 | 华能济南黄台发电有限公司 | 一种电厂安全生产管理方法及系统 |
CN117827937A (zh) * | 2024-03-05 | 2024-04-05 | 山东天大清源信息科技有限公司 | 基于多源数据整合与数据挖掘的监控方法、系统及存储介质 |
CN117827937B (zh) * | 2024-03-05 | 2024-05-24 | 山东天大清源信息科技有限公司 | 基于多源数据整合与数据挖掘的监控方法、系统及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112784881B (zh) | 网络异常流量检测方法、模型及系统 | |
CN109408389B (zh) | 一种基于深度学习的代码缺陷检测方法及装置 | |
CN110335168B (zh) | 基于gru优化用电信息采集终端故障预测模型的方法及系统 | |
CN106250442A (zh) | 一种网络安全数据的特征选择方法及系统 | |
CN106203534A (zh) | 一种基于Boosting的代价敏感软件缺陷预测方法 | |
CN111898690B (zh) | 一种电力变压器故障分类方法及系统 | |
CN111310799B (zh) | 一种基于历史评估结果的主动学习方法 | |
CN111834010A (zh) | 一种基于属性约简和XGBoost的COVID-19检测假阴性识别方法 | |
Fong et al. | A novel feature selection by clustering coefficients of variations | |
CN117391258B (zh) | 一种负碳排放的预测方法、装置、设备及存储介质 | |
CN115577639A (zh) | 基于麻雀搜索法优化支持向量机的变压器故障诊断方法 | |
Chakradeo et al. | Breast cancer recurrence prediction using machine learning | |
CN114818809B (zh) | 基于交叉小波的sca-svm电机滚动轴承的故障诊断方法 | |
CN112560596A (zh) | 一种雷达干扰类别识别方法及系统 | |
CN116185817A (zh) | 一种软件缺陷预测规则的筛选方法及系统 | |
CN117892209A (zh) | 一种基于支持向量机和进化计算的过采样方法 | |
Kohns et al. | Decoupling shrinkage and selection for the Bayesian quantile regression | |
CN115599698B (zh) | 一种基于类关联规则的软件缺陷预测方法及系统 | |
CN114117876A (zh) | 基于改进哈里斯鹰算法的特征选择方法 | |
CN112347162A (zh) | 一种基于在线学习的多元时序数据规则挖掘方法 | |
Márquez-Grajales et al. | Surrogate-Assisted Symbolic Time-Series Discretization Using Multi-Breakpoints and a Multi-Objective Evolutionary Algorithm | |
CN115545125B (zh) | 一种软件缺陷关联规则网络剪枝方法及系统 | |
Gu et al. | Improving Productivity and Efficiency of SSD Manufacturing Self-Test Process by Learning-Based Proactive Defect Prediction | |
CN114021663B (zh) | 基于序列局部判别信息挖掘网络的工业过程离线数据分割方法 | |
CN117574137B (zh) | 一种高维制造工艺数据的特征选择方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |