基于最大互信息和改进Adaboost的软件缺陷数据特征选择方法与流程

文档序号:14723036发布日期:2018-06-18 10:39阅读:432来源:国知局

本发明属于软件工程应用领域,具体涉及一种基于最大互信息和改进Adaboost的软件缺陷数据特征选择方法。



背景技术:

目前,软件系统规模日益增大并且其逻辑复杂性也日益增强,伴随着软件中存在缺陷的模块增加,这势必威胁软件的可靠性,影响软件质量,造成不可估量的损失。软件缺陷预测技术作为指导和评估软件测试工作的一种重要的途径,可以准确地预测软件缺陷的分布情况,这对于提高软件质量有着重要的现实意义。针对一个软件系统,合理地预测缺陷可以统计尚未发现但仍存在的缺陷数目及缺陷分布。软件缺陷预测的关键是发现有缺陷的模块,这本质上是一个二分类问题,即将软件模块分为“有缺陷”和“无缺陷”两类。分类的前提是进行特征选择,根据选择出的最优特征子集进行分类。Adaboost是一种性能良好的集成分类算法,也可用于特征选择。但在实际操作中,基于Adaboost的面向软件缺陷数据的特征选择存在以下两个问题:

(1)被选择出的软件特征存在大量冗余

在根据Adaboost进行软件缺陷数据的特征选择时,在每轮迭代中,要根据分类错误率挑选出最优的弱分类器,因为一个弱分类器对应一个软件特征,因此,该过程即为挑选最优特征的过程。具备良好分类性能的特征被逐一挑选出来,但这些特征间必然存在很强的相关性。2004年,美国宇航局公开了软件数据集(NASAMDP),他们从源代码中提取的各种软件特征,主要包括三大类--LOC,McCabe和Halstead。在每一类软件特征中,除了基本特征是从源代码中直接抽取,其他的特征都是由这些基本特征值间接计算获得。可见,每一类软件特征中,存在着较多的冗余特征,被选择出的特征间也存在着冗余。

(2)软件模块数据存在严重的不平衡性

在实际的软件模块中,“有缺陷”的模块(少数类)数量要远远少于“无缺陷”(多数类)的模块,因此,软件缺陷数据的分类也是不平衡数据的分类问题,这也是数据挖掘近年来的研究热点。而在Adaboost算法运行过程中,少数类样本和多数类样本被寄予相同的关注度,具体在算法实现时,Adaboost采用相同的权重更新策略。这就导致应当寄予高度关注的少数类(有缺陷模块)而被忽略,即使最终得到一个好的全局分类正确率,但对我们所关心的问题,有缺陷的模块是否被很好地检测出来而被忽略。

针对以上两个问题,研究出符合软件缺陷数据特性的特征选择方法,这对于提高软件缺陷数据的分类效果,意义重大。



技术实现要素:

本发明的目的是解决基于Adaboost算法的软件缺陷数据特征选择方法所存在的问题:被选择出的特征存在冗余以及数据不平衡性,提供基于最大互信息和改进Adaboost的软件缺陷数据特征选择方法,以减少冗余特征,提高不平衡数据的分类效果。

为实现上述目的,本发明技术方案主要包括以下两个步骤:

A.从软件数据集中获取数据,对数据进行预处理

(1)数据包括软件特征集、软件模块,将软件模块数据分为训练集和测试集以备训练和测试。本发明采用十次交叉验证,将数据集分成十份,其中九份做训练,一份做准确度测试。并将数据做标签处理。

(2)根据已有知识将特征集分类,得到三个特征集,分别是LOC类,McCabe类和Halstead类。

B.根据最大互信息理论与改进的Adaboost进行面向软件缺陷数据的特征选择(1)初始化样本权重{D1(i)}及目标特征子集S

其中,n为样本个数。

(2)当t=1…toT,执行以下步骤:

(a)在基于权重的训练集上,训练弱分类器根据分类错误率εt挑选出最优的弱分类器,即选出候选最优特征

εt=∑Dt(i)I[ht(xi)≠yi]公式(3)

