基于机器学习的软件缺陷预测研究

上传人:woxinch****an2018 文档编号:39306870 上传时间:2018-05-14 格式:DOC 页数:7 大小:346KB
返回 下载 相关 举报
基于机器学习的软件缺陷预测研究_第1页
第1页 / 共7页
基于机器学习的软件缺陷预测研究_第2页
第2页 / 共7页
基于机器学习的软件缺陷预测研究_第3页
第3页 / 共7页
基于机器学习的软件缺陷预测研究_第4页
第4页 / 共7页
基于机器学习的软件缺陷预测研究_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于机器学习的软件缺陷预测研究》由会员分享,可在线阅读,更多相关《基于机器学习的软件缺陷预测研究(7页珍藏版)》请在金锄头文库上搜索。

1、作者单位:100080 北京 中国科学院软件研究所互联网实验室 1基于机器学习的软件缺陷预测研究刘 旸摘要摘要 基于机器学习的软件缺陷预测是一种有效的提高软件可靠性的方法。该方法基于软件模块的 统计特性预测软件模块可能出现的缺陷数或是否容易出现缺陷。通过对软件模块缺陷状况的预测,软 件开发组织可以将有限的资源集中于容易出现缺陷的模块,从而有效的提高软件产品的质量。基于机 器学习的软件缺陷预测近年来出现了很多研究成果,本文概述该领域近年来的主要研究成果,并根据 各方法的特点进行了分类。 关键词关键词 软件缺陷预测;机器学习Survey on Software Prediction based o

2、n Machine Learning Liu Yang Lab for Internet Software Technologies Institute of Software Abstract Software Quality Prediction Based on Machine Learning is an effective way to improve software reliability. This technology predicts the number of faults in software module or whether a software module i

3、s fault-prone or not based on statistical feature of software module. According to the prediction of faults in software module, software developing organization can focus on fault-prone module to improve software quality effectively. This technology is now a proven way to improve software quality. I

4、mprovement emerged in recent years about it. This paper will study these improvements by categories. key word Software Fault Prediction; Machine Learning1. 引言在软件度量工作中,与软件产品相关的常用度 量元可以分为静态度量元和动态度量元两类。静态 度量元可以通过对软件产品的静态统计得到,如代 码行数、函数/方法的数量等等,这些度量元也称作 统计度量元。与之对应的,需要在产品运行过程中 采集的非统计性的度量元也称作动态度量元或动态 指标。如缺

5、陷数量。 软件缺陷是指可运行产品中会导致软件失效的 瑕疵12。软件缺陷数量属于动态度量元,需要通 过对产品进行完整测试才能获得。针对软件模块进 行完整测试成本高昂,并且必须在软件产品开发完 成之后才能进行测试,因而难以控制软件产品缺陷 数量。为了更好的提高软件质量,对软件模块的缺 陷进行预测是一个可行的方法。软件缺陷预测方法 的假定前提是软件的复杂度和软件的缺陷数量有密 切关系。复杂度高的软件模块会比复杂度低的模块 包含更多的缺陷。软件缺陷预测的思路是使用静态 度量元表征软件的复杂度,进而预测软件模块可能 的缺陷数量或者发生缺陷的可能性。 通过机器学习进行软件缺陷预测,能够以较低的成本在项目开

6、发的早期预测产品的缺陷分布状况, 以便调整有限的项目资源,集中处理可能出现较多 缺陷的高风险模块,从而提高软件产品整体的质量。 基于机器学习的早期缺陷预测已经被证明是获得高 软件可靠性的有效方法1。 基于机器学习的的缺陷预测包含 3 个步骤: 1. 选择适当的统计度量元集合并采集软件产品 的统计数据; 2. 构造预测模型; 3. 将统计数据输入预测模型得到预测结果。 在实际的应用中,根据应用环境、开发项目、 开发组织等等的不同,预测方法所选取的度量元集 合通常会有所不同。常用的表示复杂度的度量元有 代码行 LOC 等。研究表明,使用多度量元能够更 好的表达程序的特征,从而更好的预测软件缺陷8。

7、 度量元的选取在很大程度上仍然依赖于度量人员的 经验。目前的研究多集中于使用面向对象或面向过 程技术的传统软件产品的缺陷预测。 虽然不同度量元的数据采集方法不同,但在步 骤 2 的预测算法中对不同的度量元并不区分处理, 预测算法具有通用性。2. 常用的预测方法作者单位:100080 北京 中国科学院软件研究所互联网实验室 2在基于机器学习的软件缺陷预测方法中,预测 模型是最核心的部分。在确定度量元并按照这些度 量元在实际项目中采集一定数据之后,预测方法将 根据采集到的数据建立预测模型。这样在输入度量 元数据时,模型即可预测模块的缺陷状况。根据建 立预测模型方法的不同,以下将对缺陷预测中常用 的

8、一些机器学习预测方法进行分类说明。 按照预测目标的不同,缺陷预测方法可以为分 类思路和回归思路两类。 分类思路将软件模块分为三类:高缺陷率模块、 低缺陷率模块和中等缺陷率模块。也有一些研究将 其简化为高缺陷率模块(fault-prone,fp)和低缺陷 率模块(non fault-prone,nfp)两类。此时预测问 题转化为模式识别问题。预测算法根据已有训练集 的数据,判断未知的软件模块是否属于有高缺陷风 险的那一类。 分类思路在一定程度上减少了训练数据中噪音 的干扰。同时模式识别也是人工智能/机器学习领域 研究热点之一,模式识别领域的一些研究成果可以 方便的应用在分类思路上。分类思路可以应

