Page 314 - 《软件学报》2021年第7期
P. 314

2232                                     Journal of Software  软件学报 Vol.32, No.7,  July 2021

                 rate,简称 FNR)、查准率(precision)、查全率(recall)和 F1 度量(F1-measure).
                                                  
                       FPR 又称作误报率: FPR   FP /(FP TN
                                                     ).
                       FNR 又称作漏报率: FRN    FN  /(TP   FN ).
                                                                          
                      查准率度量分类器正确输出的真阳性(占总输出的)比率: Precision TP                /(TP   FP ).
                      查全率度量分类器实际输出的真阳性(占总真阳性的)比率: Recall                 TP  /(TP   FN ).
                       F1 度量以调和平均数的方式平衡查准率和查全率: 12F               Precision Recall /(Precision Recall
                                                                            
                                                                                           
                                                                                                 ).
                    上述 5 个评价指标的取值范围均落于[0,1]之间,其中,Precision、Recall 和 F1 属于效益型度量指标,即数值
                 越大表示分类器的预测性能越好;相反,FPR 和 FNR 属于成本型效益指标,即数值越小越好.对于一个理想的缺
                 陷倾向性分类器而言,其既不会漏报缺陷(即 FNR                0,Recall  )也不会误报缺陷(即 FPR      0,Precision   1 ),此
                                                                  1
                 时,综合指标 F11.但在实际中,分类器很难做到这么理想,经常会“顾此失彼”,因此需要考察模型的多个方面.
                 4.4   实验环境与参数设置
                    实验环境为 Intel i7-6700K CPU、24G RAM、1T ROM 及 1 块 GeForce GTX 1080ti 11G 显卡.使用的深度
                 学习建模工具为 TensorFlow 1.3.0,缺陷预测分类器的建模工具为 Scikit-learn 0.19.1,编程语言为 Python 3.6.6.
                 使用的 C/C++代码词化工具为 Python 第三方库 Clang 7.0.0,其依赖工具 LLVM 7.0.0 和 Microsoft Visual Studio
                 14.0 的支持.
                    本文关于经验性参数的设置采用经典的格点搜索方法,通过五折交叉验证实验求均值后对比得到,其中,下
                 一节将以重要参数为例,详细展示模型参数的选取过程.具体地,CNDePor 方法中语言模型的超参数设置如下:
                 词频阈值=5(BE 数据集的词汇表大小 V BE =4496,RME 数据集的词汇表大小 V RME =3059);词向量维度 dim w =800;
                 LSTM 层数 N layer =1;LSTM 层的隐含节点 dim h =800;Dropout 方法的节点保留概率 P keep 均为 0.5;按时间展开步
                 长 N step =50;批处理的大小 N batch =30;训练轮数 N epoch =10,且每轮均对样本序列进行随机排序;允许的最大梯度范
                 数 grad max =5;LSTM 单元遗忘门偏置的初始值为 0,网络其他参数的初始值按[0.08,0.08]的均匀分布随机设置;
                 模型优化使用 SGD 算法,自适应学习率             rate  参数=7、=0.5;加权语言模型的权重比例系数选取范围为
                 [20].CNDePor方法的缺陷预测阶段,我们选取了广泛应用的 SVM和 RF分类器                  [3,34,55,56] 进行对比实验,其中 SVM
                 的参数设置为:惩罚系数 C penalty =5,少数类的权重为 2,核函数为径向基核,径向基尺度参数                     1/(2   2 ) 10 ,  5  其余
                 参数为默认配置;RF 的参数设置为:决策树数量 N DT =15,特征的划分准则基于信息增益,其余参数为默认配置.
                 在利用分类器进行缺陷预测时,我们对度量元数据进行了标准化处理,采用的方法是 Min-Max 标准化,即将各维
                 度属性线性缩放至[0,1]之间.

                 5    实验过程与结果分析

                    实验针对表 3 所示的切片粒度数据集,利用五折交叉验证方法验证本文 CNDePor 在切片粒度缺陷预测方
                 面的应用性能.该方法的阶段 I(语料库学习阶段)是利用 W-NLM 学习代码样本.表 4 列出了在两种缺陷数据集
                 的五折交叉验证实验中语言模型获得的性能指标,其中包括平均困惑度(perplexity,简称 PP)值和耗时情况.

                                      Table 4    5-fold cross validation results of language model
                                              表 4   语言模型的五折交叉验证结果
                                                      BE-ALL 数据集               RME-ALL 数据集
                                语言模型              平均困惑度        平均耗时(s)     平均困惑度        平均耗时(s)
                                                训练集     测试集              训练集     测试集
                                         正向     1.556   1.523    800.5    1.398  1.409    466.8
                           W-NLM(=1)
                                         逆向     1.554   1.523    785.3    1.401  1.412    459.5
                                         正向     1.550   1.692    792.9    1.420  1.570    460.6
                           W-NLM(=10)
                                         逆向     1.547   1.691    783.7    1.422  1.571    459.5
                                         正向     1.550   1.727    792.8    1.421  1.630    460.8
                           W-NLM(=20)
                                         逆向     1.547   1.727    786.0    1.421  1.637    460.9
   309   310   311   312   313   314   315   316   317   318   319