CN114880206A - 一种移动应用程序代码提交故障预测模型的可解释性方法 - Google Patents
一种移动应用程序代码提交故障预测模型的可解释性方法 Download PDFInfo
- Publication number
- CN114880206A CN114880206A CN202210038845.4A CN202210038845A CN114880206A CN 114880206 A CN114880206 A CN 114880206A CN 202210038845 A CN202210038845 A CN 202210038845A CN 114880206 A CN114880206 A CN 114880206A
- Authority
- CN
- China
- Prior art keywords
- code
- model
- submission
- goodness
- fit
- 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
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
-
- 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
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供了一种移动应用程序代码提交故障预测模型的可解释性方法,包括以下步骤:(1)通过挖掘版本控制系统,搜集来自移动应用程序项目内的代码提交,随后对代码提交进行度量和标注,形成数据集;(2)根据数据集,借助随机森林构建出移动应用程序代码提交故障预测模型;(3)当面对新的代码提交时,对该代码提交进行度量,然后输入到代码提交故障预测模型中,得到预测结果;(4)对局部可解释性技术LIME进行超参优化,使用超参优化的LIME方法ExplainApp生成该预测结果的解释。本发明的有益效果为:预测出新的代码提交是否会引入故障,同时可以给出相应的高质量解释,辅助开发人员完成后续故障的理解、定位和修复。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种移动应用程序代码提交故障预测模型的可解释性方法。
背景技术
近年来,移动互联网的蓬勃发展,智能移动设备的迅速普及,越来越多的智能手机用户通过他们的设备进行相互通信、获取信息和娱乐。用户可以随时在应用市场上下载各种应用软件,开发人员也不断地开发新的应用软件或者更新优化已发布的软件,来满足用户的需求和优化用户的体验。然而,应用程序的频繁更新,将涉及大量的代码提交,可能会给新版本的移动应用程序引入故障,从而影响应用的质量。在移动应用程序的开发和维护过程中,及时发现故障并由开发人员解决,可以避免一些不必要的损失。检测故障这一任务被称为故障预测。
研究人员提出了提交级的软件故障预测,用于识别新提交的代码变更是否会引入故障,从而为开发人员提供及时的反馈,以便尽早发现并修复故障。目前,已有研究将代码提交故障预测应用于移动应用程序上,因其具有细粒度、即时性、可追溯性好等优点,对于更新频繁的移动应用程序,提交级故障预测是合适的。
然而,在移动应用程序代码提交故障预测领域,大部分研究只关注预测模型的性能,而忽略了模型的可解释性。故障预测模型应用机器学习技术可以很好地检测出目标代码片段是否含有故障,但一些机器学习模型基于黑盒模型(如随机森林,神经网络等),因此并不具有可解释性。也就是说,我们给模型一个输入,模型给我们一个预测结果,但我们并不知道模型给我们这个结果背后的依据是什么。这会造成开发人员对于故障预测模型的预测结果缺乏信任,并阻碍了故障预测模型在实践中的应用。
如何解决上述技术问题成为本发明面临的课题。
发明内容
本发明的目的在于提供一种移动应用程序代码提交故障预测模型的可解释性方法,可以更好地帮助开发人员理解代码提交故障预测模型对测试实例产生的预测结果。
本发明的思想为:本发明将超参优化后的可解释方法应用到移动应用程序代码提交故障预测上,对预测结果提供可视化的解释,通过数据集构建一个移动应用程序代码提交故障预测模型,对局部可解释模型LIME进行超参优化,然后使用超参优化后的LIME对模型得到的单个样本结果进行局部解释,就局部线性回归模型的拟合优度(R2)而言,超参优化后的LIME模型优于原始的LIME模型。
本发明是通过如下措施实现的:一种移动应用程序代码提交故障预测模型的可解释性方法,其中,包括以下步骤:
(1)通过挖掘版本控制系统,搜集来自移动应用程序项目内的代码提交。对代码提交首先从代码提交的分散程度、代码提交的修改量、代码提交的修改目的、代码提交的历史、代码提交相关开发人员的经验这五个维度设计特征,并利用这些特征对搜集的代码提交进行度量。随后对代码提交进行标注,即标记为引入故障的代码提交和未引入故障的代码提交。完成代码提交的度量和标记后,形成数据集D。
(2)基于数据集D,借助随机森林构建出代码提交故障预测模型M。
(3)当面对新的代码提交x时,采用步骤1中相同的特征对该代码提交进行度量,随后输入到代码提交故障预测模型M中,得到预测结果(即检测该代码提交是否会引入故障)。
(4)使用超参优化的LIME方法(即ExplainApp方法)生成该预测结果的解释。局部模型无关的可解释性方法LIME方法是针对测试实例的预测结果给出的解释,通过需要预测的代码提交x,随机生成围绕该代码提交x的n个相邻的虚拟实例;随后使用这n个虚拟实例,通过代码提交预测模型M得到预测结果,将n个虚拟实例和预测结果构成数据集Dlime;根据数据集Dlime构建局部回归模型ML,并基于局部回归模型ML的系数,来识别相应特征对预测结果所做出的贡献。由于LIME方法存在超参(即需要生成的虚拟实例数k),因此借助差分进化算法来寻找LIME方法该最优超参的取值,其优化目标是构建局部回归模型ML的拟合优度(goodness of fit)。
通过差分进化算法来对LIME进行超参优化,寻找线性模型拟合优度最佳时生成实例数的值,其中目标函数是最大化局部回归模型的拟合优度(R2)。使用LIME工具包中的score()函数来获得模型的拟合优度,设置随机种子,使得具有相同虚拟实例数的模型,每次得到的拟合优度值都相同。通过给定一个代码提交实例x和代码提交故障预测模型M,对LIME进行差分进化具体包括如下步骤:
4-1)初始化种群,随机生成规模为size的初始种群。由于要寻找线性模型拟合优度最佳时生成实例数,种群中每个个体是提交实例x周围随机生成的实例数k(k随机生成),即每个个体是1维的,则初始种群可表示为S={k1,k2,k3,…,ksize}。假设个体的上下边界分别为kmax和kmin,则个体按如下方式进行初始化:
ki,t=kmin+rand(0,1)*(kmax-kmin)
其中,i=1,2,···,size,t为迭代数,初始值为1。ki,t表示第t代第i个个体,rand(0,1)表示一个在区间(0,1)上服从均匀分布的随机数。
(4-2)对于每个候选个体,使用LIME基于随机生成的虚拟实例和M模型的预测结果,构建出局部回归模型ML。
(4-3)从种群中选择最优个体,其具有最优的回归模型的拟合优度。
(4-4)基于该种群,使用缩放因子pr及交叉概率pc,通过变异、交叉和选择操作,生成新的种群。
变异操作,使用的变异策略如下所示:
vi,t=kr1,t+pr*(kr2,t-kr3,t)
其中,kr1,t,kr2,t和kr3,t是第t次迭代中随机选取种群中三个不同的个体,vi,t是目标变异个体;r1,r2,r3∈{1,2,···,size}为互不相同的数,且与当前的目标索引i不同,因此size≥4;缩放因子pr在(0,1)之间,pr的值选择要适中,pr过小会降低算法的收敛速度,pr过大会造成种群不收敛。
交叉操作,在变异操作之后,对第t代的种群{ki,t}和其变异中间体{vi,t}进行个体间的交叉操作:
其中,交叉概率pc是区间(0,1)范围内的一个常数。
选择操作。将试验个体ui,t和目标个体ki,t的目标函数值进行比较,选择更优的个体。即比较两者的拟合优度值,选择拟合优度值较大的个体。选择操作的公式如下:
(4-5)重新执行程序,直到程序达到指定的迭代次数iter。
(4-6)最终得出在所有迭代中产生最高的拟合优度和在最高拟合优度时模型所需的实例数kbest。将最佳实例数kbest应用到回归模型中,并基于该回归模型的系数生成对应的解释。
该方法中的参数取值设定如下:
k的取值范围介于100到10000之间
size取值为10
交叉概率pc为0.5
缩放因子pr为0.8
最大迭代次数iter为100。
与现有技术相比,本发明的有益效果为:本发明提出了一种移动应用程序代码提交故障预测模型的可解释性方法,将超参优化后的LIME模型应用于移动应用程序代码提交故障预测模型中,不仅可以预测新的代码提交是否引入故障,而且可以对预测的结果做出合理的解释,帮助开发人员及时地定位并修复故障,同时也可以帮助其他研究人员理解模型预测结果背后的依据是什么,增强了用户对预测模型的信任。
附图说明
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。
图1为本发明提供的一种移动应用程序代码提交故障预测模型的可解释性方法的系统框架图。
图2为本发明基于一个应用实例的可视化解释图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。当然,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
实施例1
参见图1所示,本发明提供了一种移动应用程序代码提交故障预测模型的可解释性方法,具体包括以下内容:
(1)通过挖掘版本控制系统,搜集来自移动应用程序项目内的代码提交。本发明使用先前研究提供的开源数据集,从COMMIT GURU平台上选取了14个来自不同应用领域和规模的Android移动应用程序。表1总结了这些应用程序的基本统计信息,包括应用程序名称、代码行数(#LOC)、提交实例总数(#TC)、有故障实例数量(#DC)、无故障实例数量(#CC)和有故障实例比例(%DR)。
对收集到的代码提交都使用了来自五个维度的14个度量指标。这5个维度分别是:代码提交的分散程度、代码提交的修改量、代码提交的修改目的、代码提交的历史、代码提交相关开发人员的经验。表2给出了对代码变更进行度量的14个特性的简要描述。即首先从五个维度设计特征,并利用这些特征对搜集的代码提交进行度量。随后对代码提交进行标注,即标记为引入故障的代码提交和未引入故障的代码提交。完成代码提交的度量和标记后,形成数据集D。
表1 14个Android应用程序的基本信息
表2 14个特征的简要信息
(2)将数据集D划分为训练集和测试集,使用训练集通过随机森林构建出代码提交故障预测模型M。
(3)选择测试集中的一个代码提交实例输入到代码提交故障预测模型M中,得到预测结果(即检测该代码提交是否会引入故障)。
(4)使用超参优化的LIME方法(即ExplainApp方法)生成该预测结果的解释。由于LIME方法存在超参(即需要生成的虚拟实例数k),因此借助差分进化算法来寻找LIME方法该最优超参的取值,其优化目标是构建局部回归模型ML的拟合优度(goodness of fit)。使用LIME工具包中的score()函数来获得模型的拟合优度,设置随机种子,使得具有相同虚拟实例数的模型,每次得到的拟合优度值都相同。给定一个代码提交实例x和代码提交故障预测模型M,对LIME进行差分进化具体包括如下步骤:
4-1)初始化种群,随机生成规模为size的初始种群。由于要寻找线性模型拟合优度最佳时生成实例数,种群中每个个体是提交实例x周围随机生成的实例数k(k随机生成),即每个个体是1维的,则初始种群可表示为S={k1,k2,k3,…,ksize}。假设个体的上下边界分别为kmax和kmin,则个体按如下方式进行初始化:
ki,t=kmin+rand(0,1)*(kmax-kmin)
其中,i=1,2,···,size,t为迭代数,初始值为1。ki,t表示第t代第i个个体,rand(0,1)表示一个在区间(0,1)上服从均匀分布的随机数。
(4-2)对于每个候选个体,使用LIME基于随机生成的虚拟实例和M模型的预测结果,构建出局部回归模型ML。
(4-3)从种群中选择最优个体,其具有最优的回归模型的拟合优度。
(4-4)基于该种群,使用缩放因子pr及交叉概率pc,通过变异、交叉和选择操作,生成新的种群。
变异操作。使用的变异策略如下所示:
vi,t=kr1,t+pr*(kr2,t-kr3,t)
其中,kr1,t,kr2,t和kr3,t是第t次迭代中随机选取种群中三个不同的个体,vi,t是目标变异个体;r1,r2,r3∈{1,2,···,size}为互不相同的数,且与当前的目标索引i不同,因此size≥4;缩放因子pr在(0,1)之间,pr的值选择要适中,pr过小会降低算法的收敛速度,pr过大会造成种群不收敛。
交叉操作。在变异操作之后,对第t代的种群{ki,t}和其变异中间体{vi,t}进行个体间的交叉操作:
其中,交叉概率pc是区间(0,1)范围内的一个常数。
选择操作。将试验个体ui,t和目标个体ki,t的目标函数值进行比较,选择更优的个体。即比较两者的拟合优度值,选择拟合优度值较大的个体。选择操作的公式如下:
(4-5)重新执行程序,直到程序达到指定的迭代次数iter。
(4-6)最终得出在所有迭代中产生最高的拟合优度和在最高拟合优度时模型所需的实例数kbest。将最佳实例数kbest应用到回归模型中,并基于该回归模型的系数生成对应的解释。
(5)选取Firewall应用程序中测试集的一个实例,将超参优化后的LIME技术(即ExplainApp)对测试集中选定实例的预测结果进行解释,得到可视化的解释结果。图2给出该实例由超参优化后的LIME模型(即ExplainApp方法)生成的可视化解释,该实例被预测为有故障的概率为73%。图2右边的条形图(+)表示对该实例预测为有故障支持的度量标准的分数,而左边的条形图(-)表示对该实例预测为有故障反对的度量标准的分数。
(6)对于每个应用程序的测试数据集的每个实例都进行超参优化,我们分析了同一实例的LIME和ExplainApp的拟合优度(R2)。表3给出了14个应用程序使用LIME和ExplainApp方法构建的局部线性回归模型的拟合优度的平均值。
表3 使用LIME和ExplainApp方法对14个应用程序拟合优度的平均值
经实验表明,从表中可以看出,就局部回归模型的拟合优度而言,超参优化的LIME(即ExplainApp方法)总是优于原始的LIME。对于这14个应用程序,就所有的测试实例而言,平均提高了94.50%。Alfresco提升的最多,提升了1.43倍。应用程序lozic提升的最少,提升了0.18%,因为应用程序lozic使用原始的LIME得到的拟合优度本身就很高,平均值是0.976,很难有所提高。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (2)
1.一种基于移动应用程序代码提交故障预测模型的可解释性方法,其特征在于,包括以下步骤:
步骤一:通过挖掘版本控制系统,搜集来自移动应用程序项目内的代码提交,对代码提交首先从代码提交的分散程度、代码提交的修改量、代码提交的修改目的、代码提交的历史、代码提交相关开发人员的经验五个维度设计特征,并利用这些特征对搜集的代码提交进行度量,随后对代码提交进行标注,标记为引入故障的代码提交和未引入故障的代码提交,完成代码提交的度量和标记后,形成数据集D;
步骤二:基于数据集D,借助随机森林构建出代码提交故障预测模型M;
步骤三:当面对新的代码提交x时,采用步骤一中相同的特征对该代码提交进行度量,随后输入到代码提交故障预测模型M中,得到预测结果,检测该代码提交是否会引入故障;
步骤四:使用超参优化的LIME方法生成该预测结果的解释,局部模型无关的可解释性方法LIME方法是针对测试实例的预测结果给出的解释,通过需要预测的代码提交x,随机生成围绕该代码提交x的n个相邻的虚拟实例;随后使用这n个虚拟实例,通过代码提交预测模型M得到预测结果,将n个虚拟实例和预测结果构成数据集Dlime;根据数据集Dlime构建局部回归模型ML,并基于局部回归模型ML的系数,识别相应特征对预测结果所做出的贡献,由于LIME方法存在超参,因此借助差分进化算法来寻找LIME方法该最优超参的取值,其优化目标是构建局部回归模型ML的拟合优度。
2.根据权利要求1所述的移动应用程序代码提交故障预测模型的可解释性方法,其特征在于,所述步骤四中使用超参优化算法来优化LIME算法的参数设置,通过差分进化算法寻找线性模型拟合优度最佳时生成实例数的值,其中目标函数是最大化局部回归模型的拟合优度(R2),通过LIME工具包中的score()函数获得模型的拟合优度,设置随机种子,使得具有相同虚拟实例数的模型,每次得到的拟合优度值都相同,通过给定一个代码提交实例x和代码提交故障预测模型M,对LIME进行差分进化具体包括如下步骤:
(4-1)初始化种群,随机生成规模为size的初始种群,由于要寻找线性模型拟合优度最佳时生成实例数,种群中每个个体是提交实例x周围随机生成的实例数k,每个个体是1维的,则初始种群可表示为S={k1,k2,k3,…,ksize},假设个体的上下边界分别为kmax和kmin,则个体按如下方式进行初始化:
ki,t=kmin+rand(0,1)*(kmax-kmin)
其中,i=1,2,···,size,t为迭代数,初始值为1,ki,t表示第t代第i个个体,rand(0,1)表示一个在区间(0,1)上服从均匀分布的随机数;
(4-2)对于每个候选个体,使用LIME基于随机生成的虚拟实例和M模型的预测结果,构建出局部回归模型ML;
(4-3)从种群中选择最优个体,其具有最优的回归模型的拟合优度;
(4-4)基于该种群,使用缩放因子pr及交叉概率pc,通过变异、交叉和选择操作,生成新的种群;
变异操作,使用的变异策略如下所示:
vi,t=kr1,t+pr*(kr2,t-kr3,t)
其中,kr1,t,kr2,t和kr3,t是第t次迭代中随机选取种群中三个不同的个体,vi,t是目标变异个体;r1,r2,r3∈{1,2,···,size}为互不相同的数,且与当前的目标索引i不同,因此size≥4;缩放因子pr在(0,1)之间,pr的值选择要适中,pr过小会降低算法的收敛速度,pr过大会造成种群不收敛;
交叉操作,在变异操作之后,对第t代的种群{ki,t}和其变异中间体{vi,t}进行个体间的交叉操作:
其中,交叉概率pc是区间(0,1)范围内的一个常数;
选择操作,将试验个体ui,t和目标个体ki,t的目标函数值进行比较,选择更优的个体;比较两者的拟合优度值,选择拟合优度值较大的个体,选择操作的公式如下:
(4-5)重新执行程序,直到程序达到指定的迭代次数iter;
(4-6)最终得出在所有迭代中产生最高的拟合优度和在最高拟合优度时模型所需的实例数kbest,将最佳实例数kbest应用到回归模型中,并基于该回归模型的系数生成对应的解释。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210038845.4A CN114880206A (zh) | 2022-01-13 | 2022-01-13 | 一种移动应用程序代码提交故障预测模型的可解释性方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210038845.4A CN114880206A (zh) | 2022-01-13 | 2022-01-13 | 一种移动应用程序代码提交故障预测模型的可解释性方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114880206A true CN114880206A (zh) | 2022-08-09 |
Family
ID=82666924
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210038845.4A Pending CN114880206A (zh) | 2022-01-13 | 2022-01-13 | 一种移动应用程序代码提交故障预测模型的可解释性方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114880206A (zh) |
-
2022
- 2022-01-13 CN CN202210038845.4A patent/CN114880206A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Knowles | ParEGO: A hybrid algorithm with on-line landscape approximation for expensive multiobjective optimization problems | |
Campos et al. | Qbugs: A collection of reproducible bugs in quantum algorithms and a supporting infrastructure to enable controlled quantum software testing and debugging experiments | |
US8364610B2 (en) | Process modeling and optimization method and system | |
US20060229852A1 (en) | Zeta statistic process method and system | |
Rafi et al. | Exploration of DevOps testing process capabilities: An ISM and fuzzy TOPSIS analysis | |
Adriaensen et al. | Automated dynamic algorithm configuration | |
Tarun | Prediction models for licensure examination performance using data mining classifiers for online test and decision support system | |
CN110491443B (zh) | 一种基于投影邻域非负矩阵分解的lncRNA蛋白质关联预测方法 | |
Kessentini et al. | Automated co-evolution of metamodels and transformation rules: A search-based approach | |
Yao et al. | Model-agnostic multi-stage loss optimization meta learning | |
Rebai et al. | Web service design defects detection: A bi-level multi-objective approach | |
CN114880206A (zh) | 一种移动应用程序代码提交故障预测模型的可解释性方法 | |
CN117272312A (zh) | 一种基于强化学习的可解释性智能合约漏洞检测及定位方法 | |
US20230004870A1 (en) | Machine learning model determination system and machine learning model determination method | |
Makkar et al. | Optimization of software quality attributes using evolutionary algorithm | |
Jinyan et al. | A Methaheuristic approach for preference Learning in multi criteria ranking based on reference points. | |
Taylor et al. | Interactive multiobjective optimisation: Preference changes and algorithm responsiveness | |
CN113792187A (zh) | 群智软件开发贡献质量评估方法、装置、设备及介质 | |
Feng et al. | Gene regulatory network inference based on causal discovery integrating with graph neural network | |
Yu et al. | A Multi-objective optimization algorithm based on dynamic user-preference information | |
Donnelly et al. | Power Analysis for Conditional Indirect Effects: A Tutorial for Conducting Monte Carlo Simulations with Categorical Exogenous Variables | |
Khardon | Learning Horn Expressions with LogAn-H. | |
Chatzikonstantinou | A computational intelligence decision-support environment for architectural and building design: CIDEA | |
Zhao et al. | Statistical Assessment of Replicability via Bayesian Model Criticism | |
Schimpf et al. | COMPLEX-IT: A case-based modeling and scenario simulation platform for social inquiry |
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 |