【软件挖掘】ELBlocker: Predicting blocking bugs with ensemble imbalance learning

摘要:

提出一种方法——ELBlocker,用于自动检测出Blocking Bugs(prevent other bugs from being ?xed)。

难度在于这些Blocking Bugs仅占很小的比例( the class imbalance phenomenon)。

方法:给定一个训练集,ELBlocker首先把将训练数据划分为多个互斥的集合。对每个集合建立一个分类器,然后根据混合分类器的结果,设定一个阈值(决策边界),把 blocking bugs from non-blocking bugs分开。


S1    Introduction

ELBloker有两个度量指标:

a.精确度和召回率;F1-Score

F1-Measurea是一个评价指标,经常在信息检索和自然语言处理中使用。

  ?          F1-Measure是根据准确率Precision和召回率Recall二者给出的一个综合的评价指标,具体定义如下:

F1 = 2rp / ( r +p )

其中r为recall,p为precision.

b.性能指标;Cost effectiveness


S2   Preliminaries & motivation     初步材料和动机

2.1   实验表明,blocking bug需要很久才能被发现

2.2  两个问题:

a.由子集构造出的分类器性能是否优于由全集构造出的分类器?

实验:(实验时,k取10,9个作为训练集,1个作为测试集)

Ⅰ.训练集分为k个相异的大小相同的子集;

Ⅱ.每个子集建立一个分类器;         同时建立一个分类器基于全集

Ⅲ.使用相同的测试集,让k个分类器去分类;           同时还建立一个随机分类预测;

Ⅳ.用随机森林去构造分类器。

实验结果:

大致趋势可以看出,F1指标随着k增大而增大。

结论:对每个子集建立多个分类器并做预测的结果优于对全集建立一个分类器的结果;

b.不同的决策边界(阈值)是否会导致决策性能的显著性差异?

实验:

Ⅰ.基于全集建立一个分类器;

Ⅱ.对一个新的测试集进行分类,分类度量值与阈值进行比较,观察不同的阈值,F1-score变化。

结论:阈值不同,F1-Score不同。


S3   ELBlocker 架构

model building phase and prediction phase.

model building phase:基于已标记(blocking or non-blocking)的漏洞日志建立混合模型

prediction phase:分类预测是否为blocking bug


S4   ELBlocker approach

4.1   Subset scores的定义

对于每一个测试集,每一个分类器都会对其进行分类,并给出一个似然值作为Sub(bri)。采用随机森林算法利用训练阶段的数据构造出大量的决策树。在分类决策阶段,通过大多数分类器的结果作为最终的分类标准。

4.2    ELComposer分类器

这里对于ELComposer的值的计算还是比较简单,直接取平均。然后再和阈值比大小。

比较适合的阈值如何自动生成?——贪婪算法,其实我理解中也不是什么贪心,就是每个都算一遍,然后取最大,更像是在枚举。


S5    Experiments and results

5.1   为了比较,采用相同的实验环境,即相同的数据集等等。

6个开源的软件项目: Freedesktop,Chromium,Mozilla,NetBeans,OpenOf?ce,Eclipse.

其中,Mozilla, Eclipse, Freedesktop and NetBeans使用Bugzilla作为issue  tracking  system;

OpenOf?ce使用IssueTracker作为issue tracking system;

Chromium使用Google code作为issue tracking system。

这些issue tracking system的 bug report中都有一个叫“Blocks”的域,这个域可以用于判断这个block是否被屏蔽。

测试时采用10折交叉验证,进行100次。每次交叉验证随机分成10份。

关于 the imbalance class phenomenon(类不平衡现象), Garcia and Shihab等人采用重采样(re-sampling)的方式,利用随机森林的方法进行重新采样取得了不错的效果,而且作者也这么做了。对于类不平衡算法,文中采用了SMOTE和one-sided selection (OSS)两种算法,其中:

SMOTE是属于重采样技术中的一种, SMOTE算法的特点是不按照随机过采样方法简单的复制样例,而是增加新的并不存在的样例,因此在一定程度上可以避免分类器过度拟合。

one-sided selection (OSS) is proposed by Rule Kubat and Matwin attempts to intelligently under-sample(欠采样) the majority class by removing majority class examples that are considered either redundant or noisy.

此外,还采用了bagging算法:bagging是一种用来提高学习算法准确度的方法,这种方法通过构造一个预测函数系列,然后以一定的方式将它们组合成一个预测函数。

1.给定一个弱学习算法,和一个训练集;

2.单个弱学习算法准确率不高;

3.将该学习算法使用多次,得出预测函数序列,进行投票;

4.最后结果准确率将得到提高.

5.2    度量指标

5.2.1    F1-Score(前面已经提过了)

