分享
基于类不平衡的软件缺陷倾向性预测研究_程雪平.pdf
下载文档

ID:2254576

大小:1.58MB

页数:7页

格式:PDF

时间:2023-05-04

收藏 分享赚钱
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,汇文网负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
网站客服:3074922707
基于 不平衡 软件 缺陷 倾向性 预测 研究 程雪平
现代计算机Modern Computer第 28 卷 第 24 期2022年12月25日基于类不平衡的软件缺陷倾向性预测研究程雪平,陈海华(广州华商学院数据科学学院,广州511300)摘要:软件缺陷倾向性预测是提高软件测试效率、保证软件质量的重要手段之一,类不平衡是软件缺陷数据集中固有的问题。利用公开的NASA软件缺陷数据仓库中的部分数据集,分别采用随机过采样、人工少数类过采样法(synthetic minority oversampling technique,SMOTE)、改进的SMOTE过采样算法处理类不平衡问题,然后使用随机森林预测模型对各软件模块的缺陷倾向性进行预测,最后利用查准率、召回率、AUC等性能评价指标对比不同采样方法处理缺陷数据集类不平衡问题的效果。关键词:机器学习;类不平衡;缺陷倾向性预测;过采样;随机森林模型基金项目:广州华商学院2021年度青年学术类科研项目(2021HSQX50)文章编号:1007-1423(2022)24-0015-07DOI:10.3969/j.issn.1007-1423.2022.24.0030引言软件缺陷是指软件系统中不被期望、不可接受的偏差1。软件缺陷的产生主要源于对软件需求做出了错误的理解,或者在设计、编码过程中,研发人员由于经验或技术原因引入的人为错误。软件缺陷的存在可能会导致巨大的经济损失,甚至会威胁到人的生命安全。软件缺陷具有累积放大效应,即在整个软件生命周期中,能够越早地发现缺陷,其修复的代价就越小;反之,其修复的代价就越大。现代软件工程中,随着软件规模日益庞大,软件复杂度越来越高,软件开发的响应速度、用户对软件质量的要求均越来越高。如何合理分配有限的资源,及时发现、修复缺陷,是保证软件质量的关键。软件缺陷预测是保障软件质量的重要手段,也是近年来软件工程领域的研究热点问题之一2。软件缺陷预测技术主要包括三个方向:一是通过软件度量元数据对软件模块的缺陷倾向性进行预测;二是预测模块的缺陷数;三是对缺陷严重程度等进行预测3。软件缺陷倾向性预测技术是软件缺陷预测的重要研究方向,是对系统中的模块是否存在缺陷做出预判,有助于提前对软件测试的资源分配做好合理的安排,为软件质量提供坚实的保障。软件缺陷倾向性预测是一个不平衡的二分类问题4,目前所使用的研究算法包括复杂网络、多目标优化、深度学习等,更多的是基于机器学习算法进行研究,如逻辑回归、朴素贝叶斯、决策树、支持向量机等算法5。本文选取软件缺陷预测中广泛使用的数据仓库NASA MDP中的部分数据集,对原始数据中的异常值和重复值进行预处理,然后使用三种不同的过采样方法处理不平衡类,最后根据特征数据采用随机森林算法构建预测模型。1缺陷倾向性预测总体方案软件缺陷倾向性预测过程由四部分组成:获取软件缺陷数据资源库、数据预处理、处理类不平衡问题、构建预测模型及评价指标,总体解决方案如图1所示。1 1.1 1软件缺陷数据资源库软件缺陷数据资源库当前,用于软件缺陷预测的数据主要有两大类,包括商业性的数据仓库和公共仓库。商业性数据仓库难以获取,以这类数据源进行研究,其实验结果难以比较和重现,因此,研究人员通常利用公共数据仓库进行研究。较为常见的公共库包括NASA、PROMISE、AEEEM以及ReLink等,15现代计算机2022年这些公共库中的度量元与缺陷信息都是可用的,有利于实验结果的重现与分析比较。NASA库中总共包含13个缺陷数据集,其中,每个模块对应一条样本数据,无缺陷的模块数据以N为标记结束,有缺陷的模块以Y为标记结束,以CM1数据集为例,其数据结构如图2所示。图 1软件缺陷倾向性预测方案模型本文选取 NASA 库中前四个数据集作为软件缺陷倾向性预测实验数据进行分析比较:CM1、JM1、KC1、KC3。观察软件缺陷实验数据集,无缺陷模块数与有缺陷的模块数相比,前者要多的多,这一现象与工程实践中的软件缺陷分布情况类似,即系统中的软件缺陷分布基本满足二八原则:20%的模块集中了80%的缺陷数。图3给出了CM1、JM1、KC1、KC3 四个数据集的有缺陷模块与无缺陷模块的计数饼图。无论是工程实践,还是提供研究的公共数据仓库中,软件缺陷预测数据集存在着严重的类不平衡问题。在软件缺陷数据集中,由于有缺陷样本与无缺陷样本遵循二八定律,做缺陷倾向性预测时,若把所有模块预测为无缺陷,其模型准确度依旧会很高,但会严重影响软件缺陷倾向性的真实分类。图 2CM1数据结构 CM1数据集JM1数据集KC1数据集KC3数据集图 3实验数据集中有缺陷样本与无缺陷样本对比图预测模型若将不同类的样本数据进行错误的分类,付出的代价有所不同。在软件缺陷倾向性预测中,如果将无缺陷的样本分类成有缺陷样本,会导致测试人员在进行软件测试工作时,将宝贵的时间资源浪费在无缺陷模块上;另一方面,若将有缺陷样本预测成无缺陷样本,则会出现缺陷漏报,缺陷漏报后把有缺陷的产品交付给客户,这将会产生无法估量的后果,甚至使得项目产生灭顶之灾。因此,在构建预测模型之前,需要处理软件缺陷数据集的不平衡问题。1 1.2 2数据预处理数据预处理软件缺陷倾向性预测数据预处理主要包括 16程雪平等:基于类不平衡的软件缺陷倾向性预测研究第24期两个方面:一是对异常数据的处理,二是对数据集中的类不平衡问题进行处理。基于机器学习的原始异常数据总体分为重复数据、缺失数据以及噪声数据6。重复数据指同一条数据在数据集中出现多次,这类异常数据的存在会使预测结果具有更强的倾向性。对重复数据的处理可以根据重复数据所占的比例进行降重,使其概率分布合理化。缺失数据指样本中某些属性对应的值缺失,这类异常数据存在的主要原因是信息的丢失。对缺失数据的处理,可以利用均值、极大似然值或者同类均值进行填充。噪声数据指与其它数据有严重偏离的数据,对噪声数据可以使用线性回归的方式进行替换。本文首先利用散点图对异常值进行检测,而后通过上述常规方法对数据集中的异常数据进行处理获得异常数据处理后的数据集。对于类不平衡问题,可以从三个方面进行处理:数据处理层面、数据特征层面以及模型算法层面7。数据处理层面解决类不平衡问题的主要思想是同对源数据集中的类进行重采样,从而使得小类样本与大类样本的数量之间趋于平衡。当前,重采样是解决类不平衡问题最直接的方法5。数据特征层面解决类不平衡问题的主要思想是自动化地选择不平衡类中具有良好区分能力的特征子集,从而提高小类以及整体分类的准确率。模型算法层面处理类不平衡问题主要有代价敏感算法、单类学习、集成学习等8。本文实验主要用重采样方法处理类不平衡问题,并对不同的采样方法所产生的效果进行分析比较。重采样方法可以分为下采样和上采样两种。下采样方法也称为欠采样,指的是通过一定的算法,将大类样本中的部分数据剔除,从而使得大类样本数据与小类样本数据趋于平衡。欠采样采样方法处理类不平衡问题,可能会导致大量有用的数据丢失,从而导致模型存在欠拟合问题。本文主要使用上采样方法处理类不平衡问题,对下采样方法不做过多赘述。上采样也称为过采样,是指通过增加小类样本数量的方法与大类的样本数量趋于平衡。最为常见的过采样方法是随机过采样,即随机复制小类中的样本,这种方法的优点是简单便捷,但这样一来会造成对小类样本识别不足的过拟合现象。由此,SMOTE过采样算法9被提了出来。图4描述了SMOTE过采样算法生成新样本的过程。如图 4所示,SMOTE过采样算法生成新样本的主要过程分为如下四个步骤:(1)在小类样本中随机选择一个样本作为中心样本点;(2)搜索与中心样本点距离最近的k个邻近同类样本;(3)在(2)中选出的 k个近邻样本中随机选择一个样本与中心样本点进行连线;(4)在中心样本点与随机选择的样本连线之间随机生成一个新的小类样本数据。由上述算法可知,虽然SMOTE过采样算法相较于随机过采样有较大改进,但是在生成新样本时必须是成倍增加,如此便难以避免样本图 4SMOTE过采样算法合成新样本过程 17现代计算机2022年的重叠生成。基于此,有学者对基础SMOTE算法加以改进,其中以 borderline-SMOTE 算法10应用较为广泛。borderline-SMOTE 算法将小类样本数据分为三类:Safe样本点、Noise样本点以及Danger样本点,Danger样本指靠近分类边界的样本点。该算法对SMOTE算法的改进之处在于其仅选用边界上的小类样本,即Danger样本点合成新样本,避免成倍新样本的重叠生成,从而改善样本类别的分布。针对软件缺陷倾向性预测的类不平衡问题,本文将对比使用随机过采样、SMOTE过采样以及borderline-SMOTE采样方法的预测效果。1 1.3 3性能评价指标性能评价指标当前,针对分类预测能力的评价标准较多,如准确率(Accuracy)、查准率(Precision)、召回率(Recall)、Gmean、AUC等,通常来说,它们的值越大越好,本文选择查准率、召回率和AUC11作为模型性能评价指标。软件缺陷倾向性预测的结果是判断数据集中的每一个模块是否有缺陷,其取值要么为Y,要么为 N,因此,这是一个二分类问题。对于二分类问题的结果,可以用混淆矩阵12评测。混淆矩阵如表1所示。表 1混淆矩阵混淆矩阵预测值正负真实值正TPFN负FPTN表 1混淆矩阵中关于 TP、FP、FN以及 TN所代表的具体涵义诸多文献中均有详细表述,在此不再多加赘述。查准率反映分类器精准预测正样本的能力,即预测的正样本中有多少是真实的正样本,其计算公式如(1)所示:P=TPTP+FP(1)召回率反映分类器预测正样本全度的能力,即正样本被预测为正样本在总的正样本的比例,其计算公式如(2)所示:R=TPTP+FN(2)在软件缺陷数据集中,标记为有缺陷的样本定义为正例,无缺陷样本为负例。因此,查准率P表示预测为有缺陷的样本中,真实为有缺陷样本的占比数。召回率R表示真实的有缺陷样本被预测为有缺陷样本的占比数。AUC值通常被用来评价一个二值分类器性能的好坏,ROC 曲线13以下部分的面积就是AUC,AUC 的值越大,表示模型预测效果越好。为了比较不同的采样方法处理软件缺陷数据集中不平衡类的效果,本文引入AUC作为评价指标之一。1 1.4 4随机森林模型随机森林模型目前,用于软件缺陷预测的模型算法众多,较为常见的有逻辑回归、决策树、朴素贝叶斯、随机森林等。经过前人大量实践证明,随机森林分类算法在多数数据集上具有良好的性能表现14。随机森林算法15 是一种集成学习算法,它以决策树为基础学习器去构建Bagging集成。随机森林预测模型具有准确率高、简单、易于实现、计算开销小、性能强等优点。本文选择随机森林算法作为软件缺陷倾向性预测模型,可以比较不同的过采样方法处理不平衡类的性能表现。2实验分析2 2.1 1实验环境实验环境本文实验环境主要包括SPSS modeler 18.0和anaconda3下的jupyter,前者用来对异常值的检测与处理,前文提到的三种过采样算法以及随机森林预测模型算法的实现则是在jupyter环境中利用Python语言编程实现。2 2.2 2重采样方案的选择重采样方案的选择本文主要比较不同的上采样方法处理类不平衡问题的性能表现,因此在重采样方案中选择了三种不同的过采样方法观察预测效果:随机过采样、普通SMOTE过采样算法、borderlineSMOTE过采样算法。图 5以数据集 CM1为例,给出了三种不同过采样方法的处理结果。图5(a)是根据异常值处理后的数据集CM1 18程雪平等:基于类不平衡的软件缺陷倾向性预测研究第24期绘制出的散点图,反映了CM1数据集中有缺陷样本与无缺陷样本的分布情况,其中正方形散点代表有缺陷样本,菱形散点代表无缺陷样本。图5(b)是使用随机过采样方法生成新的有缺陷样本,使得有缺陷样本与无缺陷样本数量相当之后所绘制的散点图,虚线为有缺陷样本分布的趋势线,后同。通过对比图5(a)与图5(b),其数据分布几乎没有任何变化,这是因为随机过采样所生成的新样本是简单的随机复制原来的小类样本数据,其所有新生成的

此文档下载收益归作者所有

下载文档
你可能关注的文档
收起
展开