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

基于隔离森林的跨项目缺陷预测样本过滤方法及预测方法

2022-07-16 10:55:46 来源:中国专利 TAG:


1.本发明涉及软件缺陷预测技术领域,更具体的说是涉及一种基于隔离森林的跨项目缺陷预测样本过滤方法及预测方法。


背景技术:

2.近年来,软件缺陷预测已经在软件工程中成为一个活跃的领域。当被测软件没有历史版本或软件历史数据量过少时,采用和被测软件度量元名称和数量一致的其他软件的历史知识(“源数据”)对被测软件(“目标数据”)缺陷情况进行预测,称为“同构跨项目缺陷预测”。预先了解软件的质量状况可以为软件工程相关人员提供一定的指导,使其合理地分配资源,节约成本,提高软件测试效率。
3.跨项目缺陷预测的数据样本主要来源于其他项目,因此,对被测软件而言,存在一部分噪声数据,而且,跨项目数据样本有严重的数据不平衡性,即缺陷数据远远少于非缺陷数据。数据样本中存在的噪声和数据不平衡这两个特点都会降低构建的软件跨项目缺陷预测模型的性能,从而导致预测被测软件缺陷不准确。因此,如何对数据进行过滤和筛选是提高跨项目缺陷预测模型性能的关键。
4.目前,已经有很多学者提出了不同的同构跨项目数据处理方法,主要可以分为基于样本选择、基于维度转换和改进算法的三类方法。
5.基于样本选择的方法有7种:基于k近邻的样本过滤法(burak filter,简称bf)、迁移朴素贝叶斯法(transferbayes,简称tnb)、基于k近邻的混合样本选择方法(hybrid instance selection using nearest-neighbor,hisnn)、基于凝聚聚类的数据过滤方法(data filter by agglomerative clustering,dfac)、基于选择的层次过滤器(the hierarchical selection-based filter,简称hsbf)、成本感知的监督跨项目缺陷预测(effort-aware supervised cross-project defect prediction,简称easc)和基于协同过滤的源项目选择(collaborative filtering based source projects selection,简称cfps);基于维度转换的方法有2种:迁移主成分分析扩展方法(transfer component analysis extension,简称tca )和基于双边缘去噪自动编码器的联合特征表示方法(joint feature representation with double marginalized denoising autoencoders,简称dmda-jfr);基于改进算法的方法主要有3种:朴素领头羊方法(bellwether,简称bnaive)、迁移主成分分析扩展领头羊方法(bellwether tca ,简称btca )和加权朴素贝叶斯领头羊方法(bellwether tnb,简称btnb)。
6.但是,以上方法大部分是通过样本选择(噪声移除)考虑源项目数据和目标数据的样本之间的相似性或通过特征空间变换来缩小源项目数据和目标数据之间的分布差异。但这些方法都是强依赖于目标数据集的。并且,当源项目数据量很大时,样本选择或特征变换的时间成本很高,如bf、hisnn的计算复杂度为指数级,这就导致构建缺陷预测模型效率较低。并且除dmda-jfr和领头羊方法外,大部分方法没有利用缺陷标签数据,而这一信息在缺陷预测的模糊边界时很重要,可以提升模型的性能。而模型性能、成本和效率在软件工程师
最为在意的。
7.因此,如何提供一种简单、易用、不依赖于目标项目且效率高的跨项目缺陷预测样本过滤方法及预测方法,是本领域技术人员亟需解决的问题。


技术实现要素:

