CN114297054B - 一种基于子空间混合抽样的软件缺陷数目预测方法 - Google Patents

一种基于子空间混合抽样的软件缺陷数目预测方法 Download PDF

Info

Publication number
CN114297054B
CN114297054B CN202111553410.5A CN202111553410A CN114297054B CN 114297054 B CN114297054 B CN 114297054B CN 202111553410 A CN202111553410 A CN 202111553410A CN 114297054 B CN114297054 B CN 114297054B
Authority
CN
China
Prior art keywords
defect
model
training
subset
test sample
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.)
Active
Application number
CN202111553410.5A
Other languages
English (en)
Other versions
CN114297054A (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.)
Beijing Jiaotong University
Original Assignee
Beijing Jiaotong University
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 Beijing Jiaotong University filed Critical Beijing Jiaotong University
Priority to CN202111553410.5A priority Critical patent/CN114297054B/zh
Publication of CN114297054A publication Critical patent/CN114297054A/zh
Application granted granted Critical
Publication of CN114297054B publication Critical patent/CN114297054B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02PCLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
    • Y02P90/00Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
    • Y02P90/30Computing systems specially adapted for manufacturing

Landscapes

  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Stored Programmes (AREA)

Abstract

本发明提供了一种基于子空间混合抽样的软件缺陷数目预测方法。该方法包括:基于历史缺陷数据集通过子空间混合抽样生成缺陷预测模型;对测试样本进行预处理;将预处理后的软件样本输入到所述缺陷预测模型,所述缺陷预测模型输出所述软件样本的缺陷数目。本发明通过构造多个特征子空间,实现了子模型的多样性,进而保证后续集成学习的性能。本发明实施例所提出的子空间混合抽样集成算法既避免了欠抽样方法导致的过多有价值正样本被丢弃的问题,又避免了过抽样方法因引入过多噪声数据而降低模型性能的问题。

Description