(b)判断候选最优特征f属于何种软件特征,L类,M类还是H类。然后根据互信息理论计算候选最优特征f与目标子集S中与f属于相同类别的特征间的最大相关性max-cor。

max-cor=max(MI(f,fp))公式(4)

其中,fp∈S,且fp和f是同类别软件特征,MI为两个变量间的互信息,如下公式

其中,p(x)和p(y)为x和y的边缘分布概率,p(x,y)是x和y的联合分布概率。

(c)根据步骤(b)中得到的最大相关性max-cor,与设定的阈值β进行比较。当max-cor小于阈值β时,将候选最优特征f加入目标特征子集S,并从特征集F中删除f,同时根据εt计算弱分类器的加权系数αt,将此轮得到的弱分类器ht累加至上一轮获得的强分类器Ht-1(x),得到Ht(x),继续执行步骤(d),过程如下:

F=F-{f}公式(6)

S=S+{f}公式(7)

Ht(x)=Ht-1(x)+αtht公式(9)

当max-cor小于阈值β时,只将f从特征集F中删除,过程如下,然后返回至步骤(a)。

F=F-{f}公式(10)

(d)按以下策略,更新样本权重{Dt+1(i)}

(3)输出最终强分类器H(x)及目标特征子集S。

附图说明

图1是基于最大互信息和改进Adaboost的软件缺陷数据特征选择方法流程图。

具体实施方式

下面结合图1对本发明作进一步详细的描述。

第一步:从软件数据集中获取数据,对数据进行预处理

(1)首先获取软件特征集及软件模块数据。其中,特征集F={f1,f2…fm}。软件模块数据集X={x1,x2…xn},Y={+1,-1}。若软件模块xi无缺陷,则(xi,yi)=(xi,-1),反之,(xi,yi)=(xi,+1)。

(2)根据已有知识将特征集分类,分别是LOC类,McCabe类和Halstead类,简写为L,M,H。

第二步:根据最大互信息理论与改进的Adaboost进行面向软件缺陷数据的特征选择

(1)初始化样本权重{D1(i)}及目标特征子集S

D 1 ( i ) = 1 n ]]>

其中,n为样本个数。

(2)当t=1…toT时,执行:

(a)在基于权重的训练集上,训练弱分类器根据分类错误率εt选择出最优的弱分类器,即选择候选最优特征

εt=∑Dt(i)I[ht(xi)≠yi]

(b)判断候选最优特征f属于何种软件特征,L类,M类还是H类。然后根据互信息理论计算候选最优特征f与目标特征子集S中与f属于相同类别的特征间的最大相关性max-cor,如下:

max-cor=max(MI(f,fp))

其中,fp∈S,且fp和f是同类别软件特征,MI为两个变量间的互信息,如下公式:

M I ( x , y ) = l o g p ( x , y ) p ( x ) p ( y ) ]]>

其中,p(x)和p(y)为x和y的边缘分布概率,p(x,y)是x和y的联合分布概率。

(c)根据步骤(b)中得到的最大相关性max-cor,与设定的阈值进行比较。当max-cor小于阈值β时,将候选最优特征f加入目标特征子集S,从特征集F中删除f,同时根据εt计算弱分类器的加权系数αt,将此轮得到的弱分类器ht累加至上一轮获得的强分类器Ht-1(x),得到Ht(x),继续执行步骤(d),上述过程如下:

F=F-{f}

S=S+{f}

α t = 1 2 l n ( 1 - ϵ t ϵ t ) ]]>

Ht(x)=Ht-1(x)+αtht

当max-cor小于阈值β时,只将f从特征集F中删除,执行如下,然后返回至步骤(a)。

F=F-{f}

(d)按以下策略,更新样本权重{Dt+1(i)}

(3)输出最终强分类器H(x)及目标特征子集S。

本发明提供了一种面向软件缺陷数据的特征选择及分类方法,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进,这些改进也应视为本发明的保护范围。本实施例中未明确的各组成部分均可用于现有技术加以实现。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1