blocking bug 看成  blocking bug的概率:TP

blocking bug 看成 non-blocking bug的概率:FN

non-blocking bug  看成 blocking bug 的概率:FP

non-blocking 看成 non-blocking的概率:TN

5.2.2. Cost effectiveness

we use [email protected]% ([email protected]%) as the default cost effectiveness metric.

通过ELBlocker找到的前20%的(所有)bug中,blocking bugs的数量     /     通过perfect technique找到的前20%的(所有)bug中,blocking bugs的数量

5.3 研究的问题

RQ1:ELBlocker的性能如何?比最先进的技术可提高多少?

利用F1-Score和[email protected] 为指标,

同时计算5种方法:ELBlocker , Garcia and Shihab’s method, SMOTE, OSS, Bagging.

在6个项目上。

同时采用10折交叉验证。

采用Wilcoxon  signed-rank方法来测试ELBlocker所带来的提高是否具有统计意义

此外,还利用 Cliff’s delta 来量化两个组之间的差异。

RQ1实验结果:

To summarize, on average ELBlocker improves the F1-scores over Garcia and Shihab’s method, SMOTE, OSS, and Bagging by 14.69%, 23.36%, 30.98%, and 171.65%, respectively. Also, on average ELBlocker improves the [email protected]% over Garcia and Shihab’s method, SMOTE, OSS, and Bagging by 8.99%, 15.76%, 22.64%, and 56.82%, respectively.  Using the Wilcoxon signed-rank test, we ?nd that the improvements provided by ELBlocker are statistically signi?cantly and have a large effect size.

RQ2:当取不同比例的bug report的时候,ELBlocker和baseline methods的性能区别有多少?即effectiveness at different K

之前是采用[email protected]% ,而现在采用[email protected]%,也就是说使用不同干的K值去计算性能。

RQ2实验结果:

We notice ELBlocker is better than the baseline methods for a wide range K values.

RQ3:当取不同的子集数量的时候,ELBlocker的性能区别有多少?

之前是默认采用10个子集 ,而现在采用2~20个子集,构造相应的分类器。

RQ3实验结果:

the performance of ELBlocker is generally stable across various numbers of subset classi?ers.

RQ4:ELBlocker的时间复杂度?

与其他方法进行运行时间比较。重在比较model building and prediction time

RQ4实验结果:

在可接受的范围内。


S6   讨论

6.1  ELBlocker的有效性

compare ELBlocker with random prediction

结论:To summarize,in most cases (except for Chromium) ELBlocker achieves a much better performance compared to random prediction。

6.2   ELBlocker vs. Bagging + Random Forest

ELBlocker  improves  the  F1-score  and [email protected] of Bagging + RA by 175.05% and 12.83%, respectively.

6.3   有效性风险(Threats to validity)

internal validity( relates to errors in our code andexperiment  bias) : To reduce training set selection bias, we run 10-fold cross-validation 100 times, and record the average performance.

external validity( relates to the generalizability ofour results.): we  plan  to  reduce  this  threat  further  by analyzing   even   more   bug   reports   from   additional   software projects.

construct  validity( refers  to  the  suitability  of  our evaluation  measures.  ): use  F1-score  and  cost  effectiveness which are also used by past studies to evaluate the effectiveness of various  automated software engineering techniques


S7   相关工作

7.1     Blocking bug prediction

这个问题由Garcia and Shihab最先提出,作者在这个问题上做了更深一步的研究,并证实了自己的方法更好。

7.2. Other studies on bug report management

7.3. Imbalanced learning and ensemble learning

Imbalanced learning:类不平衡学习

欠采样(under-sampling):OSS

重采样(over-sampling):SMOTE

ensemble learning:

本文方法与Bagging很像,Bagging也是对子集构建分类器,不同的是:

To determine the label of an instance, Bagging uses a majority voting  mechanism.  Our  ELBlocker  is  different  from  Bagging  since we do not use bootstrap sampling to select the subsets, rather we randomly divide the training set into multiple disjoint subsets, and we build a classi?er on each of these subsets. Moreover,after  we  build  multiple  classi?ers,  we  automatically  detect  an appropriate  imbalanced  decision  thresholdBagging  does  not consider a threshold.


S8  Conclusion and future work

1  将ELBlocker应用在更多的Projects上;

2  利用一些其他的方法(如文本挖掘,数据检索)去提高ELBlocker的效率;

3  开发一个工具去告诉开发人员,不仅仅是一个bug是不是blocking bug,还能告诉他们哪些bug被blocking了。

时间: 2024-08-05 20:45:12

【软件挖掘】ELBlocker: Predicting blocking bugs with ensemble imbalance learning的相关文章