一种基于子空间混合抽样的软件缺陷数目预测方法
技术领域
本发明涉及软件测试技术领域,尤其涉及一种基于子空间混合抽样的软件缺陷数目预测方法。
背景技术
软件测试是保证软件质量最重要的手段之一。然而,随着软件规模及复杂度的剧增,传统的软件测试方法存在的盲目被动(即,测试之前对软件模块的缺陷状况一无所知)、测试效率低的问题变得日益突出。此外,由于测试人员无法遵循软件测试二八定律(大约80%的软件缺陷往往集中存在于20%的软件模块)以便对测试资源进行合理分配,使得测试工作存在测试资源被严重浪费的问题。这些问题会导致测试工作难以有效完成,进而无法保障软件质量,影响产品的上线和交付。
软件缺陷预测为解决以上问题提供了一条可行的途径,软件缺陷预测是指利用统计或机器学习等方法,对软件历史缺陷数据进行挖掘分析,以建立软件度量元与软件缺陷之间的映射关系,并在软件测试之前对新的软件模块的缺陷状况(即,缺陷数目/概率/倾向/类型等)进行预测,进而指导测试资源的合理分配,提高测试效率。就软件缺陷数目预测模型而言,所谓的“软件历史缺陷数据”是指软件测试完成之后得到的数据集,具体可理解为一个二维表格,其中每一行称为一个样本,每个样本对应一个软件模块,且每个样本由两部分组成:该模块各个度量元的数值和测试后在该模块中发现的缺陷数目。对于面向过程的软件,通常把每个函数/方法称为一个软件模块,这样的度量元一般统称为方法级度量元(Method-level Metrics),常用的方法级别度量元包括McCabe度量元和Halstead度量元,具体如表1所示。对于面向对象的软件,通常把一个类称为一个软件模块,这样的度量元一般统称为类级别度量元(Class-level Metrics),常用的类级别度量元为CK度量元等,具体如表2所示。
表1常用的方法级别度量元
Figure GDA0004245858650000011
Figure GDA0004245858650000021
表2常用的类级别软件度量元
Figure GDA0004245858650000031
Figure GDA0004245858650000041
已有研究表明,软件缺陷数据集的非平衡性是影响软件缺陷预测模型的主要因素之一。软件缺陷数目数据集往往具有严重的非平衡性。为解决这一问题,研究人员已经提出多种针对非平衡数据的软件缺陷数目预测方法。现有针对非平衡数据的软件缺陷数目预测方法可分为两类:(1)基于零膨胀模型(Zero-inflated Model)或栅栏模型(Hurdle Model)的统计方法;(2)基于抽样的方法。
分类和回归是机器学习领域的两大基本任务,两者都存在数据非平衡问题。研究人员对分类任务中的数据非平衡问题(又称为类不平衡问题)做了深入的研究,产生了大量的研究成果,比如SMOTE算法、ADASYN算法等。但是对于回归任务中的数据非平衡问题的研究非常匮乏。有研究对SMOTE算法进行了扩展,提出SMOTER算法用于解决回归任务中的数据非平衡问题。把SMOTER算法引入到软件缺陷预测领域,并称之为SmoteND,并把随机下抽样算法(Random Under-sampling,RUS)用于解决处理软件缺陷数目数据集的非平衡问题并称之为RusND。此外,有研究分别把SmoteND算法和RusND算法与AadaBoost.R2相结合,提出了SmoteNDBoost算法和RusNDBoost算法。通过在SmoteND算法中引入差分演化算法用于优化SmoteND算法的超参数,提出了SMOTENDDE算法用于构建软件缺陷数目预测模型。首先利用SMOTER算法降低训练数据集的非平衡度,然后提出一种可以动态选择回归算法的软件缺陷数目预测方法。下面分别对SmoteND算法和RusND算法做详细介绍。
上述现有技术中的针对非平衡数据的软件缺陷数目预测的基于零膨胀模型/栅栏模型的方法的缺点为:模型假设条件(比如,缺陷数据需要满足特定的分布)过于严苛,软件缺陷数据集往往难以满足,从而大大限制了模型的预测性能。以零膨胀泊松回归模型(Zero-inflated Poisson Regression)为例,该模型假设随机变量的取值(为非负整数时)满足泊松分布。
上述现有技术中的针对非平衡数据的软件缺陷数目预测的基于重抽样的方法的缺点为:该类方法可细分为基于过抽样的方法和基于欠抽样的方法,其中前者的缺点是会因为引入大量的人工样本导致训练数据存在很多噪声数据,后者的缺点是会丢弃过多有价值的样本,这两类方法虽然都能够降低训练数据的不平衡度,但也都会因为各自的缺点而直接降低预测模型的性能。
发明内容
本发明的实施例提供了一种基于子空间混合抽样的软件缺陷数目预测方法,以克服现有技术的问题。
为了实现上述目的,本发明采取了如下技术方案。
一种基于子空间混合抽样的软件缺陷数目预测方法,包括:
基于历史缺陷数据集通过子空间混合抽样生成缺陷预测模型;
对待预测的软件样本进行预处理,将预处理后的软件样本输入到所述缺陷预测模型,所述缺陷预测模型输出所述软件样本的缺陷数目。
优选地,所述的基于历史缺陷数据集通过子空间混合抽样生成缺陷预测模型,包括:
获取缺陷数目数据集后,对缺陷数目数据集进行预处理,使用k折交叉验证将预处理后的缺陷数目数据集划分为两部分:训练数据和测试数据;
从所述训练数据集中随机抽取若干个子集,通过子空间混合抽样集成算法在每个子集上分别训练一个回归模型,根据训练误差为每个回归模型分配相应的权重,通过加权集成把所有回归模型组合在一起,构成缺陷预测模型。
优选地,所述的预处理包括用均值替代缺失值、剔除重复样本、剔除不一致样本和剔除代码行数LOC为零的样本。
优选地,所述的从所述训练数据集中随机抽取若干个子集,通过子空间混合抽样集成算法在每个子集上分别训练一个回归模型,包括:
假设有标签的训练数据表示为Dtr∈Rn*(d+1),设定最大循环次数,每次循环,在原始训练数据Dtr上通过特征随机抽样构造一个子集
Figure GDA0004245858650000061
在子集上执行欠抽样算法,剔除部分冗余的无缺陷样本并记剩余的样本为数据集
Figure GDA0004245858650000062
在数据集
Figure GDA0004245858650000063
上执行过抽样算法并记平衡后的样本集为
Figure GDA0004245858650000064
Figure GDA0004245858650000065
上训练一个回归模型,计算回归模型的均方根误差,重复以上过程,直到循环次数达到最大循环次数,得到训练好的子集
Figure GDA0004245858650000066
和所述子集
Figure GDA0004245858650000067
对应的回归模型hi(x);
在原始训练数据Dtr上通过特征随机抽样构造另一个子集,按照上述子集
Figure GDA0004245858650000068
的训练过程对所述另一个子集进行训练,得到训练好的另一个子集和另一个子集对应的回归模型;重复执行上述处理过程,得到训练好的各个子集和每个子集对应的回归模型。
优选地,所述的根据训练误差为每个回归模型分配相应的权重,通过加权集成把所有回归模型组合在一起,构成缺陷预测模型,包括:
计算出每个子集对应的回归模型的拟合性能,根据各个回归模型的拟合性能分别给各个回归模型分配对应的权重,根据各个回归模型对应的权重通过加权的方法将各个回归模型进行集成,得到缺陷预测模型;
假设第i个子模型的拟合性能为RMSEi,定义子模型hi(x)的权重为:
Figure GDA0004245858650000069
其中,K表示子模型的总个数。
优选地,所述的对待预测的软件测试样本进行预处理,将预处理后的软件测试样本输入到所述缺陷预测模型,所述缺陷预测模型输出所述软件测试样本的缺陷数目,包括:
给定一个待预测的软件测试样本后,先对所述软件测试样本进行预处理,该预处理包括:当用预测模型中的每一个子模型对该软件测试样本中的缺陷数目进行预测时,首先利用变量idxSelFea查询训练该子模型的训练子集特征在原始训练集中的索引,从而对该测试样本的特征进行裁剪,仅保留变量ideSelFea对应的特征,使得软件测试样本的特征跟当前子模型的特征是相同的;
将预处理后的软件测试样本输入到缺陷预测模型,缺陷预测模型输出该软件测试样本的缺陷数目;
假设第i个子模型为hi(x),其权重为wi,则该软件测试样本的缺陷数目由下式得到:
Figure GDA0004245858650000071
式中:函数round()表示四舍五入;
式中:K表示循环次数,xj表示第j个测试样本的特征值;
Figure GDA0004245858650000072
表示模型预测得到的第j个软件样本的缺陷数目。
由上述本发明的实施例提供的技术方案可以看出,本发明通过解决软件缺陷数目数据集的非平衡问题,构建出性能优异的软件缺陷数目预测模型,实现了子模型的多样性,进而保证后续集成学习的性能。
本发明附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提出的一种基于子空间混合抽样集成算法的软件缺陷数目预测模型的示意图。
具体实施方式
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组。应该理解,当我们称元件被“连接”或“耦接”到另一元件时,它可以直接连接或耦接到其他元件,或者也可以存在中间元件。此外,这里使用的“连接”或“耦接”可以包括无线连接或耦接。这里使用的措辞“和/或”包括一个或更多个相关联的列出项的任一单元和全部组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
本发明提出了一种新的非平衡数据处理方法,进而构建出高性能的软件缺陷数目预测模型。本发明实施例提出的一种基于子空间混合抽样集成算法的软件缺陷数目预测模型的示意图如图1所示。具体处理过程包括:获取缺陷数目数据集后,首先对缺陷数目数据集进行预处理,将缺陷数目数据集划分为两部分:训练数据和测试数据。接着,利用特征空间随机抽样,从训练数据集中随机抽取若干个子集,并通过混合抽样算法解决数据非平衡问题。然后,在每个子集上分别训练一个回归模型,并根据训练误差为每个回归模型分配相应的权重;最后,通过加权集成把所有回归模型组合在一起,构成最终的缺陷预测模型,以用于测试集中缺陷数目的预测。
下面将分别对预处理、子空间混合抽样、以及加权集成进行详细介绍。
1、预处理
预处理的目的主要是为了解决数据质量问题。本发明实施例采用如下预处理操作:
(1)用均值替代缺失值;
(2)剔除重复样本;
(3)剔除不一致样本;
(4)剔除代码行数(LOC)为零的样本;
(5)划分训练集和测试集。
给定一个有标签的历史缺陷数据集{(xi,yi)|i=1,2,…,n},其中xi∈R1*d表示数据集中第i个样本(模块)且特征维度为d,yi∈{0,1,2,…}表示第i个模块含有的缺陷数目,n为样本数目。
(1)均值替代缺失值。以第i个特征为例,假设其第j个样本值缺失(为空值),则该样本值由该特征其他所有不为空的样本的均值代替。
(2)剔除重复样本。如果数据集中有两个样本(xi,yi)和(xj,yj)完全相同,即xi=xj且yi=yj。那么,只需保留相同样本中的一个样本即可。
(3)删除不一致样本。如果数据集中两个样本(xi,yi)和(xj,yj)不一致,即xi=xj但yi≠yj。那么,这两个样本全部删除,因为无法判断那个样本是合理的、真实的。
(4)剔除LOC(Linesof Code,代码行数)值为零的样本。如果存在一个样本的LOC的值为零,则删除该样本。
(5)划分训练集和测试集。本发明实施例使用k折交叉验证划分训练集和测试集。
2、特征子空间和混合抽样
假设有标签的训练数据可表示为Dtr∈Rn*(d+1),首先计算源训练数据的缺陷率ratioDef并确定需要生成的有缺陷样本的数目。对于给定的最大循环次数,每次循环,在平衡后的训练样本子集上训练一个回归模型hi(x)。为了获得平衡的训练子模型,先对原始训练数据Dtr进行特征随机抽样构造一个子集
Figure GDA0004245858650000091
。接着子集上执行欠抽样算法(即算法2)以剔除部分冗余的无缺陷样本并记剩余的样本为
Figure GDA0004245858650000092
。然后在数据集
Figure GDA0004245858650000093
上执行过抽样算法SmoteND(即算法1)并记平衡后的样本集为
Figure GDA0004245858650000094
。然后,在
Figure GDA0004245858650000095
上训练一个回归模型并计算其拟合性能,即均方根误差;重复以上过程,直到达到循环停止条件,即循环次数达到最大循环次数。
每次循环的目的是为了训练得到一个子模型。具体流程是:首先,对原始的训练集Dtr的特征集进行随机抽样得到一个训练子集,抽样比例由算法3中用户设定的参数feaRatio(取值范围为(0,1])决定,原始训练集中特征数目乘以feaRatio就是抽样得到的特征数目,并且需要记住训练子集中特征在原始训练集中的索引;其次,在当前训练子集上训练一个用户指定的回归模型(即算法3中用户指定的Learner),这样每次循环会得到一个训练好的子模型、训练该子模型的训练子集、训练子集中特征在原始训练集中特征集中的索引;接着,进入下一次循环。
训练子模型数目由用户设定的最大循环次数(即算法3中的K值)决定,默认k=50。每次循环都需要构造一个训练子模型,用于训练一个新的子模型,训练子模型的特征是通过对原始训练集进行随机抽样获取的,目的是为了保证训练子模型的多样性,而多样性是保证集成学习性能的前提。训练子模型中特征的数目由原始训练集的特征数目d和算法3中用户设定的特征抽样比例feaRatio决定(默认feaRatio=3/4),且floor(d*feaRatio)就是训练子模型的特征数目。因为是随机抽样,所以事前无法判断原始训练集中的哪些特征会被抽取到,但是抽样之后肯定会知道被抽取的特征在原始训练集中的索引,可利用变量idxSelFea储存每个训练子模型的特征在原始训练集中的索引。其目的在于利用该子模型进行预测时,对原始测试数据进行预处理。具体来说,在每个训练子模型上训练得到一个子模型后,当用这个子模型对测试数据进行预测时,必须对原始测试集进行预处理,即保证测试集的特征集跟训练该子模型使用的训练子模型的特征集相同。具体操作方法是,对于原始测试集中需要保留的特征,其索引就是利用idxSelFea保存的该训练子模型在原始训练集中的特征索引。
原始训练集的特征会构成原始训练数据的特征空间,而原始训练集中特征集的每个特征子集会形成一个对应特征子空间。特征空间就是特征的函数分布情况。如果原始训练集包含三个特征,则其函数分布形状就是三维空间中的一个立体图形;如果其特征子集是二维的(即含有两个特征),则其函数分布形状就是二维空间中的一个平面图形。
3、加权集成
当循环停止时,可以得到若干个训练好的子模型及其相应的拟合性能RMSE。接下来是要通过加权的方法把这些子模型进行集成,得到缺陷预测模型。假设第i个子模型的拟合性能为RMSEi
RMSEi是指第i个子模型在训练子模型上的训练性能,即均方根误差(Root MeanSquared Error,RMSE)。假设训练集中每个样本真实的缺陷数目为yj(j=1,2,…,n),其中n为训练集中的样本总数,而模型预测(或称为拟合)的该样本的缺陷数目为
Figure GDA0004245858650000101
,那么该模型在该训练集上性能RMSE可通过下式计算:
Figure GDA0004245858650000102
显然,该拟合性能指标的值越大,则对应的模型的拟合性能越差,故而需要给该子模型分配一个相对较小的权重。本发明实施例定义子模型hi(x)的权重为:
Figure GDA0004245858650000111
K表示子模型的总数。
给定一个待预测缺陷数目的软件样本,在利用缺陷预测模型预测该软件样本的缺陷数目之前,首先需要对软件样本进行预处理以保证软件样本的特征与子模型的自变量完全一致。由算法3可知,每一个子模型都是在平衡后的训练子模型上得到的,训练子模型的特征集的索引为idxSelFea。因此,只需要剔除其余的特征即可。
每次循环构建训练子模型时,会利用变量idxSelFea储存每个训练子模型的特征在原始训练集中的索引。其目的在于利用该子模型进行预测时,对原始测试数据进行预处理。
给定一个待预测的软件测试样本后,先对所述软件测试样本进行预处理,该预处理包括:当用预测模型中的每一个子模型对该软件测试样本中的缺陷数目进行预测时,首先利用变量idxSelFea查询训练该子模型的训练子集特征在原始训练集中的索引,从而对该测试样本的特征进行裁剪,仅保留变量ideSelFea对应的特征,使得软件测试样本的特征跟当前子模型的特征是相同的。
然后,将预处理后的软件测试样本输入到缺陷预测模型,缺陷预测模型输出该软件测试样本的缺陷数目。
假设第i个子模型为hi(x),其权重为wi,则该软件测试样本的缺陷数目可由下式得到:
Figure GDA0004245858650000112
式中:函数round()表示四舍五入。
式中:K表示循环次数,即算法3中用户设定的超参数——最大循环次数,默认值为50;xj表示第j个测试样本的特征值;
Figure GDA0004245858650000113
表示模型预测得到的第j个测试样本的缺陷数目。子模型及其权重是一一对应的,不同的子模型,其权重一般不同;但是不同的测试样本而言,同一个子模型的权重是恒定的,不会因为测试样本的不同而不同,因为子模型的权重的确定与测试样本无关。
算法1给出了本发明所提出的SmoteND(过抽样算法)算法的伪代码:
Figure GDA0004245858650000121
Figure GDA0004245858650000131
算法2给出了本发明所提出的RusND(欠抽样算法)的伪代码::
Figure GDA0004245858650000132
算法3给出了本发明所提出的子空间混合抽样集成算法的伪代码。
Figure GDA0004245858650000133
Figure GDA0004245858650000141
算法3的原理如下:
首先,需要给算法提供相应的输入数据,包括:训练数据Dtr、测试数据Dte、回归算法Learner、最大循环次数K(默认值50)、特征选择比例feaRatio(默认值3/4)、以及混合抽样后训练数据中人工有缺陷样本数目与缺陷样本总数的比例λ(0≤λ≤0.5,默认值0.5)。其中,训练数据Dtr、测试数据Dte、回归算法Learner是必须提供输入的项。
接着,计算训练数据的缺陷率ratioDef:
Figure GDA0004245858650000151
其中n和nN分别为训练数据Dtr中样本总数和有缺陷样本的数目。
其次,需要确定训练样本Dtr中,被选择的无缺陷样本数目与所有无缺陷样本数目的期望比值insRatio,原理如下:如果ratioDef<0.5且ratioDef+λ*ratioDef≤0.5,则令
Figure GDA0004245858650000152
如果ratioDef<0.5且ratioDef+λ*ratioDef>0.5,则令
Figure GDA0004245858650000153
如果ratioDef≥0.5,则令insRatio=1。
接着,循环训练K个子模型,具体流程如下:从源数据Dtr随机抽取floor(d*feaRatio)个特征,记其索引为idxSelFea;从源数据Dtr中抽取索引为idxSelFea的特征,这部分数据集记为
Figure GDA0004245858650000154
;接着,对
Figure GDA0004245858650000155
执行欠抽样和过抽样(算法3Line-15、16),生成完成的训练子模型;利用回归算法Learner在训练子模型上训练得到一个子模型,并计算其在训练集上的性能RMSE。
循环结束后,根据每个子模型的拟合性能RMSE,为每个子模型分配相应的权重(详见算法3Line21)。
最后,对个给定的测试样本,可通过对所有子模型预测结果进行加权平均最终得到模型预测的测试样本的缺陷数目。
综上所述,本发明实施例的方法通过构造多个特征子空间,实现了子模型的多样性,进而保证后续集成学习的性能。本发明实施例所提出的子空间混合抽样集成算法既避免了欠抽样方法导致的过多有价值正样本被丢弃的问题,又避免了过抽样方法因引入过多噪声数据而降低模型性能的问题。
另外,实验结果也表明:本发明所提出的方法在Kendall相关系数、均方误差根(Root Mean Square Error,RMSE)、以及平均故障比(Fault Percentile Average,FPA)这三个性能指标上均优于现有技术。
本领域普通技术人员可以理解:附图只是一个实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置或系统实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置及系统实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (2)

