CN107391370B - 一种基于数据过采样和集成学习的软件缺陷数目预测方法 - Google Patents

一种基于数据过采样和集成学习的软件缺陷数目预测方法 Download PDF

Info

Publication number
CN107391370B
CN107391370B CN201710571131.9A CN201710571131A CN107391370B CN 107391370 B CN107391370 B CN 107391370B CN 201710571131 A CN201710571131 A CN 201710571131A CN 107391370 B CN107391370 B CN 107391370B
Authority
CN
China
Prior art keywords
software
software module
defect
defects
data
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.)
Expired - Fee Related
Application number
CN201710571131.9A
Other languages
English (en)
Other versions
CN107391370A (zh
Inventor
余啸
刘进
周培培
崔晓晖
伍蔓
井溢洋
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201710571131.9A priority Critical patent/CN107391370B/zh
Publication of CN107391370A publication Critical patent/CN107391370A/zh
Application granted granted Critical
Publication of CN107391370B publication Critical patent/CN107391370B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (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-2]表明,如果只按照有无缺陷来分配有限的测试资源,可能会造成资源分配的浪费。如果我们能够准确的预测出缺陷数目,使软件测试人员主要关注那些拥有更多缺陷的软件模块,就可使软件测试工作更为有效。因此,预测软件缺陷数目相比于单纯的预测软件模块是否有缺陷更利于优化软件测试资源的分配。
软件缺陷数目预测过程分为四个阶段:
(a)挖掘软件历史数据,从中抽取出有用的程序模块。程序模块粒度可根据实际应用场景,可设置为文件、包、类或函数;
(b)提取出与软件缺陷有关的特征,并构建出软件缺陷数据集;
(c)借助特定的建模方法在软件缺陷数据集上构建出软件缺陷数目预测模型。不同于单纯的预测新的软件模块是否存在缺陷时采用的是分类模型,软件缺陷数目建模方法采用的是回归模型;
(d)在对新的软件模块提取出特征后,利用步骤(b)中训练出的软件缺陷数目预测模型,预测该模块存在多少个缺陷。
构建软件缺陷数目预测模型时最常用的是线性回归模型。线性回归模型是一种用于对因变量与一个或多个独立变量之间的线性关系进行建模的统计方法。一个线性回归模型如下式所示:
Y=b0+b1x1+b2x2+…+bnxn
其中Y是因变量,对应于软件缺陷数目预测时即为软件模块的缺陷数目,x1,x2,...,xn是独立变量,对应于软件缺陷数目预测时即为软件模块的特征,b1,b2,...,bn是独立变量的回归系数,b0是误差项。
在缺陷数据集中,大多数软件模块的缺陷数目为零,只有少数软件模块有缺陷。当在这样的数据集上建立缺陷数目预测模型后,预测模型极易预测新的软件模块的缺陷数目为零。因此,数据不平衡会对缺陷预测结果产生一定的影响,同时对缺陷数目预测模型的有效性也提出了新的挑战。
处理不平衡数据问题的方法有很多种:
第一类是采样法,包括过采样和欠采样两种,它们分别通过增加少数类样本和减少多数类样本得到分类相对平衡的新数据集;
第二类是代价敏感学习,在分类不平衡问题中,正确识别少数类比正确识别多数类更有价值,即错分少数类比错分多数类要付出更大的代价,但传统的分类模型认为所有类别的错分类代价是相同的。因此,如文献[2]中提出的代价敏感学习方法通过为不同类别赋予不同的错分类代价来提高少数类的分类性能;
第三类是集成学习,如文献[4]提出的装袋方法和文献[5]提出的提升方法通过聚集多个模型的预测结果来提高分类性能。一般地,集成模型的性能要优于单个模型的性能。
上述三种方法已经在解决预测软件模块是否有缺陷时得到了成功的应用,然而目前在软件缺陷数目预测领域还没有相应的处理不平衡数据的方法被提出。文献[1]R.Malhotra.A systematic review of machine learning techniques for softwarefault prediction,Applied Soft Computing,27:504-518,2015.
文献[2]N.E.Fenton and M.Neil.A critique of software defect predictionmodels.IEEE Transactions on software engineering,25(5):675-689,1999.
文献[3]J.Zheng.Cost-sensitive boosting neural networks for softwaredefect prediction,Expert Systems with Applications,37(6):4537-4543,2010.
文献[4]L.Breiman.Bagging predictors.Machine learning,24(2):123-140,1996.
文献[5]Freund,Yoav,and E.Robert.Schapire.Experiments with a newboosting algorithm.icml,96:148-156,1996.
发明内容
本发明针对软件缺陷数据集中数据极度不平衡会降低软件缺陷数目预测模型的性能的问题,提出了一种基于数据过采样和集成学习的软件缺陷数目预测方法。
本发明所采用的技术方案是:一种基于数据过采样和集成学习的软件缺陷数目预测方法,其特征在于,包括以下步骤:
步骤1:挖掘软件历史数据,从中抽取出n个软件模块;然后标记这些软件模块的缺陷数目;
步骤2:提取软件模块中与软件缺陷有关的l个特征,获得包含有n个软件模块数据的软件缺陷数据集S;其中,软件模块Xi的软件模块数据由一个l维的特征向量和软件模块Xi的缺陷数目yi组成;
步骤3:对软件缺陷数据集S中的软件模块数据进行过采样,形成新的分布平衡的软件缺陷数据集S’;
步骤4:利用集成学习的思想,进行T次迭代,在第t次迭代时,对步骤3中形成的新的软件缺陷数据集S’进行有放回的随机抽样形成训练集St’,然后基于训练集St’训练出一个弱回归模型,最后集成T次迭代产生的T个弱回归模型形成一个强回归模型F(x);
步骤5:利用步骤4中训练出的强回归模型F(x),预测待预测的软件模块的缺陷数目。
本发明设计了合理的不平衡数据处理策略,首先利用过采样技术通过增加缺陷数据集中缺陷数目为大于零的软件模块得到相对平衡的新数据集,然后利用相对平衡的缺陷数据集训练出若干个弱的软件缺陷数目预测模型,最后集成这些弱的软件缺陷数目预测模型来预测待预测的软件模块的缺陷数目。本发明的技术方案既能够解决缺陷数据集中数据不平衡的问题,又能够结合多个弱的预测模型来提高软件缺陷数目预测模型的性能。
附图说明
图1为本发明的流程图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
本发明提供的基于数据过采样和集成学习的软件缺陷数目预测方法的流程见附图1,所有步骤可由本领域技术人员采用计算机软件技术实现流程自动运行。实施例具体实现过程如下:
步骤1:挖掘软件历史数据,从中抽取出n个软件模块。软件模块粒度可根据实际应用场景,可设置为文件、包、类或函数。然后标记这些软件模块的缺陷数目。
步骤2:提取软件模块中与软件缺陷有关的特征,提取了20个特征:加权方法数(wmc),继承树深度(dit),孩子数(noc),对象类之间的耦合度(cbo),类的响应(rfc),内聚缺乏度(lcom),传入耦合(ca),传出耦合(ce),公开方法数(npm),代码行数(loc),数据访问度量(dam),聚合度量(moa),功能抽象度量(mfa),方法间的内聚度(cam),继承耦合(ic),方法间耦合(cbm),平均方法复杂度(amc),最大McCabe环形复杂度(max_cc),平均McCabe环形复杂度(avg_cc),最小McCabe环形复杂度(min_cc)。
在经过了步骤1和步骤2后,本实施例假设抽取了15个软件模块后,形成了如下包含有15个软件模块数据的软件缺陷数据集S,每个软件模块数据由一个20维的特征向量xi=(x1i,x2i,x3i,x4i,x5i,x6i,x7i,x8i,x9i,x10i,x11i,x12i,x13i,x14i,x15i,x16i,x17i,x18i,x19i,x20i)和该模块的缺陷数目yi组成。
X1={(13,2,0,18,112,76,3,17,1,0.88,1000,1,1,0.4,0.3,1,1,75.8,10,5.2),“1”},
X2={(10,3,0,11,17,33,3,11,9,0.56,79,1,0,0.67,0.267,1,1,6.7,3,1.1),“0”},
X3={(13,1,0,66,13,78,66,1,13,2,13,0,0,0,0.369,0,0,0,1,1),“4”},
X4={(17,1,0,84,17,136,80,7,17,2,17,0,0,0,0.222,0,0,0,1,1),“0”},
X5={(0,1,0,27,0,0,26,1,0,2,0,0,0,0,0,0,0,0,0,0),“0”},
X6={(2,3,0,3,7,1,0,3,1,2,24,0,0,0.833333333,0.667,1,1,11,1,0.5),“0”},
X7={(5,3,0,8,31,2,1,8,3,0.5,122,1,1,0.8,0.4,0,0,23,3,1.2),“0”},
X8={(26,1,1,10,47,0,5,5,24,0.08,236,1,1,0,0.258,0,0,8.038,2,1),“0”}
X9={(3,1,0,8,14,3,3,5,3,2,85,0,0,0,0.5,0,0,27.33333333,9,3.3333),“3”},
X10={(13,1,0,1,17,64,0,1,12,0.917,117,1,0,0,0.462,0,0,7.462,3,1.38),“0”},
X11={(4,1,0,4,4,6,2,2,4,2,4,0,0,0,1,0,0,0,1,1),“7”},
X12={(10,1,0,6,31,1,0,6,9,0.5,156,1,1,0,0.355555556,0,0,14.4,1,0.8),“3”},
X13={(7,1,0,6,19,7,0,6,6,0.75,117.0,1,2,0,0.367,0,0,15.143,3,1.1429),“0”},
X14={(38,1,0,30,155,485,0,30,34,0.9,1564,1,7,0,0.14,0,0,39.6,7,1.5),“0”},
X15={(25,1,0,13,74,0,0,13,23,0.444,901,1,2,0,0.2,0,0,34.92,1,0.92),“0”},
步骤3:对软件缺陷数据集S中的软件模块数据进行过采样,形成新的分布平衡的软件缺陷数据集S’;
具体实现包括以下子步骤:
步骤3.1:在软件缺陷数据集中搜索缺陷数目大于0的软件模块Xi的k个缺陷数目也大于0的近邻软件模块,记为Xi(near);
本实施例令k=3,以软件模块X1为例,计算其3个缺陷数目也大于0的近邻软件模块。在软件缺陷数据集S的15个模块中,X1、X3、X9、X11、X12是缺陷数目大于0的软件模块,而X2、X4、X5、X6、X7、X8、X10、X12、X13、X14、X15是缺陷数目等于0的软件模块。所以计算软件模块X1与软件模块X3、软件模块X9、软件模块X11、软件模块X12之间的欧氏距离。
Figure BDA0001349701700000051
Figure BDA0001349701700000052
Figure BDA0001349701700000053
Figure BDA0001349701700000054
因此本实施例中,软件模块X1的3个缺陷数目也大于0的近邻软件模块为软件模块X3、软件模块X9、软件模块X12,记为X1(near)={X3,X9,X12}。
步骤3.2:设定数据集的过采样倍率m,即从Xi的k个缺陷数目也大于0的近邻软件模块Xi(near)中随机抽取m个软件模块进行插值操作合成新的软件模块。新的软件模块的20维的特征向量xinew=xi+rand(0,1)×(xi’-xi),其中,xi为Xi的20维的特征向量,rand(0,1)为0与1之间的某一随机数,xi’为从Xi的k个缺陷数目也大于0的近邻Xi(near)中随机抽取的一个软件模块Xi’的20维的特征向量。新的软件模块的缺陷数目
Figure BDA0001349701700000061
其中,yi为软件模块Xi的缺陷数目,yi’为软件模块Xi’的缺陷数目,d1为软件模块Xi的20维的特征向量与新合成的软件模块Xinew之间的20维的特征向量之间的欧氏距离,d2为软件模块Xi’的20维的特征向量与新合成的软件模块Xinew之间的20维的特征向量之间的欧氏距离。
步骤3.3:对全部的p个缺陷数目大于0的软件模块重复步骤3.1和3.2的操作,便可合成m×p个新的软件模块,这些新的软件模块加入到原始软件缺陷数据集S中形成新的软件缺陷数据集S’。
本实施例令过采样倍率m=1,即从X1的3个缺陷数目也大于0的近邻软件模块中随机抽取1个软件模块进行插值操作合成新的软件模块,假设抽取的软件模块为X12。本实施例假设rand(0,1)函数取值为0.5,新的软件模块的20维的特征向量x1new=x1+rand(0,1)×(x1(j)-x1)=(11.5,1.5,0,12,71.5,38.5,1.5,11.5,5,0.69,578,1,1,0.2,0.327778,0.5,0.5,45.1,5.5,3),其中,x1为X1的20维的特征向量,x1’为从X1的3个缺陷数目也大于0的近邻X1(near)中随机抽取的一个软件模块X1’的20维的特征向量。新的软件模块的缺陷数目
Figure BDA0001349701700000062
其中,y1为软件模块X1的缺陷数目,y1’为软件模块X1’的缺陷数目,d1为软件模块X1的20维的特征向量与新合成的软件模块X1new之间的20维的特征向量之间的欧氏距离,d2为软件模块X1’的20维的特征向量与新合成的软件模块X1new之间的20维的特征向量之间的欧氏距离。
同理可以得到X3、X9、X11、X12的合成模块。本实施例假设得到软件模块X3的新的合成模块为X3new={(13,1.5,0,42,62.5,77,34.5,9,7,1.44,506.5,0.5,0.5,0.2,0.33,0.5,0.5,37.9,5.5,3.1),“2.5”},软件模块X9的新的合成软件模块为X9new={(6.5,1,0,7,22.5,2,1.5,5.5,6,1.25,120.5,0.5,0.5,0,0.43,0,0,20.87,5,2.07),“3”},软件模块X11的新的合成软件模块为X11new={(3.5,1,0,6,9,4.5,2.5,3.5,3.5,2,44.5,0,0,0,0.75,0,0,13.67,5,2.17),“5”},软件模块X12的新的合成软件模块为X12new={(6.5,1,0,7,22.5,2,1.5,5.5,6,1.25,120.5,0.5,0.5,0,0.43,0,0,20.8667,5,2.07),“3”}。所以形成的新的软件缺陷数据集S’为:
X1={(13,2,0,18,112,76,3,17,1,0.88,1000,1,1,0.4,0.3,1,1,75.8,10,5.2),“1”},
X1new={(11.5,1.5,0,12,71.5,38.5,1.5,11.5,5,0.69,578,1,1,0.2,0.327778,0.5,0.5,45.1,5.5,3),“2”}
X2={(10,3,0,11,17,33,3,11,9,0.56,79,1,0,0.67,0.267,1,1,6.7,3,1.1),“0”},
X3={(13,1,0,66,13,78,66,1,13,2,13,0,0,0,0.369,0,0,0,1,1),“4”},
X3new={(13,1.5,0,42,62.5,77,34.5,9,7,1.44,506.5,0.5,0.5,0.2,0.33,0.5,0.5,37.9,5.5,3.1),“2.5”}
X4={(17,1,0,84,17,136,80,7,17,2,17,0,0,0,0.222,0,0,0,1,1),“0”},
X5={(0,1,0,27,0,0,26,1,0,2,0,0,0,0,0,0,0,0,0,0),“0”},
X6={(2,3,0,3,7,1,0,3,1,2,24,0,0,0.833333333,0.667,1,1,11,1,0.5),“0”},
X7={(5,3,0,8,31,2,1,8,3,0.5,122,1,1,0.8,0.4,0,0,23,3,1.2),“0”},
X8={(26,1,1,10,47,0,5,5,24,0.08,236,1,1,0,0.258,0,0,8.038,2,1),“0”}
X9={(3,1,0,8,14,3,3,5,3,2,85,0,0,0,0.5,0,0,27.33333333,9,3.3333),“3”},
X9new={(6.5,1,0,7,22.5,2,1.5,5.5,6,1.25,120.5,0.5,0.5,0,0.43,0,0,20.87,5,2.07),“3”}
X10={(13,1,0,1,17,64,0,1,12,0.917,117,1,0,0,0.462,0,0,7.462,3,1.38),“0”},
X11={(4,1,0,4,4,6,2,2,4,2,4,0,0,0,1,0,0,0,1,1),“7”},
X11new={(3.5,1,0,6,9,4.5,2.5,3.5,3.5,2,44.5,0,0,0,0.75,0,0,13.67,5,2.17),“5”}
X12={(10,1,0,6,31,1,0,6,9,0.5,156,1,1,0,0.356,0,0,14.4,1,0.8),“3”},
X12new={(6.5,1,0,7,22.5,2,1.5,5.5,6,1.25,120.5,0.5,0.5,0,0.43,0,0,20.87,5,2.07),“3”}
X13={(7,1,0,6,19,7,0,6,6,0.75,117.0,1,2,0,0.367,0,0,15.143,3,1.1429),“0”},
X14={(38,1,0,30,155,485,0,30,34,0.9,1564,1,7,0,0.14,0,0,39.6,7,1.5),“0”},
X15={(25,1,0,13,74,0,0,13,23,0.444,901,1,2,0,0.2,0,0,34.92,1,0.92),“0”},
步骤4:利用集成学习的思想,进行T次迭代,在第t次迭代时,对步骤3中形成的新的软件缺陷数据集S’进行有放回的随机抽样形成训练集St’,然后基于这个训练集训练出一个弱回归模型,最后集成T次迭代产生的T个弱回归模型形成一个强回归模型。
在第一次迭代时,对步骤3中形成的新的软件缺陷数据集S’进行有放回的随机抽样形成训练集S1’={X1、X1new、X3、X3、X4、X4、X5、X5、X6、X7、X8、X9、X9、X10、X11、X11new、X12、X14、X15、X15},以S1’为训练集训练出线性回归模型为y=f1(x)。
在第二次迭代时,对步骤3中形成的新的软件缺陷数据集S’进行有放回的随机抽样形成训练集S2’={X1、X1new、X3、X3new、X4、X5、X5、X6、X6、X7、X7、X9、X9、X10、X11、X11new、X12、X12、X15、X15},以S2’为训练集训练出线性回归模型为y=f2(x)。
在第三次迭代时,对步骤3中形成的新的软件缺陷数据集S’进行有放回的随机抽样形成训练集S3’={X1、X1、X3、X3new、X3new、X4、X5、X5、X6、X7、X8、X9、X9、X10、X11、X11new、X12、X13、X14、X15},以S3’为训练集训练出线性回归模型为y=f3(x)。
将3次迭代训练出的3个弱回归模型进行集成,输出最终的强回归模型F(x)=1/3×f1(x)+1/3×f2(x)+1/3×f3(x)。
步骤5:利用步骤4中训练出的强回归模型F(x),预测待预测的软件模块的缺陷数目。
步骤5.1:提取待预测的软件模块的同步骤2中提取的20个特征,形成这个软件模块的20维特征向量x。本实施例假设提取待预测的软件模块的20维特征形成特征向量x=(2.7,1,0,7,12,3,3,4,3,2,79,1,0,0,0.5,0,0,27,7,4.3333)。
步骤5.2:将步骤5.1中得到的待预测的软件模块的特征向量x带入到步骤4中训练出的强回归模型F(x)中,求得该软件模块的缺陷数目为4.32。由于缺陷数目必须是非负整数,因此本发明对求得的缺陷数目进行适当的调整:若求得的缺陷数目为负,则设置为零;若求得的缺陷数目为小数,则四舍五入为整数,因此最终预测该软件模块的缺陷数目为4。
本文中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。

Claims (6)

1.一种基于数据过采样和集成学习的软件缺陷数目预测方法,其特征在于,包括以下步骤:
步骤1:挖掘软件历史数据,从中抽取出n个软件模块;然后标记这些软件模块的缺陷数目;
步骤2:提取软件模块中与软件缺陷有关的l个特征,获得包含有n个软件模块数据的软件缺陷数据集S;其中,软件模块Xi的软件模块数据由一个l维的特征向量和软件模块Xi的缺陷数目yi组成;
步骤3:对软件缺陷数据集S中的软件模块数据进行过采样,形成新的分布平衡的软件缺陷数据集S’;
步骤4:利用集成学习的思想,进行T次迭代,在第t次迭代时,对步骤3中形成的新的软件缺陷数据集S’进行有放回的随机抽样形成训练集St’,然后基于训练集St’训练出一个弱回归模型,最后集成T次迭代产生的T个弱回归模型形成一个强回归模型F(x);
步骤5:利用步骤4中训练出的强回归模型F(x),预测待预测的软件模块的缺陷数目。
2.根据权利要求1所述的基于数据过采样和集成学习的软件缺陷数目预测方法,其特征在于:步骤1中,软件模块粒度根据实际应用场景,设置为文件、包、类或函数。
3.根据权利要求1所述的基于数据过采样和集成学习的软件缺陷数目预测方法,其特征在于:步骤2中,软件模块中与软件缺陷有关的特征包括加权方法数wmc、继承树深度dit、孩子数noc、对象类之间的耦合度cbo、类的响应rfc、内聚缺乏度lcom、传入耦合ca、传出耦合ce、公开方法数npm、代码行数loc、数据访问度量dam、聚合度量moa、功能抽象度量mfa、方法间的内聚度cam、继承耦合ic、方法间耦合cbm、平均方法复杂度amc、最大McCabe环形复杂度max_cc、平均McCabe环形复杂度avg_cc和最小McCabe环形复杂度min_cc;其中,McCabe是一种度量内部程序的复杂性的方法。
4.根据权利要求1所述的基于数据过采样和集成学习的软件缺陷数目预测方法,其特征在于,步骤3的具体实现包括以下子步骤:
步骤3.1:在软件缺陷数据集S中搜索缺陷数目大于0的软件模块Xi的k个缺陷数目也大于0的近邻软件模块,记为Xi(near),near∈{1,2,…,k};
步骤3.2:设定数据集的过采样倍率m,即从Xi的k个缺陷数目也大于0的近邻软件模块Xi(near)中随机抽取m个软件模块进行插值操作合成新的软件模块;
新的软件模块的l维的特征向量xinew=xi+rand(0,1)×(xi’-xi);其中,xi为Xi的l维的特征向量,rand(0,1)为0与1之间的某一随机数,xi’为从Xi的k个缺陷数目也大于0的近邻Xi(near)中随机抽取的一个软件模块Xi’的l维的特征向量;
新的软件模块的缺陷数目
Figure FDA0002385279660000021
其中,yi为软件模块Xi的缺陷数目,yi’为软件模块Xi’的缺陷数目,d1为软件模块Xi的l维的特征向量与新合成的软件模块Xinew之间的l维的特征向量之间的欧氏距离,d2为软件模块Xi’的l维的特征向量与新合成的软件模块Xinew之间的l维的特征向量之间的欧氏距离;
步骤3.3:对全部的p个缺陷数目大于0的软件模块重复步骤3.1和步骤3.2的操作,合成m×p个新的软件模块,这些新的软件模块加入到原始软件缺陷数据集S中形成新的软件缺陷数据集S’。
5.根据权利要求1-4任意一项所述的基于数据过采样和集成学习的软件缺陷数目预测方法,其特征在于,步骤5的具体实现包括以下子步骤:
步骤5.1:提取待预测的软件模块的同步骤2中提取的l个特征,形成待预测的软件模块的l维特征向量x;
步骤5.2:将步骤5.1中得到的待预测的软件模块的特征向量x带入到步骤4中训练出的强回归模型F(x)中,求得待预测的软件模块的缺陷数目。
6.根据权利要求5所述的基于数据过采样和集成学习的软件缺陷数目预测方法,其特征在于:对待预测的软件模块的缺陷数目进行适当的调整,若缺陷数目为负,则设置为零;若缺陷数目为小数,则四舍五入为整数。
CN201710571131.9A 2017-07-13 2017-07-13 一种基于数据过采样和集成学习的软件缺陷数目预测方法 Expired - Fee Related CN107391370B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710571131.9A CN107391370B (zh) 2017-07-13 2017-07-13 一种基于数据过采样和集成学习的软件缺陷数目预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710571131.9A CN107391370B (zh) 2017-07-13 2017-07-13 一种基于数据过采样和集成学习的软件缺陷数目预测方法

Publications (2)

Publication Number Publication Date
CN107391370A CN107391370A (zh) 2017-11-24
CN107391370B true CN107391370B (zh) 2020-05-12

Family

ID=60339516

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710571131.9A Expired - Fee Related CN107391370B (zh) 2017-07-13 2017-07-13 一种基于数据过采样和集成学习的软件缺陷数目预测方法

Country Status (1)

Country Link
CN (1) CN107391370B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107346286B (zh) * 2017-07-03 2020-05-12 武汉大学 一种基于核主成分分析和极限学习机的软件缺陷预测方法
CN107391365B (zh) * 2017-07-06 2020-10-13 武汉大学 一种面向软件缺陷预测的混合特征选择方法
CN108563556A (zh) * 2018-01-10 2018-09-21 江苏工程职业技术学院 基于差分演化算法的软件缺陷预测优化方法
US11922301B2 (en) 2019-04-05 2024-03-05 Samsung Display Co., Ltd. System and method for data augmentation for trace dataset
US11710045B2 (en) 2019-10-01 2023-07-25 Samsung Display Co., Ltd. System and method for knowledge distillation
CN113033583A (zh) * 2019-12-09 2021-06-25 京东数字科技控股有限公司 数据处理方法和装置、模型训练系统
CN114297054B (zh) * 2021-12-17 2023-06-30 北京交通大学 一种基于子空间混合抽样的软件缺陷数目预测方法

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141921B2 (en) * 2013-05-17 2015-09-22 International Business Machines Corporation Project modeling using iterative variable defect forecasts
CN104951809A (zh) * 2015-07-14 2015-09-30 西安电子科技大学 基于不平衡分类指标与集成学习的不平衡数据分类方法
CN104965787A (zh) * 2015-07-06 2015-10-07 南京航空航天大学 一种基于三支决策的两阶段软件缺陷预测方法
CN106126413A (zh) * 2016-06-16 2016-11-16 南通大学 基于两阶段包裹式特征选择的软件缺陷预测方法
CN106201871A (zh) * 2016-06-30 2016-12-07 重庆大学 基于代价敏感半监督的软件缺陷预测方法
CN106528417A (zh) * 2016-10-28 2017-03-22 中国电子产品可靠性与环境试验研究所 软件缺陷智能检测方法和系统
CN107247666A (zh) * 2017-05-24 2017-10-13 武汉大学 一种基于特征选择和集成学习的软件缺陷个数预测方法
CN107391452A (zh) * 2017-07-06 2017-11-24 武汉大学 一种基于数据欠采样和集成学习的软件缺陷数目预测方法
CN107391365A (zh) * 2017-07-06 2017-11-24 武汉大学 一种面向软件缺陷预测的混合特征选择方法
CN107391369A (zh) * 2017-07-13 2017-11-24 武汉大学 一种基于数据筛选和数据过采样的跨项目缺陷预测方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9141921B2 (en) * 2013-05-17 2015-09-22 International Business Machines Corporation Project modeling using iterative variable defect forecasts
CN104965787A (zh) * 2015-07-06 2015-10-07 南京航空航天大学 一种基于三支决策的两阶段软件缺陷预测方法
CN104951809A (zh) * 2015-07-14 2015-09-30 西安电子科技大学 基于不平衡分类指标与集成学习的不平衡数据分类方法
CN106126413A (zh) * 2016-06-16 2016-11-16 南通大学 基于两阶段包裹式特征选择的软件缺陷预测方法
CN106201871A (zh) * 2016-06-30 2016-12-07 重庆大学 基于代价敏感半监督的软件缺陷预测方法
CN106528417A (zh) * 2016-10-28 2017-03-22 中国电子产品可靠性与环境试验研究所 软件缺陷智能检测方法和系统
CN107247666A (zh) * 2017-05-24 2017-10-13 武汉大学 一种基于特征选择和集成学习的软件缺陷个数预测方法
CN107391452A (zh) * 2017-07-06 2017-11-24 武汉大学 一种基于数据欠采样和集成学习的软件缺陷数目预测方法
CN107391365A (zh) * 2017-07-06 2017-11-24 武汉大学 一种面向软件缺陷预测的混合特征选择方法
CN107391369A (zh) * 2017-07-13 2017-11-24 武汉大学 一种基于数据筛选和数据过采样的跨项目缺陷预测方法

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"A New Metrics Selection Method for Software Defect Prediction";Ye Xia,et al.;《2014 IEEE International Conference on Progress in Informatics and Computing》;20141204;第433-436页 *
"基于数据过采样和集成学习的软件缺陷数目预测方法";简艺恒、余啸;《计算机应用》;20180910;第38卷(第9期);第2637-2643页 *
"基于集成学习的软件缺陷检测";黄文聪等;《计算机技术与发展》;20151031;第25卷(第10期);第63-66页 *

Also Published As

Publication number Publication date
CN107391370A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
CN107391370B (zh) 一种基于数据过采样和集成学习的软件缺陷数目预测方法
US10671750B2 (en) System and method for data classification centric sensitive data discovery
CN107391452B (zh) 一种基于数据欠采样和集成学习的软件缺陷数目预测方法
CN107391369B (zh) 一种基于数据筛选和数据过采样的跨项目缺陷预测方法
US10581888B1 (en) Classifying software scripts utilizing deep learning networks
Khoshgoftaar et al. Classification tree models of software quality over multiple releases
US20190272375A1 (en) Trust model for malware classification
US20150088791A1 (en) Generating data from imbalanced training data sets
Li et al. Efficient shapelet discovery for time series classification
CN107239798B (zh) 一种面向软件缺陷个数预测的特征选择方法
US11580222B2 (en) Automated malware analysis that automatically clusters sandbox reports of similar malware samples
US20140033267A1 (en) Type mining framework for automated security policy generation
CN107436875A (zh) 文本分类方法及装置
TW202029079A (zh) 異常群體識別方法及裝置
US11924231B2 (en) Malchain detection
US20220036178A1 (en) Dynamic gradient aggregation for training neural networks
CN104572436B (zh) 自动调试与防错方法及装置
WO2021068513A1 (zh) 异常对象识别方法、装置、介质及电子设备
US11778061B2 (en) Feature extraction device and state estimation system
CN109063478A (zh) 可移植的可执行文件的病毒检测方法、装置、设备及介质
US20210209011A1 (en) Systems and methods for automated testing using artificial intelligence techniques
Jing et al. Software defect prediction based on collaborative representation classification
US20230021338A1 (en) Conditionally independent data generation for training machine learning systems
Do Xuan et al. A novel approach for software vulnerability detection based on intelligent cognitive computing
US20220400121A1 (en) Performance monitoring in the anomaly detection domain for the it environment

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
GR01 Patent grant
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200512

Termination date: 20210713