现代计算机ModernComputer第28卷第24期2022年12月25日基于类不平衡的软件缺陷倾向性预测研究程雪平,陈海华(广州华商学院数据科学学院,广州511300)摘要:软件缺陷倾向性预测是提高软件测试效率、保证软件质量的重要手段之一,类不平衡是软件缺陷数据集中固有的问题。利用公开的NASA软件缺陷数据仓库中的部分数据集,分别采用随机过采样、人工少数类过采样法(syntheticminorityover⁃samplingtechnique,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]。本文选取软件缺陷预测中广泛使用的数据仓库NASAMDP中的部分数据集,对原始数据中的异常值和重复值进行预处...