1.一种基于子空间混合抽样的软件缺陷数目预测方法,其特征在于,包括:
基于历史缺陷数据集通过子空间混合抽样生成缺陷预测模型;
对待预测的软件测试样本进行预处理,将预处理后的软件测试样本输入到所述缺陷预测模型,所述缺陷预测模型输出所述软件测试样本的缺陷数目;
所述的基于历史缺陷数据集通过子空间混合抽样生成缺陷预测模型,包括:
获取缺陷数目数据集后,对缺陷数目数据集进行预处理,使用k折交叉验证将预处理后的缺陷数目数据集划分为两部分:训练数据和测试数据;
从所述训练数据中随机抽取若干个子集,通过子空间混合抽样集成算法在每个子集上分别训练一个回归模型,根据训练误差为每个回归模型分配相应的权重,通过加权集成把所有回归模型组合在一起,构成缺陷预测模型;
所述的从所述训练数据中随机抽取若干个子集,通过子空间混合抽样集成算法在每个子集上分别训练一个回归模型,包括:
假设有标签的训练数据表示为Dtr∈Rn*(d+1),设定最大循环次数,每次循环,在原始训练数据Dtr上通过特征随机抽样构造一个子集
Figure FDA0004245858640000011
在子集上执行欠抽样算法,剔除部分冗余的无缺陷样本并记剩余的样本为数据集
Figure FDA0004245858640000012
在数据集
Figure FDA0004245858640000013
上执行过抽样算法并记平衡后的样本集为
Figure FDA0004245858640000014
Figure FDA0004245858640000015
上训练一个回归模型,计算回归模型的均方根误差,重复以上过程,直到循环次数达到最大循环次数,得到训练好的子集
Figure FDA0004245858640000016
和所述子集
Figure FDA0004245858640000017
对应的回归模型hi(x);
在原始训练数据Dtr上通过特征随机抽样构造另一个子集,按照上述子集
Figure FDA0004245858640000018
的训练过程对所述另一个子集进行训练,得到训练好的另一个子集和另一个子集对应的回归模型;
重复执行上述处理过程,得到训练好的各个子集和每个子集对应的回归模型;
所述的根据训练误差为每个回归模型分配相应的权重,通过加权集成把所有回归模型组合在一起,构成缺陷预测模型,包括:
计算出每个子集对应的回归模型的拟合性能,根据各个回归模型的拟合性能分别给各个回归模型分配对应的权重,根据各个回归模型对应的权重通过加权的方法将各个回归模型进行集成,得到缺陷预测模型;
假设第i个子模型的拟合性能为RMSEi,定义子模型hi(x)的权重为:
Figure FDA0004245858640000021
所述的对待预测的软件测试样本进行预处理,将预处理后的软件测试样本输入到所述缺陷预测模型,所述缺陷预测模型输出所述软件测试样本的缺陷数目,包括:
给定一个待预测的软件测试样本后,先对所述软件测试样本进行预处理,该预处理包括:当用预测模型中的每一个子模型对该软件测试样本中的缺陷数目进行预测时,首先利用变量idxSelFea查询训练该子模型的训练子集特征在原始训练集中的索引,从而对该测试样本的特征进行裁剪,仅保留变量ideSelFea对应的特征,使得软件测试样本的特征跟当前子模型的特征是相同的;
将预处理后的软件测试样本输入到缺陷预测模型,缺陷预测模型输出该软件测试样本的缺陷数目;
假设第i个子模型为hi(x),其权重为wi,则该软件测试样本的缺陷数目由下式得到:
Figure FDA0004245858640000022
式中:函数round()表示四舍五入;
式中:K表示循环次数,xj表示第j个测试样本的特征值;
Figure FDA0004245858640000023
表示模型预测得到的第j个软件样本的缺陷数目。
2.根据权利要求1所述的方法,其特征在于,所述的预处理包括用均值替代缺失值、剔除重复样本、剔除不一致样本和剔除代码行数LOC为零的样本。
CN202111553410.5A 2021-12-17 2021-12-17 一种基于子空间混合抽样的软件缺陷数目预测方法 Active CN114297054B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111553410.5A CN114297054B (zh) 2021-12-17 2021-12-17 一种基于子空间混合抽样的软件缺陷数目预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111553410.5A CN114297054B (zh) 2021-12-17 2021-12-17 一种基于子空间混合抽样的软件缺陷数目预测方法