8.有鉴于此,本发明提供了一种基于隔离森林的跨项目缺陷预测样本过滤方法及预测方法,旨在解决软件同构跨项目缺陷预测中数据存在噪声、过度依赖目标数据集且构建模型效率低的问题,能够在删除噪声样本和利用缺陷标签数据的同时,提高软件缺陷预测模型的性能和构建模型的效率。
9.为了实现上述目的,本发明采用如下技术方案:
10.一种基于隔离森林的跨项目缺陷预测样本过滤方法,包括:
11.s1.提取同构跨项目软件的数据集作为源项目数据集;
12.s2.将所述源项目数据集进行平衡化获得平衡数据;
13.s3.将所述平衡数据划分为正样本数据和负样本数据,所述正样本数据为有缺陷的数据,所述负样本为无缺陷的数据;
14.s4.分别对所述正样本数据和所述负样本数据构建隔离森林;
15.s5.对所述隔离森林进行加权处理并进行样本过滤:计算每个样本数据在隔离树上的加权路径长度,根据所述加权路径长度计算每个样本数据在加权隔离森林的平均加权路径长度,根据所述平均加权路径长度计算每个样本数据的异常值,根据预设的异常比例移除加权隔离森林的异常样本并将剩余的正样本数据和负样本数据合成,获得过滤后的源数据集。
16.优选的,s2中对所述源项目数据平衡化前还包括对所述源项目数据集进行数据预处理,所述数据预处理的具体内容包括:
17.s21.将所述源项目数据集的数值类型的缺陷标签信息二元化:当缺陷标签大于等于1时,标记为1,表示有缺陷,当缺陷标签为0时,保持不变,表示无缺陷;
18.s22.选取所述源项目数据集作为源数据样本;
19.s23.剔除重复样本:当所述源数据样本中存在完全一样的样本时,只保留一个样本;
20.s24.数据标准化:采用z-score标准化技术将去重的源数据样本和目标度量元变为均值为0,方差为1的数据。
21.优选的,s3中所述将所述平衡数据划分为正样本数据和负样本数据是根据所述缺陷标签信息进行。
22.优选的,s4的具体内容包括:
23.s41.分别从所述正样本数据和所述负样本数据中随机选择m个样本作为训练数据集每个样本由特征f组成,所述隔离森林由t棵隔离树组成,iforest={itree1,itree2,...,itree
t
},从x中无替换随机抽样选出子样本x',x'的大小为φ,隔离树的限制高度为h
lim
,h
lim
=ceiling(log2φ);
24.s42.初始化itree:构建一个根节点,所述根节点包含所有的子样本x';
25.s43.随机选择所有特征中的一个特征f,f∈f,并随机选择一个划分点p,所述划分
点介于选取特征的最值之间,f
min
≤p≤f
max

