CN108710576B - 基于异构迁移的数据集扩充方法及软件缺陷预测方法 - Google Patents
基于异构迁移的数据集扩充方法及软件缺陷预测方法 Download PDFInfo
- Publication number
- CN108710576B CN108710576B CN201810537415.0A CN201810537415A CN108710576B CN 108710576 B CN108710576 B CN 108710576B CN 201810537415 A CN201810537415 A CN 201810537415A CN 108710576 B CN108710576 B CN 108710576B
- Authority
- CN
- China
- Prior art keywords
- view
- sample
- data set
- views
- migration
- 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
Links
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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computer Hardware Design (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Quality & Reliability (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于异构迁移的数据集扩充方法,包括:首先,基于视图对源项目数据集进行分割,并基于神经网络对视图生成的各数据集之间训练得到异构迁移模型;然后,对大量的无类标数据,采用同样的视图分割方式生成各个视图,将视图投入异构迁移模型生成基于该视图生成的其他视图,经过组合后可以得到与源项目数据集格式相同的拟真样本;接着,利用源项目的各个视图训练各自的视图分类器;对由异构迁移模型生成的视图打上类标并给出置信度,综合各个分类器的置信度筛选出质量高的拟真样本的k个对源项目数据集进行扩充;最后,上述过程进行多次迭代,利用扩充后的源项目数据集训练生成软件缺陷预测模型进行缺陷预测。
Description
技术领域
本发明属于软件缺陷预测领域,具体涉及一种基于异构迁移的数据拓展方法及软件缺陷预测方法。
背景技术
软件缺陷预测技术通过使用现有的软件历史信息等数据,构建预测模型来对现有的软件进行缺陷风险评估,是目前软件质量评估方法中极其重要的一环。合理运用该技术,业界可以在软件发布前,从软件的文件和源码等层面进行检测,发现潜在的缺陷并进行及时的修正。既节约了原本依靠人工评估造成的高额成本,又大大避免了潜在的代码隐患造成的损失。
近些年来,已有不少缺陷预测方法被提出。早期的研究往往针对软件的历史数据进行建模来预测未来版本的缺陷风险,这一类统称为项目内缺陷预测(with-in projectdefect prediction,WPDP)。例如Gyimothy等人利用Chidamber and Kemerer(CK)metrics建立逻辑回归预测模型。Kim等从文件的历史错误中提取信息进行预测。J.Nam等将基于源码特征的矩阵和基于历史修改特征的矩阵相结合的基础上进行预测。
但在实际的应用情景下,所预测的项目的历史数据时常存在不全或数据不足的情况。研究人员将迁移学习的思想运用在软件缺陷预测上,将相关的项目等信息作为源域,待预测的项目作为目标域,由于源域和目标域之间存在着数值分布等差异,针对同构的迁移,Nam等人从特征映射角度出发提出了TCA(transfer component analysis)方法,并在之后又提出TCA+。Xin Xia等提CPCC的方法,综合各个小分类器得出分类结果。同构迁移依然需要较为充足的源域数据,同时由于不同的项目因为语言、结构等差异较大,迁移后的效果有时不能保证。为了能让异构的数据信息也得到利用,J.nam等基于异构迁移学习,提出(Heterogeneous Defect Prediction)通过异构数据之间的属性匹配建立预测模型,在应用过程中由于源域和目标域的属性间匹配的不稳定性,不同的匹配阈值会对结果造成较大的影响。
目前提出的缺陷预测的方法中大部分模型的建立需要充足的样本和标签。一般认为,随着样本数量的增加,模型的准确性也会相应提升。在目前公开的数据集中,项目的样本数量往往偏少,例如在promis数据集的29个项目版本中,有19个项目低于400个样本。AEEEM数据集5个项目中有2个项目低于400个样本。不同是数据集采用的矩阵的个数也不同,例如AEEEM采用了69个矩阵而NASA数据集中为38个。同样的,不同粒度的矩阵获得难度也不同,文件的历史修改数据获取难度大于源码层面,代码修改级别的获取难度大于文件层面的难度。当获取了软件的历史数据后,人工标注也需要较高的成本。上述的问题很大程度上制约了分类器的选择和预测准确率。
当遇到样本较少或者属性不全的训练数据时,传统的方法大多挑选出完整的样本作为训练数据,这加剧了训练数据不足的情况。在实际情况中,相同工程的不同粒度的数据获取难度不一,得到的不同粒度的信息数量也不同。由于不同的粒度信息生成的矩阵维度不同,传统的方法大多不能充分的利用这些信息。
发明内容
本发明的目的是提供一种基于异构迁移的数据集扩充方法,通过充分利用不同粒度信息,构建的异构迁移模型,利用异构迁移模型实现扩充数据集。
本发明的另一目的是提供一种基于异构迁移的软件缺陷预测方法,该方法在利用上述的数据扩充方法对源项目数据集的扩充基础上,构建缺陷分类器,能够增强缺陷分类器的判别准确性,进而提高对软件缺陷的预测准确率。
为实现上述发明目的,本发明提供以下技术方案:
一种基于异构迁移的数据集扩充方法,包括以下步骤:
(1)按照预定义的视图类型,提取源项目数据集中每个样本的与视图类型对应的所有特征,形成视图,每种类型的视图构成一个视图集;
(2)针对第i种视图,基于BP神经网络,利用N个视图集分别构建迁移向该第i种视图的N-1个异构迁移模型,其中,i=1,2,3……,N-1,N,N为视图类型的总个数;
(3)针对无类标样本的每个已知视图,分别利用与已知视图对应的N-1个异构迁移模型对已知视图进行异构迁移,生成N-1个迁移视图,此N-1个迁移视图与已知视图组成拟真样本;
(4)构建与每种视图对应的视图分类器;
(5)利用视图分类器对每个拟真样本的所有视图进行分类,根据所有视图的分类结果对拟真样本进行择优筛选,并将筛选的结果添加到源项目数据集中,实现对数据的扩充。
本发明利用异构迁移来扩充源项目数据集,首先将已有的源项目数据集基于视图进行分割并建立异构迁移模型,通过异构迁移的方式对无类标的数据进行进一步利用,打上类标并筛选出质量高的拟真样本对源项目数据集进行扩充。
一种基于异构迁移的软件缺陷预测方法,包括以下步骤:
(a)利用上述的数据扩充方法对源项目数据集进行扩充;
(b)以扩充后的源项目数据集中每个样本对应的特征作为输入,以每个样本对应的类标作为训练目标,对SVM分类器进行训练,以获得缺陷分类器;
(c)将待测样本输入到缺陷分类器中,经计算获得待测样本的类标,以实现对待测样本的缺陷预测。
一种基于异构迁移的软件缺陷预测方法,包括以下步骤:
(a)’利用上述的数据扩充方法对源项目数据集进行扩充;
(b)’针对扩充后的源项目数据集,按照步骤(1)构建N个新视图集后,利用步骤(4)构建与每种视图对应的新视图分类器;
(c)’按照步骤(1)提取待测样本的视图,并将待测样本的每个视图输入到对应的新视图分类器中,根据给出的置信度获得每个视图的类标;
(d)’综合待测样本的每个视图的类标,获得待测样本的类标,以实现对待测样本的缺陷预测;
所述的步骤(1)和步骤(4)均为上述的数据扩充方法中的步骤(1)和步骤(4)。
软件缺陷预测方法利用上述数据扩充方法实现对源项目数据集的扩充,并利用扩充的数据对分类器进行训练,解除样本不足对分类器选择的限制,以提高软件缺陷预测分类器的准确性。
附图说明
图1是本发明的一实施例提供的基于异构迁移的数据集扩充方法的流程图;
图2是本发明的另一实施例提供的基于异构迁移的软件缺陷预测方法的流程图;
图3是本发明的另一实施例提供的基于异构迁移的软件缺陷预测方法的流程图;
图4(a)是本发明的另一实施例提供的采用J48算法对JDT项目进行分类的AUC值分布图;
图4(b)是本发明的另一实施例提供的采用J48算法对JDT项目进行分类的AUC平均值分布图;
图5(a)是本发明的另一实施例提供的采用J48算法对PDE项目进行分类的AUC值分布图;
图5(b)是本发明的另一实施例提供的采用J48算法对PDE项目进行分类的AUC平均值分布图;
图6(a)是本发明的另一实施例提供的采用J48算法对MIN+HM+CM项目进行分类的AUC值分布图;
图6(b)是本发明的另一实施例提供的采用J48算法对MIN+HM+CM项目进行分类的AUC平均值分布图;
图7(a)是本发明的另一实施例提供的采用随机森林算法对JDT项目进行分类的AUC值分布图;
图7(b)是本发明的另一实施例提供的采用随机森林算法对JDT项目进行分类的AUC平均值分布图;
图8(a)是本发明的另一实施例提供的采用随机森林算法对PDE项目进行分类的AUC值分布图;
图8(b)是本发明的另一实施例提供的采用随机森林算法对PDE项目进行分类的AUC平均值分布图;
图9(a)是本发明的另一实施例提供的采用随机森林算法对MIN+HM+CM项目进行分类的AUC值分布图;
图9(b)是本发明的另一实施例提供的采用随机森林算法对MIN+HM+CM项目进行分类的AUC平均值分布图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
为实现对数据的扩充,为缺陷检测模型提供大量的训练样本基础,本实施例提供一种基于异构迁移的数据集扩充方法,如图1所示,包括以下步骤:
S101,按照预定义的视图类型,提取源项目数据集中每个样本的与视图类型对应的所有特征,形成视图,每种类型的视图构成一个视图集。
源项目数据集可以工程、源代码、文件等数据,每条数据可以认为一个样本,每个样本均具有多种特征,这些特征可以是工程的修改记录信息、源代码的某一判断语句及使用频率、源代码的函数及使用频率、源代码的复杂度、文件的修改次数等。
基于多视图理论,从样本的特征出发定义视图类型,具体地,根据源项目数据集中包含的所有特征定义N种视图类型,每种视图类型对应至少一种特征。在实际操作中,对视图类型的定义是根据特征的获取方式和粒度大小确定的。即采用A获取方式提取的特征则构成一种视图类型,或以B粒度大小提取的特征则构成另外一种视图类型。
对于由均具有M种特征的K个样本组成的数据集,根据特征获取方式或粒度大小提取每个样本的至少一种特征,构成每个样本的一种视图,K个样本的同一类型的视图组成一个视图集,即每个视图集对应一种视图类型,只有是这种类型的视图才会存放在该视图集中。由于在提取视图时,只是对样本的某几个特征进行提取,对样本原有的功能并没有进行修改,因此,提取的视图的类标与样本的类标是相同的,若样本的类标是1,表示样本没有缺陷,则样本的所有视图的类标均为1。
此外,由于视图是对样本的某几个特征进行提取的结果,因此,视图集中的样本个数与源项目数据集中的样本个数相同。
为减少特征数量级的差别对迁移的影响,在构建异构迁移模型前,对每个视图集中每个样本的特征做归一化处理,具体过程为:
针对样本的特征x,利用公式(1)实现对特征x的归一化,
其中,x*为对特征x归一化的结果,min为源项目数据集中包含的所有特征中的最小值,max为源项目数据集中包含的所有特征中的最大值。
利用归一化的视图构建异构迁移模型,能够减小特征数量级对异构迁移模型的影响,以提高异构迁移模型的准确性。
S102,针对第i种视图,基于BP神经网络,利用N个视图集分别构建迁移向该第i种视图的N-1个异构迁移模型,其中,i=1,2,3……,N-1,N,N为视图类型的总个数。
在提取样本的多个视图后,每个视图可视为异构的数据空间,利用BP神经网络来获得一种视图与另外一种视图的迁移方式,以构建视图的异构迁移模型,将已知视图输入到异构迁移模型中,经计算即可以获得输出视图,该输出视图即为基于已知视图迁移得到的迁移视图。
具体地,构建异构迁移模型的具体过程为:
设定BP神经网络的输入层神经元的数量为输入视图对应的特征数量,输出层神经元的数量为迁移视图对应的特征数量,隐藏层的层数与每个隐藏层神经元的数量交叉验证的方法确定最佳数值;
利用输入视图对应的视图集和迁移视图对应的视图集对定义的BP神经网络进行训练,当满足训练终止条件时,获得输入视图对应的视图类型相关于输出视图对应的视图类型的异构迁移模型。
在本实施例中,若输入视图对应的特征数量为3个,则将BP神经网络的输入层神经元的数量设置为3,若迁移视图(也就是输出视图)对应的特征数量为5个,则将BP神经网络的输出层神经元的数量设置为5。训练终止条件可以为迭代次数达到预设的最大迭代次数,还可以为预测视图与监督目标的输出视图之间的误差小于一定阈值,该阈值可以根据实际情况自行设置,在此不做限定。
针对每种视图,分别构建该种视图与其他另外一种视图的异构迁移模型。假设视图类型总个数为N,对于视图V1,则可以分别构建视图V1与视图V2,V3,……,VN的N-1个异构迁移模型,共计可获得N×N-1)个异构迁移模型。值得注意的是,以视图V1作为输入视图,以V2作为输出视图,构建的输入视图V1对应的视图类型相关于输出视图V2对应的视图类型的异构迁移模型表示为M12,以视图V2作为输入视图,以V1作为输出视图,构建的输入视图V2对应的视图类型相关于输出视图V1对应的视图类型的异构迁移模型表示为M21,则异构迁移模型M12与异构迁移模型M21为不相同的两个模型。
通过以上建立的异构迁移模型,只要已知一种视图,即可以通过异构迁移模型获得剩下的所有种类的视图,以实现对样本缺失特征的补全。
本实施例提供的异构迁移模型是一种全新的异构迁移方式,可以将传统的源域、目标域之间一对一,更为深入的转换为各个视图之间的信息迁移,有助于信息利用的最大化,提高了迁移的效率和效果。
S103,针对无类标样本的每个已知视图,分别利用与已知视图对应的N-1个异构迁移模型对已知视图进行异构迁移,生成N-1个迁移视图,此N-1个迁移视图与已知视图组成拟真样本。
为扩大源项目数据集的数据量,从与源项目相同的新无类标样本出发,对该数据进行相应的处理,以获得拟真样本。首先,针对无类标样本,利用步骤(1)的方法对无类标样本进行视图提取,获得无类标样本的已知视图。然后再利用已知视图通过异构迁移模型获得与已知视图对应的迁移视图。最后,按照原项目数据集中数据的形式,该已知视图和该已知视图对应的所有迁移视图组成一个拟真样本,拟真样本与源项目数据集中的样本的特征数量相同。
若一个无类标样本通过特征提取后,获得4种视图,分别为视图V1,视图V2,视图V3,视图V4,剩下的N-4种视图为缺失视图,需要利用异构迁移模型对缺失视图进行重构,获得迁移视图。具体地,将视图V1分别输入到与视图V1对应的N-1个异构迁移模型中,经计算获得N-1个迁移视图,这N-1个视图与视图V1构成一个拟真样本。对于视图V2,将视图V2分别输入到与视图V2对应的N-1个异构迁移模型中,经计算获得N-1个迁移视图,这N-1个视图与视图V2构成另外一个拟真样本。
该迁移摆脱了样本对于特征缺失的限制,通过异构迁移,缺失的信息得到补全。补全生成的拟真样本能够起到与真实样本相近的分类效果。
S104,构建与每种视图对应的视图分类器。
在本步骤中,以每个视图集中每个视图对应的特征作为输入,以每个视图对应的类标作为训练目标,对SVM分类器进行训练,以获得与每种视图对应的视图分类器。
S105,利用视图分类器对每个拟真样本的所有视图进行分类,根据所有视图的分类结果对拟真样本进行择优筛选,并将筛选的结果添加到源项目数据集中,实现对数据的扩充。
在本步骤中,利用步骤(1)的方法对每个拟真样本进行视图分割,获得每个拟真样本的N个视图,并将N个视图分别输入到与视图对应的N个视图分类器中,经计算获得N个视图的类标;
针对N个视图的类标不一致的拟真样本,删除该拟真样本;
针对N个视图的类标一致的拟真样本,以所有视图分类器给出的类标置信度的平均值作为该拟真样本的排序标准,根据排序标准对所有N个视图的类标一致的拟真样本进行排序,选择排序标准较高的前k个拟真样本添加到源项目数据集中,实现对数据的扩充。
由于多个视图均来自于一个拟真样本,则视图的类标应该与拟真样本的类标相同,因此,对N个视图的类标不一致的拟真样本进行删除,剔除掉劣质拟真样本,保证拟真样本的可靠度。
这种协同训练的方式为无类标样本打上类标,极大地降低了迁移所需的源项目样本的数量,有效利用了无类标样本中的有效信息,在不断重复的过程中筛选出高质量的拟真样本的同时提高了异构迁移模型的能力。
在该方法中,充分利用不同粒度信息,并构建的异构迁移模型,利用异构迁移模型实现扩充数据集。
如图2所示,另外一个实施例提供了一种基于异构迁移的软件缺陷预测方法,包括以下步骤:
S201,按照预定义的视图类型,提取源项目数据集中每个样本的与视图类型对应的所有特征,形成视图,每种类型的视图构成一个视图集。
S202,针对第i种视图,基于BP神经网络,利用N个视图集分别构建该第i种视图的N-1个异构迁移模型,其中,i=1,2,3……,N-1,N,N为视图类型的总个数。
S203,针对无类标样本的每个已知视图,分别利用与已知视图对应的N-1个异构迁移模型对已知视图进行异构迁移,生成N-1个迁移视图,此N-1个迁移视图与已知视图组成拟真样本。
S204,构建与每种视图对应的视图分类器。
S205,利用视图分类器对每个拟真样本的所有视图进行分类,根据所有视图的分类结果对拟真样本进行择优筛选,并将筛选的结果添加到源项目数据集中,实现对数据的扩充。
S206,迭代执行S201~S205,直到数据集中数据量满足需求为止,获得最终的扩充后的源项目数据集。
S207,以扩充后的源项目数据集中每个样本对应的特征作为输入,以每个样本对应的类标作为训练目标,对SVM分类器进行训练,以获得缺陷分类器。
S208,将待测样本输入到缺陷分类器中,经计算获得待测样本的类标,以实现对待测样本的缺陷预测。
S201~S205与上述的S101~S105的具体内容相同,此处不再赘述。
该缺陷预测方法中,利用上述数据扩充方法实现对源项目数据集的扩充,并利用扩充的数据对分类器进行训练,解除样本不足对分类器选择的限制,以提高软件缺陷预测分类器的准确性。
如图3所示,另外一个实施例提供了一种基于异构迁移的软件缺陷预测方法,包括以下步骤:
S301,按照预定义的视图类型,提取源项目数据集中每个样本的与视图类型对应的所有特征,形成视图,每种类型的视图构成一个视图集。
S302,针对第i种视图,基于BP神经网络,利用N个视图集分别构建该第i种视图的N-1个异构迁移模型,其中,i=1,2,3……,N-1,N,N为视图类型的总个数。
S303,针对无类标样本的每个已知视图,分别利用与已知视图对应的N-1个异构迁移模型对已知视图进行异构迁移,生成N-1个迁移视图,此N-1个迁移视图与已知视图组成拟真样本。
S304,构建与每种视图对应的视图分类器。
S305,利用视图分类器对每个拟真样本的所有视图进行分类,根据所有视图的分类结果对拟真样本进行择优筛选,并将筛选的结果添加到源项目数据集中,实现对数据的扩充。
S306,迭代执行S301~S305,直到数据集中数据量满足需求为止,获得最终的扩充后的源项目数据集。
S307,针对扩充后的源项目数据集,按照S301构建N个新视图集后,利用S304构建与每种视图对应的新视图分类器;
S308,按照S301提取待测样本的视图,并将待测样本的每个视图输入到对应的新视图分类器中,经计算获得每个视图的类标;
S309,综合待测样本的每个视图的类标,获得待测样本的类标,以实现对待测样本的缺陷预测。
S301~S305与上述的S101~S105的具体内容相同,此处不再赘述。
S309中,选择个数最多的视图类标作为待测样本的类标。假设针对某一待测样本的视图类标总计有10个,其中6个视图类标为1,4个视图类标为0,则将1作为该待测样本的视图类标。
该缺陷预测方法中,利用上述数据扩充方法实现对源项目数据集的扩充,并利用扩充的数据对分类器进行训练,解除样本不足对分类器选择的限制,以提高软件缺陷预测分类器的准确性。
应用例
在应用实例中,根据本发明内容,需要验证的数据集的特征中要包含至少两类信息。同时为了能够更能精确的比较拟真样本和真实样本之间的差距,决定源项目数据集和目标项目数据集的数据均来源自一个数据集。这就对目前公开的数据集提出了较高的要求。经过筛选,AEEEM数据集和HIM数据集符合条件。表1列举了本次实验用到的数据集的详细情况。
表1
AEEEM由D’Ambros等人在Eclipse的5个开源项目中采集而来,选用数量符合要求的两个项目进行实验。它的每个数据集由61个特征组成,包括17个源代码指标、5个previous-defect指标、5个entropy-of-change特征以、5个entropy-of-source-code特征以及17个代码块特征,样本粒度为类级别。MIN数据集由Taek Lee,Jaechang Nam等人从eclipse的插件Mylyn的历史存档中提取而来,共81个特征,包括42个SOURCE CODE METRICS(CM),16个HISTORY METRICS(HM),以及24个micro interaction metrics(MIM)。
本实施例中,需要对数据集进行切分来达到满足实验的假设。首先视数据集的前1/3的样本为源域数据,这类数据拥有全部的视图。将剩余的样本按照不同类别的属性,分割成不同的视图作为目标域的数据,每一类的视图成为目标域中的数据集。在实验中,对AEEEM根据是否直接基于源码生成两个视图,产生两个目标域的数据集。对于MIM数据集,将源码特征的属性划为一个视图,将历史矩阵和微互动矩阵划为另一个视图。
本实施例中,还需要对数据集进行分割,将一个数据集划分为两部分,一部分作为已知类标的样本,另一部分作为无类标的样本。接着将有类标的样本分割成两个视图(视图A和视图B),并将两个视图分别作为训练集和测试集投入两个神经网络的训练中生成两个异构迁移模型,该迁移模型能基于输入的视图生成另一个视图。随后将无类标样本的部分同样分割成视图A和视图B,并投入迁移模型中进行补全。若设基于视图A补全的视图为B’,基于B补全的视图为A’,得到了由视图A和B’以及视图A’和B组成的两组全新的样本,称之为拟真样本。接下来用各自的视图训练SVM生成两个子分类器,对拟真样本的生成视图部分进行分类,取置信度高的前K个打上类标加入到已知类标样本的训练集中,然后进行下一轮迭代。其中考虑到随着迭代次数的增加,神经网络训练集的样本个数会增加,训练结果会进一步收敛,K值设置为随着迭代次数依次增加,在本次实验中,5次迭代设置为20,30,40,50,50。最后,将已知类标的数据集中加入拟真样本进行主动扩充,并用J48算法,随机森林算法检验数据集的软件缺陷预测能力。在本次实验中,采用Weka平台进行实验,所有的参数均为默认参数。
在软件缺陷预测中常用的指标是AUC。AUC是ROC曲线的面积,ROC曲线的x轴是伪阳性率,y轴是真阳性率。一般来说,AUC的值越大,分类效果越好。
对于一个待预测样本可能有如表2所示的四种被预测后的状态:即被预测为有缺陷(Defective)的样本,如果它真的有缺陷则被称为真正样本(true positive,TP),否则称之为假正样本(false positive,FP);同样地,若被预测为无缺陷(Clean)的样本真的没有缺陷,则称之为真反样本(true negative,TN),否则为假反样本(false negative,FN)。基于以上四种可能结果,可以计算出真阳率和假阳率。
表2预测后的状态表
真阳率TP Rate意义是所有真实类别为有缺陷的样本中,预测类别为有缺陷的比例:
TP Rate=TP/(TP+FN)
假阳率FP Rate意义是所有真是类别为无缺陷的样本中,预测类别为有缺陷的比例:
FP Rate=FP/(FP+TN)
图4(a)、图4(b)、图5(a)、图5(b)、图6(a)、图6(b)为各项目用J48算法通过默认参数训练后的分类效果。图7(a)、图7(b)、图8(a)、图8(b)、图9(a)、图9(b)为各项目用随机森林算法通过默认参数训练后的分类效果。分析图可得,大部分的项目的分类效果随着训练样本的数量增加而提升。在原有的真实样本上加入一定数量的拟真样本后,大部分的项目分类效果有显著的提升。部分的拟真样本的分类效果甚至超过了增加同等数量的真实样本。还可以观察到,部分视图生成的拟真样本并不能提高分类效果,甚至对分类效果是负优化。对比J48算法和随机森林算法,发现不同视图生成的拟真样本可能对分类效果的提升效果不同:如JDT和PDE中,其中一个视图生成的拟真样本在J48算法中表现较好,而另一视图生成的拟真样本在随机森林算法中有更好的表现。综合上述的信息,可以得到:拟真样本的扩充能提高分类器的分类效果,且在各分类器中较稳定的表现。
实验表明,生成样本表现出与真实样本极其相近的特性。当样本不足的数据集经过扩充后,分类器的效果明显提升。利用上述方法让允许原有的数据集主动扩充,解除了样本不足对分类器选择的限制,使得研究人员能尝试采用更多的分类器来寻找建立更优化的预测模型。
此外,拟真样本的扩充能提高分类器的分类效果,且在各分类器中较稳定的表现。当我们将拟真样本扩充如源项目数据集后,通过训练得到的软件缺陷预测模型的分类效果有明显提高。
以上所述的具体实施方式对本发明的技术方案和有益效果进行了详细说明,应理解的是以上所述仅为本发明的最优选实施例,并不用于限制本发明,凡在本发明的原则范围内所做的任何修改、补充和等同替换等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种基于异构迁移的数据集扩充方法,包括以下步骤:
(1)按照预定义的视图类型,提取源项目数据集中每个样本的与视图类型对应的所有特征,形成视图,每种类型的视图构成一个视图集;
(2)针对第i种视图,基于BP神经网络,利用N个视图集分别构建迁移向该第i种视图的N-1个异构迁移模型,其中,i=1,2,3……,N-1,N,N为视图类型的总个数;
(3)针对无类标样本的每个已知视图,分别利用与已知视图对应的N-1个异构迁移模型对已知视图进行异构迁移,生成N-1个迁移视图,此N-1个迁移视图与已知视图组成拟真样本;
(4)构建与每种视图对应的视图分类器;
(5)利用视图分类器对每个拟真样本的所有视图进行分类,根据所有视图的分类结果对拟真样本进行择优筛选,并将筛选的结果添加到源项目数据集中,实现对数据的扩充。
2.如权利要求1所述的基于异构迁移的数据集扩充方法,其特征在于,根据源项目数据集中包含的所有特征定义N种视图类型,每种视图类型对应至少一种特征。
4.如权利要求1所述的基于异构迁移的数据集扩充方法,其特征在于,步骤(2)包括:
设定BP神经网络的输入层神经元的数量为输入视图对应的特征数量,输出层神经元的数量为迁移视图对应的特征数量,隐藏层的层数与每个隐藏层神经元的数量交叉验证的方法确定最佳数值;
利用输入视图对应的视图集和迁移视图对应的视图集对定义的BP神经网络进行训练,当满足训练终止条件时,获得输入视图对应的视图类型相关于输出视图对应的视图类型的异构迁移模型。
5.如权利要求1所述的基于异构迁移的数据集扩充方法,其特征在于,步骤(4)包括:
以每个视图集中每个视图对应的特征作为输入,以每个视图对应的类标作为训练目标,对SVM分类器进行训练,以获得与每种视图对应的视图分类器。
6.如权利要求1所述的基于异构迁移的数据集扩充方法,其特征在于,步骤(5)包括:
利用步骤(1)的方法对每个拟真样本进行视图分割,获得每个拟真样本的N个视图,并将N个视图分别输入到与视图对应的N个视图分类器中,经计算获得N个视图的类标;
针对N个视图的类标不一致的拟真样本,删除该拟真样本;
针对N个视图的类标一致的拟真样本,以所有视图分类器给出的类标置信度的平均值作为该拟真样本的排序标准,根据排序标准对所有N个视图的类标一致的拟真样本进行排序,选择排序标准较高的前k个拟真样本及该k个拟真样本的类标添加到源项目数据集中,实现对数据的扩充。
7.如权利要求1所述的基于异构迁移的数据集扩充方法,其特征在于,针对无类标样本,利用步骤(1)的方法对无类标样本进行视图提取,获得无类标样本的已知视图。
8.一种基于异构迁移的软件缺陷预测方法,包括以下步骤:
(a)利用权利要求1~7任一项所述的数据集 扩充方法对源项目数据集进行扩充;
(b)以扩充后的源项目数据集中每个样本对应的特征作为输入,以每个样本对应的类标作为训练目标,对SVM分类器进行训练,以获得缺陷分类器;
(c)将待测样本输入到缺陷分类器中,经计算获得待测样本的类标,以实现对待测样本的缺陷预测。
9.一种基于异构迁移的软件缺陷预测方法,包括以下步骤:
(a)’利用权利要求1~7任一项所述的数据集 扩充方法对源项目数据集进行扩充;
(b)’针对扩充后的源项目数据集,按照步骤(1)构建N个新视图集后,利用步骤(4)构建与每种视图对应的新视图分类器;
(c)’按照步骤(1)提取待测样本的视图,并将待测样本的每个视图输入到对应的新视图分类器中,根据给出的置信度获得每个视图的类标;
(d)’综合待测样本的每个视图的类标,获得待测样本的类标,以实现对待测样本的缺陷预测;
所述的步骤(1)和步骤(4)均为权利要求1~7任一项所述的数据集 扩充方法中的步骤(1)和步骤(4)。
10.如权利要求9所述的基于异构迁移的软件缺陷预测方法,其特征在于,步骤(d)’中,选择个数最多的视图类标作为待测样本的类标。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810537415.0A CN108710576B (zh) | 2018-05-30 | 2018-05-30 | 基于异构迁移的数据集扩充方法及软件缺陷预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810537415.0A CN108710576B (zh) | 2018-05-30 | 2018-05-30 | 基于异构迁移的数据集扩充方法及软件缺陷预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108710576A CN108710576A (zh) | 2018-10-26 |
CN108710576B true CN108710576B (zh) | 2021-08-10 |
Family
ID=63870851
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810537415.0A Active CN108710576B (zh) | 2018-05-30 | 2018-05-30 | 基于异构迁移的数据集扩充方法及软件缺陷预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108710576B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109635850A (zh) * | 2018-11-23 | 2019-04-16 | 杭州健培科技有限公司 | 一种基于生成对抗网络优化医学图像分类性能的方法 |
CN110008584B (zh) * | 2019-04-02 | 2020-11-06 | 广东石油化工学院 | 一种基于GitHub的半监督异构软件缺陷预测方法 |
CN110188027A (zh) * | 2019-05-31 | 2019-08-30 | 深圳前海微众银行股份有限公司 | 生产环境的性能评估方法、装置、设备及存储介质 |
CN110766071B (zh) * | 2019-10-21 | 2023-04-28 | 北京工业大学 | 一种基于森林自编码器的脑网络数据增强方法 |
CN113705616B (zh) * | 2021-07-30 | 2024-05-10 | 三维通信股份有限公司 | 模型构建方法、软件缺陷预测方法、装置以及电子装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106030301A (zh) * | 2014-02-18 | 2016-10-12 | 伊士曼化工公司 | 在线检测纤维构件中的缺陷 |
CN106951362A (zh) * | 2015-09-18 | 2017-07-14 | Fmr有限责任公司 | 在正在进行的性能测试期间对计算机系统处理器和事务性能的实时监测 |
CN107451661A (zh) * | 2017-06-29 | 2017-12-08 | 西安电子科技大学 | 一种基于虚拟图像数据集的神经网络迁移学习方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9123023B2 (en) * | 2012-02-23 | 2015-09-01 | Oracle International Corporation | Configurable document generator to provide dynamic views of user defined elements |
-
2018
- 2018-05-30 CN CN201810537415.0A patent/CN108710576B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106030301A (zh) * | 2014-02-18 | 2016-10-12 | 伊士曼化工公司 | 在线检测纤维构件中的缺陷 |
CN106951362A (zh) * | 2015-09-18 | 2017-07-14 | Fmr有限责任公司 | 在正在进行的性能测试期间对计算机系统处理器和事务性能的实时监测 |
CN107451661A (zh) * | 2017-06-29 | 2017-12-08 | 西安电子科技大学 | 一种基于虚拟图像数据集的神经网络迁移学习方法 |
Non-Patent Citations (1)
Title |
---|
面向认知的多源数据学习理论和算法研究进展;杨柳;《北大核心》;20170823;第2973-2990页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108710576A (zh) | 2018-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108710576B (zh) | 基于异构迁移的数据集扩充方法及软件缺陷预测方法 | |
CN109408389B (zh) | 一种基于深度学习的代码缺陷检测方法及装置 | |
CN111369572B (zh) | 一种基于图像修复技术的弱监督语义分割方法和装置 | |
CN110880019B (zh) | 通过无监督域适应训练目标域分类模型的方法 | |
CN109934615B (zh) | 基于深度稀疏网络的产品营销方法 | |
CN112132014B (zh) | 基于非督导金字塔相似性学习的目标重识别方法及系统 | |
CN110990784B (zh) | 一种基于梯度提升回归树的烟支通风率预测方法 | |
CN113591215B (zh) | 基于不确定性的异常卫星组件布局检测方法 | |
CN110909868A (zh) | 基于图神经网络模型的节点表示方法和装置 | |
CN111061923B (zh) | 一种基于图依赖规则和监督学习的图数据实体识别系统 | |
Lawrence et al. | Explaining neural matrix factorization with gradient rollback | |
CN113066528B (zh) | 基于主动半监督图神经网络的蛋白质分类方法 | |
CN114169460A (zh) | 样本筛选方法、装置、计算机设备和存储介质 | |
Li et al. | Robust multi-label semi-supervised classification | |
CN112115996B (zh) | 图像数据的处理方法、装置、设备及存储介质 | |
CN113343123A (zh) | 一种生成对抗多关系图网络的训练方法和检测方法 | |
CN117349786A (zh) | 基于数据均衡的证据融合变压器故障诊断方法 | |
CN117036060A (zh) | 车险欺诈识别方法、装置和存储介质 | |
CN111949530B (zh) | 测试结果的预测方法、装置、计算机设备及存储介质 | |
CN110955811B (zh) | 基于朴素贝叶斯算法的电力数据分类方法及系统 | |
CN110210988B (zh) | 一种基于深度哈希的符号社交网络嵌入方法 | |
CN117633140B (zh) | 一种基于大数据云计算技术的城市地质调查方法 | |
US11609936B2 (en) | Graph data processing method, device, and computer program product | |
Chattopadhyay et al. | A test case for application of convolutional neural networks to spatio-temporal climate data: Re-identifying clustered weather patterns | |
CN113657453B (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 |