Publications (2)

Publication Number Publication Date
CN114297054A CN114297054A (zh) 2022-04-08
CN114297054B true CN114297054B (zh) 2023-06-30

Family

ID=80968451

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111553410.5A Active CN114297054B (zh) 2021-12-17 2021-12-17 一种基于子空间混合抽样的软件缺陷数目预测方法

Country Status (1)

Country Link
CN (1) CN114297054B (zh)

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589806A (zh) * 2015-12-17 2016-05-18 北京航空航天大学 一种基于SMOTE+Boosting算法的软件缺陷倾向预测方法
CN106055483A (zh) * 2016-06-06 2016-10-26 重庆大学 基于欠采样操作的代价敏感神经网络的警告分类方法
CN106897774A (zh) * 2017-01-25 2017-06-27 浙江大学 基于蒙特卡洛交叉验证的多个软测量算法集群建模方法
CN107391370A (zh) * 2017-07-13 2017-11-24 武汉大学 一种基于数据过采样和集成学习的软件缺陷数目预测方法
CN107391452A (zh) * 2017-07-06 2017-11-24 武汉大学 一种基于数据欠采样和集成学习的软件缺陷数目预测方法
WO2018097653A1 (ko) * 2016-11-25 2018-05-31 공주대학교 산학협력단 지불 거절 사기 사용자의 예측 방법 및 프로그램
CN110471856A (zh) * 2019-08-21 2019-11-19 大连海事大学 一种基于数据不平衡的软件缺陷预测方法
CN110659207A (zh) * 2019-09-02 2020-01-07 北京航空航天大学 基于核谱映射迁移集成的异构跨项目软件缺陷预测方法
WO2020199345A1 (zh) * 2019-04-02 2020-10-08 广东石油化工学院 一种基于GitHub的半监督异构软件缺陷预测算法
CN111782512A (zh) * 2020-06-23 2020-10-16 北京高质系统科技有限公司 基于不平衡噪声集的多特征软件缺陷综合预测方法
CN113011530A (zh) * 2021-04-29 2021-06-22 国网新疆电力有限公司营销服务中心(资金集约中心、计量中心) 一种基于多分类器融合的智能电表故障预测方法
WO2021139235A1 (zh) * 2020-06-30 2021-07-15 平安科技(深圳)有限公司 系统异常检测方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10430315B2 (en) * 2017-10-04 2019-10-01 Blackberry Limited Classifying warning messages generated by software developer tools
US10929268B2 (en) * 2018-09-26 2021-02-23 Accenture Global Solutions Limited Learning based metrics prediction for software development
US20200272559A1 (en) * 2019-02-26 2020-08-27 NIIT Technologies Ltd Enhancing efficiency in regression testing of software applications

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105589806A (zh) * 2015-12-17 2016-05-18 北京航空航天大学 一种基于SMOTE+Boosting算法的软件缺陷倾向预测方法
CN106055483A (zh) * 2016-06-06 2016-10-26 重庆大学 基于欠采样操作的代价敏感神经网络的警告分类方法
WO2018097653A1 (ko) * 2016-11-25 2018-05-31 공주대학교 산학협력단 지불 거절 사기 사용자의 예측 방법 및 프로그램
CN106897774A (zh) * 2017-01-25 2017-06-27 浙江大学 基于蒙特卡洛交叉验证的多个软测量算法集群建模方法
CN107391452A (zh) * 2017-07-06 2017-11-24 武汉大学 一种基于数据欠采样和集成学习的软件缺陷数目预测方法
CN107391370A (zh) * 2017-07-13 2017-11-24 武汉大学 一种基于数据过采样和集成学习的软件缺陷数目预测方法
WO2020199345A1 (zh) * 2019-04-02 2020-10-08 广东石油化工学院 一种基于GitHub的半监督异构软件缺陷预测算法
CN110471856A (zh) * 2019-08-21 2019-11-19 大连海事大学 一种基于数据不平衡的软件缺陷预测方法
CN110659207A (zh) * 2019-09-02 2020-01-07 北京航空航天大学 基于核谱映射迁移集成的异构跨项目软件缺陷预测方法
CN111782512A (zh) * 2020-06-23 2020-10-16 北京高质系统科技有限公司 基于不平衡噪声集的多特征软件缺陷综合预测方法
WO2021139235A1 (zh) * 2020-06-30 2021-07-15 平安科技(深圳)有限公司 系统异常检测方法、装置、设备及存储介质
CN113011530A (zh) * 2021-04-29 2021-06-22 国网新疆电力有限公司营销服务中心(资金集约中心、计量中心) 一种基于多分类器融合的智能电表故障预测方法

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
Combining Over-Sampling and Under-Sampling Techniques for Imbalance Dataset;Nutthaporn Junsomboon;《https://dl.acm.org/doi/abs/10.1145/3055635.3056643》;全文 *
The Effects of Over and Under Sampling on Fault-prone Module Detection;Yasutaka Kamei;《https://ieeexplore.ieee.org/abstract/document/4343747》;全文 *
分类不平衡对软件缺陷预测模型性能的影响研究;于巧;姜淑娟;张艳梅;王兴亚;高鹏飞;钱俊彦;;计算机学报(第04期);全文 *
基于数据过采样和集成学习的软件缺陷数目预测方法;简艺恒;余啸;;计算机应用(第09期);全文 *