26.s44.将输入样本在当前根节点的特征f的取值与选取的划分点比较,将根节点划分为两个子节点,即:如果f<p,则样本放在左子节点上,如果f≥p,则样本放在右子节点上;
27.s45.重复s42-s44直到所有的样本被孤立,所述孤立的条件是:(a)x'只包含一个样本,或者所有的样本具有相同的特征值;(b)itree达到了限制高度。
28.优选的,s5的具体内容包括:
29.s51.计算所述正样本和所述负样本在隔离树itree上的加权路径长度hw(x):
30.其中,每层节点的加权边计算为:
[0031][0032]
其中,φ1是当前节点真实样本的数量,φ2为当前节点人工合成样本的数量;
[0033]hw
(x)为每个样本x在itree上从根节点到一个外部节点遍历终止时遍历的加权边的数量,即遍历witree的总加权边的数量:
[0034][0035]
其中,当h≤h
lim
时,h为witree的总高度,当h>h
lim
时,令h=h
lim
,c(φ)为调和参数;
[0036][0037]
其中,h(i)是谐波数,可以估计为ln(i) 0.5772156649(欧拉常量);
[0038]
s52.计算所述正样本和所述负样本的平均加权路径长度e(hw(x)),即样本在所有witree上的平均加权边的数量:
[0039][0040]
其中,t为wiforest中包含的witree的数量;
[0041]
s53.计算所述正样本和所述负样本标准化后的异常分数s(x),并判断样本是否异常;
[0042][0043]
其中,e(hw(x))取值范围为[0,1];
[0044]
s54.设置数据集中的异常比例为α,那么样本集中异常分数为前的样本为异常样本,其中表示取整,将正样本构成的森林和负样本构成的森林分别移除异常分数在前α比例的样本,剩余的正样本和负样本合成,构成过滤后的源数据集。
[0045]
一种基于隔离森林的跨项目缺陷预测方法,基于所述的一种基于隔离森林的跨项目缺陷预测样本过滤方法,包括:
[0046]
步骤一、随机选取预设比例的同构跨项目软件的源项目数据集作为源数据集进行样本过滤,获得过滤后的源数据集;
[0047]
步骤二、采用机器学习算法作为分类器,将所述过滤后的源数据集输入所述分类器对所述分类器进行训练,获得缺陷预测模型;
[0048]
步骤三、将被测软件的目标数据集输入所述缺陷预测模型,获得所述目标数据集的预测结果;
[0049]
步骤四、根据所述预测结果,采用分类任务的性能评价指标对被测软件进行性能评估。
[0050]
优选的,步骤三中将被测软件的目标数据输入所述缺陷预测模型前,采用z-score对所述目标数据集进行数据标准化。
[0051]
优选的,将步骤一到步骤四重复进行n次,n大于1。
[0052]
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于隔离森林的跨项目缺陷预测样本过滤方法及预测方法,针对软件缺陷预测中的分类任务,以简单、易用的隔离森林方法(iforest)为基础,通过改进隔离森林,过滤源数据集,提升软件缺陷预测中的源项目数据的质量,解决了目前样本过滤方法中强依赖于目标项目、效率低、预测模型性能差的问题,并且实现对软件预测模型的数据选择指导,进而缩短软件开发的周期,节约成本。
附图说明
[0053]
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
[0054]
图1附图为本发明提供的跨项目缺陷预测方法流程图;
[0055]
图2附图为本发明实施例提供的36个开源java项目数据的统计状况;
[0056]
图3附图为本发明实施例提供的以rf作为分类器,wiflf方法和基线方法的skewed f-measure对比结果;
[0057]
图4附图为本发明实施例提供的以rf作为分类器,wiflf方法和基线方法的g-measure结果。
具体实施方式
[0058]
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0059]
本发明实施例公开了一种基于隔离森林的跨项目缺陷预测样本过滤方法,包括:
[0060]
s1.提取同构跨项目软件的数据集作为源项目数据集;
[0061]
s2.将源项目数据集进行平衡化获得平衡数据;
[0062]
s3.将平衡数据划分为正样本数据和负样本数据,正样本数据为有缺陷的数据,负
样本为无缺陷的数据;
[0063]
s4.分别对正样本数据和负样本数据构建隔离森林;
[0064]
s5.对所述隔离森林进行加权处理并进行样本过滤:计算每个样本数据在隔离树上的加权路径长度,根据所述加权路径长度计算每个样本数据在加权隔离森林的平均加权路径长度,根据所述平均加权路径长度计算每个样本数据的异常值,根据预设的异常比例移除加权隔离森林的异常样本并将剩余的正样本数据和负样本数据合成,获得过滤后的源数据集。
[0065]
为了进一步实施上述技术方案,s2中对源项目数据平衡化前还包括对源项目数据集进行数据预处理,数据预处理的具体内容包括:
[0066]
s21.将源项目数据集的数值类型的缺陷标签信息二元化:当缺陷标签大于等于1时,标记为1,表示有缺陷,当缺陷标签为0时,保持不变,表示无缺陷;
[0067]
s22.选取源项目数据集作为源数据样本;
[0068]
s23.剔除重复样本:当源数据样本中存在完全一样的样本时,只保留一个样本;
[0069]
s24.数据标准化:采用z-score标准化技术将去重的源数据样本和目标度量元变为均值为0,方差为1的数据。
[0070]
在本实施中,采用smote算法将源项目数据集进行平衡化获得平衡数据。
[0071]
在本实施例中,采用smote算法将源数据中不平衡的数据增加为平衡的数据,比如源数据中正样本为20个,负样本为15个,通过smote方法,增加负样本为20个。
[0072]
为了进一步实施上述技术方案,s3中将平衡数据划分为正样本数据和负样本数据是根据缺陷标签信息进行。
[0073]
为了进一步实施上述技术方案,s4的具体内容包括:
[0074]
s41.分别从正样本数据和负样本数据中随机选择m个样本作为训练数据集每个样本由特征f组成,隔离森林由t棵隔离树组成,iforest={itree1,itree2,...,itree
t
},从x中无替换随机抽样选出子样本x',x'的大小为φ,隔离树的限制高度为h
lim
,h
lim
=ceiling(log2φ);
[0075]
s42.初始化itree:构建一个根节点,根节点包含所有的子样本x';
[0076]
s43.随机选择所有特征中的一个特征f,f∈f,并随机选择一个划分点p,划分点介于选取特征的最值之间,f
min
≤p≤f
max

