An Empirical Comparison of Model Validation Techniques for Defect Prediction Models

1、论文总结

对常用的三大类(12种)模型验证技术,在多个数据集上使用3种常见的分类器(naive bayes,logistic regression,random forest)进行训练和测试,对产生的5个性能指标(Precision,Recall,Brier Score,AUC和calibration slope)的偏差和方差,层次聚类后分析结果并对之后的实验进行指导。

无论是从数据集的选取,还是实验设计,对于其他类的预处理技术探究有很重要的借鉴意义。

2、研究目标

探究Validation(验证)技术对于模型性能的影响,选出一种性能足够好且比较稳定的模型验证技术。

3、问题陈述

  1. 哪种验证技术对缺陷预测模型的偏差最小?
  2. 哪种验证技术对缺陷预测模型最稳定?

4、研究方法

通过实验比较是否使用验证技术产生的性能偏差以及验证技术多次使用产生的性能方差,判断模型验证技术的好坏。

5、实验评价

实验设计

流程

在这里插入图片描述

说明:

  1. 首先对原始数据集进行采样,分为两种情况EPV=3和EPV=10,采样过程中需要保持和原始数据集同样的缺陷率,EPV固定,数据集特征数固定,两者相乘就是缺陷模块数,缺陷率已知,就能知道采样数据集的实例数,没有在采样数据集中出现的就是Unseen dataset;
  2. 用采样数据集进行训练,unseen dataset进行测试会得到性能,假设是 P 1 P_{1} P1;对sample dataset用验证(validation)技术,重新划分测试集和训练集,得到性能 P 2 P_{2} P2,两者对比就能得到偏差(bias);
  3. 对sample dataset用验证(validation)技术,重复1000次就能得到1000个性能指标,就可以计算方差(variance);
  4. 根据偏差和方差数据进行层次分类,并进行结果分析;
借鉴

1、通过模型验证技术使用与否产生的偏差和模型验证技术自身的方差,判断模型验证技术的好坏;
2、对偏差和方差进行层次聚类后再展示;

实验准确性的威胁
  1. 不同数据集的软件特征不同;
  2. EPV<=10最后结果不稳定没在缺陷预测方面被证实;
  3. 分类器参数优化没有被考虑;
  4. 没有考虑其他性能度量,Brier score and calibration slope之前没有被用在缺陷预测过;
  5. 数据集和分类器并没有涵盖所有,结论的泛化能力存疑;

6、结论

确定结论

  1. 不考虑分类器,out-of-sample bootstrap产生的偏差最小;
  2. 不考虑分类器,ordinary bootstrap是最稳定的;
  3. EPV比较小的情况下,out-of-sample bootstrap能实现偏差和方差最好的均衡;

仍需讨论

  1. Leave-One-Out Cross-Validation(留一法)因为每次只用一个实例进行测试,有些性能指标无法统计,没有特别分析;
  2. 在产生sample dataset和unseen dataset时有很大的随机性,数据可能不准确;
  3. 实验的迭代次数可能会影响方差数据;

现实指导

  1. holdout validation留出法有很大的随机性,应该避免单次使用;
  2. out-of-sample bootstrap在性能和稳定性上比cross-validation和holdout更好,模型验证应该使用out-of-sample bootstrap;

7、补充

Holdout Validation(留出法)

方法:直接将数据集随意分为两部分,一个只用于训练,一个只用于测试。

缺点:

  1. 有大量的数据没有用于训练模型;
  2. 随意分割可能会产生误导性结果;

为了克服这些缺点,往往会把holdout执行很多遍。

Cross-Validation(交叉验证)

方法

将数据集划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布的一致性(比如以二分类为例,数据集整体正例的比例是30%,那么每个子集正例的比例也尽量是30%)。然后每次挑选一个作为测试集,剩下的k-1个作为训练集。

在这里插入图片描述
这里用周志华老师《机器学习》(以下简称西瓜书)中的一张示意图辅助理解。

缺点

当样本数很少的时候可能会产生不稳定的结果。

解决办法

