超参数优化对跨版本缺陷预测影响的实证研究

2023-12-08 11:49惠,于巧,祝
计算机与生活 2023年12期
关键词:对模型预测性能

韩 惠,于 巧,祝 义

江苏师范大学 计算机科学与技术学院,江苏 徐州 221116

软件测试是软件质量的重要保证,软件产品正式发布之前必须经过软件测试,需要耗费大量的人力、物力资源。为了降低测试资源的耗费,缩短软件测试周期,可在软件测试前采用软件缺陷预测技术[1]对软件模块是否存在缺陷进行预测,指导测试资源分配。

软件缺陷预测是通过学习软件历史仓库中的文件信息来预测待测试的软件模块是否有缺陷的一种技术[2]。研究人员对软件源代码的复杂性或开发过程特征进行分析,设计了代码行数、类中方法数等度量元。根据度量元对历史程序文件进行度量,并标记其有无缺陷,从而构造出可用于训练模型的数据集。然后选取特定的机器学习模型(如随机森林、朴素贝叶斯、K-近邻等)构建缺陷预测模型,学习历史程序数据信息(训练集)。最后应用训练完成后的模型预测待预测程序数据(测试集)是否含有缺陷。软件缺陷预测流程如图1所示。

图1 软件缺陷预测流程Fig.1 Process of software defect prediction

针对同一预测任务(同一测试集),根据训练数据来源的不同,软件缺陷预测可分为项目内缺陷预测(within-project defect prediction,WPDP)和跨项目缺陷预测(cross-project defect prediction,CPDP)。在项目内缺陷预测中,训练数据和测试数据属于同一软件项目。跨项目缺陷预测的训练集和测试集则属于不同软件项目。跨项目缺陷预测实验中常会对训练数据采取迁移学习等方式,减小不同软件项目之间的数据分布差异[3]。

现有文献[4-8]中提出的大多数项目内缺陷预测都是基于交叉验证进行研究的。在这些研究中,来自软件项目某一特定版本的数据被按照一定的比例随机分为训练集和测试集,称为版本内缺陷预测(innerversion defect prediction,IVDP)。然而,Zhang 等人[9]表明特定软件通常是在连续版本中开发的,版本内缺陷预测通常无法满足其实际测试需求。因此,现在的研究常利用软件项目的历史版本数据来训练模型,预测其新版本软件模块是否存在缺陷,即跨版本缺陷预测(cross-version defect prediction,CVDP)[10]。

以上缺陷预测场景都需要构建缺陷预测模型,缺陷预测模型的性能越好,模型预测结果的可信度越高。因此,提升缺陷预测模型性能对于软件缺陷预测至关重要。

Tantithamthavorn[11]在版本内缺陷预测场景下研究了影响缺陷预测模型性能的因素主要有:(1)数据集的质量。数据集的类不平衡问题和噪音问题都会影响到模型的性能。(2)模型超参数。机器学习模型均需要设置一定的超参数[12]。不同的机器学习包例如Weka[13]和Matlab[14]等对于同一机器学习模型提供的默认超参数不同,如果不先行对模型的超参数进行设定,会影响预测结果的可复现性。此外,许多研究表明,默认超参数下模型的性能通常是次优的[15-16]。因此,在缺陷预测实验中优化模型超参数,可以提升模型预测性能。同时也可得到确定的超参数组合,保证实验结果的可复现性。

对于文献[11]中提出的模型超参数影响因素,由于软件缺陷预测的几种缺陷预测场景中均涉及构建缺陷预测模型,需要在不同的缺陷预测场景下考虑超参数对模型的影响。

对于文献[11]中提出的数据集质量影响因素,该因素在不同的缺陷预测场景下还需要进行扩充。跨项目缺陷预测实验中模型常受到不同软件项目之间(训练集和测试集)数据分布差异大的影响。在跨版本缺陷预测实验中,虽然同一软件项目的不同软件版本之间数据分布差异小于不同项目之间的数据分布差异,但是跨版本缺陷预测仍会受到版本间演化程度的影响[17]。模型超参数优化后对训练集的拟合度变高,此时会加深以上因素对模型的影响。因此,需要在不同的缺陷预测场景下分析超参数优化对缺陷预测模型的影响。