poj 2096 Collecting Bugs (概率dp 天数期望)

题目链接 题意: 一个人受雇于某公司要找出某个软件的bugs和subcomponents,这个软件一共有n个bugs和s个subcomponents,每次他都能同时随机发现1个bug和1个subcomponent,问他找到所有的bugs和subcomponents的期望次数. 分析: 期望倒着推,概率正着推. dp[i][j]表示已经找到i种bug,并存在于j个子系统中,要达到目标状态的天数的期望.显然,dp[n][s]=0,因为已经达到目标了.而dp[0][0]就是我们要求的答案.dp[i][

POJ 2096 Collecting Bugs(dp 期望)

题目链接:http://poj.org/problem?id=2096 Description Ivan is fond of collecting. Unlike other people who collect post stamps, coins or other material stuff, he collects software bugs. When Ivan gets a new program, he classifies all possible bugs into n ca

多年收集的一些稀有软件2

QQ:365543212 Fuel Economy Calculator v1.1 B.001(汽车工程软件,用于预测车辆燃油消耗率,是目前此类软件中最为全面的,能接收从最新的发动机分析程序Engine Analyzer自动发送来的强大的游标和发动机规格) Psat v5.1 1CD ProScan.v5.1 1CD PowerFlow v3.3p3a for Linux 1CD(Exa公司的汽车外气流计算软件) Rotating Inertia Calculator v1.1 A.000(一款

Python300篇电子书免费送

此电子书集合由猪哥整理,免费发布于微信公众号:裸睡的猪. 此电子书集合将持续更新,获取最新电子书集合请关注微信公众号:裸睡的猪,回复:电子书此电子书集合仅用作个人学习,请勿用于商业获利!!! 数据科学速查表 零起点Python机器学习快速入门 <深度学习入门:基于Python的理论与实现>高清中文版PDF+源代码 <Python深度学习>2018中文版pdf+英文版pdf+源代码 stanford machine learning Python语言程序设计2018版电子教案 Pyt

hdu 4405 Aeroplane chess(概率DP 求期望__附求期望讲解方法)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4405 Problem Description Hzz loves aeroplane chess very much. The chess map contains N+1 grids labeled from 0 to N. Hzz starts at grid 0. For each step he throws a dice(a dice have six faces with equal p

XSS的原理分析与解剖(第二篇)

0×01 前言: 上节(http://www.freebuf.com/articles/web/40520.html)已经说明了xss的原理及不同环境的构造方法.本期来说说XSS的分类及挖掘方法. 当第一期出来的时候,反馈很好,但还是有很多人提出疑问,我这里就解答下. 问1:如果我输入PHP语句会不会执行. 答1:不会,因为XSS是面对前台的(用户可见部分),而PHP则是后台处理(用户不可见部分),如果可以执行PHP语句的话,那不叫XSS,叫"任意代码执行". 问2:XSS和CSRF有

深度学习性能提高

性能提高分为四个部分: 1. 通过数据提升性能 2. 通过算法提升性能 3. 通过算法调参提升性能 4. 通过嵌套模型提升性能 通常来讲,随着列表自上而下,性能的提升也将变小.例如,对问题进行新的架构或者获取更多的数据,通常比调整最优算法的参数能带来更好的效果.虽然并不总是这样,但是通常来讲是的. 1. 通过数据提升性能 对你的训练数据和问题定义进行适当改变,你能得到很大的性能提升.或许是最大的性能提升. 以下是我将要提到的思路: 获取更多数据 创造更多数据 重放缩你的数据 转换你的数据 特征选

大数据新兴思维

大数据行业人士必知10大数据思维原理 大数据思维原理是什么?简单概括为10项原理,当样本数量足够大时,你会发现其实每个人都是一模一样的. 一.数据核心原理 从"流程"核心转变为"数据"核心 大数据时代,计算模式也发生了转变,从"流程"核心转变为"数据"核心.Hadoop体系的分布式计算框架已经是"数据"为核心的范式.非结构化数据及分析需求,将改变IT系统的升级方式:从简单增量到架构变化.大数据下的新思维--

XSS的原理分析与解剖(二)

0×01 前言:  上节(http://www.freebuf.com/articles/web/40520.html)已经说明了xss的原理及不同环境的构造方法.本期来说说XSS的分类及挖掘方法. 当第一期出来的时候,反馈很好,但还是有很多人提出疑问,我这里就解答下. 问1:如果我输入PHP语句会不会执行. 答1:不会,因为XSS是面对前台的(用户可见部分),而PHP则是后台处理(用户不可见部分),如果可以执行PHP语句的话,那不叫XSS,叫"任意代码执行". 问2:XSS和CSRF