【软件分析与挖掘】A Comparative Study of Supervised Learning Algorithms for Re-opened Bug Prediction

 

摘要:

      本文主要是评估多种监督机器学习算法的有效性,这些算法用于判断一个错误报告是否是reopened的,算法如下:

             7种监督学习算法:kNN,SVM, SimpleLogistic,Bayesian Network, Decision Table, CARTand LWL;

             3种集成学习算法: AdaBoost,Bagging and Random Forest。

实验结果表明:

              评判的指标:accuracy scores和 F-Measure scores

              Bagging  and  Decision  Table取得了比较好的性能。


S1 Introduction

一个典型的错误修复通常包括4个阶段:(以Bugzilla为例)

  1. 检测到软件中的一个bug,发布一个bug report,状态标记为“new”;
  2. bug triager指派每一个bug到与之相应的开发者,状态标记为“assigned”;
  3. 开发者阅读bug report,验证是否是一个bug,若是,则修复它,状态标记为“verified”;
  4. 若不是一个bug,或已修复完毕,则bug triager会关闭这个bug,状态标记为“closed”。

然而,很多时候,一个bug必须被重新开放,因为:

  1. 检测到bug时并没有提供大量的信息,导致开发者对bug的真正原因判断不准确;
  2. 尽管在先前的系统中已被修复,bug又重新出现在当前版本的系统中。

重新开放的bug修复起来更加耗时,成本越高,因为开发者必须重新审视问题。


 

S2   总体框架

image

由上图可以看到,有两个阶段:1)训练阶段;2)测试阶段。

在特征提取的过程中,把特征分类四类:

image

以下是算法中一些参数的设定:

image


 

S3   实验结果

数据集用的是之前Shihab所使用的,其中包含1530个bug report,其中246个为reopened。

使用十折交叉验证的方法,对数据集进行处理。

指标也和Shihab的相同: accuracy, re-opened precision (Precision(re)), reopened recall (Recall(re)),reopened F-Measure ((F-Measure(re)),

not reopened precision(Precision(nre)),  not  reopened  recall  (Recall(nre)),  and  not reopened F-measure (F-Measure(nre)).

这10种算法统一用weka实现。

主要的问题:

  1. 10种算法性能差异;

image

       2.   集成学习算法的性能是否优于非集成学习算法?

              结论表明,并没有直接关系。


 

S5   结论与未来工作方向

本文中算法都只采用唯一的参数,以后要尝试修改参数,来进行比较。

posted @ 2015-04-20 10:09  max_xbw  阅读(252)  评论(0编辑  收藏  举报