Tantithamthavorn 等人[18]在版本内缺陷预测的场景下对模型应用超参数优化,并考虑了数据噪声、超参数优化算法等多方面的因素影响,发现在版本内缺陷预测实验中选取网格搜索算法对其模型进行超参数优化可以有效提升模型性能。Li 等人[19]在跨项目缺陷预测场景下对模型和迁移学习算法进行超参数优化的研究,发现对模型和迁移学习算法同时进行超参数优化后模型预测性能得到明显提升。然而,目前仍然缺乏对于跨版本缺陷预测的超参数优化研究,因此,本文着重研究超参数优化对跨版本缺陷预测的影响。

针对跨版本缺陷预测实验中的超参数优化问题,本文以模型在前序版本(训练集)上十折交叉验证AUC值为优化目标优化模型超参数。实验选取十折交叉验证AUC值最高时的超参数组合作为最优超参数组合。依据该最优超参数组合构建最优模型并进行跨版本缺陷预测,研究超参数优化对跨版本缺陷预测的影响。

本文选取五种经典缺陷预测模型(决策树、K-近邻、随机森林、支持向量机和多层感知机)以及四种常用超参数优化算法(基于TPE 的贝叶斯优化、基于SMAC 的贝叶斯优化、随机搜索和模拟退火),在PROMISE 数据集上展开实证研究。实验结果表明,超参数优化后决策树、K-近邻和多层感知机模型跨版本缺陷预测AUC 值相比于默认参数下有显著提升。除此之外,超参数优化并不会对模型的泛化能力产生较大影响,且优化模型的时间开销也并不高昂。因此,在跨版本缺陷预测实验中,应考虑优化模型超参数以提升模型性能。

本文的主要贡献如下:

(1)在跨版本缺陷预测场景下研究了超参数优化对模型性能的影响,结果表明超参数优化后决策树、K-近邻以及多层感知机模型AUC值有显著提升。其中,对于决策树模型的提升度最大,最高可使决策树模型跨版本缺陷预测AUC值提升38.9%。

(2)将偏差-方差分解值作为模型泛化误差,在跨版本缺陷预测场景下对模型超参数优化前后的模型稳定性进行研究,结果表明超参数优化后模型保持与默认超参数设置下相当的稳定性。

(3)综合评价了四种不同的超参数优化算法对模型性能的提升以及优化所需时间成本,其中基于TPE 的贝叶斯优化算法对模型的优化效果最好且所需时间成本最低。

1 相关工作

近年来,机器学习模型被广泛应用在机器翻译、数据处理、语音识别等各个领域,取得了巨大成功。软件缺陷预测技术在结合了机器学习理论技术后,也得到了长足的进步。

在机器学习模型的研究中,模型的超参数优化问题是较为重要的一部分研究内容。不同于机器学习模型训练过程中得到的模型内部参数值(如神经网络中的内部权重),超参数是指机器学习模型在训练开始之前需要预先设定的参数值(如神经网络中的学习率等)。Yang 等人[20]、Hertel等人[21]和Zhang 等人[22]研究表明,超参数对模型的性能有直接影响。超参数优化问题旨在给定机器学习模型的情况下,针对给定的任务搜索出使该模型达到最佳性能的超参数设置。

对于版本内缺陷预测实验中的超参数优化问题,Tantithamthavorn 等人[18]首次在版本内缺陷预测场景下,对11种缺陷预测模型应用了Caret超参数优化技术。实验结果发现,Caret优化后缺陷预测模型版本内缺陷预测AUC 值提高了40%。为了进一步验证超参数优化对缺陷预测模型的有效性,Tantithamthavorn等人[23]又针对数据集进行了一定的处理,选取了数据噪声较少、缺陷率较低的高质量数据集进行实验。实验选取11 个不同类别的30 种不同模型,采取网格搜索的方式优化模型的超参数。实验结果表明对于16种模型,超参数优化后模型的性能可得到显著提升,对超参数敏感的模型可在超参数优化中收益更多。