[0077]
s44.将输入样本在当前根节点的特征f的取值与选取的划分点比较,将根节点划分为两个子节点,即:如果f<p,则样本放在左子节点上,如果f≥p,则样本放在右子节点上;
[0078]
s45.重复s42-s44直到所有的样本被孤立,孤立的条件是:(a)x'只包含一个样本,或者所有的样本具有相同的特征值;(b)itree达到了限制高度。
[0079]
为了进一步实施上述技术方案,s5的具体内容包括:
[0080]
s51.计算正样本和负样本在隔离树itree上的加权路径长度hw(x):
[0081]
其中,每层节点的加权边计算为:
[0082]
[0083]
其中,φ1是当前节点真实样本的数量,φ2为当前节点人工合成样本的数量;真实样本指的是源数据中本来就有的数据,人工合成样本指的是经smote方法后添加的数据。
[0084]hw
(x)为每个样本x在itree上从根节点到一个外部节点遍历终止时遍历的加权边的数量,即遍历witree的总加权边的数量:
[0085][0086]
其中,当h≤h
lim
时,h为witree的总高度,当h>h
lim
时,令h=h
lim
,c(φ)为调和参数;
[0087][0088]
其中,h(i)是谐波数,可以估计为ln(i) 0.5772156649(欧拉常量);
[0089]
s52.计算正样本和负样本的平均加权路径长度e(hw(x)),即样本在所有witree上的平均加权边的数量:
[0090][0091]
其中,t为wiforest中包含的witree的数量;
[0092]
s53.计算正样本和负样本标准化后的异常分数s(x),并判断样本是否异常;
[0093][0094]
其中,e(hw(x))取值范围为[0,1];
[0095]
s54.设置数据集中的异常比例为α,那么样本集中异常分数为前的样本为异常样本,其中表示取整,将正样本构成的森林和负样本构成的森林分别移除异常分数在前α比例的样本,剩余的正样本和负样本合成,构成过滤后的源数据集。
[0096]
在本实施例中,异常比例α≤0.5。
[0097]
传统的隔离森林是将所有的数据构建一个森林,在本实施例中,加权隔离森林在构建加权隔离森林之前,首先根据缺陷标签将源数据分成两组,再构建隔离森林;构建隔离森林完成后评估样本正常异常是根据真实样本和人工合成样本的比例对路径长度进行加权,降低人工合成样本对评估结果的影响,避免评估对所有样本同等对待。
[0098]
一种基于隔离森林的跨项目缺陷预测方法,基于一种基于隔离森林的跨项目缺陷预测样本过滤方法,包括:
[0099]
步骤一、随机选取预设比例的同构跨项目软件的源项目数据集作为源数据集进行样本过滤,获得过滤后的源数据集;
[0100]
步骤二、采用机器学习算法作为分类器,将过滤后的源数据集输入分类器对分类器进行训练,获得缺陷预测模型;
[0101]
步骤三、将被测软件的目标数据集输入缺陷预测模型,获得目标数据集的预测结果;
[0102]
步骤四、根据预测结果,采用分类任务的性能评价指标对被测软件进行性能评估。
[0103]
为了进一步实施上述技术方案,步骤三中将被测软件的目标数据输入缺陷预测模型前,采用z-score对目标数据集进行数据标准化。
[0104]
为了进一步实施上述技术方案,将步骤一到步骤四重复进行n次,n大于1。
[0105]
在实际应用中,n大于等于30。
[0106]
在本实施例中,选取90%的源项目数据集作为源数据样本,步骤一到步骤四重复进行30次。
[0107]
在本实施例中,如图2,采用来源于三个开源的java缺陷数据库进行样本过滤和缺陷预测,分别为promise(jureczko m,madeyski l.towards identifying software project clusters with regard to defect prediction;proceedings of the proceedings of the 6th international conference on predictive models in software engineering,f,2010[c].)、aeeem(d'ambros m,lanza m,robbes r.an extensive comparison of bug prediction approaches;proceedings of the proceedings of msr 2010(7th ieee working conference on mining software repositories),cape town,south africa,f,2010[c].ieee computer society.)和relink(wu r,zhang h,kim s,et al.relink:recovering links between bugs and changes;proceedings of the proceedings of the 19th acm sigsoft symposium and the 13th european conference on foundations of software engineering,szeged,hungary,f,2011[c].acm:2025120.)。从中选择36个软件项目的缺陷数据集作为源项目数据,分为4组,每个样本代表一个软件类模块,因此,所有的数据集的颗粒度为类级class-level,并且,样本中的度量元为自变量,类标签为因变量,这些缺陷数据集的具体统计信息包括,项目名称和版本、度量元数量、缺陷数量和缺陷率,并将其中的数值型类标签转换为二元类型,即将数据集中的最后一列缺陷数据标签中缺陷数量为0的设置为0(无缺陷),缺陷数量大于等于1的设置为1(有缺陷),缺陷数据集的缺陷率是指数据集中有缺陷样本的数目与总的样本数目的比值。
[0108]
在本实施例中,为了和本发明提出的方法(简称为wiflf)进行比较,选择了12种对比方法,分别为:bf、hisnn、tnb、dfac、hsbf、cfps、easc、bellwether(bnaive)、bellwether tnb(btnb)、tca 、bellwether tca (btca )和dmda_jfr,使用了常见的机器学习算法随机森林(rf),实验采用数据处理软件python进行,各个算法均采用默认参数,为了避免算法的随机性带来的影响,每个数据集执行30次,实验结果采用均值。
[0109]
采用常用的分类模型性能评价指标skewed f-measure和g-measure进行评价,分类模型中,将真正的正类的预测结果为正类的称为真正例(tp),将真正的正类的预测结果为负类的称为假正例(fp),将真正的负类的预测结果为负类的称为真负例(tn),将真正的负类的预测结果为正类的称为假负例(fn)。
[0110]
精确度表示预测为正例中真正为正例的占比,精确度的取值范围为[0,1],取值越大,表示模型预测的精确度越高;
[0111]
召回率表示真正为正例中预测为正例的占比,召回率的取值范围
为[0,1],取值越大,表示模型预测的召回率越高;
[0112]
虚警率取值范围为[0,1],pf值越小,表示模型越好。
[0113]
skewed f-measure的计算方法如下,采用β=2,用于非平衡数据构建的模型性能评估:
[0114][0115]
g-measure是pd和(1-pf)的调和平均数,取值范围为[0,1],值越大表示模型越好:
[0116][0117]
为了评估本发明的方法和对比方法在统计学上是否有显著差异,本文分别采用wilcoxon signed-rank test(wilcoxon f.individual comparisons by ranking methods[j].biometrics,1945,1(6).)来评估wiflf方法与基线方法的性能;如果两组样本的检验结果的p值小于0.05,则表示本发明的方法和几线方法在95%的置信度上显著不同;同时,在一个数据集上,如果wiflf显著优于某种方法,记一次“win”,如果显著劣于某个方法,记一次“loss”,否则,记一次“tie”,“w\t\l”表示的是本发明方法和对比方法的显著优劣情况。
[0118]
部分代表性的结果如图3和图4所示,其中图中的数值除“w\t\l”外,均省略了%;
[0119]
从图2-图4及分析可以看出本发明提出的一种基于隔离森林的用于同构跨项目缺陷预测的样本过滤方法在这36个项目的随机版本上大部分都取得了很好的效果:
[0120]
从图3可以看到,wiflf获得的skewed f-measure均值为50.54%,与其他方法相比最低提升14.64%。并且,从“w\t\l”的结果上也可以看出,wiflf是在95%的置信度下是显著优于基线方法的,因为wiflf与基线中表现最好的方法bnaive相比,在36个数据集上有25个胜出;
[0121]
从图4可以看到,wiflf得到的g-measure均值为63.32%,与其他方法相比最低提升了4.90%。并且,从“w\t\l”的结果上也可以看出,wiflf是在95%的置信度下是显著优于基线方法的,因为wiflf与基线中表现最好的方法bnaive相比,在36个数据集上有17个胜出。
[0122]
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
[0123]
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

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

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

相关文献