法律状态公告日
法律状态信息
法律状态
2018-08-24
授权
授权
2017-01-04
实质审查的生效 IPC(主分类):G06F11/36 申请日:20160726
实质审查的生效
2016-12-07
公开
公开
技术领域
本发明公开了基于主成分分布函数的软件缺陷预测不平衡数据处理方法,属于软件工程应用的技术领域。
背景技术
随着信息技术的迅速发展,计算机软件的应用越来越广泛。高效、安全的软件系统高度依赖于软件的可靠性,而影响软件可靠性的软件缺陷已成为导致系统错误、失败、崩溃、甚至是灾难的根本原因。对软件缺陷进行准确的预测有助于减少测试工作量,降低成本。目前软件缺陷预测面临着一个严重且无法回避的问题,即数据的不平衡问题。数据的不平衡性是指,数据集类别分布不均匀,使得其中某个类别占支配地位。数据的不平衡问题会严重干扰软件缺陷的预测精度,对少的那一类非常不利,但是通常少数类更会受到关注。如,假设在软件缺陷数据集中,无缺陷的样本数要远大于有缺陷的样本数,则在缺陷预测时,即使分类器把所有的样本都预测为无缺陷,预测的精度仍然很高,这对于软件缺陷预测研究是非常危险的,因为准确预测出有缺陷的样本才是软件缺陷预测真正的目的。
综上,在当今软件产品飞速发展的情况下,提高软件的可靠性已迫在眉睫。软件缺陷预测作为提高可靠性的重要方式也得到越来越多的关注,而数据的不平衡性又是软件缺陷预测研究面临的无法规避、必须解决的问题。
现有的处理数据不平衡的算法主要针对于三个方面:(1)改变原有的数据分布,即通过过抽样和欠抽样或是同时使用过抽样和欠抽样,改变原有数据类别分布。主要的过抽样方法有随机过抽样、Smote算法、Borderline-Smote算法、Random-Smote算法;主要的欠抽样方法有随机欠抽样、压缩最近邻(CNN)方法、Tomek方法、邻域清理(NCL)算法、以及过抽样和欠抽样结合的方法,如Smote+Tomek、Smote+ENN。(2)设计新的分类算法,主要包括代价敏感学习,单类学习,集成学习,其中用的最多的就是集成学习,包括AdaBoost、AdaCost、RareBoost。(3)设计新的分类器评价指标,如F-value、G-mean、AUC。
本发明旨在提出一种能够提高软件缺陷预测精度的不平衡数据处理方法。
发明内容
本发明的发明目的是针对上述背景技术的不足,提供了基于主成分分布函数的软件缺陷预测不平衡数据处理方法,采用本发明公开的不平衡数据处理方法能够有效提高软件缺陷预测的精度,解决了数据平衡干扰软件缺陷预测精度的技术问题。
本发明为实现上述发明目的采用如下技术方案:
基于主成分分布函数的软件缺陷预测不平衡数据处理方法,包括如下步骤:
A、对从软件数据集中获取的数据进行预处理得到原始样本集;
B、采用PCA算法对原始样本集进行降维处理得到包含无缺陷样本集和有缺陷样本集的主成分数据集;
C、对无缺陷样本集进行欠抽样,剔除无缺陷样本集的边界样本和噪声样本;
D、对有缺陷样本集对应的主成分数据进行分布拟合得到新的有缺陷样本集;
E、筛选新的有缺陷样本集得到新样本集;
F、计算新样本集中各样本与原始样本集的欧式距离以剔除新样本集中的噪声样本;
G、融合剔除了噪声样本的新样本集、有缺陷样本集、欠抽样后的无缺陷样本集得到预测数据集。
进一步的,所述基于主成分分布函数的软件缺陷预测不平衡数据处理方法中,步骤C采用Tomek算法剔除无缺陷样本集的边界样本和噪声样本。
再进一步的,所述基于主成分分布函数的软件缺陷预测不平衡数据处理方法中,步骤D的具体方法为:将有缺陷样本集对应的主成分数据平移至非负区域,对平移后的主成分数据进行分布拟合得到每个主成分的最优拟合分布函数,将每个最优拟合分布函数生成的随机数平移至主成分数据所属区域,以主成分数据所属区域内的随机数构成新的有缺陷样本集。
更进一步的,所述基于主成分分布函数的软件缺陷预测不平衡数据处理方法中,步骤E采用3倍标准差原则筛选新的有缺陷样本集得到新样本集,具体为:计算新的有缺陷样本集中同一属性下所有随机数的均值和方差,剔除处于均值±3倍标准差区间之外的随机数。
作为所述基于主成分分布函数的软件缺陷预测不平衡数据处理方法的再进一步优化方案,步骤F的具体方法为:在当前新样本到无缺陷样本集的最短距离小于当前新样本到有缺陷样本集的最短距离时,剔除当前新样本。
本发明采用上述技术方案,具有以下有益效果:本发明首先利用主成分分析技术降低数据的维度,避免在实验中出现维度灾难;利用Tomek算法去除无缺陷样本集中的边界样本和噪声样本,从而避免了丢失无缺陷样本集的部分信息;利用拟合的分布函数生成随机数以合成新的有缺陷样本集,并利用“3倍标准差”原则去掉位于数据两端的值,与原始数据的分布非常接近;通过计算新合成的有缺陷样本与原始样本集的欧式距离,去除掉新合成的有缺陷样本集中的噪声样本,避免了新合成的有缺陷样本混入到无缺陷样本集中,影响最终的缺陷预测效果。
附图说明
图1是基于主成分分布函数的软件缺陷预测不平衡数据处理方法流程图。
具体实施方式
下面结合附图对发明的技术方案进行详细说明。如图1所示,本发明首先利用主成分分析技术降低数据的维度,避免在实验中出现维度灾难;利用Tomek算法去除无缺陷样本集中的边界样本和噪声样本,从而避免了丢失无缺陷样本集的部分信息;利用拟合的分布函数生成随机数以合成新的有缺陷样本集,并利用“3倍标准差”原则去掉位于数据两端的值,与原始数据的分布非常接近;通过计算新合成的有缺陷样本与原始样本集的欧式距离,去除掉新合成的有缺陷样本集中的噪声样本,避免了新合成的有缺陷样本混入到无缺陷样本集中,影响最终的缺陷预测效果。
第一步,从软件数据集中获取软件缺陷预测属性集以及对应软件模块数据,对每个样本数据做标签处理,即是否有缺陷,并对得到的数据进行包括去除异常值,缺失值以及重复值的预处理,得到原始样本集。
第二步,利用主成分分析算法(PCA,Principal Component Analysis)对原始数据进行降维,得到的主成分是原始样本数值的线性组合,设定主成分的累积贡献率为85%,从而确定最终的主成分数据集,在之后的所有实验中,此数据集代替原始样本集,主成分数据集包含无缺陷数据集和有缺陷数据集。
第三步,利用Tomek算法对无缺陷样本数据集进行欠抽样,计算所有无缺陷样本与有缺陷样本集的Tomek link,与有缺陷样本集能够构成Tomek link的无缺陷样本为边界样本和噪声样本,应该剔除:首先计算无缺陷样本zj到所有有缺陷样本的最短距离rag1,并找到该距离对应的有缺陷样本xk,然后计算zj到自身类中所有样本(除去自身)的最短距离rag2,若rag1>rag2,则说明当前无缺陷样本zj不能和有缺陷样本集中的样本构成Tomek>k到所有无缺陷样本的最短距离rag3,若rag3<rag1,则说明当前无缺陷样本zj不能和有缺陷样本集中的样本构成Tomek>k到自身类中所有样本(除去自身)的最短距离rag4,若rag4<rag1,则说明当前无缺陷样本zj不能和有缺陷样本集中的样本构成Tomek>j和有缺陷样本xk构成了一个Tomek>j是边界样本或是噪声样本,应剔除。
第四步,对有缺陷样本集对应的主成分数据集进行分布拟合:在拟合时,先将所有的主成分数据向右平移一定的单位,即加上一定的数值,以确保主成分数据集中不存在负值,并对平移后的主成分数据进行分布拟合,如此便可拟合几乎所有主成分的最优分布函数了,拟合函数的方法采用Q-Q图,通过对比数据图形与该分布的标准图形得到最优分布;然后用得到的各最优分布函数生成随机数,将所得的随机数再向左平移原来的单位,即将所有生成的随机数减去之前加上的数值,如此便可还原平移前的数据分布,以主成分数据所属区域内的随机数构成新的有缺陷样本集。
第五步,对新的有缺陷样本集进行“3倍标准差”筛选:首先计算出新的有缺陷样本集中同一属性下所有随机数的均值和方差,然后计算出均值±3倍标准差的区间,去除掉所有没落在该区间的样本,此步骤用于消除分布函数生成的随机数取值范围太大对实验的影响。
第六步,计算所有新的有缺陷样本到原始有缺陷样本集的欧式距离以及所有新的有缺陷样本到原始无缺陷样本集的欧式距离,从而删除噪声样本:对于每一个经过“3倍标准差“原则筛选后保留下来的新的有缺陷样本ri,首先计算出ri到无缺陷样本集的最短欧式距离d1i,即:
d1i=min(d1ij)
其中,表示新的有缺陷样本ri到原始无缺陷样本zj的距离,
然后计算出新的有缺陷样本ri到原始有缺陷样本xk的最短欧式距离d2i,即:
d2i=min(d2ik)
其中,表示新的有缺陷样本ri到原始有缺陷样本xk的距离,T表示原始样本集经过主成分分析后的维度;
若d1i<d2i,表示该新样本到无缺陷样本集的距离小于其到有缺陷样本集的距离,属于噪声样本,应去除掉。
第六步,将筛选后留下的新合成有缺陷样本与原始有缺陷样本以及经欠抽样筛选后的无缺陷样本相融合得到新的实验数据集,以新的实验数据集为预测数据集,并将预测数据集划分为训练集和测试集。
第七步,利用训练集训练出分类回归树,分裂准则采用GINI指数,并对得到的分类回归树进行剪枝,避免出现过拟合,最后用训练得出的分类回归树对测试集中的数据进行预测。鉴于数据的不平衡性,原始的性能评价指标并不能很好的反映数据的预测效果,采用F-Value和G-mean值评价预测结果,F-Value和G-mean值的计算都是基于混淆矩阵的,F-Value值表示的是召回率和准确率的重要性,计算公式为:
G-mean值则可以看出分类器的平衡度,若G-mean值很高,则表示分类器是平衡的,计算公式为:
表1混淆矩阵
其中,TP为实际无缺陷且分类正确的模块数,FN为实际无缺陷但被分类错误的模块数,FP为实际有缺陷但被分类错误的模块数,TN为实际有缺陷且分类正确的模块数。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案实质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器,或者网络设备等)执行本发明的实施例或实施例的某些部分所述的方法。
机译: 基于动作的过程中软件缺陷预测基于软件开发活动的软件缺陷预测技术
机译: 基于动作的过程中软件缺陷预测基于软件开发活动的软件缺陷预测技术
机译: 软件缺陷预测装置,软件缺陷预测方法和软件缺陷预测程序