对于跨项目缺陷预测实验中的超参数优化问题,Qu 等人[24]研究了超参数优化对基于实例选择的跨项目缺陷预测模型的影响。他们在研究过程中发现在默认参数下模型的性能常是次优的。实验选取了5种不同的机器学习模型,实验结果中超参数优化对4种模型均有显著影响,最高使K-近邻模型性能提升34.63%。Li 等人[19]实证研究了超参数优化对于62种跨项目缺陷预测技术的影响,其中包含8种迁移学习算法和8种机器学习模型。研究结果表明,超参数优化对77%的跨项目缺陷预测技术具有显著提升效果。且实验发现,单独优化迁移学习算法的超参数对跨项目缺陷预测实验结果的提升高于单独优化模型超参数。这也表明跨项目缺陷预测实验中,训练数据对模型预测性能的影响要高于模型本身超参数对模型预测性能的影响。

上述研究中超参数优化对版本内缺陷预测和跨项目缺陷预测均具有显著的提升作用。但是跨版本缺陷预测性能会受到版本间演化程度的影响,需要进一步研究超参数优化是否能够提升跨版本缺陷预测性能。

2 研究框架

本文以模型在前序版本(训练集)十折交叉验证最优AUC 值为优化目标,选取5 种经典缺陷预测模型以及4 种常用的超参数优化算法,在PROMISE 数据集上展开实证研究,探究超参数优化对跨版本缺陷预测的影响。

本文的研究框架如图2所示,主要包括两部分:

图2 本文研究框架Fig.2 Research framework of this paper

(1)超参数优化

实验中如果单一地把数据都用来训练模型,容易导致模型过拟合。且超参数优化后,模型对于训练集拟合程度提升,模型过拟合概率提高。因此,实验采取十折交叉验证的方式训练模型,将数据集分成10 份,轮流将其中9 份作为训练数据,1 份作为测试数据。将10 次结果的平均AUC 值作为对模型性能的评估,确保评估结果能够尽可能接近模型在测试集上的表现。超参数优化算法的寻优目标为模型在训练集上的最优性能,即模型在训练集上十折交叉验证最优AUC值。

模型超参数优化过程为:首先,在训练集上构建缺陷预测模型,并采取十折交叉验证方法训练模型;然后,选取超参数优化算法,以模型在训练集上的十折交叉验证最优AUC 值为优化目标,对模型进行超参数优化,并记录模型性能最优时的超参数组合,即为最优超参数组合。

(2)跨版本缺陷预测

获取最优超参数组合后,将分别构建默认超参数组合的预测模型(未优化模型)和最优超参数组合的预测模型(优化后模型),进行跨版本缺陷预测。

由于软件项目是在连续版本中开发的,相邻版本的软件模块信息较为相似,度量得出的数据集之间数据分布差异较小,本文选取相邻软件版本进行跨版本缺陷预测。主要过程为:将前序软件版本数据作为训练集训练缺陷预测模型,模型训练完成后预测其后序版本中软件模块(测试集)是否存在缺陷。以A 软件项目中的A-1 版本和A-2 版本为例,A-1版本数据为训练数据,A-2版本为测试数据。

跨版本缺陷预测完成后,根据模型预测的结果对模型进行评估,研究超参数优化对跨版本缺陷预测的影响。

2.1 机器学习模型

本文借鉴Tantithamthavorn 等人[23]、Qu 等人[24]以及Li等人[19]和其他超参数优化研究的实验设置,选取5 种经典机器学习模型进行跨版本缺陷预测超参数优化实验。为了保证实验结果的有效性,本文基于Sklearn[25]库实现机器学习模型,每个模型在实验中需要优化的超参数及其范围如表1所示。

表1 模型超参数概述Table 1 Overview of model hyperparameters

(1)决策树[26]:决策树模型(decision tree,DT)通过构造树来解决分类问题。

(2)K-近邻[27]:K-近邻模型(K-nearest neighbors,KNN)是一种基于实例学习的模型,通过计算距离对样本进行分类。

