1、第 30 卷第 2 期2023 年 4 月海南热带海洋学院学报Journal of Hainan Tropical Ocean UniversityVol 30 No 2Apr 2023收稿日期:2022 10 20基金项目:中央引导地方科技发展专项项目(2021ZYD0003)第一作者:刘晶,女,四川遂宁人,在读硕士研究生,研究方向为软件缺陷预测、迁移学习。通信作者:闵帆,男,重庆人,教授,博士,博士生导师,研究方向为机器学习。基于 DiWCSmSTL 的跨项目软件缺陷预测刘晶a,闵帆b,宋国杰c(西南石油大学 a 计算机科学学院;b 理学院;c 机器学习研究中心,成都 610500)摘要:
2、为了在诸多新项目中快速找到用于迁移的最优参考项目,解决基于迁移学习的跨项目缺陷预测(CrossProject Defect Prediction,CPDP)应用中存在的由单源选择性偏差而导致的缺陷预测性能稳定性问题,提出了用于跨项目缺陷预测的双重初始权重的代价敏感多源迁移学习模型(Double initial Weights and Cost Sensitive multi-Source Transfer Learning,DiWCSmSTL),采用多源替代单源从而减少选择偏差以获得更稳定的性能。本研究模型首先融合行业内不同的数据支持多源迁移;然后利用动态性能评估进行代价敏感的源项目选择以减少
3、负迁移的影响;最后对所融合的数据设置双重初始权重以获得稳定的模型。在 3 个开源数据集上进行实验,结果表明:基于多源融合的预测模型比单源融合能够获得更稳定的性能;代价敏感和双重权重设置既能有效缩短缺陷预测模型生成时间,又能在曲线下面积(Area under the curve,AUC)和几何平均值(Geometric mean,Gmean)指标上均取得改进。关键词:迁移学习;缺陷预测;跨项目;多源融合中图分类号:TP181文献标识码:A文章编号:2096 3122(2023)02 0051 11DOI:10 13307/j issn 2096 3122 2023 02 070引言传统的利用机器
4、学习技术的缺陷预测研究主要用于项目内或公司内软件缺陷预测。缺陷预测领域主要涉及度量元分析设计、数据处理(包含高维数据处理,异常数据处理)、类不平衡处理、以及模型构建、缺陷预测目标设计等1。缺陷预测算法有朴素贝叶斯,决策树,支持向量机,逻辑回归,随机森林等。结合软件缺陷预测的特点,尤其是类不平衡分布,在传统学习算法的基础上,研究者们重点关注迁移学习的数据处理方面和模型构建。在数据处理方面,在采样细分领域通过增加类内离散度信息并结合支持向量清洗策略,从而使项目分布均匀,同时增加正例特征与减少反例特征两个方面对特征进行筛选,进行特征降维的同时在一定程度上减少了噪声影响2。而针对连续发布版本的项目,可
5、以采用主动学习和随机森林特征提取达到特征降维的目的,在 Eclipse 项目上的实验表明该方式有很好的性能提升3。在模型构建策略方面,荆晓远等4 提出了基于代价敏感的字典学习。对于跨项目或公司的情况而言,由于项目缺乏历史数据,采用传统项目/公司内缺陷预测方法进行跨项目预测,结果并不理想5。基于迁移学习的跨项目软件缺陷预测(CPDP)因其不依赖历史数据的特性逐渐被重视。CPDP 利用外部项目的数据和模型来构建目标分类模型。针对迁移算法的研究6 254,主要分为三大类,有监督,无监督和半监督算法。而 CPDP 主要面临的难点有数据的类不平衡分布及源和目标项目特征分布差异。针对类不平衡分布,多数研究
6、围绕采样技术方面。而对于分布差异的研究主要集中在特征选择方面,但目前大多数研究都是基于单源的迁移。为了在诸多新项目中快速找到用于迁移的最优参考项目,提出基于双重初始权重的代价敏感多源迁移学习模型(DiWCSmSTL)。该模型广泛的融合行业内的项目,以获取更丰富的源数据集用于迁移学习;为了减少负迁移的发生利用动态性能评估进行代价敏感的源项目选15第 30 卷第 2 期海南热带海洋学院学报择,从而获得适合目标项目的源项目集并对其数据进行整合;融合的数据再进行双重初始权重设置的迁移学习。为了证明多源融合的必要性,本研究设计了单源与全源融合的对比实验。将 AUC 值作为指标,并通过对比两种方法的性能,
7、发现全源融合平均性能比单源更优。但在部分项目上,负迁移产生了较大影响。为此本研究设计了进一步的方案,采取二阶段代价敏感方法筛除负迁移严重的源项目。实验表明,二阶段代价敏感迁移的 AUC 值优于全源融合迁移,因此对源项目进行筛选是有必要的。本研究设计了第三个对比实验来验证 DiWCSmSTL 的性能,在 3 个开源数据集上的实验结果表明:多源融合相较单源有更稳定的性能;代价敏感和双重权重设置既有效地缩短模型生成时间,且在 AUC 和 Gmean指标中都取得较好的效果。1 相关技术CPDP 当前主要面临数据缺失,类不平衡分布问题。在解决数据缺失方面,Dai 等7 在 2007 年提出迁移学习(Tr
8、AdaBoost),通过利用源项目的实例,结合少量已经标记的目标项目的实例,通过不同的源项目选择策略及实例选择策略,运用集成学习方法8 349构建性能较好的模型。在迁移学习的基础上,研究的重点及难点主要集中在数据处理方向,Burak 等人9 和 Peter 等人10 先后提出了最邻近邻居(Nearest Neigh-bor,NN)过滤法和 Peter 过滤法,被广泛应用于 CPDP 领域,李莉等11 提出利用主成份分析过滤源项目中的冗余数据,然后采用评估因子改进 TrAdaBoost 的方法,取得了明显的性能提升。针对类不平衡分布问题,目前的研究主要是利用随机过采样或欠采样技术,其中一种较为经
9、典的方法是以多标签合成少数过采样技术(Multilabel synthetic minority over-sampling technique,MLSMOTE)12 385处理类不平衡问题。采用迁移学习进行 CPDP 研究时,目标项目与源项目之间的分布差异问题吸引了大量研究者的关注,主要研究方向为特征选择和样本权重设置。在特征选择方面,陈锦富等13 采用 NN 过滤,再应用基于迁移学习的度量补偿技术解决源项目和目标项目之间数据分布差异较大的问题,在 AUC 和 F1-Measure 指示上取得了性能提升。在样本权重设计方面,马英等14 提出朴素贝叶斯迁移(Transfer naive bay
10、es,TNB)算法,利用少量新标记的数据和大量历史数据来构建模型,利用数据引力计算15 将第 i 个样本的初始权重设置为Wi=Si1 0 (D Si+1)2,(1)其中:D 为迁移公共特征维度;Si为样本 i 在公共特征 D 所有维度的引力值,且Si=Dj=1Si,j。(2)在式(2)中,Si,j的取值为Si,j=1(Si,jmax j and Si,jmin j),0(Si,jmax j or Si,jmin j),(3)其中:max j 为源样本在 j 属性上的最大值;min j 为源样本在属性 j 上的最小值。由于 TNB 算法进行权值计算时只关注目标数据集中每个特征,因此关于 TNB
11、算法的很多后续研究都集中在改动权值的设置上。加权贝叶斯迁移学习算法(WNB)16 将源项目与目标项目的特征差异转换为被训练实例的权重,从而生成预测模型。但多数分布差异研究主要考虑到边缘分布差异,忽略条件分布上的差异,而均衡分布自适应(Balanced distribution adaptation,BDA)通过给训练数据赋予不同的权重,同时考虑了两种分布的差异17。CPDP 中的迁移学习不但要考虑分布差异,类不平衡分布对迁移学习的影响也使得这个课题面临挑战。Duksa 等18 提出的基于代价敏感的迁移提升(Transfer cost sensitive boost,TCSBoost),引入训练
12、权重的同时采用代价最大值和最小值敏感,同时考虑了类不平衡问题。Chen 等19 同时考虑迁移和类不平衡处理的二次迁移提升(Double transfer boost,DTB)算法,首先采用最邻近邻居(Nearest neighbor,NN)过滤取得邻近的源项目样本,随后利用集成学习(AdaBoost)8 349从而构建预测模型,该模型根据设置的目标分类器25刘晶等:基于 DiWCSmSTL 的跨项目软件缺陷预测2023 年第 2 期数量 M,利用 NB,RF,SVN 等机器学习分类器作为初始分类器,第 m 轮迭代可以构建出分类器 m,假设有 k个类别,则该分类器首先由C(x)=maxkm 1j
13、=0(j)I(C(j)(x)=k)(4)得到该轮的分类结果 k后,再分别用以下公式(5)和公式(6)对第 m 个分类器 C(m)的权重(m)和样本权值wm+1,i(x)进行更新。(m)=log1 e(m)rre(m)()rr,(5)wm+1,i(x)=wm,ie(m)(C(m)(xi)=yi),wm,ie(m)(C(m)(xi)yi),(6)其中:e(m)rr是带权分类误差,计算公式为e(m)rr=ni=1wi(x)I(C(m)(xi)yi)ni=1wi(x)。(7)最后利用公式wm+1,i(x)=wi(x)ni=1wi(x)(8)对所有样本权重进行归一化,当迭代次数达到 M 时,也即是分类器
14、数量达到 M 后得到最终预测模型。Tang 等20 提出同时考虑知识迁移和类不平衡问题的迁移算法,主要对权重更新做了更多的尝试。通过 Li等21 566对比实验发现,DTB 算法的性能稳定且处于优势位置,但算法主要还是针对单对单的迁移,对于多源项目的研究并不充分。实际情况中,很难迅速针对特定目标项目找到其最优源项目。通过实验发现,采用多源项目进行迁移学习,能够在最初阶段提升平均预测性能,因此研究多源迁移是十分必要的。2 构建的模型本章首先展示算法总体框架,然后对具体的技术进行描述。2 1 算法总体框架本研究提出的基于双重初始权重的代价敏感多源迁移学习模型(DiWCSmSTL),包括二阶段源项目
15、选择算法(DPSSA)和双重初始权重设置算法(DiWBoost),总体框架如图 1 所示。DPSSA 首先通过代价敏感选择算法(CSSSA)提取出源项目集,而后根据目标项目的属性整合得到源项目样本集。DiWBoost 考虑到源项目样本与目标项目多个维度上的相似性,基于相似度给样本赋予初始权重,然后再根据自引力和初始权重进行双重初始权重设置,通过对比实验发现,DiWCSmSTL 在 AUC 和 Gmean指标上预测性能有效提升。图 1多源跨项目代价敏感选择及双重初始权重迁移算法总体框架35第 30 卷第 2 期海南热带海洋学院学报2 2 源项目选择算法(DPSSA)在多源项目中的源项目选取的研究
16、方法主要分为以下两种。1)将全部源项目样本通过特定的方法整合起来,而后利用大量的现有的迁移算法形成迁移模型。2)通过不同的选择策略挑选出一定数量的源项目,基于深度学习的多源迁移模型(MTrADL)即可提取出最相似的前参数(K)个源项目,再将提取出来的项目做单对单的迁移学习,最后整合各个迁移学习结果形成最终模型。本研究提出二阶段代价敏感多源项目选择,综合考虑项目样本筛选,分两阶段对源项目集及样本进行提取整合后生成源数据样本集,具体过程如下:1)项目过滤阶段一(初始算法):顺序选择起始源项目,通过代价敏感取最优源项目组合;2)项目过滤阶段二(进阶算法):采用最优源项目做起始项目,重复代价敏感过程。2 2 1 代价敏感源项目集选择算法(CSSSA)在实数域 R 内,源项目集 DS=S1,Sn RSxD,Si(x)=Si,x1,Si,xn RD 1,Sy(i)=Sy1,Syn(0,1,F,T,1),D 为源项目度量元,即源项目特征维度,在所有特征中最后一维为源项目样本标签。Si(x)是源项目 i 中的样本 x 在特征 j 上的取值。Sy(i)是源项目 i 中的样本 x 的标签。目标项目 T=T