CN116701222A - 基于特征加权迁移学习的跨项目软件缺陷预测方法及系统 - Google Patents
基于特征加权迁移学习的跨项目软件缺陷预测方法及系统 Download PDFInfo
- Publication number
- CN116701222A CN116701222A CN202310732370.3A CN202310732370A CN116701222A CN 116701222 A CN116701222 A CN 116701222A CN 202310732370 A CN202310732370 A CN 202310732370A CN 116701222 A CN116701222 A CN 116701222A
- Authority
- CN
- China
- Prior art keywords
- feature
- defect
- project software
- source
- software
- 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 188
- 238000000034 method Methods 0.000 title claims abstract description 76
- 238000013508 migration Methods 0.000 title claims abstract description 44
- 230000005012 migration Effects 0.000 title claims abstract description 44
- 238000005259 measurement Methods 0.000 claims abstract description 63
- 238000001514 detection method Methods 0.000 claims abstract description 22
- 238000012545 processing Methods 0.000 claims abstract description 17
- 238000004590 computer program Methods 0.000 claims description 22
- 230000006870 function Effects 0.000 claims description 16
- 238000012549 training Methods 0.000 claims description 15
- 230000008569 process Effects 0.000 claims description 13
- 238000003860 storage Methods 0.000 claims description 6
- 238000004364 calculation method Methods 0.000 abstract description 5
- 238000010276 construction Methods 0.000 abstract description 4
- 230000003044 adaptive effect Effects 0.000 description 11
- 238000009826 distribution Methods 0.000 description 9
- 230000002950 deficient Effects 0.000 description 7
- 238000012360 testing method Methods 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 238000010219 correlation analysis Methods 0.000 description 3
- 238000012546 transfer Methods 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 239000013256 coordination polymer Substances 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000007849 functional defect Effects 0.000 description 1
- 230000002068 genetic effect Effects 0.000 description 1
- 238000002372 labelling Methods 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000000513 principal component analysis Methods 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000012706 support-vector machine Methods 0.000 description 1
- 238000013526 transfer learning Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
- 239000013598 vector Substances 0.000 description 1
- 238000002759 z-score normalization Methods 0.000 description 1
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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
- G06F18/24155—Bayesian classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
-
- 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)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Artificial Intelligence (AREA)
- Life Sciences & Earth Sciences (AREA)
- Probability & Statistics with Applications (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Quality & Reliability (AREA)
- Evolutionary Biology (AREA)
- Computer Hardware Design (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明提供一种基于特征加权迁移学习的跨项目软件缺陷预测方法及系统,属于计算机软件缺陷检测技术领域,获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果。本发明在计算实例相似性和实例权重时引入了特征重要性的信息,降低了实例相似性和实例权重的计算偏差;引入了模型自适应调整策略,根据源数据集的特点,自动选择合适的模型构建方案来获得CPDP模型,保证了CPDP模型的鲁棒性。
Description
技术领域
本发明涉及计算机软件缺陷检测技术领域,具体涉及一种基于特征加权迁移学习的跨项目软件缺陷预测方法及系统。
背景技术
软件缺陷预测(Software Defect Prediction,SDP)能够帮助软件测试人员更好的定位缺陷模块,其在分配测试资源和提高测试效率方面发挥着重要作用。大多数SDP方法依据项目的历史缺陷数据进行预测模型训练,并使用训练后的模型预测该项目中新的软件模块的缺陷状况,这类预测模型称为项目内软件缺陷预测(Within-project DefectPrediction,WPDP)。但是,在项目的早期阶段,由于缺少足够的历史缺陷数据,此时很难进行项目内软件缺陷预测。
为了解决这个问题,跨项目软件缺陷预测(Cross-project Defect Prediction,CPDP)被提出。CPDP致力于在给定的源数据集上建立一个预测模型,然后在一个新项目中使用该模型,预测该项目中各模块的缺陷状况。CPDP方法主要可分为两类:同构跨项目软件缺陷预测与异构跨项目软件缺陷预测,前者假设源数据集和目标数据集采用相同的度量元集,而后者则假设它们的度量集是不同的。
同构跨项目软件缺陷预测方法是目前研究最为广泛的一类CPDP方法,研究人员已提出多种该类方法。一些研究人员试图从源数据集中选择类似于目标数据的源实例作为训练数据。其中,Turhan等人提出了基于欧氏距离的k-近邻方法Burak’Filter来从源数据中选择训练实例。He等人使用了分布特征(中位数、平均值、方差、标准差等)来选择训练数据。Bhat和Farooq利用汉明距离计算相似性,然后选择相似的源实例作为训练数据集。
一些同构跨项目软件缺陷预测方法试图通过源数据集实例与目标数据集的相似性对其进行加权,来减少源数据和目标数据之间的分布差异。Ma等人提出了迁移朴素贝叶斯(Transfer Bayes,TNB)方法。对于每个源实例,都会根据目标数据的分布计算其相似性,并根据数据引力来计算权重。Chen等人假设目标数据集有一小部分已标记的实例可以用于模型训练,并提出了一种双转移提升方法。Xia等人开发了一种名为混合模型重建方法的CPDP方法,该方法在每一轮训练中调整源实例的权重。Ryu等使用与TNB类似的方法来计算源实例的相似性,提出了一种基于支持向量机的价值-认知增强方法。
一些同构跨项目软件缺陷预测方法旨在通过使用特征空间变换来最小化源数据集和目标数据集之间的分布差异,从而找到潜在的共同特征空间。具体来说,Nam等人提出了一种新的CPDP方法,称为TCA+,它通过引入特定规则来选择归一化方法,扩展了迁移主成分分析(TCA)方法,并采用半监督的迁移成分分析方法来寻找潜在的共同特征空间。Cruz和Ochimizu利用对数变换来减少分布差异。坎福拉等人采用Z-Score归一化方法来减少分布差异。Zou等人提出了DMDAJFR,它使用两种新的自动编码器联合学习全局和局部特征表示,然后使用重复伪标记策略来获得分布匹配。王等人提出了基于深度信念网络的CPDP的DBN-CP。他们使用深度信念网络从源项目的抽象语法树中提取的标记向量,并自动学习语义特征,然后使用学习到的语义度量训练预测模型。最后,将训练后的模型应用于目标项目。
此外,Hosseini等人提出了一种遗传实例选择和特征选择相结合的CPDP的实例选择和特征选择方法。Krishna和Menzies提出了用于CPDP的Bellwether,Zou提出了相关特征和实例权重迁移学习(CFIW-TNB),它使用特征迁移和实例迁移来最小化分布差异。
现有跨项目软件缺陷预测模型存在两方面的主要问题:在实例相似性计算中忽略不同特征的重要性,用于减少源数据集和目标数据集之间的分布差异的实例权重存在一个较大的计算偏差;(2)构建的模型往往不够健壮,这意味着这些模型在极端情况(源数据集的缺陷比例极高或源数据集的规模非常小)下无法保持较高的缺陷预测性能,无法根据不同缺陷数据集的特征,自动选择有效的缺陷预测模型构造方法。
发明内容
本发明的目的在于提供一种基于特征加权迁移学习的跨项目软件缺陷预测方法及系统,适应性的三重特征加权迁移朴素贝叶斯模型,来构建出高性能、高鲁棒性的同构跨项目软件缺陷预测模型,以解决上述背景技术中存在的至少一项技术问题。
为了实现上述目的,本发明采取了如下技术方案:
一方面,本发明提供一种基于特征加权迁移学习的跨项目软件缺陷预测方法,包括:
获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;
判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;
根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果;其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
优选的,特征加权相似性为:
计算目标数据集XT中第k个特征的最大值与/>对于每一个源实例它相对于目标数据集的特征加权相似性在特征重要性θk的基础上定义为:
其中,d表示软件度量元的总数目,当时,/>否则其值等于0。
优选的,特征加权实例权重为:
目标数据集中每个特征的质量为M,则目标数据集的质量为可以写为nt*d*M,其中nt表示目标数据集的样本数,d表示度量元的总数目,并且源实例的质量/>特征加权相似性si fw表示为si fw*d*m;则具有特征加权相似性si fw的源实例xi s的特征加权实例权重为:
其中,si fw表示第i个源实例的特征加权相似性,θk表示源数据集中第k个特征的重要性。
优选的,基于训练数据集和特征加权的实例权重,计算出每个类别c的先验概率:
其中,ci表示第i个源实例的实际类别标签,ns表示源实例的数量,nc表示不同类别的数量,当x等于y时σ(x,y)=1,否则σ(x,y)=0;
给定一个目标实例的条件概率,第k个特征/>在/>与给定类别c的关系计算如下:
其中,表示第i个源实例的第k个特征的值,nk表示源数据集中第k个特征标签种类的数目,而wi fw是第i个源实例的权重。
优选的,基于先验概率和条件概率,特征加权后验概率为:
其中,θk表示源数据集中第k个特征的重要性,exp()表示以自然常数e为底的指数函数。
优选的,计算出源数据集中每一个特征的重要度MIC值/>后,进一步将其标准化:
其中,表示源数据集中第k个特征,即软件度量元。
第二方面,本发明提供一种基于特征加权迁移学习的跨项目软件缺陷预测系统,包括:
获取模块,用于获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;
判断模块,用于判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;
预测模块,用于根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果;其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
第三方面,本发明提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质用于存储计算机指令,所述计算机指令被处理器执行时,实现如上所述的基于特征加权迁移学习的跨项目软件缺陷预测方法。
第四方面,本发明提供一种计算机程序产品,包括计算机程序,所述计算机程序当在一个或多个处理器上运行时,用于实现如上所述的基于特征加权迁移学习的跨项目软件缺陷预测方法。
第五方面,本发明提供一种电子设备,包括:处理器、存储器以及计算机程序;其中,处理器与存储器连接,计算机程序被存储在存储器中,当电子设备运行时,所述处理器执行所述存储器存储的计算机程序,以使电子设备执行实现如上所述的基于特征加权迁移学习的跨项目软件缺陷预测方法的指令。
术语解释:
(1)软件缺陷:Software Defect,常常也被称为Bug,指计算机软件或程序中存在的某种影响其正常运行的问题、错误,或者隐藏的功能缺陷。IEEE729-1983把软件缺陷定义为:从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。
(2)软件测试:使用人工或自动化的手段来运行或测定某个软件系统的过程,其目的是尽可能早地发现软件中的缺陷,并确保缺陷被修复或得到合适的处理。
(3)软件度量元:IEEE在“Standard for Software Quality MetricsMethodology”中给出了软件度量的定义:“度量是一个函数,它的输入是软件数据,输出是单一的数值,能用以解释软件所具有的一个给定属性对软件质量影响的程度”。根据IEEEStd 1061-1992,软件度量元是对影响软件质量的属性所进行的定量测量。现有软件度量元主要有两大类:软件产品度量元(Software Product Metrics)和软件过程度量元(Software Process Metrics)。根据编程语言的不同,软件产品度量元主要可分为面向过程软件的方法级别度量元(Method-level Metrics)和面向对象软件的类级别度量元(Class-level Metrics)。对于面向过程软件,通常把一个方法(或函数)称为一个软件模块,度量对象是单个的函数,此时度量元被称为方法级别度量元。而对于面向对象软件,通常把一个类称为一个软件模块,度量对象是每一个类,此时度量元被称为类级别度量元(有时也被称为面向对象度量元)。
(4)软件缺陷预测:利用统计或机器学习等方法,对软件历史缺陷数据进行挖掘分析,以建立软件度量元(即自变量)与软件缺陷(即因变量)之间的映射关系,并在软件测试之前对新的软件模块的缺陷状况(即缺陷数目/概率/倾向/类型等)进行预测进而帮助工程师合理分配测试资源、提高测试效率。
(5)跨项目软件缺陷预测:指利用源项目的数据(训练集)来构建缺陷预测模型,进而将该模型应用于目标项目(测试集)以预测其潜在缺陷。这种预测方法的目标是在缺乏目标项目数据的情况下,通过利用其它相似项目的缺陷数据进行缺陷预测。
(6)迁移学习:给定源域Ds和学习任务Ts,目标域Dt和学习任务Tt,迁移学习的目的是获取源域Ds和学习任务Ts中的知识以帮助提升目标域中的预测函数ft(·)的学习,其中Ds≠Dt或者Ts≠Tt。
本发明有益效果:在计算实例相似性和实例权重时引入了特征重要性的信息,大大降低了实例相似性和实例权重的计算偏差;引入了模型自适应调整策略,可以根据源数据集的特点,自动选择合适的模型构建方案来获得CPDP模型,保证了CPDP模型的鲁棒性,即更稳定的高性能。
本发明附加方面的优点,将在下述的描述部分中更加明显的给出,或通过本发明的实践了解到。
附图说明
为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例所述的基于特征加权迁移学习的跨项目软件缺陷预测方法流程图。
具体实施方式
下面详细叙述本发明的实施方式,所述实施方式的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本发明的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件和/或它们的组。
为便于理解本发明,下面结合附图以具体实施例对本发明作进一步解释说明,且具体实施例并不构成对本发明实施例的限定。
本领域技术人员应该理解,附图只是实施例的示意图,附图中的部件并不一定是实施本发明所必须的。
实施例1
本实施例1中,首先提供了一种基于特征加权迁移学习的跨项目软件缺陷预测系统,包括:获取模块,用于获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;判断模块,用于判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;预测模块,用于根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果。
本实施例1中,利用上述的系统实现了基于特征加权迁移学习的跨项目软件缺陷预测方法,包括:使用获取模块获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;使用判断模块判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;使用预测模块根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果。其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
特征加权相似性为:
计算目标数据集XT中第k个特征的最大值与/>对于每一个源实例它相对于目标数据集的特征加权相似性在特征重要性θk的基础上定义为:
其中,d表示软件度量元的总数目,当时,/>否则其值等于0。
特征加权实例权重为:
目标数据集中每个特征的质量为M,则目标数据集的质量为可以写为nt*d*M,其中nt表示目标数据集的样本数,d表示度量元的总数目,并且源实例的质量/>特征加权相似性si fw表示为si fw*d*m;则具有特征加权相似性si fw的源实例xi s的特征加权实例权重为:
其中,si fw表示第i个源实例的特征加权相似性,θk表示源数据集中第k个特征的重要性。
基于训练数据集和特征加权的实例权重,计算出每个类别c的先验概率:
其中,ci表示第i个源实例的实际类别标签,ns表示源实例的数量,nc表示不同类别的数量,当x等于y时σ(x,y)=1,否则σ(x,y)=0;
给定一个目标实例的条件概率,第k个特征/>在/>与给定类别c的关系计算如下:
其中,表示第i个源实例的第k个特征的值,nk表示源数据集中第k个特征标签种类的数目,而wi fw是第i个源实例的权重。
基于先验概率和条件概率,特征加权后验概率为:
其中,θk表示源数据集中第k个特征的重要性,exp()表示以自然常数e为底的指数函数。
计算出源数据集中每一个特征的重要度MIC值/>后,进一步将其标准化:
其中,表示源数据集中第k个特征,即软件度量元。
实施例2
本实施例2中提供一种基于特征加权迁移学习的跨项目软件缺陷预测方法,通过提出一种适应性的三重特征加权迁移朴素贝叶斯模型,来构建出高性能、高鲁棒性的同构跨项目软件缺陷预测模型。
如图1所示。本实施例主要包括两大核心:自适应调整策略和三重特征加权朴素贝叶斯算法。其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。自适应调整指的是可以根据源数据集的特点(比如缺陷率,Defect Ration,简称DefRatio)自动选择合适的策略构造缺陷预测模型。
考虑到缺陷数据集潜在的数据质量问题,需按照如下方法对数据集进行预处理:(1)删除缺失值的实例;(2)删除重复的实例。
缺失值可能是由于数据收集器的错误造成的。由于缺失值可能会导致模型的训练或测试失败,我们只是直接删除缺失值的实例。删除重复实例的原因包括两个方面:(1)训练数据集中的重复实例不仅不能帮助提高模型性能,而且可能增加模型训练时间;(2)测试数据集中的重复实例会导致对模型性能的过度乐观或过度悲观的评价。
特征重要性可以通过使用特征-类的相关性分析来衡量。特征-类的相关性指的是一个特征和类标签(有缺陷或无缺陷)之间的相关性。特征-类的相关性越大表示该特征与类别标签之间更强的相关关系,特征与类别标签之间的关系越强。
本实施例中使用最大信息系数(MIC)来进行特征-类标签之间的相关分析,进而衡量特征的重要性。在计算特征重要性之前,我们首先使用合成少数类过采样技术来消除源数据集的类平衡问题,然后用高斯-拉普拉斯滤波器对源数据集的自变量值进行转换。高斯-拉普拉斯滤波器也被应用于目标数据集。
与其他方法(例如信息增益、增益比、ReliefF以及ReliefF)相比,最大信息系数(MIC)是一种更加强大和稳健的相关性分析方法。得益于它的有效性,MIC引起了越来越多的关注。MIC值的范围是[0,1]。这里,MIC被用来确定特征的重要性。使用由Albanese等人(2013)开发的MATLAB工具箱minepy来计算MIC。
计算出源数据集中每一个特征的重要度——MIC值/>后,进一步将其标准化:
其中,表示源数据集中第k个特征(即软件度量元)。
对于面向过程软件的方法级别软件度量元,对于面向过程软件,一般认为其一个函数/方法为一个模块。因此,度量元的值是以函数为单位进行统计的,预测对象也是指一个个的函数。最著名、最常用的方法级别度量元包括:McCabe度量元、Halstead度量元以及代码行数度量元,如表1所示。
表1常用的方法级别度量元
对于面向对象软件的类级别度量元,对于面向对象软件,一般把一个类看做一个软件模块。类级别度量元又被称为面向对象度量元。每个类级别度量元的度量对象是针对每个类,模型预测对象也是每个类。公开的面向对象开源软件的缺陷数据集中最常用的面向对象度量元,包括:Chidamber-Kemerer(CK)度量元、QMOOD度量元等。常用的类级别度量元及其含义如表2所示:
表2常用的类水平软件度量元
/>
现有技术中实例相似性的计算没有考虑基于特征-类相关性的特征重要性分析,这将导致实例相似性的计算出现较大偏差。因此,本实施例中提出了特征加权相似性的概念。这是第一次在软件缺陷领域提出特征加权相似性的概念。
特别的,可以计算出目标数据集XT中第k个特征的最大值与/>对于每一个源实例/>它相对于目标数据集的特征加权相似性在特征重要性θk的基础上被定义为:/>
其中,d表示软件度量元的总数目,当/>的时候,否则其值等于0。
实例相似性在精确计算实例权重方面起着重要的作用。不同于以往研究中对实例权重的定义,本实施例中提出了基于特征重要性和加权相似性的特征加权实例权重的概念。这是第一次在软件缺陷预测领域提出特征加权实例权重这一方法。
在数据科学领域,用数据引力来模仿宇宙万有引力。具体来说,让目标数据集中的每个特征的质量为M,那么目标数据集的质量就为M。目标数据集中每个特征的质量为M,则目标数据集的质量为可以写为nt*d*M,其中nt表示目标数据集的样本数,d表示度量元的总数目,并且源实例的质量/>特征加权相似性si fw可以表示为si fw*d*m。因此本实施例中定义了具有特征加权相似性si fw的源实例xi s的特征加权实例权重定义为:
其中si fw表示第i个源实例的特征加权相似性如公式(2)所示,θk表示源数据集中第k个特征的重要性。
虽然特征加权后验概率的想法在以前的研究中已经提出过,但本实施例中提出了一种新的特征加权后验概率的形式。基于训练数据集和特征加权的实例权重,计算出每个类别c的先验概率:
其中,ci表示第i个源实例的实际类别标签(0或者1),ns表示源实例的数量,nc表示不同类别的数量,本实施例中nc=2,当x等于y时σ(x,y)=1,否则σ(x,y)=0。
给定一个目标实例的条件概率,第k个特征/>在/>与给定类别c的关系计算如下:
其中,表示第i个源实例的第k个特征的值,nk表示源数据集中第k个特征标签种类的数目,而wi fw是第i个源实例的权重。
基于先验概率和条件概率,本实施例中给出特征加权后验概率的定义:
其中,θk表示源数据集中第k个特征的重要性,exp()表示以自然常数e为底的指数函数。
在计算条件概率和特征加权后验概率时,首先使用基于MDL的离散化方法对源数据集和目标数据集中的所有数值特征进行离散化。
本实施例中之所以提出自适应调整策略是为了实现一个在同时考虑到无监督的CPDP和有监督的CPDP的条件下的一个高度稳健的CPDP模型。这里CPDP模型的稳健性是指即使在极端情况下也能保持缺陷预测模型的高性能和稳定性,例如,源数据集的缺陷率非常高,或者源数据集的大小非常小。
自适应调整策略包括两个方面:基于缺陷率的自适应调整和基于数据集大小的自适应调整。
(1)基于缺陷率的自适应调整策略
对于一个标记的源数据集,缺陷率(Defect Ratio,DefRatio)指的是这个数据集中有缺陷的实例的百分比。根据基准数据集,可以看出,大多数数据集的缺陷率都远远小于0.5。如果一个源数据集的缺陷率过大(例如,大于0.8),则认为,从这个源数据集学到的缺陷知识数据集学到的缺陷知识就很难转移到其他缺陷数据集。在这种情况下,使用以下方法对目标数据集进行预测:
如果DefRatio大于α,直接使用无监督的CPDP模型ManualDown来预测目标数据集的标签,而不使用源数据集。ManualDown假设大尺寸的实例更有可能是有缺陷的。具体来说,首先将目标实例按降序排列根据代码行数(LOC)这一指标对目标实例进行排序。然后,将排出最高的k%(在本实施例中,使用默认值50%)的实例为缺陷实例。排名列表中的实例为有缺陷的,其余的实例为非缺陷。
(2)基于数据集大小的自适应调整策略
很明显,如果给定的源数据集的实例数量非常少,就很难从源数据集中学习到有用的缺陷知识,然后将其用于目标数据集。然而,什么样的缺陷数据集可以被视为“小”数据集、这是一个开放的问题。在此,如果数据集的实例数量的实例数小于N,这个数据集就是一个小源数据集,我们也直接使用了非监督性缺陷预测模型ManualDown来预测目标数据集标签。
综上所述,本实施例结合了有监督的跨项目软件缺陷预测模型(即提出的三重特征加权迁移的朴素贝叶斯模型)和使用了自适应调整策略的无监督的跨项目软件缺陷预测模型(即ManualDown),在软件缺陷预测领域第一次实现了两类模型的有机结合。具体来说,如果残缺率过大或源数据集的规模过小,无监督的CPDP模型(即ManualDown)就会受到影响。数据集太小,无监督的CPDP模型就很难学习有用的缺陷知识,然后将其转移到目标数据集。在这种情况下,只需使用无监督的缺陷预测模型,即ManualDown来预测目标数据的标签。否则,建立一个有监督的CPDP模型,即三重特征加权迁移朴素贝叶斯模型。
与现有方法和技术不同,在本实施例中,提出了两个概念:特征加权相似性和特征加权实例权重。具体地说,在计算实例相似性和实例权重时引入了特征重要性的信息,这可以大大降低实例相似性和实例权重的计算偏差。引入了模型自适应调整策略,该策略可以根据源数据集的特点,自动选择合适的模型构建方案来获得CPDP模型。其最大的好处是可以保证CPDP模型的鲁棒性,即更稳定的高性能。
另外,实验结果也表明:平均而言,我们的模型在MCC、AUC和F1评价指标上相比当前最先进的CPDP模型(包括HDP-KS,FMT,CFIW-TNB,ManualDown,DMDAJFR和BurakMHD)至少提高了18.4%、6.5%和4.5%;模型在大多数数据集上显著优于当前最先进的CPDP模型。
实施例3
本实施例3提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质用于存储计算机指令,所述计算机指令被处理器执行时,实现如上所述的基于特征加权迁移学习的跨项目软件缺陷预测方法,该方法包括:
获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;
判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;
根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果;其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
实施例4
本实施例4提供一种计算机程序产品,包括计算机程序,所述计算机程序当在一个或多个处理器上运行时,用于实现如上所述的基于特征加权迁移学习的跨项目软件缺陷预测方法,该方法包括:
获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;
判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;
根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果;其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
实施例5
本实施例5提供一种电子设备,包括:处理器、存储器以及计算机程序;其中,处理器与存储器连接,计算机程序被存储在存储器中,当电子设备运行时,所述处理器执行所述存储器存储的计算机程序,以使电子设备执行实现如上所述的基于特征加权迁移学习的跨项目软件缺陷预测方法的指令,该方法包括:
获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;
判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;
根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果;其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
上述虽然结合附图对本发明的具体实施方式进行了描述,但并非对本发明保护范围的限制,所属领域技术人员应该明白,在本发明公开的技术方案的基础上,本领域技术人员在不需要付出创造性劳动即可做出的各种修改或变形,都应涵盖在本发明的保护范围之内。
Claims (10)
1.一种基于特征加权迁移学习的跨项目软件缺陷预测方法,其特征在于,包括:
获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;
判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;
根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果;其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
2.根据权利要求1所述的基于特征加权迁移学习的跨项目软件缺陷预测方法,其特征在于,特征加权相似性为:
计算目标数据集XT中第k个特征的最大值与/>对于每一个源实例它相对于目标数据集的特征加权相似性在特征重要性θk的基础上定义为:
其中,d表示软件度量元的总数目,当时,/>否则其值等于0。
3.根据权利要求1所述的基于特征加权迁移学习的跨项目软件缺陷预测方法,其特征在于,特征加权实例权重为:
目标数据集中每个特征的质量为M,则目标数据集的质量为可以写为nt*d*M,其中nt表示目标数据集的样本数,d表示度量元的总数目,并且源实例的质量/>特征加权相似性si fw表示为si fw*d*m;则具有特征加权相似性si fw的源实例xi s的特征加权实例权重为:
其中,si fw表示第i个源实例的特征加权相似性,θk表示源数据集中第k个特征的重要性。
4.根据权利要求1所述的基于特征加权迁移学习的跨项目软件缺陷预测方法,其特征在于,基于训练数据集和特征加权的实例权重,计算出每个类别c的先验概率:
其中,ci表示第i个源实例的实际类别标签,ns表示源实例的数量,nc表示不同类别的数量,当x等于y时σ(x,y)=1,否则σ(x,y)=0;
给定一个目标实例的条件概率,第k个特征/>在/>与给定类别c的关系计算如下:
其中,表示第i个源实例的第k个特征的值,nk表示源数据集中第k个特征标签种类的数目,而wi fw是第i个源实例的权重。
5.根据权利要求1所述的基于特征加权迁移学习的跨项目软件缺陷预测方法,其特征在于,基于先验概率和条件概率,特征加权后验概率为:
其中,θk表示源数据集中第k个特征的重要性,exp()表示以自然常数e为底的指数函数。
6.根据权利要求1-5任一项所述的基于特征加权迁移学习的跨项目软件缺陷预测方法,其特征在于,计算出源数据集中每一个特征的重要度MIC值/>后,进一步将其标准化:
其中,表示源数据集中第k个特征,即软件度量元。
7.一种基于特征加权迁移学习的跨项目软件缺陷预测系统,其特征在于,包括:
获取模块,用于获取源项目软件级别度量元数据集和待预测的目标项目软件的级别度量元数据集;
判断模块,用于判断标记的源项目软件级别度量元数据集缺陷率是否大于预设的缺陷率值或者数据集的实例数量的实例数小于预设的值;
预测模块,用于根据判断结果,使用预先训练好的缺陷检测模型对获取的目标项目软件的级别度量元数据集进行处理,得到跨项目软件缺陷检测结果;其中,如果判断结果为缺陷率大于预设的缺陷率值或者实例数小于预设的实例数值,则使用非监督性缺陷预测模型ManualDown对目标项目软件的级别度量元数据集进行处理得到缺陷预测结果;如果判断结果为缺陷率不大于预设的缺陷率值且实例数不小于预设的实例数值,则使用有监督的三重特征加权迁移的朴素贝叶斯模型处理目标项目软件的级别度量元数据集得到缺陷预测结果;其中,三重特征加权是指特征加权相似性、特征加权实例相似性和特征加权后验概率。
8.一种计算机程序产品,其特征在于,包括计算机程序,所述计算机程序当在一个或多个处理器上运行时,用于实现如权利要求1-6任一项所述的基于特征加权迁移学习的跨项目软件缺陷预测方法。
9.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质用于存储计算机指令,所述计算机指令被处理器执行时,实现如权利要求1-6任一项所述的基于特征加权迁移学习的跨项目软件缺陷预测方法。
10.一种电子设备,其特征在于,包括:处理器、存储器以及计算机程序;其中,处理器与存储器连接,计算机程序被存储在存储器中,当电子设备运行时,所述处理器执行所述存储器存储的计算机程序,以使电子设备执行实现如权利要求1-6任一项所述的基于特征加权迁移学习的跨项目软件缺陷预测方法的指令。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310732370.3A CN116701222A (zh) | 2023-06-20 | 2023-06-20 | 基于特征加权迁移学习的跨项目软件缺陷预测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310732370.3A CN116701222A (zh) | 2023-06-20 | 2023-06-20 | 基于特征加权迁移学习的跨项目软件缺陷预测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116701222A true CN116701222A (zh) | 2023-09-05 |
Family
ID=87823650
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310732370.3A Pending CN116701222A (zh) | 2023-06-20 | 2023-06-20 | 基于特征加权迁移学习的跨项目软件缺陷预测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116701222A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117633636A (zh) * | 2024-01-25 | 2024-03-01 | 江苏省特种设备安全监督检验研究院 | 一种云端互联的特检数据处理系统及其处理设备 |
-
2023
- 2023-06-20 CN CN202310732370.3A patent/CN116701222A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117633636A (zh) * | 2024-01-25 | 2024-03-01 | 江苏省特种设备安全监督检验研究院 | 一种云端互联的特检数据处理系统及其处理设备 |
CN117633636B (zh) * | 2024-01-25 | 2024-05-03 | 江苏省特种设备安全监督检验研究院 | 一种云端互联的特检数据处理系统及其处理设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Dam et al. | A deep tree-based model for software defect prediction | |
US11650968B2 (en) | Systems and methods for predictive early stopping in neural network training | |
US20180276105A1 (en) | Active learning source code review framework | |
CN110135505B (zh) | 图像分类方法、装置、计算机设备及计算机可读存储介质 | |
CN115699209A (zh) | 用于人工智能(ai)模型选择的方法 | |
CN111581086B (zh) | 一种基于RankNet的混合软件错误定位方法及系统 | |
Maggo et al. | A machine learning based efficient software reusability prediction model for java based object oriented software | |
CN116701222A (zh) | 基于特征加权迁移学习的跨项目软件缺陷预测方法及系统 | |
CN111522743B (zh) | 一种基于梯度提升树支持向量机的软件缺陷预测方法 | |
Zhu et al. | Evaluation of machine learning approaches for android energy bugs detection with revision commits | |
CN116258978A (zh) | 一种自然保护区遥感影像弱标注的目标检测方法 | |
CN112115996B (zh) | 图像数据的处理方法、装置、设备及存储介质 | |
CN114169460A (zh) | 样本筛选方法、装置、计算机设备和存储介质 | |
CN112346974B (zh) | 基于深度特征嵌入的跨移动应用程序即时缺陷预测方法 | |
Schelter et al. | Proactively screening machine learning pipelines with arguseyes | |
Ridhovan et al. | Disease detection in banana leaf plants using densenet and inception method | |
CN116861373A (zh) | 一种查询选择率估算方法、系统、终端设备及存储介质 | |
CN114139636B (zh) | 异常作业处理方法及装置 | |
CN115996169A (zh) | 一种网络故障分析方法、装置、电子设备及存储介质 | |
CN112732690A (zh) | 一种用于慢病检测及风险评估的稳定系统及方法 | |
Badvath et al. | Prediction of software defects using deep learning with improved cuckoo search algorithm | |
CN112395167A (zh) | 一种作业故障预测方法、装置及电子设备 | |
Harikiran et al. | Software Defect Prediction Based Ensemble Approach. | |
Olorunshola et al. | Evaluation of machine learning classification techniques in predicting software defects | |
CN115758135B (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 |