(3)随机森林[28]:随机森林模型(random forests,RF)是一种以决策树为基础学习器的集成学习模型。

(4)支持向量机[29]:支持向量机模型(support vector machine,SVM)是一类按监督学习方式对数据进行二元分类的广义线性分类模型,是常见的核学习方法之一。

(5)多层感知机[30]:多层感知机模型(multi-layer perceptron,MLP)是深度神经网络的基础算法。

2.2 超参数优化算法

本文选取基于TPE 的贝叶斯优化算法、基于SMAC的贝叶斯优化算法、随机搜索算法和模拟退火算法优化模型超参数。

(1)基于TPE 的贝叶斯优化算法和基于SMAC的贝叶斯优化算法:贝叶斯优化算法(Bayesian optimization)[31]是使用贝叶斯定理来指导搜索以找到目标函数最优解的方法。

算法首先构造一个代理模型来近似所有分布。其次,计算代理模型的全局最优值作为后验样本来更新模型。最后,重复上述步骤,迭代结束后从候选集中选取令目标函数取得最优值的点,并将其作为最优解的近似解。

贝叶斯优化算法主要有3种代理函数模型,高斯过程模型(Gaussian process regression,GPR)、基于树状结构Parzen 密度估计模型(tree-structured Parzen estimator,TPE)和基于随机森林的序贯优化模型(sequential model-based optimization for general algorithm configuration,SMAC)。Bergstra等人[32]研究发现TPE的总体效果比GPR 更好,且SMAC 是为了解决GPR参数类型不能为离散的情况而提出的。因此本文选取基于TPE 的贝叶斯优化算法和基于SMAC 的贝叶斯优化算法进行超参数调优实验。

(2)随机搜索算法[33]:随机搜索算法(random search,RS)是利用随机数求极小点而求得函数近似最优解的方法。

算法在变量允许的变化区间内,不断随机地而不是有倾向性地产生随机点,并计算其约束函数和目标函数的值。对满足约束条件的点,算法逐个比较其目标函数的值,选取令目标函数取得最优值的点,将其作为最优解的近似解。

(3)模拟退火算法[34]:模拟退火算法(simulated annealing,SA)是基于Monte-Carlo 迭代求解策略的一种随机寻优算法,其出发点是物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法模拟物理中固体物质从某一较高初温出发,伴随温度参数即变量的不断下降,结合概率突跳特性在解空间中随机寻找目标函数的全局最优解。