Also Published As

Publication number Publication date
CN114297054A (zh) 2022-04-08

Similar Documents

Publication Publication Date Title
CN110163261B (zh) 不平衡数据分类模型训练方法、装置、设备及存储介质
CN109977028A (zh) 一种基于遗传算法和随机森林的软件缺陷预测方法
CN110659207B (zh) 基于核谱映射迁移集成的异构跨项目软件缺陷预测方法
CN108051660A (zh) 一种变压器故障组合诊断模型建立方法及诊断方法
CN111860982A (zh) 一种基于vmd-fcm-gru的风电场短期风电功率预测方法
CN107292350A (zh) 大规模数据的异常检测方法
CN109145948A (zh) 一种基于集成学习的注塑机堵料异常检测方法
CN103605711B (zh) 支持向量机分类器的构造方法及装置、分类方法及装置
CN113177357B (zh) 一种电力系统暂态稳定评估方法
CN108319987A (zh) 一种基于支持向量机的过滤-封装式组合流量特征选择方法
CN109740859A (zh) 基于主成分分析法和支持向量机的变压器状态评估方法及系统
CN106067066A (zh) 基于遗传算法优化装袋算法的电力变压器故障诊断方法
CN107908536A (zh) Cpu‑gpu异构环境中对gpu应用的性能评估方法及系统
CN109711707B (zh) 一种船舶动力装置综合状态评估方法
CN116127695A (zh) 一种基于综合性能评价的生产线构建方法及系统
CN110297469A (zh) 基于重采样的集成特征选择算法的生产线故障判断方法
CN111400964B (zh) 一种故障发生时间预测方法及装置
CN111522743B (zh) 一种基于梯度提升树支持向量机的软件缺陷预测方法
CN117473424A (zh) 基于随机森林的变压器故障诊断方法、系统、设备及介质
CN106651199A (zh) 基于决策树方法的蒸汽管网调度规则系统
CN114330486A (zh) 基于改进Wasserstein GAN的电力系统不良数据辨识方法
CN117669176A (zh) 一种基于网络简化法的配电网可靠性评估方法及装置
CN116245019A (zh) 一种基于Bagging抽样及改进随机森林算法的负荷预测方法、系统、装置及存储介质
CN109164794B (zh) 基于偏f值selm的多变量工业过程故障分类方法
CN114297054B (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
GR01 Patent grant
GR01 Patent grant