k-fold cross-validation重复多次,经常使用的是10次10折交叉验证。

Leave-One-Out Cross Validation(留一法)

留一法是交叉验证的一种极致情况,m个样本中只留一个进行验证,其余m-1个样本用于训练。虽然结果比较准确,但是在样本数据量较大的情况下,训练难度呈指数增加。

Bootstrap Validation(自助法)

ordinary bootstrap(普通自助法)

论文原文:

The ordinary bootstrap was proposed by Efron et al. [31]. The bootstrap process is made up of two steps:
(Step 1) A bootstrap sample of size N is randomly drawn with replacement from an original dataset that is also of size N.
(Step 2) A model is trained using the bootstrap sample and tested using the original sample.

几乎没说具体的方法,从西瓜书中可以找到相关的记录,对包含N个样本的数据集 D D D进行采样产生 D ′ D^{'} D:每次随机从 D D D中挑选一个样本,将其拷贝放入 D ′ D^{'} D,然后再将该样本放回初始数据集 D D D中,使得该样本在下次采样时仍有可能被采到;重复N次,就得到了包含N个样本的数据集 D ′ D^{'} D

使用采样后的数据集进行训练,初始数据集用于测试,重复M次取均值作为性能估计。

optimism-reduced bootstrap

optimism-reduced bootstrap是对ordinary bootstrap的加强,主要是第二步和之前不同,原文是:
A model is still trained using the ith bootstrap sample, but the model is tested twice— once using the original sample and again using the bootstrap sample from which the model was trained. The optimism of the model is estimated by subtracting the performance § of the model when it is applied to the ith bootstrap sample from the performance of the model when it is applied to the original sample (see Equation 1).

在这里插入图片描述
我的理解是采样出来的 D ′ D^{'} D进行训练,然后用 D ′ D^{'} D D D D进行测试并计算差值,包括采样的整个过程重复M次取均值(如果有其他想法可以交流)。

最终的性能度量通过公式(2)获得:
在这里插入图片描述
D D D进行训练和测试得到的“膨胀”性能减去“乐观”指数。

out-of-sample bootstrap

这个是对ordinary bootstrap的另外一个加强版本,和西瓜书中描述的内容一致。一般来说,大约有36.8%的数据没在 D ′ D^{'} D中出现,所以使用 D ′ D^{'} D进行训练,使用 D − D ′ D-D^{'} DD(集合减法)进行测试,重复M次后,取均值作为性能度量。

.632 bootstrap

这是out-of-sample bootstrap的加强版,最终性能度量的公式如下:
在这里插入图片描述
P o r i g o r i g P^{orig}_{orig} Porigorig指的是用 D D D进行训练和验证后的性能, P b o o t ( i ) − b o o t ( i ) P^{-boot(i)}_{boot(i)} Pboot(i)boot(i)指的是用 D ′ D^{'} D进行训练,用 D − D ′ D-D^{'} DD(集合减法)进行验证获得的性能,然后重复M次取均值。

0.632是指初始数据集中大约有63.2%用于训练,36.8%用于验证。

模型验证技术汇总

论文最终要评估的模型验证技术如下:
在这里插入图片描述

数据集选取

Events Per Variable (EPV)

EPV=有缺陷的模块数/特征数

Peduzzi等人认为为了避免产生不稳定的结果,EPV至少是10. [ 1 ] [1] [1]

选取准则
  1. 数据集来自于不同语料库和领域;
  2. 足够的EPV(>=10):实验要考虑两个极端情况(EPV=3和EPV=10),如果数据集EPV小于10,为了获取EPV=10的样本就要过采样,可能会带入新的偏差;
  3. 缺陷率<=50%;
数据集汇总

在这里插入图片描述

8、References

[ 1 ] [1] [1]P. Peduzzi, J. Concato, E. Kemper, T. R. Holford, and A. R. Feinstein, “A Simulation Study of the Number of Events per Variable in Logistic Regression Analysis,” Journal of Clinical Epidemiology, vol. 49, no. 12, pp. 1373–1379, 1996.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值