9、用的预 测方法有:线性判别分析 LDA,布尔判别函数 BDF,分类回归树 CART,优化集精简方法 OSR, 人工神经网络 ANN,聚类分析 Clustering。 回归思路采用回归分析的思路,将所需要预测 的缺陷数量/软件质量指标看作依赖于统计度量元的 连续函数,用预测模型逼近这个未知的函数。此时 预测问题转化为对于一个未知多元函数的拟合问题。回归思路可以应用的预测方法有:多线性回归 MLR,CART,OSR,ANN。可以看到有一些预测 方法可以同时应用于分类和回归思路。 由于软件开发存在着很多的不确定因素,因此 训练数据中不可避免的带有噪音。预测算法一方面 要尽可能的从训练数据中提取问题的

10、规律,另一方 面也要避免由于预测算法对训练数据的过度适应而 影响算法的泛化能力(Generalization) 。3. 基于机器学习的软件缺陷预测实现3.1 主分量分析 PCA主分量分析(Principle Component Analysis,PCA)也称作 KL 变换。在缺陷预测领域, PCA 被用于去除统计度量元数据之间的相关性并进 行度量元数据维度压缩。 直接从软件项目中得到的软件度量数据通常都 有很强的相关性。这样的数据通常会降低预测模型的稳定性和预测结果的精度。因此很多研究使用 PCA 去除数据的相关性。PCA 的目标是寻找可逆 的线性变换,使得对的截断在均方误差QaQx 意义下最

11、优。这里的是输入的度量数据向量,x 是线性变换得到的结果。即要求变换后的分量ax 具有依次降低的方差。当满足此条件时,中的单位向量代表主方向,12,.,T mQq qqjq输入向量在上的投影即为第个主分xjqT jjaq xj量。满足,。jq1 0ijq q jiji原始度量数据经过线性变换 得到的结果称作 主分量(Principle Component,PC)或领域特征。 通过丢弃一些方差比较小的领域特征,可以达到维 数压缩的目的:,1212,.,.,TTTTT lmaaaq qqx lm研究表明 PCA 方法能够有效地去除数据相关 性,提高缺陷预测的准确性456。3.2 线性判别分析 LD

12、A线性判别分析(Linear Discriminant Analysis,LDA)也称作费舍尔(Fisher)判别方法。 在缺陷预测领域中用于高缺陷风险的程序识别8。 LDA 的数学表述如下: 为了实现最优分类,需要知道后验概率。设是类中的类条件密Pr|G X kfxGkX度,而是类的先验概率,并且。由kk11Kk k贝叶斯定理有: 1Pr|kk Kll lfxGk Xx fx 用多元高斯分布对每个类密度建模,每个类具 有共同的协方差矩阵,。为了比较两个k k类和 ,考察对数比率有:kl 11Pr|logloglogPr|1log2kkllTTk klklkl lGk Xxfx Gl Xxfx

13、x 判定规则的等价描述为:作者单位:100080 北京 中国科学院软件研究所互联网实验室 3 111log2TT kkkkkxx其中 argmaxkkG xxLDA 的学习过程就是根据训练数据估计高斯分 布参数的过程:1/iikkkik gkTKkkii kgkNNxNxxNK LDA 的特点决定了它只能应用于分类思路。 LDA 的优点是易于实现,计算复杂度低。但由于 LDA 假设预测对象的每个分类都服从具有相同协方 差矩阵的多元高斯分布,因而预测能力比较差,不 能适应软件度量数据之间复杂的关系。研究表明 LDA 的分类性能低于 ANN21。3.3 多线性回归 MLR多线性回归(Multipl

14、e Linear Regression,MLR)方法是一种统计学方法,用于 估计或者预测自变量为一系列已知变量的函数。 MLR 也称为回归分析(Regression Analysis,RA) 。常用的 MLR 模型有如下的形式:011011.iipipiipipiyaa xa xyaa xa xe 这里是采集到的度量数据,1,.,iipxx是需要估计的参数,是预测的输出值,0,.,paaiy是实际的输出值,是第 次数据预测iyiiieyy i的误差。 在 MLR 中训练过程也就是确定模型参数的过 程,该过程也称为模型选择。MLR 有多种不同的 模型选择方法可以使用。在渐进回归方法6中会对 自变

15、量集合进行优化调整,首先决定选用或者不选 用某些自变量,然后按照最小平方的原则估计参数。为了提高回归分析的适应能力,1992 年 Khoshgoftaar9提出用相对最小平方(Relative Least Square,RLS)和平均相对误差(Average Relative Error,ARE)作为误差函数进行线性回归。MLR 方法相对比较简单,易于实现。研究结 果表明 MLR 方法预测性能一般6。3.4 布尔判别函数 BDF布尔判别分析(Boolean Discriminant Function)的想法类似于 LDA,但不同的是在 BDF 中针对每一个度量元设置了一个关键值(critical value)或称阈值。如果有任意一个度量元超过这个 阈值,则将该模块判定为高风险或者高缺陷模块, 否则判定为低缺陷模块。即:当 ifpClass xnfp ETrue EFalse 这里。 1122.iiimmExcxcxc表示高缺陷风险,表示低缺陷风险。表fpnfpimx示采集到的度量数据,表示阈值。mcBDF 的优点是可以在训练过程中人为的调整 1 类错误(将低风险模块预测为高风险模块)

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 其它相关文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号