没有合适的资源?快使用搜索试试~ 我知道了~
基于最大信息系数的软件缺陷数目预测特征选择方法.docx
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 99 浏览量
2022-06-02
11:04:05
上传
评论
收藏 104KB DOCX 举报
温馨提示
试读
24页
基于最大信息系数的软件缺陷数目预测特征选择方法.docx
资源推荐
资源详情
资源评论
1 引言
随着信息时代的到来,计算机软件数量、种类快速增长,软件质量问题被
越来越多的人关注。在软件开发的过程中,对软件需求的错误理解或人员的经
验不足都可能引入缺陷。软件缺陷是软件质量的对立面,威胁着软件质量
[1
]
。从
软件开发的角度来看,处理软件缺陷是一项至关重要的任务。缺陷的存在不仅
降低了软件的质量,而且还增加了软件的开发、测试和维护成本。因此,在软
件开发的早期阶段预测出软件缺陷模块,可以指导软件测试人员关注缺陷模块 ,
有助于提高软件质量。
目前在软件缺陷预测领域已经有大量研究工作,绝大多数致力于识别软件
模块中有缺陷或无缺陷,含有不同缺陷数量的软件模块在软件测试中被同等对
待。然而,对于有缺陷的模块,有些软件模块含有的缺陷较多,有些模块含有
的缺陷数较少,与含有较少缺陷的模块相比,缺陷数量相对较多的软件模块则
需要付出更多的资源去测试和修改。因此,仅根据有缺陷和无缺陷分配质量保
证资源可能会导致资源利用效率低下,而预测软件模块的缺陷数目可以给软件
测试提供更多的参考,更有利于分配测试资源。
目前,已有工作提出并且评估了基于回归模型的软件缺陷数目预测的方法 ,
这类方法可以预测软件模块中有多少缺陷。但大部分都是基于模型的角度,利
用从软件历史仓库挖掘的数据集,通过对比不同的回归模型,得到一个性能较
好的回归模型。在构建缺陷数目预测模型时,数据集中的度量元含有冗余特征
或无关特征,这些特征的存在会严重影响预测模型的性能。因此,设计有效的
特征选择方法来移除这类特征具有重要意义。
特征相关性度量标准的选取对于冗余特征和无关特征的衡量非常重要。目
前软件缺陷预测中常见的特征度量
[2
]
大多仅能度量特征间的线性关系,难以刻画
特征间的非线性关系。在软件缺陷数据中特征之间既存在线性相关关系,也存
在非线性相关关系。对于软件度量特征来说,非线性的相关度度量方法比线性
方 法更 为实 际有 效
[3
-4
]
。 最大 信息 系数 ( maximum information coefficient ,
MIC)能够广泛地度量变量间的依赖关系,包括线性关系、非线性关系以及非函
数依赖关系。
本 文 提 出 了 一 种 基 于 MIC 的 两 阶 段 特 征 选 择 方 法 ( two-stage feature
selection method based on maximum information coefficient , MIC-
TSFS),该方法基于 MIC 度量特征与特征之间、特征与软件缺陷数目之间的关
联性,衡量特征之间线性和非线性相关性,从而建立将特征冗余性分析和相关
性性分析相分离的两阶段特征选择框架。为验证 MIC-TSFS 方法的有效性,在
PROMISE 真实软件项目上进行了实证性的研究,实验结果表明, MIC-TSFS
能够移除冗余特征和无关特征,得到优化的特征子集,构建更有效的软件缺陷
数目预测模型。
2 相关工作
软件缺陷数目预测从软件历史仓库中得到历史缺陷数据,然后构建缺陷数
目预测模型,并用模型来预测出被测项目中软件模块的缺陷数目,从而为软件
测试中如何分配测试资源提供指导意见。软件缺陷数目预测是智能化软件工程
领域中的一个研究热点。
目前,国内外的研究者提出了多种有效的软件缺陷数目预测模型。 Graves
等
[3
]
建立线性回归(linear regression,LR)模型并应用于大型的电信系统项目。
Ostrand 等
[4
]
使用负二项回归(negative binomial regression,NBR)技术对故
障数和故障密度预测进行了研究。Chen 等
[5
]
探究了一些典型的回归模型在软件
缺陷个数预测上的可行性,实验结果表明,决策树回归取得了较好预测结果 。
Rathore 等
[6
]
提出了一种基于遗传编程的软件缺陷预测方法,实验结果表明,利
用该方法对缺陷数目进行预测能够取得较好结果。 Rathore 等
[7
]
探究了决策树回
归模型在版本内缺陷数目预测和跨版本缺陷数目预测两种不同的研究场景下的
预 测 能 力 , 结 果 表 明 该 方 法 在 版 本 内 进 行 预 测 时 能 够 取 得 较 好 的 结 果 。
Rathore
[8
]
比 较 了 6 种 用 于 软 件 缺 陷 数 目 预 测 的 方 法 ( 遗 传 编 程 ( genetic
programming ) 、 多 层 感 知 ( multi-layer perceptron ) 、 线 性 回 归 ( linear
regression ) 、决 策 树 回 归 ( decision tree regression ) 、 零 膨 胀泊 松 回归
( zero-inflated Poisson regression ) 和 负 二 项 回 归 ( negative binomial
regression))对于软件缺陷数目的预测能力,实验结果表明决策树回归、遗传
编程、多层感知和线性回归通常会有较好的预测性能,而零膨胀泊松回归和负
二项回归表现通常不佳。Chen 等
[9
]
探究了有监督方法与无监督方法在缺陷数目
预测方面的能力,将 9 种结合 SMOTEND 的有监督方法与基于 LOC 度量的无
监督方法在版本内预测、跨版本预测、跨项目预测中分别进行了比较。
除上述基础模型外,也有些研究工作针对缺陷数目预测提出了一些集成方
法。Rathore 等
[10
]
研究了集成学习方法在软件缺陷数预测方面的性能,先评价 6
种基础模型,然后从中选择 3 种性能较优的模型进行集成。他们
[11
]
还提出了两种
线性规则、两种非线性规则,用于集成基础模型的输出。并且做了实证研究,
评估了在版本内预测以及版本间预测两种情景模式下,各个集成规则的预测性
能 。 Yu 等
[12
]
探 索 了 采 样 ( SMOTEND 和 RUSND ) 和 集 成 学 习
( AdaBoost.R2 ) 方 法 对 软 件 缺 陷 数 目 的 预 测 能 力 , 然 后 提 出 了
SMOTENDBoost 和 RUSNDBoost 这两种混合方法,实验结果表明融合过采样
与集成学习可以有效提高对于缺陷数量的预测性能。
以上研究都是从模型的构建的角度出发,致力于找到一个性能较好的预测
模型。然而,在构建软件缺陷数目预测模型时,在软件缺陷的大量度量元中不
可避免地会产生冗余特征和无关特征。冗余特征大量或完全重复了其他单个或
多个特征中含有的信息,而无关特征则不能对采用的数据挖掘算法提供任何帮
助。若在构建模型之前去除冗余特征和无关特征,则能在一定程度上提升模型
的性能。
特征选择通过挖掘特征间以及特征与缺陷数目间的内在联系,保留最有利
于预测的有效特征,是除去冗余特征和无关特征的一种有效的方法。除去冗余
特征和无关特征时需要衡量变量之间的相关性,信息增益
[13
]
、ReliefF 等是衡量
相关性的常见方法。目前已有的特征选择算法可以分为两大类:基于子集搜索
的特征选择算法和基于排序的特征选择算法。基于子集搜索的特征选择算法考
虑特征之间的冗余性和特征与类别之间的相关性,但这类方法需要搜索的特征
子集空间太大,计算开销过大;基于排序的特征选择算法根据特征与类别之间
的相关性从高到低排序,排名越靠前,与类别属性的相关性越高,表明该特征
区分不同类别的能力越强,然后从中选出排名靠前的特征来构建预测模型,其
运行效率比较高,但选出的特征子集内通常含有冗余特征。
目前已有研究人员将特征选择方法应用到软件缺陷数目预测问题中。李叶
飞等
[14
]
提出了一种针对软件缺陷数目预测的特征选择方法—— FSDNP,该方法
采用欧氏距离度量特征间相关性,使用密度峰聚类对特征进行聚类,结合采用
Pearson 相关系数计算特征与缺陷数目之间的相关性时表现性能较好。 Yu 等
[15
]
提出软件缺陷预测下的特 征选择方法——FSCR ,该方法首先基于 特征间的
Pearson 相关系数进行谱聚类,然后根据 ReliefF 算法挑选与缺陷数目相关的特
征。马子逸等
[16
]
提出了一种面向软件缺陷个数预测的混合式特征选择方法——
HFSNFP,该方法先使用 ReliefF 算法计算特征与缺陷个数之间的相关性,移除
无关特征,随后根据特征与特征之间的 Pearson 相关系数对特征集进行谱聚类,
将冗余度高的特征聚类到同一个簇中,最后基于包裹式特征选择的思想依次从
每个簇中将最相关的特征加入特征子集中。这类针对缺陷数目预测而提出的特
征选择方法在衡量特征与特征之间的相关性时通常采用 Pearson 相关系数或距
离度量,仅表示了特征间的线性关系,忽略了特征之间的非线性相关性,不利
于特征间的冗余性分析;此外,这类方法中采用的聚类方法需要事先设定参数,
这些设定具有很大的主观性和经验性,设定不当会影响预测模型的性能。
基于以上分析,为了有效地识别并移除特征集中的冗余特征和无关特征,
本文提出了一种基于最大信息系数的特征选择方法,该方法包括冗余性分析阶
段和相关性分析阶段。在冗余性分析阶段,根据特征与特征间的关联度,采用
自底向上的层次聚类的算法对特征进行聚类得到特征簇,降低所选特征子集的
冗余率;在相关性分析阶段,根据特征与缺陷数目之间的关联度将每个特征簇
中的特征进行排序,然后从每个特征簇中选择排名靠前的特征组成特征子集,
过滤掉无关特征。
3 基于最大信息系数的特征选择方法
3.1 最大信息系数
最大信息系数可以用于衡量两变量的相关程度,其主要思想是:如果两个
变量之间存在一定的关联,在这两个变量的散点图上进行某种网格划分之后,
根据这两个变量在网格中的近似概率密度分布,计算这两个变量的互信息,该
值经过正则化后可用于度量这两个变量之间的相关性。最大信息系数是互信息
的推广,不仅可以度量变量间的线性关系,而且可以度量变量间的非线性关系
和非函数依赖关系。
给 定 变 量 X={xi,i=1,2,3,⋯,n}X={xi,i=1,2,3,⋯,n}?,?Y={yi,i=1,2,3,
⋯,n}Y={yi,i=1,2,3,⋯,n}?,n 为样本数量,其互信息定义如下:
MI(X,Y)=∑x,yp(x,y)logp(x,y)p(x)p(y)
(1)MI(X,Y)=∑x,yp(x,y)logp(x,y)p(x)p(y) (1)
假设有限集合 D 由 X 和 Y 组成,定义划分 G 将变量 X 的值域分成 x 段,将
Y 的值域分成 y 段,得到一个 x× y 的网格,在得到的每一种网格划分内部计算
互信息 MI(X,Y),取不同划分的最大互信息作为划分 G 的互信息值,定义划分 G
下 D 的最大互信息公式为:
MI∗(D,x,y)=maxMI(D|G) (2)MI*(D,x,y)=maxMI(D|G)
(2)
其中,D|G 表示数据 D 使用 G 进行划分。
对于不同的划分都会得到一个 MI 值,将所有 MI 值组成特征矩阵,并对该
特征矩阵进行规范化并定义为 M(D)
x,y
,其计算式如下:
M(D)x,y=MI∗(D,x,y)logmin{x,y} (3)M(D)x,y=MI*(D,x,y)logmin{x,y}
(3)
M(D)
x ,y
为 D 在不同网格划分下的规范化后的特征矩阵。最大信息系数 MIC
的计算式如下:
MIC(D)=maxxy<B(n){M(D)x,y} (4)MIC(D)=maxxy<B(n)
{M(D)x,y} (4)
其中,B(n)为网络划分 x× y 的上限值, 一般地, 1≤B(n)≤O(n
1-ε
),0<ε<1,
参考文献[17
]中给出 B(n)=n
0.6
时效果较好。
MIC 通过对连续型变量实施不等间隔的离散化寻优来挖掘非线性关联,并
进 一 步 通 过 标 准 化 使 得 MIC(X,Y)∈[0,1] 。 如 果 X 、 Y 相 互 独 立 ,
MIC(X,Y)=0 , MIC 值 越 大 , 两 个 特 征 越 相 关 ; MIC 具 有 对 称 性 , 即
MIC(X,Y)=MIC(Y,X);当 Y=f(X)时,MIC(X,Y)=1,即当两个变量之间存在函数
关系时,这两个变量之间的 MIC 值为 1;若对变量 X 做任何单调函数 g(X)变换,
MIC 不变,即 MIC(X,Y)=MIC(g(X),Y)。
在软件缺陷预测领域中,为了充分描述软件特性,度量元特征集中存在冗
余特征和无关特征。一些特征由同一组程序基本属性计算得到,这些特征之间
有很大概率存在冗余。缺陷数据特征之间不仅存在线性关系(如变量个数与代
码行数),也存在非线性关系(如类个数与类继承树深度)。一般的相关系数
(如 Pearson 相关系数)因仅表示特征间的线性关系,不能充分表征特征间的
相关性;而 MIC 具有较好的广泛性和均匀性,能够检测出变量间的线性和非线
性关系,进而有效表达特征之间的相关性。本文把 MIC 作为特征与特征间相关
性度量判据,从而通过移除冗余特征初步筛选特征集。
无关特征是与预测目标不相关的特征,特征子集的优劣可以通过特征与缺
陷数目的相关性来度量。一般认为,好的特征子集中的特征与缺陷数目相关度
较高。在传统的特征选择方法中,若特征与缺陷数目间存在非线性函数依赖关
系,很有可能被排除在模型外;而 MIC 受噪声影响较小,可以敏感地检测出变
量之间的各种函数以及非函数关系。另外,一般的相关系数对变量变换很敏感,
然而在构建预测模型时变换并不明确,相关系数容易受到影响;而无论做何种
单调变换,变量间的 MIC 值不变。因此,MIC 稳健性更好,能够有效地度量特
征与缺陷数目之间的相依关系。
基于上述分析,用 MIC 来选择特征适用于有复杂的软件缺陷的数据。因此,
本文采用 MIC 衡量特征与特征间的相关性、特征与缺陷数目间的相关性,以此
来移除冗余特征、初步筛选特征集,随后剔除一些无关特征,进而提高模型的
预测性能。
3.2 特征关联性度量
给定一个 n 条样本的数据集 F{f
1
,f
2
,f
3
,…, f
N
,d},其中 f
i
(i=1,2,3,…,N)为特征
集中第 i 个特征,N 为特征总数,d 为软件缺陷数目。对任意特征 f
i
和 f?
j
,它们
之间的相关度定义为 FFfifjFFfifj:
FFfifj=MIC(fi,fj) (5)FFfifj=MIC(fi,fj) (5)
在 软 件 预 测 数 据 集 中 , 特 征 间 的 冗 余 性 越 大 , 则 它 们 相 关 度 值 越 大 。
FFfifjFFfifj 值越大,说明 f
i
和 f?
j
之间的可替代性越强,即冗余性越强,聚类时趋
向于聚在同一个类簇中。FFfifjFFfifj 值越小,说明 f
i
和 f?
j
之间越相互独立,聚类
时趋向与聚在不同的簇类中。
特征 f
i
与软件缺陷数目 d 之间的相关度定义为 FD
i
:
FDi=MIC(fi,d) (6)FDi=MIC(fi,d) (6)
FD?
i
值越大表明特征 f
i
与软件缺陷数目 d 间的相关性越强,则 f
i
为强相关特
征,越倾向被保留;FD?
i
值越小,表明特征 f
i
与软件缺陷数目 d 的相关性越弱,
则 f
i
为弱相关特征,越倾向被删除。
3.3 MIC-TSFS 方法
MIC-TSFS 是一种将特征冗余性分析和相关性分析分离的两个阶段特征选
择方法,其总体框架如图
1
所示。
第一阶段是冗余性分析阶段,根据特征与特征之间的相关度,采用层次聚
类将原始数据集中的特征进行聚类,使得相关性较高的特征被划分到同一簇中,
而相关性较低的特征被划分到不同簇中,这样同一个簇里的特征冗余性较高,
不同簇中的特征冗余性较低。将这一阶段处理得到的特征簇作为第二阶段的输
入。第二阶段是相关性分析阶段,在每个特征簇中计算特征与软件缺陷数目的
相关度,根据该值对特征簇内的特征进行排序,在每个簇中选取排名靠前的特
征组成新的特征子集。
3.3.1 冗余性分析阶段
为了降低特征间的冗余性,根据特征与特征之间的相关度,采用“自底向上”
的凝聚层次聚类将数据集中的特征集合进行聚类,将特征分为若干个特征簇,
同一簇中的特征相关度高,不同簇的特征相关度低。相对于最常用的密度峰聚
类和谱聚类算法,层次聚类算法具有对聚类参数依赖小、适用于任意形状数据
集聚类的优势。因此,MIC-TSFS 在冗余性分析阶段选取了更适用于构建鲁棒
特征选择算法的凝聚层次聚类算法。凝聚层次聚类算法过程是:初始时将每个
样本看作一个类簇,然后依据某种准则合并这些初始的类簇,直到达到某种条
件或者达到设定的分类数目,具体如算法 1 所示。
图 1
剩余23页未读,继续阅读
资源评论
罗伯特之技术屋
- 粉丝: 3646
- 资源: 1万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功