CN112346974B - 基于深度特征嵌入的跨移动应用程序即时缺陷预测方法 - Google Patents
基于深度特征嵌入的跨移动应用程序即时缺陷预测方法 Download PDFInfo
- Publication number
- CN112346974B CN112346974B CN202011234649.1A CN202011234649A CN112346974B CN 112346974 B CN112346974 B CN 112346974B CN 202011234649 A CN202011234649 A CN 202011234649A CN 112346974 B CN112346974 B CN 112346974B
- Authority
- CN
- China
- Prior art keywords
- mobile application
- feature
- instance
- source
- target
- 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
- 230000007547 defect Effects 0.000 title claims abstract description 81
- 238000000034 method Methods 0.000 title claims abstract description 75
- 238000007477 logistic regression Methods 0.000 claims abstract description 16
- 239000013598 vector Substances 0.000 claims description 34
- 230000002950 deficient Effects 0.000 claims description 16
- 238000013528 artificial neural network Methods 0.000 claims description 8
- 238000010606 normalization Methods 0.000 claims description 8
- 238000004364 calculation method Methods 0.000 claims description 5
- 238000005065 mining Methods 0.000 claims description 3
- 238000003672 processing method Methods 0.000 claims description 3
- 230000001131 transforming effect Effects 0.000 claims description 2
- 230000000694 effects Effects 0.000 abstract description 6
- 238000007781 pre-processing Methods 0.000 abstract 1
- 230000006870 function Effects 0.000 description 23
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 238000013526 transfer learning Methods 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000013145 classification model Methods 0.000 description 4
- 238000011161 development Methods 0.000 description 4
- 230000006872 improvement Effects 0.000 description 4
- 238000007689 inspection Methods 0.000 description 4
- 210000002569 neuron Anatomy 0.000 description 4
- 238000012552 review Methods 0.000 description 4
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012417 linear regression Methods 0.000 description 2
- 238000010801 machine learning Methods 0.000 description 2
- 238000012821 model calculation Methods 0.000 description 2
- 238000002203 pretreatment Methods 0.000 description 2
- 238000005070 sampling Methods 0.000 description 2
- 238000012549 training Methods 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000003044 adaptive effect Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000001174 ascending effect Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000008570 general process Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 210000005036 nerve Anatomy 0.000 description 1
- 238000003062 neural network model Methods 0.000 description 1
- 230000035755 proliferation Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000012795 verification 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/362—Software debugging
- G06F11/3628—Software debugging of optimised code
-
- 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/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Biomedical Technology (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- Biophysics (AREA)
- Software Systems (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明涉及基于深度特征嵌入的跨移动应用程序即时缺陷预测方法,包括如下步骤:S101构建源移动应用程序和目标移动应用程序的即时缺陷数据集;S102对两个移动应用程序的数据进行预处理;S103利用跨三元组的深度特征嵌入方法学习高层次的特征表示;S104使用逻辑回归分类器构建预测模型;S105预测目标移动应用程序中的代码提交实例是否会引入缺陷。本发明方法从特征学习的角度出发,利用一个基于三元组损失的深度特征嵌入方法将两个移动应用程序的缺陷数据映射到一个高层次的空间,在这个空间中具有相同标签的实例尽可能靠近,而标签不同的实例尽可能远离,从而提高目标移动应用程序的即时缺陷预测效果。
Description
技术领域
本发明涉及跨移动应用程序的即时缺陷预测方法,尤其涉及一种基于跨三元组损失函数的深度特征嵌入表示学习方法。
背景技术
移动互联网已经成为人类社会中不可或缺的信息交流环境。随着它的持续发展,智能设备(如智能手机和终端)已迅速普及。移动应用大幅促进了智能设备的繁荣。因此,移动应用的质量对于智能设备的发展有直接影响。为了满足新的功能或需求,移动应用需要持续地更新。由于各种不可控的因素,快速迭代更新的过程将不可避免地把缺陷引入下一版本的移动应用中。尽早地发现缺陷进而将之推荐给移动应用程序开发人员进行修复后再发布到市场是一个热门的话题。检测缺陷这一任务称为缺陷预测。
研究者们提出了许多缺陷预测方法来识别有缺陷的代码片段(如一个函数级别的实例),其中有监督的缺陷预测方法得到了广泛的研究。有监督缺陷预测方法的一般过程通常包括如下两个步骤:首先,从历史开发数据收集代码片段的特征集和缺陷标签来构建有标签的缺陷数据。然后根据有标签的实例数据建立机器学习模型来预测没有标签实例的标签。大多数研究集中在文件或类级别的实例。而对于移动应用程序,它们不断地发布更新的版本。频繁的更新操作通常涉及大量的代码更改或提交,例如添加新代码段、删除旧代码段和更改现有代码段。开发人员更喜欢的方法为:当他们提交代码时,这个方法可以提醒他们做出的代码更改操作是否会将缺陷引入到移动应用程序中。这可以加快缺陷检测的过程,因为在此时,开发人员做过的更改细节在他们的脑海中仍然是有印象的。这个任务就不属于文件或类级别的缺陷预测的范畴了。
为此,先前研究者们提出了针对移动应用程序的即时缺陷预测。即时缺陷预测利用代码变更日志或注释中提交实例的特征和标签,来建立一个分类模型识别一个新的代码提交实例是否会引入缺陷,从而为开发人员提供即时的反馈。即时缺陷预测特别适合于如移动应用程序的软件产品,因为其特点是版本更新频繁和涉及大量代码提交。
目前的移动应用程序内的缺陷预测场景需要足够的已标记代码提交数据来进行模型训练。然而,新开发的移动应用程序通常缺乏历史开发数据来收集标签信息,这阻碍了移动应用程序内缺陷预测的应用。
发明内容
针对现有技术存在的上述问题,本发明要解决的技术问题是:对跨移动应用程序的缺陷数据进行特征学习,从而利用有标签数据的源移动应用程序预测目标应用程序中的代码提交实例是否会引入缺陷。
为解决上述技术问题,本发明采用如下技术方案:
基于深度特征嵌入的跨移动应用程序即时缺陷预测方法,包括如下步骤:
S101:构建源移动应用程序的即时缺陷数据集和目标移动应用程序的即时缺陷数据集:
挖掘源移动应用程序抽取代码提交实例,并对每一个代码提交实例是否引入缺陷进行标注,得到源即时缺陷数据集;对目标移动程序抽取相同特征的代码提交实例,得到目标即时缺陷数据集。
S102:对源即时缺陷数据集中的代码提交实例的特征值和对应的目标即时缺陷数据集中代码提交实例的特征值进行归一化处理,设源即时缺陷数据集中的每个源代码提交实例由一个源特征向量表示,目标即时缺陷数据集中的每个目标代码提交实例由一个目标特征向量表示。
S103:采用基于跨三元组损失的深度神经网络来学习每个源代码提交实例和每个目标代码提交实例的深层次特征表示。
S104:将每个源代码提交实例和每个目标代码提交实例的深层次特征表示嵌入后,使用逻辑回归分类器构建预测模型。
S105:将目标移动应用程序中待预测代码提交实例的特征向量输入S104得到的预测模型中,即得该待预测代码提交实例是否会引入缺陷的预测概率。基于源移动应用程序数据,评估出上述逻辑回归模型计算公式中的权重向量w和偏倚参数b的值。然后使用基于这些参数的分类模型预测目标移动应用程序中的代码提交实例的标签。
作为优选,所述S102中的归一化方法处理方法为:
所述归一化处理方法为z-score方法,计算方法如下:
其中,xk表示的是特征向量x的第k个值的原始值,表示的是特征向量x的第k个值的归一化后的值,mean(x)表示特征向量x的平均值,std(x)表示特征向量x的标准差。归一化方法预处理方法可以消除不同特征数值规模大小对结果的影响。
作为优选,所述S103采用基于跨三元组损失函数的深度神经网络来学习每个源代码提交
实例和每个目标代码提交实例的深层次特征表示的具体方法为:
所述深度神经网络包括输入层和隐藏层,输入层用于接收代码提交实例的输入特征向量,隐藏层对特征向量进行变换来学习深层次特征表示;本发明采用全连接策略来构建网络结构,即不同层间神经元节点之间是完全连接的,而同一层中的神经元节点之间不存在连接。
所述隐藏层进行学习的过程采用的损失函数如下:
其中,ls,s和lt,t分别表示源移动应用程序和目标移动应用程序/>的三元组在应用程序内的损失,ls,t和lt,s分别表示来自/>和/>的三元组的跨应用程序损失,β1β2分别表示应用程序内损失和跨应用程序损失的权重,β2>β1是为了强调跨应用程序的三元组损失。
对于每个三元组,用公式(3)计算损失。
设三元组数据为(xa,xp,xn),其中xa表示三元组的锚点,xp表示与xa具有相同标签的正实例,称为匹配对,xn表示与xa具有不同标签的负实例,称为不匹配对。
选择每个提交实例作为锚点,三元组损失函数如下:
其中,表示匹配对之间的距离,Da,n=||f(x(i)a)-f(x(i)n)||2表示不匹配对之间的距离,f(.)表示嵌入函数,并且md是一个参数,损失函数的目标是使/>大于/>与md之和。
三元组损失函数的目标是学习一个嵌入表示空间,在这个空间中,具有相同类标签的代码提交实例之间的距离尽可能接近,而具有不同类标签的代码提交实例之间的距离尽可能远。
本发明采用了一种改进的三元组损失,称为跨三元组嵌入损失,该方法作用于有标签的源移动应用程序数据和少量有标签目标移动应用程序数据。此方法只选择上述组合的前四个三元组,即和/>中的三元组来自单一移动应用程序数据,三元组即/>和/>来自跨移动应用程序数据。另外,跨三元组嵌入损失通过对跨移动应用数据的三元组损失和移动应用数据内的三元组损失分配不同的权重来计算总损失,目的是考虑不同域数据差异。
作为优选,所述S104使用逻辑回归分类器构建预测模型的方法如下:
定义源移动应用程序一个代码提交实例的标签为ys,源特征向量为xs=xs1,xs2,...,xds,其中ds是特征维度,另外,w=w1,...,wds和b分别为与xs中特征相关联的权重向量和偏置参数,其中wi是xs中第i个特征的权重,代码提交实例xs是有缺陷和无缺陷的概率计算如下:
基于源移动应用程序中的已知数据计算出权重向量w和偏倚参数b的值,即得到预测模型。
在获得跨应用程序代码提交实例的特征嵌入之后,本发明需要在源移动应用程序数据上构建一个模型来预测目标移动应用数据中的代码提交实例是否会将缺陷引入应用程序中。本发明采用逻辑回归作为基本的分类器来搭建预测模型。逻辑回归是一种广义线性模型,它引入逻辑函数以扩展线性回归模型。逻辑回归模型探索代码提交实例的特征与标签之间的关系。
相对于现有技术,本发明至少具有如下优点:
本发明方法基于深度学习强大的特征学习能力,来学习有效的特征表示以完成跨移动应用程序的即时缺陷预测任务。该发明从特征学习的角度出发,利用一个基于三元组(triplet)损失的深度特征嵌入方法将两个移动应用程序的缺陷数据映射到一个高层次的空间,在这个空间中具有相同标签的实例尽可能靠近,而标签不同的实例尽可能远离,从而提高目标移动应用程序的即时缺陷预测效果。
附图说明
图1为本发明公开的一种基于深度特征嵌入的跨移动应用程序即时缺陷预测方法的整体框架图。
图2为基于三元组损失函数的特征学习示例图。
图3为跨三元组损失函数的特征嵌入示例图。
图4为本发明方法和4个基于实例选择的跨域方法实验效果对比,图(a)为工作量感知召回率,图(b)为基于工作量感知F度量值。
图5为本发明方法和6个基于迁移学习的跨域学习方法实验效果对比,图(a)为工作量感知召回率,图(b)为基于工作量感知F度量值。
图6为本发明方法和3个基于分类器组合的跨域学习方法实验效果对比,图(a)为工作量感知召回率,图(b)为基于工作量感知F度量值。
具体实施方式
下面对本发明作进一步详细说明。
由于原始的基于三元组损失函数的深度特征嵌入方法没有考虑不同域(本申请中一个移动应用程序表示一个域)之间的差异,因此只能应用于移动应用程序内的缺陷预测任务。为了执行跨域的学习任务,本发明将原来的三元组损失扩展到跨移动应用场景,具体而言,本发明将改进的跨三元组损失引入深度神经网络模型中来学习高水平的特征表示。该改进的跨三元组损失函数不仅在特征表示学习过程中同时考虑了同一个移动应用内的实例和跨移动应用实例的相似性,而且赋予跨移动应用中实例的三元组损失比移动应用内实例的三元组损失更高权重,以缩小不同的移动应用程序缺陷数据之间的差异。图1是本发明的框架图。本发明旨在通过考虑不同域数据之间的差异改进原有的三元组损失函数,从而学习不同移动应用程序数据间的高层次的特征表示,完成跨移动应用程序的即时缺陷预测。
基于深度特征嵌入的跨移动应用程序即时缺陷预测方法,包括如下步骤:
S101:构建源移动应用程序的即时缺陷数据集和目标移动应用程序的即时缺陷数据集:
挖掘源移动应用程序抽取代码提交实例,并对每一个代码提交实例是否引入缺陷进行标注,得到源即时缺陷数据集;对目标移动程序抽取相同特征的代码提交实例得到目标即时缺陷数据集。
例如,此处挖掘源移动应用程序的软件仓库,从软件仓库抽取代码更改日志和评论信息作为源代码提交实例的特征,同理,目标移动程序也同样抽取代码更改日志和评论信息作为目标代码提交实例的特征。
S102:对源即时缺陷数据集中的代码提交实例的特征值和对应的目标即时缺陷数据集中代码提交实例的特征值进行归一化处理,设源即时缺陷数据集中的每个源代码提交实例由一个源特征向量表示,目标即时缺陷数据集中的每个目标代码提交实例由一个目标特征向量表示。
具体地,S102中的归一化方法处理方法为:
所述归一化处理方法为z-score方法,计算方法如下:
其中,xk表示的是特征向量x的第k个值的原始值,表示的是特征向量x的第k个值的归一化后的值,mean(x)表示特征向量x的平均值,std(x)表示特征向量x的标准差。归一化方法预处理方法可以消除不同特征数值规模大小对结果的影响。
S103:采用深度神经网络来学习每个源代码提交实例和每个目标代码提交实例的深层次特征表示。
具体地,所述S103采用深度神经网络来学习每个源代码提交实例和每个目标代码提交实例的深层次特征表示的具体方法为:
原来的三元组嵌入方法主要应用于单个域,也就是说,三元组中的所有元素都来自同一个数据。这限制了它在跨域特征表示学习任务中的应用。
三元组损失函数形式化如下:
其中表示匹配对之间的距离,Da,n=||f(x(i)a)-f(x(i)n)||2表示不匹配对之间的距离,f(.)表示嵌入函数,并且md是一个参数。损失函数的目标是使/>大于/>与md之和。
本发明使基于跨三元组损失的特征嵌入方法适应于即时缺陷预测任务。具体地说,考虑所有三元组组合的最简单方法,其三个元素是从源应用程序或目标应用程序中随机选择的。在这种情况下,我们一共有八个三元组组合,即
其中,上标s表示对应的代码提交实例来自源应用程序,上标t对应的代码提交实例来自目标应用程序。对于三个元素来自跨应用程序缺陷数据的三元组,其三元组损失的权重应高于三个元素来自同一应用程序缺陷数据的三元组。原因是跨应用程序的数据差异更大,应该更着重地对待。另外,对于8个组合中的后4个三元组,即/>其正实例和负实例来自不同的应用程序,因此很难确定md及权重的值。例如,对于跨移动应用程序数据的匹配对/>和移动应用程序内的不匹配对/>无法判断前者的损失是否应大于后者的损失。
为了克服上述问题,本发明采用了一种改进的三元组损失,称为跨三元组嵌入损失,该方法作用于有标签的源移动应用程序数据和少量有标签目标移动应用程序数据。此方法只选择上述组合的前四个三元组,如图3所示。左右两侧的矩形(即和)中的三元组来自单一移动应用程序数据,而倾斜的圆形矩形中的三元组(即和/>)来自跨移动应用程序数据。另外,跨三元组嵌入损失通过对跨移动应用数据的三元组损失和移动应用数据内的三元组损失分配不同的权重来计算总损失,目的是考虑不同域数据差异。跨三元组嵌入损失函数形式化如下:
其中ls,s和lt,t分别表示源移动应用程序和目标移动应用程序的三元组在应用程序内的损失。ls,t和lt,s分别表示来自/>和/>的三元组的跨应用程序损失。β1β2分别表示应用程序内损失和跨应用程序损失的权重。对于每个三元组,用公式(2)计算损失。为了强调跨应用程序的三元组损失,本发明设置β2>β1。
本发明将跨三元组损失应用于的深度神经网络(DNN)来学习跨移动应用程序数据的深层次特征嵌入。一般来说,DNN包含三种不同的层面(输入层、隐藏层和输出层)。第一层接收代码提交实例的输入特征向量,称为输入层。隐藏层对特征向量进行变换来学习高层特征表示。最后一层生成预测结果(即代码提交实例的标签),称为输出层。由于本发明的目标主要是利用DNN进行特征表示学习而不涉及标签预测,故采用只包含前两个层面的DNN结构。本发明采用全连接策略来构建网络结构,即不同层间神经元节点之间是完全连接的,而同一层中的神经元节点之间不存在连接。
S104:将每个源代码提交实例和每个目标代码提交实例的深层次特征表示嵌入后,使用逻辑回归分类器构建预测模型。
具体地,所述S104使用逻辑回归分类器构建预测模型的方法如下:
定义源移动应用程序一个代码提交实例的标签为ys,源特征向量为xs=xs1,xs2,...,xds,其中ds是特征维度,另外,w=w1,...,wds和b分别为与xs中特征相关联的权重向量和偏置参数,其中wi是xs中第i个特征的权重,代码提交实例xs是有缺陷和无缺陷的概率计算如下:
基于源移动应用程序中的已知数据计算出权重向量w和偏倚参数b的值,即得到预测模型。
在获得跨应用程序代码提交实例的特征嵌入之后,本发明需要在源移动应用程序数据上构建一个模型来预测目标移动应用程序数据中的代码提交实例是否会将缺陷引入应用程序中。本发明采用逻辑回归作为基本的分类器来搭建预测模型。逻辑回归是一种广义线性模型,它引入逻辑函数以扩展线性回归模型。逻辑回归模型探索代码提交实例的特征与标签之间的关系。
S105:将目标移动应用程序中的表示待预测代码提交实例的特征向量输入S104得到的预测模型中,即得该待预测代码提交实例是否会引入缺陷的预测概率。基于源移动应用程序数据,评估出上述逻辑回归模型计算公式中的权重向量w和偏倚参数b的值。然后使用基于这些参数的分类模型预测目标移动应用程序中的代码提交实例的标签。
实验验证:
本发明使用的数据集来自于先前研究提供的开源数据集,包含14个android移动应用程序,数据集的详细信息如表1,包含即时缺陷数据中每个移动应用程序的名字、包含的代码行数、代码提交实例总数、会引入缺陷的代码提交实例数、不会引入缺陷的代码提交实例数、以及会引入缺陷的代码提交实例数占总实例数的百分比。
这些移动程序应用于不同类型的场景,这意味着这些应用程序属于不同的域。同时,代码行数的范围从9506到275637,这意味着这些应用有不同的规模。每个移动应用程序提取14个常用特征来表征代码提交实例,本发明使用其中6个与标签相关性高的特征进行即时缺陷预测的实验。
传统的分类任务指标,如精度、召回率和F-measure,认为有充足的测试资源进行代码评审,并认为测试活动(如检查不同的代码片段)的工作量是相同的。然而,在实际情况下,测试资源总是有限的,并且不同代码片段的检查工作量也不同。因此,本发明使用工作量感知指标来评价提出的方法对面向移动应用程序的即时缺陷预测任务的性能。下面简要介绍本发明使用的两个工作量感知指标的计算过程。
第一步,当使用本发明的跨三元组特征表示学习方法将两个移动应用的代码提交实例的特征嵌入到一个新的特征空间后,用嵌入后的源应用程序数据训练分类模型,并将目标应用程序的代码提交实例分为两组,即预测为有缺陷的组和无缺陷的组。
第二步,每个组中的代码提交实例根据它们的审查所需要的代价大小按升序排序。
第三步,对两组的排序结果进行合并,将预测为有缺陷组的排序结果放在前面。
第四步,根据排序结果从高到低依次检查这些实例,当检查的实例的累计审查工作量百分比达到20%时,检查过程停止。此过程中检查的实例的一些统计信息用于计算工作量感知指标。
首先介绍一下三个基本术语:
td表示目标应用程序数据中有缺陷的代码提交实例总数。
tn表示在上述审查过程中检查的代码提交实例的总数,包括有缺陷的和无缺陷的实例。
tnd表示在上述审查过程中检查的代码提交实例是真正有缺陷的实例数。
本发明使用的第一个工作量感知指标叫做工作量感知召回率(EARecall)。它表示在检查过程中检测到的真正有缺陷的代码提交实例占目标应用程序所有代码提交实例的比例。计算公式如下:
EARecall=tnd/td (6);
类似的,工作量感知的准确率(EAPrecision)表示在检查过程中检测到的真正有缺陷的代码提交实例占所有检查的代码提交实例的比例,其计算公式为:EAPrecision=tnd/tn。
本发明使用的第二个工作感知指标称为工作量感知F度量值(EAF-measure)。与机器学习中典型的F度量值的定义一样,EAF-measure定义为EARecall和EAPrecision之间的加权调和平均值,其公式如下:
其中,θ是EARecall和EAPrecision之间的权衡参数。本发明设置θ为2。
本发明方法将源应用程序的所有代码提交实例和目标应用程序10%代码提交实例结合起来作为候选集来训练跨三元组嵌入模型。本发明采用分层抽样策略选取10%的目标移动应用程序的提交实例。经过特征嵌入后的源移动应用的代码提交实例作为训练集训练逻辑回归模型,然后来预测经过特征嵌入后的90%的目标移动应用的代码提交实例的标签。为了降低偏差抽样带来的偏倚,本发明对此划分过程重复50次并记录性能的平均值。
本发明将DNN结构设置为2个16个神经单元的隐藏层来构建跨三元组嵌入模型。对于超参数,本发明将批处理大小设置为32,迭代周期设置为30。在每一次迭代中,学习率设为0.1。另外,对于跨三元组嵌入损失函数,本发明将md设为0.5,β1设为1,β2设为2(即β2/β1=2)。
本发明的跨三元组深度特征嵌入方法称为CDFE(Cross-triplet Deep FeatureEmbedding)。为了进一步验证本发明的有效性,将其与主流的算法进行了对比,包含4个基于实例选择的跨域方法,包括NONE(不是用特征嵌入方法),NF(Nearest Filter),PF(PeterFilter)和YF(Yu Filter),6个基于迁移学习的跨域学习方法包括IFS_5(ImbalancedFeature Selection with 5characteristics)、IFS_16(Imbalanced Feature Selectionwith 16 characteristics)、TCA(Transfer Component Analysis)、CDT(ConditionalDistribution based Transfer learning)、JDT(Joint Distribution based Transferlearning)和TNB(Transfer Naive Bayes),3个基于分类器组合的跨域学习方法,包括B_J48(Bagging J48)、CODEP(COmbined DEfect Predictor)和ASCI(Adaptive Selection ofClassifiers in bug predIction)。
图4是本发明方法和4个基于实例选择的跨域方法实验结果的箱线图,图5是本发明方法和6个基于迁移学习的跨域学习方法实验结果的箱线图,图6是本发明方法和3个基于分类器组合的跨域学习方法实验结果的箱线图。实验结果显示,相比于4个基于实例选择的跨域方法中最好的方法来说,本发明提出的方法在两个指标上分别获得42.9%和20.1%的提升。相比于6个基于迁移学习的跨域学习方法中最好的方法来说,本发明提出的方法在两个指标上分别获得46.7%和3%的提升。相比于3个基于分类器组合的跨域学习方法中最好的方法来说,本发明提出的方法在两个指标上分别获得48.7%和20.1%的提升。可以看到,本发明的方法都优于其他的对比算法,这表明本发明提出的基于跨三元组损失函数的面向移动应用程序的即时缺陷预测方法是有效的。
本发明将原始的基于三元组损失函数的特征嵌入方法扩展到跨域学习中,使得两个不同的移动应用程序的数据经过特征嵌入后,标签相同的代码提交实例的距离更近,标签不同的代码提交实例的距离更远,从而减少不同移动应用程序缺陷数据的差异。本发明(CDFE)的性能优于目前的对比算法,可以运用至实际的移动应用程序开发场景,即时预测代码提交是否引入缺陷,为提高移动应用程序的质量做出贡献。
最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本发明技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。
Claims (3)
1.基于深度特征嵌入的跨移动应用程序即时缺陷预测方法,其特征在于,包括如下步骤:
S101:构建源移动应用程序的即时缺陷数据集和目标移动应用程序的即时缺陷数据集:
挖掘源移动应用程序抽取代码提交实例,并对每一个代码提交实例是否引入缺陷进行标注,得到源即时缺陷数据集;
对目标移动程序抽取相同特征的代码提交实例,得到目标即时缺陷数据集;
S102:对源即时缺陷数据集中的代码提交实例的特征值和目标即时缺陷数据集中代码提交实例的特征值进行归一化处理,设源即时缺陷数据集中的每个源代码提交实例由一个源特征向量表示,目标即时缺陷数据集中的每个目标代码提交实例由一个目标特征向量表示;
S103:采用基于跨三元组损失函数的深度神经网络来学习每个源代码提交实例和每个目标代码提交实例的深层次特征表示,具体方法为:
所述深度神经网络包括输入层和隐藏层,输入层用于接收代码提交实例的输入特征向量,隐藏层对特征向量进行变换来学习深层次特征表示;
所述隐藏层进行学习的过程采用的损失函数如下:
其中,ls,s和lt,t分别表示源移动应用程序和目标移动应用程序/>的三元组在应用程序内的损失,ls,t和lt,s分别表示来自/>和/>的三元组的跨应用程序损失,β1、β2分别表示应用程序内损失和跨应用程序损失的权重,β2>β1;
对于每个三元组,用公式(3)计算损失:
设三元组数据为(xa,xp,xn),其中xa表示三元组的锚点,xp表示与xa具有相同标签的正实例,称为匹配对,xn表示与xa具有不同标签的负实例,称为不匹配对;
选择每个提交实例作为锚点,三元组损失函数如下:
其中,表示匹配对之间的距离,/> 表示不匹配对之间的距离,f(.)表示嵌入函数,并且md是一个参数,损失函数的目标是使/>大于/>与md之和;
S104:将每个源代码提交实例和每个目标代码提交实例进行深层次特征表示嵌入后,使用逻辑回归分类器在特征嵌入后的源移动应用程序数据上构建预测模型;
S105:将目标移动应用程序中待预测代码提交实例的特征向量输入S104得到的预测模型中,即得该待预测代码提交实例是否会引入缺陷的预测概率。
2.如权利要求1所述的基于深度特征嵌入的跨移动应用程序即时缺陷预测方法,其特征在于:所述S102中的归一化方法处理方法为:
所述归一化处理方法为z-score方法,计算方法如下:
其中,xk表示的是特征向量x的第k个值的原始值,表示的是特征向量x的第k个值的归一化后的值,mean(x)表示特征向量x的平均值,std(x)表示特征向量x的标准差。
3.如权利要求1所述的基于深度特征嵌入的跨移动应用程序即时缺陷预测方法,其特征在于:所述S104使用逻辑回归分类器构建预测模型的方法如下:
定义源移动应用程序一个代码提交实例的标签为ys,源特征向量为xs=xs1,xs2,…,xds,其中ds是特征维度,另外,w=w1,…,wds和b分别为与xs中特征相关联的权重向量和偏置参数,其中wi是xs中第i个特征的权重,代码提交实例xs是有缺陷和无缺陷的概率计算如下:
基于源移动应用程序中的已知数据计算出w和b的值,即得到预测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011234649.1A CN112346974B (zh) | 2020-11-07 | 2020-11-07 | 基于深度特征嵌入的跨移动应用程序即时缺陷预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011234649.1A CN112346974B (zh) | 2020-11-07 | 2020-11-07 | 基于深度特征嵌入的跨移动应用程序即时缺陷预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112346974A CN112346974A (zh) | 2021-02-09 |
CN112346974B true CN112346974B (zh) | 2023-08-22 |
Family
ID=74428980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011234649.1A Active CN112346974B (zh) | 2020-11-07 | 2020-11-07 | 基于深度特征嵌入的跨移动应用程序即时缺陷预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112346974B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115269378B (zh) * | 2022-06-23 | 2023-06-09 | 南通大学 | 一种基于域特征分布的跨项目软件缺陷预测方法 |
CN115269377B (zh) * | 2022-06-23 | 2023-07-11 | 南通大学 | 一种基于优化实例选择的跨项目软件缺陷预测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110751186A (zh) * | 2019-09-26 | 2020-02-04 | 北京航空航天大学 | 一种基于监督式表示学习的跨项目软件缺陷预测方法 |
CN111159223A (zh) * | 2019-12-31 | 2020-05-15 | 武汉大学 | 一种基于结构化嵌入的交互式代码搜索方法及装置 |
WO2020159232A1 (en) * | 2019-01-29 | 2020-08-06 | Samsung Electronics Co., Ltd. | Method, apparatus, electronic device and computer readable storage medium for image searching |
CN111597347A (zh) * | 2020-04-24 | 2020-08-28 | 扬州大学 | 知识嵌入的缺陷报告重构方法及装置 |
-
2020
- 2020-11-07 CN CN202011234649.1A patent/CN112346974B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2020159232A1 (en) * | 2019-01-29 | 2020-08-06 | Samsung Electronics Co., Ltd. | Method, apparatus, electronic device and computer readable storage medium for image searching |
CN110751186A (zh) * | 2019-09-26 | 2020-02-04 | 北京航空航天大学 | 一种基于监督式表示学习的跨项目软件缺陷预测方法 |
CN111159223A (zh) * | 2019-12-31 | 2020-05-15 | 武汉大学 | 一种基于结构化嵌入的交互式代码搜索方法及装置 |
CN111597347A (zh) * | 2020-04-24 | 2020-08-28 | 扬州大学 | 知识嵌入的缺陷报告重构方法及装置 |
Non-Patent Citations (1)
Title |
---|
基于嵌入式机器视觉系统的表面缺陷检测技术研究;吴松霖;《中国优秀硕士学位论文全文数据库 信息科技辑》;I138-1244 * |
Also Published As
Publication number | Publication date |
---|---|
CN112346974A (zh) | 2021-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Yang et al. | Towards semi-automatic bug triage and severity prediction based on topic model and multi-feature of bug reports | |
CN110889556A (zh) | 一种企业经营风险预测方法和系统 | |
Xia et al. | Collective personalized change classification with multiobjective search | |
CN112346974B (zh) | 基于深度特征嵌入的跨移动应用程序即时缺陷预测方法 | |
CN111581116B (zh) | 一种基于分层数据筛选的跨项目软件缺陷预测方法 | |
CN110825615A (zh) | 基于网络嵌入的软件缺陷预测方法及系统 | |
CN109345133B (zh) | 基于大数据和深度学习的评审方法和机器人系统 | |
Gupta et al. | Implementing weighted entropy-distance based approach for the selection of software reliability growth models | |
Chen et al. | Do different cross‐project defect prediction methods identify the same defective modules? | |
Dey et al. | Which pull requests get accepted and why? a study of popular npm packages | |
CN116628212A (zh) | 面向国民经济和社会发展调查领域的不确定性知识图谱建模方法 | |
Che et al. | Few-shot structural repair decision of civil aircraft based on deep meta-learning | |
Sotgiu et al. | Explainability-based debugging of machine learning for vulnerability discovery | |
CN112001484A (zh) | 一种基于多任务深度学习的安全缺陷报告预测方法 | |
Hamdan et al. | A knowledge-based Approach for the Assessment of Damages to Constructions | |
CN115292167A (zh) | 生命周期预测模型构建方法、装置、设备及可读存储介质 | |
CN113034316B (zh) | 一种专利价值转换的分析方法及系统 | |
CN114579761A (zh) | 信息安全知识实体关系连接预测方法、系统及介质 | |
CN111209214B (zh) | 代码测试处理方法、装置、电子设备及介质 | |
Sekaran et al. | Mutation boosted salp swarm optimizer meets rough set theory: A novel approach to software defect detection | |
Jindal et al. | Ensemble Based-Cross Project Defect Prediction | |
Din et al. | Gnn approach for software reliability | |
CN113470739B (zh) | 一种基于混合隶属度随机块模型的蛋白质相互作用预测方法和系统 | |
CN117573803B (zh) | 基于知识图谱的新客识别方法和装置 | |
Yadav et al. | Hybrid model for software fault prediction |
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 |