上述超参数优化算法均基于已有成熟框架实现,其中基于TPE的贝叶斯优化算法(TPE)、模拟退火算法(SA)和随机搜索算法(RS)都是基于Hyperopt[35]库实现,基于SMAC 的贝叶斯优化算法(SMAC)通过Skopt[36]库实现。相关实验代码在Github公开(https://github.com/HPO-CVDP/Code.git)。

实验中将所有超参数调优算法的迭代阈值设置为200。除此之外,SMAC 算法需要设置一些其他超参数。SMAC[37]算法中包含3种代理模型,随机森林模型(RF)、集成树模型(ensemble tree,ET)和梯度提升回归树模型(gradient boosting regression tree,GBRT),实验中选取随机森林作为其代理模型。

3 实证研究

本文在实证研究中设计以下实验问题:

RQ1:模型超参数优化后跨版本缺陷预测性能是否得到提升?

RQ2:超参数优化是否会对模型的稳定性产生影响?

RQ3:模型超参数优化的时间成本如何?

3.1 实验对象

本文选取软件缺陷预测相关研究中较为常用的PROMISE 数据集(https://github.com/HPO-CVDP/PROMISE_Dataset.git)进行实验。Jureczko 等人[38]根据20个不同的软件度量元对开源软件项目进行类级别的度量,构建出PROMISE 数据集。PROMISE 数据集中度量软件模块时考虑的20 个度量元类型、名称和具体含义如表2所示。

表2 PROMISE数据集20个软件度量元Table 2 20 software metrics of PROMISE dataset

PROMISE数据集中包含11个软件项目,共40个版本的数据。这些软件项目覆盖了不同类型的应用领域,具有一定的典型性。软件项目的详细信息如表3所示,包括项目的名称、版本号、含有的文件数目以及缺陷文件数目所占的比例。

表3 PROMISE数据集Table 3 PROMISE dataset

3.2 评价指标

由于实验选取的PROMISE 数据集存在一定的类不平衡问题,准确性等评价指标不能全面地评价模型,本文选取AUC 评价指标评估模型性能。AUC为受试者工作特征曲线(ROC 曲线)下的面积。ROC曲线是在不同的分类阈值设定下,分别以真正例率(true positive rate,TPR)和假正例率(false positive rate,FPR)为纵、横轴作出的图像。TPR和FPR的计算方式如下:

其中,TP(true positive)表示样本的真实类别是正类,模型识别的结果也是正类的样本数量;FP(false positive)表示样本的真实类别是负类,但模型将其识别为正类的样本数量;TN(true negative)表示样本的真实类别是负类,模型将其识别为负类的样本数量;FN(false negative)表示样本的真实类别是正类,但模型将其识别为负类的样本数量。

式(1)和式(2)表明ROC 曲线可以描绘出模型对于正类和负类的分类能力。因此,在数据集不平衡的情况下,AUC 指标仍然能够对模型作出合理评价。同时,Huang 等人[39]的研究也表明,相较于准确性,AUC 指标可以更好地度量模型性能。综上,本文选取AUC指标评价模型性能。

为了衡量超参数优化后模型性能是否有显著提升,本文选取威尔科克森(Wilcoxon)符号秩检验方法[40]检验超参数优化前后模型性能是否具有显著性差异。

Wilcoxon 符号秩检验方法是成对检验方法,该方法先将两组数据进行两两配对,后求差得到符号位和绝对值数据,并根据绝对值的排名和符号位计算最终的符号秩和。最后,可通过符号秩和的统计分布计算P值[41]。P值是用来判定假设检验结果的一个参数,可以根据不同的分布使用分布的拒绝域进行比较,判定组间差异是否显著。

超参数优化可能会增加模型过拟合的风险,过拟合会导致模型性能不稳定(泛化能力较差)。因此,实验也要从模型泛化能力方面对超参数优化后的模型进行评估。

模型的泛化能力主要通过模型预测值与真实值之间的期望误差(泛化误差)进行衡量。期望误差越小,模型泛化能力越好,模型越稳定。偏差-方差分解值(bias-variance decomposition)[42]将期望误差分为模型偏差(bias)、方差(variance)和数据噪音(noise)3 个非负项的和。

假设数据集D中的测试样本为X,yD为X在数据集中的标签,y(x)为X的真实标签,f为学习数据集D后的模型,f(x;D)为模型对X的预测输出(x)为预测输出的数学期望。(x)计算方式如式(4)所示:

模型偏差为模型期望输出与真实标签之间的差,刻画了模型本身的拟合能力。偏差计算方式如式(5)所示:

模型方差为使用不同样本数据训练的模型对同一测试样本预测值的离散程度,刻画了数据扰动对模型造成的影响。方差计算方式如式(6)所示:

数据噪音ε则为数据集D中X的标签与X的真实标签之间的差别。数据噪音计算方式如式(7)所示:

模型的期望误差(expected loss)为所有测试样本的偏差和方差以及数据噪音的和。期望误差计算方式如式(8)所示:

其中,数据噪音为不可调节的误差,计算过程中一般将其视为0,因此平方项不影响计算。模型的偏差和方差则可通过模型正则化、增加或减少特征和实例数量进行调节[43]。本文实验中并未对数据集进行特征选择和实例选择,仅在原始数据集上研究跨版本缺陷预测时超参数优化是否会对模型的稳定性产生影响。

3.3 实验结果与分析

3.3.1 针对RQ1实验结果分析

本文在PROMISE 数据集11 个项目中的40 个软件版本上,针对同一软件项目相邻版本进行跨版本缺陷预测实验,共29组实验结果。

为了研究超参数优化是否可以提升跨版本缺陷预测性能,本文分别在未优化的模型和经过不同超参数优化方法调优后的模型上进行对比实验。

本文综合计算了11 个项目上,每个项目包含的所有跨版本缺陷预测实验平均AUC 值(例:Ant 项目中包含5 个版本数据,共4 组跨版本缺陷预测实验结果,计算4 组预测结果平均值作为Ant 项目的实验结果),结果如图3 所示。其中Default 为模型使用Sklearn 库默认参数时跨版本缺陷预测AUC 值,其余为不同超参数优化算法优化模型后跨版本缺陷预测AUC值。

图3 超参数优化前后AUC 性能对比Fig.3 Comparison of AUC performance before and after hyperparameter optimization

由图3 可得,DT 模型、KNN 模型、SVM 模型和MLP模型超参数优化后,在11个项目上缺陷预测平均AUC值均有一定提升。而超参数优化未使RF模型取得较为明显的性能提升。此结果与Tantithamthavorn等人[23]在版本内缺陷预测超参数优化实验中,RF 模型的表现相同。虽然RF 模型对于超参数并不敏感,但有研究表明,RF 模型是最适合进行软件缺陷预测的模型[44],对比5 种模型默认超参数下的性能也可发现RF模型的AUC值远高于其他模型。

为了检验模型优化后性能提升是否显著,本文对29 组未优化模型的跨版本缺陷预测AUC 值和29组超参数优化后模型的跨版本缺陷预测AUC值进行显著性检验,结果如表4所示。

表4 AUC显著性检验结果Table 4 Results of AUC significance test

显著性检验结果表明,超参数优化后DT 模型、KNN 模型、SVM 模型和MLP 模型跨版本缺陷预测AUC 值与未优化模型的跨版本缺陷预测AUC 值有显著性差异。结合图3中信息,可表明超参数优化后模型性能有显著性提升。其中,超参数优化对DT 模型的提升最为明显。

本文进一步计算了超参数优化对DT 模型的提升度,超参数优化最高可使DT 模型跨版本缺陷预测AUC 值提升38.9%。Tantithamthavorn 等人[23]在版本内缺陷预测实验中超参数优化最高可使DT 模型AUC 值提升40%。从提升度方面比较,超参数优化对于跨版本缺陷预测模型的提升度低于版本内缺陷预测模型。由于跨项目缺陷预测过程中常采用迁移学习等算法对数据集进行处理,无法将本文的实验结果与跨项目缺陷预测场景下超参数优化的结果进行比较。

此外,对比图3 中4 种超参数优化算法在同一项目预测任务上对模型的提升度,发现在同一预测任务上不同的超参数优化算法对模型的提升度也有所不同。因此,实验中应尽量选用多个不同的超参数优化算法优化模型,选出适合当前预测任务的超参数优化算法。

综合对比图3和表4中的4种优化算法对模型性能的提升,基于TPE 的贝叶斯优化算法在大部分的预测任务上都取得了较好的优化效果。因此,当计算资源较少时,可以优先选择该优化算法。

由此,针对RQ1 可以得出结论:超参数优化可以提升模型跨版本缺陷预测的性能。在跨版本缺陷预测过程中应考虑选用合适的超参数优化算法优化模型超参数,提升模型预测性能。

3.3.2 针对RQ2实验结果分析

RQ2 研究超参数优化后模型稳定性(即模型泛化能力)是否会受到影响。超参数优化可能会增加模型过拟合的风险,过拟合的模型会产生不稳定的性能表现。Shepperd 等人[45]指出模型的不稳定性可能会对实验结果产生影响。因此,模型优化后是否过拟合也是超参数优化需要研究的内容。模型过拟合的主要表现为模型方差较高,Myrtveit 等人[46]也表明模型的高方差是预测模型比较研究中的关键问题。但仅用方差描述模型的稳定性较为片面,因此本文选取偏差-方差分解值作为模型的泛化误差,从模型方差和模型偏差两方面研究超参数优化后模型的稳定性。

RQ1 中结果表明,基于TPE 的贝叶斯优化算法的综合优化效果较好。因此,RQ2 选取基于TPE 的贝叶斯优化算法优化模型,并在跨版本缺陷预测实验中对比研究优化后模型的稳定性与未优化模型的稳定性之间是否存在差异。

实验采用Tantithamthavorn 等人[23]研究模型稳定性的实验方法,在29组跨版本缺陷预测实验中,分别对默认超参数设置下的模型和超参数优化后的模型进行100 次自采样,计算其泛化误差。图4 描述了超参数优化前后模型泛化误差的对比。其中,Default表示默认超参数下模型的泛化误差,Optimal 表示超参数优化后模型的泛化误差。

图4 泛化误差对比Fig.4 Comparison of generalization losses

图4 中,超参数优化后SVM 模型的泛化误差高于默认超参数设置下的泛化误差,其余模型的泛化误差与默认超参数设置下的泛化误差相当。

图5 展示了超参数优化前后模型的泛化误差比值。比值为1 表示优化后的模型与未优化的模型泛化误差相当,大于1 表示优化后模型泛化误差增大,反之,为减小。

图5 泛化误差比值Fig.5 Ratio of generalization losses

图5 中,除SVM 模型外,其余模型的超参数优化前后泛化误差比值主要分布于1 附近。即SVM模型超参数优化后,泛化能力降低,模型不稳定性提高,其余模型仍保持与默认超参数设置下相当的稳定性。

实验详细记录了模型超参数优化前后偏差和方差的变化。结果如图6和图7所示。

图6 模型偏差变化Fig.6 Changes of model's bias

图7 模型方差变化Fig.7 Changes of model's variance

分析图6 可知,超参数优化后SVM 模型偏差有小幅提升,其余模型偏差无较大变化。研究优化SVM 模型时的最优超参数组合发现,优化后的SVM 模型目标函数的惩罚系数C大部分为9~10 之间,导致SVM 模型倾向于简单训练,模型欠拟合,偏差增大。

图7中的实验结果表明,超参数优化后模型的方差相较于默认超参数设置均有一定降低。其原因为实验中为了降低模型过拟合的风险,选用模型在训练集上十折交叉验证的最优AUC值为优化目标进行超参数优化。交叉验证过程中会不断改变训练集和测试集,在一定程度上降低了数据扰动对模型的影响,因此模型的方差降低。

结合以上实验数据分析,优化后模型偏差稍有增高,方差小幅降低,但整体泛化误差与未优化模型相当,即模型超参数优化后仍保持与默认超参数配置下相当的稳定性。

由此,针对RQ2 可以得出结论:超参数优化后模型的泛化能力与默认超参数设置下的模型相当。超参数优化未对模型稳定性产生较大影响。

3.3.3 针对RQ3实验结果分析

在RQ3 中,主要分析模型超参数优化的时间成本。本文的实验环境是:Windows 11 操作系统,16 GB 内存,CPU 型号为AMD Ryzen 7 5000。表5为29 组跨版本缺陷预测实验中,4 种优化算法分别对5 个缺陷预测模型进行200 次迭代调优的平均花费时间。

表5 超参数优化的时间成本Table 5 Time cost of hyperparameter optimization 单位:s

比较表5 中4 种优化算法调优耗费时间,基于TPE 的贝叶斯优化算法超参数优化所花费的时间略小于其他优化算法。同时,RQ1 中结果表明,基于TPE 的贝叶斯优化算法的综合优化效果也优于其他优化算法。因此,期望通过优化模型超参数提升模型性能时,可优先选择基于TPE 的贝叶斯优化算法优化模型。

表5中,MLP模型超参数优化花费的总时间远远高于其他模型。原因在于MLP模型构建较为耗费时间,且本文实验中对MLP 设置的超参数调参空间较大。例如其中的alpha 因子的参数范围为(0.000 1,1.0),仅对该项超参数进行寻优所需花费的时间就远高于其他模型。因此,如要减少该模型超参数优化的时间,可考虑先行约简该模型待优化超参数的寻优范围。例如将范围较大的连续变量空间设置为离散变量空间。

除了MLP 模型以外,其余模型超参数优化平均花费的时间最少为3~5 s,最多为1~2 min。

由此,针对RQ3 可以得出结论:超参数优化算法优化模型的时间成本并不高昂,可考虑在跨版本缺陷预测实验中优化模型超参数,提升模型性能。

3.4 有效性分析

本文从三方面分析实证研究结果有效性的影响因素,具体如下:

(1)构建有效性

机器学习模型及其待优化的超参数和范围是影响构建有效性的关键因素。本文选取的五种缺陷预测模型是基于不同思想的典型机器学习模型。其待优化的超参数及范围借鉴了Tantithamthavorn等人[18]、Li 等人[19]、Li 等人[20]以及Shen 等人[47]的实验设置,并确保与他们的实验细节保持一致。

(2)内部有效性

机器学习模型和超参数优化算法的实现以及不同版本间的数据分布差异是影响内部有效性的因素。在实验研究中,本文选取第三方提供的成熟框架实现模型和超参数优化算法。对于缺陷预测模型,实验使用了来自Sklearn[25]库中的机器学习包。对于超参数优化算法,实验选用了Hyperopt[35]库、Skopt[36]库提供的算法框架。针对不同版本的数据分布差异问题,本文选取数据分布差异较小的相邻版本进行跨版本缺陷预测实验。以此保证实验过程中,实验结果的有效性。但相邻版本间有时会存在类重叠[48]以及演化程度相差较大等问题,会在一定程度上影响实验结果,将在未来进一步研究如何减小该问题对于实验的影响。

(3)外部有效性

实验数据集以及模型评价指标的选取是影响外部有效性的因素。本文选取了软件缺陷预测常用的PROMISE 数据集。该数据集中包含11 个软件项目,这些项目具有时间周期长、覆盖范围广等特点,可以确保研究结论具有一定的代表性。本文在实证研究中选取了软件缺陷预测常用的AUC 评价指标衡量模型的预测性能,并根据偏差-方差分解值衡量模型的泛化能力,以此保证实验研究得到的结论具有一般性。

4 结束语

本文主要研究了超参数优化对跨版本缺陷预测的影响。研究结果表明,超参数优化后跨版本缺陷预测模型性能有显著提升。其次,超参数优化未对模型稳定性产生较大影响,模型仍保持与默认超参数设置下相当的稳定性。最后从计算时间成本方面考虑,实验中优化模型超参数以提升跨版本缺陷预测性能也是可行的。因此,建议在未来的跨版本缺陷预测研究中,考虑模型超参数优化。

此外,未来可以深入研究的工作如下:

(1)为了降低复杂缺陷预测模型超参数优化时间,如MLP模型,可选择优化模型超参数之前约简参数空间。未来,可以研究模型超参数优化时如何有效地约简参数空间。

(2)本文在研究中发现,同一软件项目的不同软件版本上,优化模型得到的超参数组合十分相似。未来可研究对于某一软件项目的多个软件版本进行跨版本缺陷预测时是否可以共享一组较为合适的超参数,以降低超参数优化成本,提高缺陷预测效率。

(3)由于相邻版本间数据分布差异较小,本文选取相邻版本进行实验。但相邻版本间有时存在严重的类重叠问题或版本间演化程度较高问题,会对实验结果产生一定影响。未来会进一步研究该问题对跨版本缺陷预测的影响。

猜你喜欢
对模型预测性能
无可预测
选修2-2期中考试预测卷(A卷)
选修2-2期中考试预测卷(B卷)
光源对模型贴图的影响——3种人造光源在三维数字化采集中的应用
提供将近80 Gbps的带宽性能 DisplayPort 2.0正式发布
不必预测未来,只需把握现在
蒙药特润舒都乐对模型小鼠脾脏NK细胞活性的影响
蒙医开窍补肾针刺法对模型大鼠胸腺、脾脏指数的影响
蒙医催熟疗法对模型大鼠炎症因子影响的实验研究
Al-Se双元置换的基于LGPS的thio-LISICON的制备与性能表征