[发明专利]一种面向软件缺陷预测的混合特征选择方法有效
申请号: | 201710547660.5 | 申请日: | 2017-07-06 |
公开(公告)号: | CN107391365B | 公开(公告)日: | 2020-10-13 |
发明(设计)人: | 余啸;刘进;马子逸;崔晓晖;井溢洋;张建升 | 申请(专利权)人: | 武汉大学 |
主分类号: | G06F11/36 | 分类号: | G06F11/36 |
代理公司: | 武汉科皓知识产权代理事务所(特殊普通合伙) 42222 | 代理人: | 鲁力 |
地址: | 430072 湖*** | 国省代码: | 湖北;42 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | 本发明涉及一种面向软件缺陷预测的混合特征选择方法,首先从原始特征集中选择最相关的m个特征,丢弃掉不相关特征;随后根据特征与特征之间的关联性,对这m个特征进行聚类,将相互之间冗余度高的特征聚类到同一个簇中。最后利用包裹式特征选择的思想,从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集,然后用准确率这个评价函数对该特征子集进行评价,本发明得到的最终特征子集既排除了不相关特征,又降低了特征之间的冗余度。同时,从不同簇里删除一个最不相关的特征形成新的特征子集,可以有效减少被搜索的特征子集的数量。 | ||
搜索关键词: | 一种 面向 软件 缺陷 预测 混合 特征 选择 方法 | ||
【主权项】:
一种面向软件缺陷预测的混合特征选择方法,其特征是,包括以下步骤:步骤1,挖掘软件历史数据,从中抽取出有用的软件模块;软件模块粒度根据实际应用场景,设置为文件、包、类或函数;然后标记这些软件模块的类标号:标记有缺陷的软件模块的类标号为Y,标记无缺陷的软件模块的类标号为N;步骤2,提取软件模块中与软件缺陷有关的特征,提取了19个度量属性:加权方法数(wmc),继承树深度(dit),孩子数(noc),对象类之间的耦合度(cbo),类的响应(rfc),内聚缺乏度(lcom),传入耦合(ca),传出耦合(ce),公开方法数(npm),代码行数(loc),数据访问度量(dam),聚合度量(moa),功能抽象度量(mfa),方法间的内聚度(cam),继承耦合(ic),方法间耦合(cbm),平均方法复杂度(amc),最大McCabe环形复杂度(max_cc),平均McCabe环形复杂度(avg_cc);这19个特征形成了原始的特征集;定义提取模块特征和标记软件模块是否有缺陷后形成了包含有n个软件模块的软件缺陷数据集D;步骤3,利用互信息计算原始特征集中每个特征与类标号之间的相关性,对原始特征集中的特征进行排序,选出相关性最高的m个特征;互信息的计算公式为其中Ii为特征fi与类标号之间的相关性,P(fij,Y)是类标号为Y且特征fi的特征值为fij的软件模块的数目与类标号为Y的软件模块的数目的比值,P(fij)是特征fi的特征值为fij的软件模块的数目与软件缺陷数据集中包含的软件模块的数目的比值,P(fij,N)是类标号为N且特征fi的特征值为fij的软件模块的数目与类标号为N的软件模块的数目的比值,P(Y)是类标号为Y的软件模块的数目与软件缺陷数据集中包含的软件模块的数目的比值,P(N)是类标号为N的软件模块的数目与软件缺陷数据集中包含的软件模块的数目的比值;步骤4,根据特征之间的关联性利用K‑means算法对步骤3中选出的相关性最大的m个特征进行聚类,形成k个簇,具体包括:步骤4.1,利用互信息计算特征fi与特征fj之间的关联性;其计算公式为Iij=I(fi;其中P(fim,fjm)为特征fj的特征值为fjm且特征fi的特征值为fim的软件模块数目与软件缺陷数据集中包含的软件模块的数目之比,P(fim)为特征fi的特征值为fim的软件模块数目与软件缺陷数据集中包含的软件模块的数目之比,P(fjm)为特征fj的特征值为fjm的软件模块数目与软件缺陷数据集中包含的软件模块的数目之比;Iij的值越接近于1,代表特征fi和特征fj之间的关联性越高;步骤4.2,首先从m个相关性最高的特征中随机的选择k个特征,每个特征代表一个簇的初始中心;对于剩下的(m‑k)个特征,根据步骤4.1中计算的特征关联性,将其分配到最相近的簇中;步骤4.3,迭代地改变簇内变差,即对于每个簇,使用上次迭代分配到该簇的特征,计算新的均值,使用更新后的均值作为新的簇中心,重新分配所有特征;步骤4.4,继续迭代,直到分配稳定,分配稳定指的是经过当前迭代次数W后形成的簇与前一迭代次数W‑1形成的簇相同;步骤5,基于包裹式特征选择,从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集,然后用准确率这个评价函数对该特征子集进行评价;若删除每个簇中一个最不相关的特征后形成的特征子集的准确率比之前的特征子集的准确率更大,则将该特征子集保留,继续从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集;否则停止迭代,上一次迭代产生的特征子集即为最终的特征子集;步骤5.1,基于步骤3中选出的相关性最高的m个特征组成的特征子集训练出朴素贝叶斯分类模型,然后利用该模型对软件缺陷数据集D中n个软件模块进行预测,计算出准确率;步骤5.2,从当前特征子集中删除每个簇中最不相关的一个特征,形成新的特征子集,基于这个特征子集训练出朴素贝叶斯分类模型,然后利用该模型对软件缺陷数据集D中n个软件模块进行预测,计算出准确率;步骤5.3,如果基于当前产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率高于基于上一轮迭代产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率,则说明当前产生的特征子集比上一轮迭代产生的特征子集更有用;因此,则保留当前产生的特征子集,然后重复步骤5.2;如果当前产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率低于上一轮迭代产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率,则说明上一轮迭代产生的特征子集比当前产生的特征子集更有用,则停止迭代,得到最终的特征子集。
下载完整专利技术内容需要扣除积分,VIP会员可以免费下载。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于武汉大学,未经武汉大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/patent/201710547660.5/,转载请声明来源钻瓜专利网。