基于改进的Adaboost软件缺陷不平衡数据分类方法技术

技术编号:14989586 阅读:76 留言:0更新日期:2017-04-03 20:31
本发明专利技术公开了一种基于改进的Adaboost软件缺陷不平衡数据分类方法,主要解决现有软件缺陷数据的分类方法对少数类分类效果差的问题,包括以下步骤:A.从软件数据集中获取软件数据,做预处理。并将软件模块数据分为训练集和测试集以备训练和测试,采用十次交叉验证;B.利用基于改进的遗传算法与BP神经网络结合进行软件数据的特征选择,得到最优特征子集,从而对软件特征进行降维处理;C.根据得到的最优特征子集,充分考虑软件缺陷数据的不平衡性,训练基于改进的Adaboost分类器,对软件模块进行分类。本发明专利技术可提高少数类的分类精度,更好地检测软件缺陷模块。

【技术实现步骤摘要】

本专利技术属于软件工程应用领域,具体涉及一种基于改进的Adaboost软件缺陷不平衡数据分类方法
技术介绍
随着当代信息技术的高速发展,软件系统已经运用到国防建设、国民经济的各个方向和部门,以及人类活动的各个领域。软件系统所发挥的作用越来越大,相应地其规模也日益增大。例如,美国电信需要一个有超过一亿行代码的系统进行支持;航天飞机的机载系统有着近50万行的代码,地面控制系统及处理系统代码约有35万行,即使在对系统进行了大规模的缩减后,仍有将近百万行的代码来操纵整个航天系统。高稳定性对于这些装备来说极其重要,而大部分的装备系统的稳定性由计算机软件系统的安全性和可靠性决定的。因此,软件系统的稳定性和可靠性直接关系到整个系统的可靠性。由于各种原因,一些软件的缺陷是不可避免的发生,这些错误导致了软件缺陷隐含在软件中。对于隐藏的缺陷,如果不能及时地、准确地发现,有效地排除,将会对软件质量产生很大影响,甚至给软件使用者带来灾难性后果。曾有研究表明,专业软件开发人员平均每一千行代码就有6个缺陷,更糟糕的是随着软件规模增加,软件内在的缺陷数量呈指数增长。软件缺陷的过多导致缺陷定位和测试修复成本大大增加。例如,微软平均定位和修改一个软件缺陷需要12个小时;美国联邦调查局研究显示,有软件故障造成的直接经济损失达600亿美元。为了提高软件系统质量,学者们提出了软件缺陷预测的概念,软件缺陷预测可以帮助开发者更快地找到存在缺陷的模块,提高软件质量。软件缺陷预测的关键是发现有缺陷的模块,这实际上是一个二分类问题,即将软件模块分为“无缺陷”和“有缺陷”两个类。但是由于软件模块中存在缺陷的模块要远少于无缺陷的模块,所以这也是不平衡数据的分类问题。目前,对于平衡数据的分类技术已经相对比较成熟,然而,面向不平衡数据的分类,特别是面向软件缺陷数据的分类问题仍需投入大量的研究。综上,在当前互联网软件产品迅速发展的形势下,解决软件缺陷数据的不平衡性,提出高效的软件缺陷预测模型即对软件模块进行正确分类,是迫切需要解决的问题。
技术实现思路
本专利技术的目的是克服软件缺陷数据的不平衡性,对软件模块进行准确分类,提供一种基于改进的Adaboost软件缺陷不平衡数据分类方法。为实现上述目的,本专利技术技术方案主要包括以下三个步骤:A.从软件数据集中获取数据,包括软件特征集和软件模块,并对其进行预处理。将软件模块数据分为训练集和测试集以备训练和测试。本专利技术采用十次交叉验证,将数据集分成十份,其中九份做训练,一份做测试。B.利用基于改进的遗传算法与BP神经网络结合进行软件数据的特征选择,得到最优特征子集,从而对软件特征进行降维处理,减少运算时间。(1)随机产生初始种群,种群大小为P。对特征集进行二进制编码,0代表选择特征,1表示不选择特征。(2)以BP神经网络训练数据集,根据预测误差调整网络的权值和阈值。(3)利用遗传算法对BP神经网络进行优化,进行选择、交叉、变异的操作。为充分考虑软件数据集的不平衡性,适应度函数采用普遍适用于不平衡数据分类评价的Gmeans,较高的Gmeans值表示分类器是平衡的,即对两个类的分类来说都有好的性能。定义如下:fitness=Gmeans=truepositiverate×truenegatierate]]>=TPTP+FN×TNFP+TN]]>公式(1)表1混淆矩阵被预测为有缺陷被预测为无缺陷实际有缺陷TPFN实际无缺陷FPTN(4)判断是否达到迭代次数,若达到,则输出当前最优特征子集,否则执行以下过程。(a)根据适应度函数选择遗传到下一代的个体,适应度越高被选择的概率越大。(b)采用单点交叉算子进行交叉操作,采用单点变异算子进行变异操作。C.根据得到的最优特征子集,充分考虑软件缺陷数据的不平衡性,训练基于改进的Adaboost分类器,对软件模块进行分类,步骤如下:(1)初始化样本集内的样本权重D1(i)=1/n公式(2)其中,n为样本数,D1(i)为样本在第1轮迭代中的权重。(2)进行T次循环训练弱分类器ht(x),迭代次数t=1,2,…,T(a)计算弱分类器ht(x)在当前样本分布上的分类错误率,针对软件缺陷数据的不平衡性,应充分关注被误分为“无缺陷”实则“有缺陷的”样本,被误分为“无缺陷”的样本比例越大,则分类器的分类错误率应相应地增加。因此,设定ht(x)的分类错误率为:ϵt=Σi=1NDt(i)I[ht(xi)≠yi]+FNTP+FN]]>公式(3)其中,其中Dt(i)为样本(xi,yi)在第t轮迭代中的权重,I[ht(xi)≠yi]说明参与分类错误率εt计算的是被误分类的样本。FN,TP含义表1所示;(b)若εt>0.5或者εt=0,则令T=t-1,迭代停止;(3)计算弱分类器ht(x)在最终集成获得的强分类器中的加权系数:αt=12ln1-ϵtϵt]]>公式(4)(4)更新样本权值:其中,Zt是归一化因子:Zt=ΣDt(i)e(-αtyi)ht(xi)]]>公式(6)(5)输出强分类器:H(x)=sign[Σt=1Tαtht(x)]]]>公式(7)(6)利用得到的强分类器,对软件模块进行缺陷预测。附图说明图1是基于改进的Adaboost软件缺陷不平衡数据分类方法流程图。具体实施方式下面结合图1对本专利技术作进一步详细的描述。第一步:首先获取软件特征集及软件模块数据,并做标签处理。其中,特征集F={f1,f2…fm本文档来自技高网
...

【技术保护点】
基于改进的Adaboost软件缺陷不平衡数据分类方法,其特征在于,主要包括以下三个步骤:A.从软件数据集中获取数据,包括软件特征集和软件模块,并对其进行预处理;将软件模块数据分为训练集和测试集以备训练和测试;本专利技术采用十次交叉验证,将软件模块数据集分成十份,其中九份做训练,一份做测试;B.利用基于改进的遗传算法与BP神经网络结合进行软件数据的特征选择,得到最优特征子集,从而对软件特征进行降维处理,减少运算时间;(1)随机产生初始种群,种群大小为P;对特征集进行二进制编码,0代表选择特征,1表示不选择特征;(2)以BP神经网络训练数据集,根据预测误差调整网络的权值和阈值;(3)利用遗传算法对BP神经网络进行优化,进行选择、交叉、变异的操作;为充分考虑软件数据集的不平衡性,适应度函数采用普遍适用于不平衡数据分类评价的Gmeans,较高的Gmeans值表示分类器是平衡的,即对两个类的分类来说都有好的性能,定义如下:fitness=Gmeans=true positive rate×true negative rate=TPTP+FN×TNFP+TN]]>其中,TP为实际有缺陷且分类正确的模块数,FN为实际有缺陷但被分类错误的模块数,FP为实际无缺陷但被分类错误的模块数,TN为实际无缺陷且分类正确的模块数;(4)判断是否达到迭代次数,若达到,则输出当前最优特征子集,否则执行以下过程(a)根据适应度函数选择遗传到下一代的个体,适应度越高被选择的概率越大;(b)采用单点交叉算子进行交叉操作,采用单点变异算子进行变异操作;C.根据得到的最优特征子集,充分考虑软件缺陷数据的不平衡性,训练基于改进的Adaboost分类器,得到软件缺陷预测模型,步骤如下:(1)初始化样本集内的样本权重D1(i)=1/n其中,n为样本数,D1(i)为样本在第1轮迭代中的权重;(2)进行T次循环训练弱分类器ht(x),迭代次数t=1,2,…,T(a)计算弱分类器ht(x)在当前样本分布上的分类错误率,针对软件缺陷数据的不平衡性,应充分关注被误分为“无缺陷”实则“有缺陷的”样本,被误分为“无缺陷”的样本比例越大,则分类器的分类错误率应相应地增加;因此,设定ht(x)的分类错误率为:ϵt=Σi=1NDt(i)I[ht(xi)≠yi]+FNTP+FN]]>其中,其中Dt(i)为样本(xi,yi)在第t轮迭代中的权重,I[ht(xi)≠yi]说明参与分类错误率εt计算的是被误分类的样本;(b)若εt>0.5或者εt=0,则令T=t‑1,迭代停止;(3)计算弱分类器ht(x)在最终集成获得的强分类器中的加权系数:αt=12ln1-ϵtϵt]]>(4)更新训练集样本权值:其中,Zt是归一化因子:Zt=ΣDt(i)e(-αtyi)ht(xi)]]>(5)输出强分类器:H(x)=signΣt=1Tαtht(x)]]>(6)利用得到的强分类器,对软件模块进行缺陷预测。...

