本发明专利技术公开了一种基于Adaboost的软件缺陷预测方法,首先将数据集中的大类样本按信息量大小分成若干个组,接着分别用每组数据训练当前集成分类器获得本轮样本惩罚参数;再用本组数据训练并由本轮得到的样本惩罚参数计算本轮迭代中的分类器和误差率,最终获得分类器。本发明专利技术在数据训练过程中样本惩罚参数只代表了本轮迭代的训练数据在当前集成分类器中是否能够被正确分类。并且在数据处理过程中基于朴素贝叶斯理论识别出并删除数据中信息量小的样本,这些样本是造成数据类不平衡、噪声等问题的主要原因,因此,本发明专利技术的数据处理方法有效地同时解决了类不平衡问题、噪声等数据分布问题,有效地提高了数据处理效率。
【技术实现步骤摘要】
一种基于Adaboost的软件缺陷预测方法
本专利技术涉及软件可靠性与软件缺陷预测
,更具体的说是涉及一种基于Adaboost的软件缺陷预测方法。
技术介绍
由于软件产品抽象的特殊性,人们不能直观地找出并修改软件中潜藏的所有缺陷,保证软件产品的可靠性。要获得一个高可靠性的软件产品,只能通过控制软件的设计、开发、测试过程来实现。其中,软件测试是发现缺陷、提高软件可靠性的重要手段,全面详细的软件测试可以在软件投入使用前找出软件中85%~95%的缺陷,最大程度地保证软件可靠运行,降低由于软件故障或失效造成的财产损失甚至人员伤亡。然而,随着软件的体量越来越大,测试的难度也越来越高,有限的资源不能再支持测试人员全面详细地测试系统中的每一个软件模块。软件缺陷预测领域中面对的重大阻碍之一即历史数据类不平衡分布问题。类不平衡问题是指,在软件缺陷预测的过程中,软件缺陷数据的质量直接影响着分类算法的效果,会导致关键模块不能得到充分的测试,一旦带有缺陷的软件投入使用,将引发严重后果。软件缺陷数据对分类算法最显著的影响就是数据类分布的不平衡问题,但也有研究表明阻碍分类结果进一步优化的数据问题并不单纯是由类不平衡一个问题造成的,样本类重叠、噪声、离群点等问题往往会伴随着数据类不平衡问题出现,并影响分类算法的分类效果。但是,现有数据处理方法都是对数据类不平衡分布、噪声处理等某一种问题提出的,不能够同时解决数据中的噪声、冗余等多种分布问题,因此,选择一种数据处理方法难以将历史数据处理达到最理想程度。对于现有的基于Adaboost的缺陷预测方法,Adaboost算法是一种集成学习算法,其原理是运用加法模型和向前分布算法将一系列弱分类器线性相加,最终获取一个强分类器。分析Adaboost算法过程可知,尽管Adaboost在缺陷预测领域有较好的预测效果,但是算法训练的目标是使损失函数降到最低,从而得到最高的准确率,每次迭代使用相同的全体数据对弱分类器进行训练。这种方法可能存在的不足在于如果数据不平衡分布,被不平衡数据训练的弱分类器会轻易地受到不平衡分布影响,为了得到更高的准确率从而牺牲小类样本的查准率。同时随着迭代次数的增多,每次迭代产生的样本惩罚系数ωm只能表征样本当前形成的集成分类器分类的惩罚权重,也即每次迭代中大类样本与小类样本被错分惩罚系数相同,因此集成分类器整体对大类样本的倾斜不会随着迭代次数的增加而改善。由于在软件缺陷预测中,错误识别一个小类样本造成的损失远远大于错误识别一个大类样本,因此Adaboost中的这个问题正是软件缺陷预测中不能接受的。因此,如何获得一种在样本量较小时能够在测试工作开始实施之前,对软件模块是否可能存在缺陷进行合理预测,重点关注预测中可能存在缺陷的模块,合理地分配测试资源,从而有效降低测试成本的软件缺陷预测方法是本领域技术人员亟需解决的问题。
技术实现思路
有鉴于此,本专利技术提供了一种基于Adaboost的软件缺陷预测方法,能够灵活应对数据集样本量等分布特征变化的方法,这种方法在克服朴素贝叶斯算法受数据分布影响大的同时,提升Adaboost分类算法对小类样本的查准能力。本专利技术的软件缺陷预测方法改变了Adaboost算法每轮迭代使用的训练数据,对算法本身的理论结构不产生影响,并且在数据处理过程中基于朴素贝叶斯理论识别出数据中信息量小的样本,有效地解决了类不平衡问题、噪声等数据分布问题,有效提高了数据处理效率。为了实现上述目的,本专利技术采用如下技术方案:一种基于Adaboost的软件缺陷预测方法,包括如下具体步骤:步骤1:采集软件缺陷数据组成原始训练数据集,对原始训练数据集进行分类划分,获得n组训练数据组;步骤11:输入原始训练数据集S0;步骤12:将所述训练数据集S0按标签类别划分为大类样本集SMaj和小类样本集SMin;步骤13:分别计算所述大类样本集SMajk维特征的样本均值和样本方差以及大类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别Y=0时,大类样本Xik取值为xik时的后验概率为步骤14:分别计算所述小类样本集SMink维特征的样本均值和样本方差以及小类样本后验概率,其中k=1,2,...,m,m为特征数,所述样本类别Y=0时,所述大类样本Xik取值为xik时的所述后验概率为步骤15:遍历所述大样本集合SMaj中每个样本的m个特征,计算样本特征变量Dik=P(Xik=xik|Y=0)-P(Xik=xik|Y=1);步骤16:对m个所述样本特征变量Dik求和得到样本信息量大小步骤17:根据所述样本信息量大小γ对所述大类样本集SMaj中的所有所述大类样本进行排序并分组,获得n组样本子集S1,S2,S3,…Sn;步骤2:遍历n组所述训练数据组进行训练,获得若干弱分类器,将若干所述弱分类器融合获得集成分类器;步骤21:初始化迭代次数m=1,初始化样本惩罚系数ωm=1/n,初始所述训练数据组Am=SMaj∩SMin;步骤22:输入所述训练数据组Am,m≤n,根据所述样本惩罚系数ωm训练所述训练数据组Am并获得弱分类器Gm;步骤23:根据所述弱分类器Gm计算弱分类器误差率em和弱分类器权重系数am;步骤24:根据所述弱分类器权重系数am对所述弱分类器Gm进行融合,获得当前集成分类器Fm;步骤25:如果n组所述训练数据组遍历结束,则输出当前集成分类器Fm为集成分类器;否则更新所述训练数据组Am+1=Am-Sm,Sm为所述样本子集,令m=m+1,根据所述当前集成分类器更新所述样本惩罚系数ωm,并返回所述步骤22;步骤3:将软件运行数据输入所述集成分类器,输出软件缺陷预测结果。经由上述的技术方案可知,与现有技术相比,本专利技术公开提供了一种基于Adaboost的软件缺陷预测方法,首先将数据集中的大类样本按信息量大小分成若干个组,接着分别用每组数据训练当前集成分类器获得本轮样本惩罚参数;再用本组数据训练并由本轮得到的样本惩罚参数计算本轮迭代中的分类器和误差率,最终获得分类器。本专利技术在数据训练过程中改变了传统Adaboost算法每轮迭代使用的训练数据,对算法本身的理论结构不产生影响,与Adaboost中样本惩罚参数一次更新全体训练数据惩罚参数不同,本专利技术中样本惩罚参数只代表了本轮迭代的训练数据在当前集成分类器中是否能够被正确分类。并且在数据处理过程中基于朴素贝叶斯理论识别出数据中信息量小的样本,这些样本是造成数据类不平衡、噪声等问题的主要原因,因此,本专利技术的数据处理方法有效地同时解决了类不平衡问题、噪声等数据分布问题,有效提高了数据处理效率。本专利技术提出的预测方法经过实验验证在90%的实验数据中,效果优于其他预测方法,对Adaboost方法的提升效果经过显著性检验,显著优于原方法,有效地提升了软件缺陷预测的查全率、查准率。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而本文档来自技高网...
【技术保护点】
1.一种基于Adaboost的软件缺陷预测方法,其特征在于,包括如下具体步骤:/n步骤1:采集软件缺陷数据组成原始训练数据集,对原始训练数据集进行分类划分,获得n组训练数据组;/n步骤2:遍历n组所述训练数据组进行训练,获得若干弱分类器,将若干所述弱分类器融合获得集成分类器;/n步骤3:将软件运行数据输入所述集成分类器,输出软件缺陷预测结果。/n
【技术特征摘要】
1.一种基于Adaboost的软件缺陷预测方法,其特征在于,包括如下具体步骤:
步骤1:采集软件缺陷数据组成原始训练数据集,对原始训练数据集进行分类划分,获得n组训练数据组;
步骤2:遍历n组所述训练数据组进行训练,获得若干弱分类器,将若干所述弱分类器融合获得集成分类器;
步骤3:将软件运行数据输入所述集成分类器,输出软件缺陷预测结果。
2.根据权利要求1所述的一种基于Adaboost的软件缺陷预测方法,其特征在于,所述步骤1基于贝叶斯算法进行数据分类方法LIMCR具体实现过程为:
步骤11:输入原始训练数据集S0;
步骤12:将所述训练数据集S0按标签类别划分为大类样本集SMaj和小类样本集SMin;
步骤13:分别计算所述大类样本集SMajk维特征的样本均值和样本方差以及大类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别Y=0时,大类样本Xik取值为xik时的后验概率为
步骤14:分别计算所述小类样本集SMink维特征的样本均值和样本方差以及小类样本后验概率,其中k=1,2,...,m,m为特征数,所述样本类别Y=1时,所述大类样本Xik取值为xik时的所述后验概率为进入步骤15;否则输出重采样数据集Snew;
步骤15:...
【专利技术属性】
技术研发人员:吴玉美,常硕,刘斌,
申请(专利权)人:北京航空航天大学,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。