【技术特征摘要】
1.基于改进的Adaboost软件缺陷不平衡数据分类方法,其特征在于,主要
包括以下三个步骤:
A.从软件数据集中获取数据,包括软件特征集和软件模块,并对其进行预处
理;将软件模块数据分为训练集和测试集以备训练和测试;本发明采用十
次交叉验证,将软件模块数据集分成十份,其中九份做训练,一份做测
试;
B.利用基于改进的遗传算法与BP神经网络结合进行软件数据的特征选择,得
到最优特征子集,从而对软件特征进行降维处理,减少运算时间;
(1)随机产生初始种群,种群大小为P;对特征集进行二进制编码,0代
表选择特征,1表示不选择特征;
(2)以BP神经网络训练数据集,根据预测误差调整网络的权值和阈值;
(3)利用遗传算法对BP神经网络进行优化,进行选择、交叉、变异的操
作;为充分考虑软件数据集的不平衡性,适应度函数采用普遍适用于不平衡数
据分类评价的Gmeans,较高的Gmeans值表示分类器是平衡的,即对两个类
的分类来说都有好的性能,定义如下:
fitness=Gmeans=truepositiverate×truenegativerate=TPTP+FN×TNFP+TN]]>其中,TP为实际有缺陷且分类正确的模块数,FN为实际有缺陷但被分类错误
的模块数,FP为实际无缺陷但被分类错误的模块数,TN为实际无缺陷且分类
正确的模块数;
(4)判断是否达到迭代次数,若达到,则输出当前最优特征子集,否则
执行以下过程
(a)根据适应度函数选择遗传到下一代的个体,适应度越高被选择的概
率越大;
(b)采用单点交叉算子...

【专利技术属性】
技术研发人员:李克文邹晶杰
申请(专利权)人:中国石油大学华东
类型:发明
国别省市:山东;37

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1