CN107391365B - 一种面向软件缺陷预测的混合特征选择方法 - Google Patents
一种面向软件缺陷预测的混合特征选择方法 Download PDFInfo
- Publication number
- CN107391365B CN107391365B CN201710547660.5A CN201710547660A CN107391365B CN 107391365 B CN107391365 B CN 107391365B CN 201710547660 A CN201710547660 A CN 201710547660A CN 107391365 B CN107391365 B CN 107391365B
- Authority
- CN
- China
- Prior art keywords
- feature
- software
- feature subset
- software modules
- cluster
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/366—Software debugging using diagnostics
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及一种面向软件缺陷预测的混合特征选择方法,首先从原始特征集中选择最相关的m个特征,丢弃掉不相关特征;随后根据特征与特征之间的关联性,对这m个特征进行聚类,将相互之间冗余度高的特征聚类到同一个簇中。最后利用包裹式特征选择的思想,从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集,然后用准确率这个评价函数对该特征子集进行评价,本发明得到的最终特征子集既排除了不相关特征,又降低了特征之间的冗余度。同时,从不同簇里删除一个最不相关的特征形成新的特征子集,可以有效减少被搜索的特征子集的数量。
Description
技术领域
本发明属于特征选择领域,特别是涉及一种面向软件缺陷预测的混合特征选择方法。
背景技术
(1)软件缺陷预测技术
软件缺陷是计算机软件或程序中存在的某个破坏正常运行能力的问题、错误以及隐藏的功能缺陷。随着软件系统在工程应用中的不断扩大,软件缺陷导致的经济损失日益增加。软件缺陷预测技术是软件质量保证中的一项重要技术。软件缺陷预测通过分析软件历史仓库,建立缺陷预测模型,对新的软件模块进行缺陷预测。对预测出潜在缺陷的新的软件模块分配更多的测试资源,可以达到合理分配测试和维护资源的目的。目前为止,已有很多高效的软件缺陷方法被提出。
软件缺陷预测过程的第一步是收集和标注软件模块。一个软件模块能够被标记为有缺陷和无缺陷。第二步,抽取软件模块的度量属性。到目前为止,研究人员从不同的角度提出了许多软件度量属性,而与软件缺陷预测密切相关的度量属性主要有代码度量、McCabe度量和Halstead度量三种。代码度量是最直接、应用最普遍的度量属性。通过对程序进行简单的计数,我们可以得到相关代码的度量值。它包含总行数(LOC)、空白行数目(LOCb)、注释行数目(LOCc)、代码行数目(LOCe)和代码和注释总数目(LOCec)。软件复杂性通过程序结构的复杂性表现出来,而程序结构的复杂性主要指的是模块内部程序的复杂性。MaCabe度量正是模块内部程序的复杂性。它由三种度量组成,分别为环形复杂度(Cyclomatic Complexity)、基本复杂度(Essential Complexity)和设计复杂度(DessignComplexity)。Halstead度量不仅度量了程序长度,还描述了程序的最小实现和实际实现之间的关系,并据此阐述程序语言的等级高低。Halstead度量方法充分考虑了程序中出现的算子和操作数,它包括软件长度(N)、容量(V)、级别(L)、难度(D)、工作量(E)、时间(T)、误差估计(B)、程序消息(I)等度量。第三步,建立缺陷预测模型,缺陷预测模型本质上属于模式识别的范畴。而缺陷预测模型的建立过程就是通过一定的机器学习算法来搭建模型结构并确定度量属性之间依赖强度的过程,即为模型的结构学习和参数学习过程。第四步,通过训练好的模型预测待预测的软件模块是否有缺陷,由于建立好的缺陷预测模型可以通过自身模型结构和模型参数来量化描述度量属性与预测结果之间的因果关系,这样给定一个软件模块的度量属性数据,使用训练好的预测模型就可以得到该模块是否存在缺陷,即完成软件缺陷预测的过程。
(2)朴素贝叶斯模型
朴素贝叶斯是机器学习算法的一种,由于其算法原理较简单,且计算量不大,所以应用较为广泛。朴素贝叶斯算法的工作流程如下:
设D={X1,X2,…,Xk}是训练数据集,Xi={xi1,xi2,…,xin}是一个实例,每一个实例由n个特征来描述。假定有m个类C1,C2,…,Cm。给出一个待预测的实例X,朴素贝叶斯方法将X归结为后验概率最高的一个类。根据贝叶斯定理由于P(X)对所有类为常数,所以只需要P(X|Ci)P(Ci)最大即可。给定元组的类标号,假定属性值在满足条件的情况下相互独立(即属性之间无依赖关系),于是,其中xk表示元组X在属性Ak的值。因此该步即为朴素贝叶斯算法的训练步,需要计算每个属性的均值μ和标准差σ。为了预测待预测的实例X的类标号,需要对每个类Ci计算P(X|Ci)P(Ci)。朴素贝叶斯分类方法预测X属于类Ci,当且仅当P(Ci|X)>P(Cj|X)1≤j≤m,j≠i。
(3)特征选择技术
在构建软件缺陷预测模型时,与软件缺陷相关的大量特征中不可避免会产生冗余特征和不相关特征。冗余特征指的是该特征所包含的信息能从其他特征中推演出来的特征。无关特征则是对采用的机器学习算法不能提供任何的帮助的特征。这些特征的存在会严重影响软件缺陷预测模型的准确率,因此,使用特征选择方法去除这类特征是十分必要的。目前已有一些研究者将特征选择的方法应用到软件缺陷预测中。
目前特征选择的主流方法有两类:基于过滤式的特征选择方法和基于包裹式的特征选择方法。基于过滤式的特征选择方法计算每个特征的重要性,并指定一个阈值,重要性大于阈值的特征被选取。基于过滤式的方法先对软件缺陷数据集进行特征选择,之后才训练学习器,特征选择过程与后续工作无关,所以计算开销小,但精准度不尽人意。基于包裹式的特征选择方法与基于过滤式的方法相反,首先训练学习器,并搜索特征集,得到大量的特征子集,然后对每个特征子集进行效果评价,最后筛选出一个效果最好的特征子集。这种方式虽然提高了精准度,但同时也大大增加了计算开销。因此本发明结合过滤式特征选择方法和包裹式特征选择方法的优点,提出了一种面向软件缺陷预测的混合特征选择方法。
发明内容
本发明提供的技术方案是一种面向软件缺陷预测的混合特征选择方法,包括以下步骤:
步骤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之间的关联性。其计算公式为 其中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。如果当前产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率低于上一轮迭代产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率,则说明上一轮迭代产生的特征子集比当前产生的特征子集更有用,则停止迭代,得到最终的特征子集。
本发明具有如下优点:设计了合理的特征选择策略,该方法首先利用过滤式特征选择的思想,从原始特征集中选择最相关的m个特征,丢弃掉不相关特征,避免了不相关特征对特征聚类产生影响,同时缩短了聚类所需的时间。随后根据特征与特征之间的关联性,对这m个特征进行聚类,将相互之间冗余度高的特征聚类到同一个簇中。最后基于包裹式特征选择,从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集,然后用准确率这个评价函数对该特征子集进行评价。若删除每个簇中一个最不相关的特征后形成的特征子集的预测误差比之前的特征子集的预测误差更小,则将该特征子集保留,继续从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集。否则停止迭代,上一次迭代产生的特征子集即为最终的特征子集。这样得到的最终特征子集既排除了不相关特征,又降低了特征之间的冗余度。同时,从不同簇里删除一个最不相关的特征形成新的特征子集,可以有效减少被搜索的特征子集的数量。
附图说明
图1本发明的流程图。
图2本发明实施例的结果图。
具体实施方式
本发明设计的一种面向软件缺陷预测的特征选择方法具体实现过程如下:
步骤1,挖掘软件历史数据,从中抽取出有用的软件模块。软件模块粒度可根据实际应用场景,可设置为文件、包、类或函数。然后标记这些软件模块的类标号:标记有缺陷的软件模块的类标号为Y,标记无缺陷的软件模块的类标号为N。
步骤2,提取软件模块中与软件缺陷有关的特征,这些特征形成原始的特征集。为了方便阐述,本实施例假设提取了10个特征{f0,f1,f2,f3,f4,f5,f6,f7,f8,f9}。
在经过了步骤1-2后,本实施例假设在提取模块特征和标记软件模块的是否有缺陷后形成了包含有10个软件模块的软件缺陷数据集D:
X1={3.0,1.0,0.0,8.0,14.0,3.0,3.0,5.0,3.0,2.0,‘Y’},
X2={13.0,1.0,0.0,1.0,17.0,64.0,0.0,1.0,12.0,0.917,‘N’},
X3={4.0,1.0,0.0,4.0,4.0,6.0,2.0,2.0,4.0,2.0,‘N’},
X4={10.0,1.0,0.0,6.0,31.0,1.0,0.0,6.0,9.0,0.5,‘Y’},
X5={7.0,1.0,0.0,6.0,19.0,7.0,0.0,6.0,6.0,0.75,‘N’},
X6={38.0,1.0,0.0,30.0,155.0,485.0,0.0,30.0,34.0,0.9,‘Y’},
X7={25.0,1.0,0.0,13.0,74.0,0.0,0.0,13.0,23.0,0.444,‘Y’},
X8={13.0,1.0,0.0,19.0,56.0,54.0,0.0,19.0,11.0,0.9,‘Y’},
X9={7.0,4.0,4.0,48.0,12.0,19.0,47.0,1.0,6.0,0.94,‘N’},
X10={7.0,1.0,0.0,4.0,7.0,21.0,2.0,2.0,7.0,2.0,‘Y’}。
步骤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的软件模块的数目与软件缺陷数据集中包含的软件模块的数目的比值。本实施例中,计算得I0=0.27,I1=0.20,I2=0.20,I3=0.29,I4=0.45,I5=0.45,I6=0.17,I7=0.31,I8=0.47,I9=0.38。本实施例取m=7,故从原始的特征集中选择出相关性最大的7个特征为f0,f3,f4,f5,f7,f8,f9。
步骤4,根据特征之间的关联性利用K-means算法对步骤3中选出的相关性最大的m个特征进行聚类,形成k个簇,具体包括:
步骤4.1,利用互信息计算特征fi与特征fj之间的关联性。其计算公式为 其中P(fim,fjm)为特征fj的特征值为fjm且特征fi的特征值为fim的软件模块数目与软件缺陷数据集中包含的软件模块的数目之比,P(fim)为特征fi的特征值为fim的软件模块数目与软件缺陷数据集中包含的软件模块的数目之比,P(fjm)为特征fj的特征值为fjm的软件模块数目与软件缺陷数据集中包含的软件模块的数目之比。Iij的值越接近于1,代表特征fi和特征fj之间的关联性越高。在本实施例中,计算得特征f0,f3,f4,f5,f7,f8,f9两两之间的关联性为:I03=0.81,I04=0.89,I05=0.89,I07=0.76,I08=0.92,I09=0.74,I34=0.94,I35=0.94,I37=0.96,I38=0.90,I39=0.88,I45=1.00,I47=0.90,I48=0.97,I49=0.89,I57=0.90,I58=0.97,I59=0.89,I78=0.86,I79=0.84,I89=0.85。
步骤4.2,首先从m个相关性最高的特征中随机的选择k个特征,每个特征代表一个簇的初始中心。对于剩下的(m-k)个特征,根据步骤4.1中计算的特征关联性,将其分配到最相近的簇中。
步骤4.3,迭代地改变簇内变差,即对于每个簇,使用上次迭代分配到该簇的特征,计算新的均值,使用更新后的均值作为新的簇中心,重新分配所有特征。
步骤4.4,继续迭代,直到分配稳定,分配稳定指的是经过当前迭代次数W后形成的簇与前一迭代次数W-1形成的簇相同。
本实施例中取k=3,随机地选择了f4,f7和f9三个特征作为初始的簇中心,根据特征之间的关联性将f0,f5和f8分配到了特征f4所在的簇中,f3分配到了特征f7所在的簇。然后迭代地改变簇内变差,直到分配稳定,最终本实施例将这7个特征划分为三个簇,它们分别是C0={f4,f8},C1={f0,f3,f7},C2={f5,f9}。
步骤5,基于包裹式特征选择,从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集,然后用准确率这个评价函数对该特征子集进行评价。若删除每个簇中一个最不相关的特征后形成的特征子集的准确率比之前的特征子集的准确率更大,则将该特征子集保留,继续从当前特征子集中删除每个簇中一个最不相关的特征,形成新的特征子集。否则停止迭代,上一次迭代产生的特征子集即为最终的特征子集。
步骤5.1,基于步骤3中选出的相关性最高的m个特征组成的特征子集训练出朴素贝叶斯分类模型,然后利用该模型对软件缺陷数据集D中n个软件模块进行预测,计算出准确率。
步骤5.2,从当前特征子集中删除每个簇中最不相关的一个特征,形成新的特征子集,基于这个特征子集训练出朴素贝叶斯分类模型,然后利用该模型对软件缺陷数据集D中n个软件模块进行预测,计算出准确率。
步骤5.3,如果基于当前产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率高于基于上一轮迭代产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率,则说明当前产生的特征子集比上一轮迭代产生的特征子集更有用。因此,则保留当前产生的特征子集,然后重复步骤5.2。如果当前产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率低于上一轮迭代产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率,则说明上一轮迭代产生的特征子集比当前产生的特征子集更有用,则停止迭代,得到最终的特征子集。
在本实施例中,基于步骤3中选出的相关性最高的7个特征组成的特征子集{f0,f3,f4,f5,f7,f8,f9}训练出朴素贝叶斯分类模型,假设训练出的朴素贝叶斯分类模型对软件模块X1,X3,X5预测错误,其它7个软件模块预测正确,即准确率为70%。从当前特征子集{f0,f3,f4,f5,f7,f8,f9}中删除这三个簇中最不相关的一个特征,即删除C0这个簇中的特征f4,删除C1这个簇中的特征f0,删除C2这个簇中的特征f9,得到新的当前特征子集为{f3,f5,f7,f8},基于这个特征子集训练出朴素贝叶斯分类模型,假设训练出的朴素贝叶斯分类模型对软件模块X1,X3预测错误,其它8个软件模块预测正确,即准确率为80%,说明当前产生的特征子集比上一轮迭代产生的特征子集更有用,因此保留当前产生的特征子集,重复步骤5.2。从当前特征子集{f3,f5,f7,f8}中删除这三个簇中最不相关的一个特征,即删除C0这个簇中的特征f8,删除C1这个簇中的特征f3,删除C2这个簇中的特征f5,得到新的当前特征子集为{f7},基于这个特征子集训练出朴素贝叶斯分类模型,假设训练出的朴素贝叶斯分类模型对软件模块X1,X3,X5,X7,X9预测错误,其它5个软件模块预测正确,即准确率为50%,说明上一轮迭代产生的特征子集{f3,f5,f7,f8}比当前产生的特征子集{f7}更有用,则停止迭代,得到最终的特征子集{f3,f5,f7,f8}。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。本说明书中所描述的具体实施例仅仅是对本发明精神作举例说明。本发明所属技术领域的技术人员可以对所描述的具体实施例做各种各样的修改或补充或采用类似的方式替代,但并不会偏离本发明的精神或者超越所附权利要求书所定义的范围。
Claims (1)
1.一种面向软件缺陷预测的混合特征选择方法,其特征是,包括以下步骤:
步骤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;如果当前产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率低于上一轮迭代产生的特征子集上训练得出的朴素贝叶斯分类模型的准确率,则说明上一轮迭代产生的特征子集比当前产生的特征子集更有用,则停止迭代,得到最终的特征子集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710547660.5A CN107391365B (zh) | 2017-07-06 | 2017-07-06 | 一种面向软件缺陷预测的混合特征选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710547660.5A CN107391365B (zh) | 2017-07-06 | 2017-07-06 | 一种面向软件缺陷预测的混合特征选择方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107391365A CN107391365A (zh) | 2017-11-24 |
CN107391365B true CN107391365B (zh) | 2020-10-13 |
Family
ID=60335589
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710547660.5A Expired - Fee Related CN107391365B (zh) | 2017-07-06 | 2017-07-06 | 一种面向软件缺陷预测的混合特征选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107391365B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107346286B (zh) * | 2017-07-03 | 2020-05-12 | 武汉大学 | 一种基于核主成分分析和极限学习机的软件缺陷预测方法 |
CN107391370B (zh) * | 2017-07-13 | 2020-05-12 | 武汉大学 | 一种基于数据过采样和集成学习的软件缺陷数目预测方法 |
CN109766932A (zh) * | 2018-12-25 | 2019-05-17 | 新华三大数据技术有限公司 | 一种特征筛选方法以及特征筛选装置 |
CN110135469A (zh) * | 2019-04-24 | 2019-08-16 | 北京航空航天大学 | 一种改进基于相关性特征选择的特征过滤方法及装置 |
Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111920A (zh) * | 2013-04-16 | 2014-10-22 | 华为技术有限公司 | 一种基于决策树的预测方法及装置 |
CN105389598A (zh) * | 2015-12-28 | 2016-03-09 | 中国石油大学(华东) | 面向软件缺陷数据的特征选择及分类方法 |
CN105653450A (zh) * | 2015-12-28 | 2016-06-08 | 中国石油大学(华东) | 基于改进遗传算法与Adaboost结合的软件缺陷数据特征选择方法 |
CN105701013A (zh) * | 2016-01-04 | 2016-06-22 | 中国石油大学(华东) | 基于互信息的软件缺陷数据特征选择方法 |
CN106126413A (zh) * | 2016-06-16 | 2016-11-16 | 南通大学 | 基于两阶段包裹式特征选择的软件缺陷预测方法 |
CN107133176A (zh) * | 2017-05-09 | 2017-09-05 | 武汉大学 | 一种基于半监督聚类数据筛选的跨项目缺陷预测方法 |
CN107239798A (zh) * | 2017-05-24 | 2017-10-10 | 武汉大学 | 一种面向软件缺陷个数预测的特征选择方法 |
CN107247666A (zh) * | 2017-05-24 | 2017-10-13 | 武汉大学 | 一种基于特征选择和集成学习的软件缺陷个数预测方法 |
CN107346286A (zh) * | 2017-07-03 | 2017-11-14 | 武汉大学 | 一种基于核主成分分析和极限学习机的软件缺陷预测方法 |
CN107391370A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据过采样和集成学习的软件缺陷数目预测方法 |
CN107391452A (zh) * | 2017-07-06 | 2017-11-24 | 武汉大学 | 一种基于数据欠采样和集成学习的软件缺陷数目预测方法 |
CN107391369A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110314449A1 (en) * | 2010-06-18 | 2011-12-22 | Infosys Technologies Limited | Method and system for estimating effort for maintenance of software |
-
2017
- 2017-07-06 CN CN201710547660.5A patent/CN107391365B/zh not_active Expired - Fee Related
Patent Citations (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104111920A (zh) * | 2013-04-16 | 2014-10-22 | 华为技术有限公司 | 一种基于决策树的预测方法及装置 |
CN105389598A (zh) * | 2015-12-28 | 2016-03-09 | 中国石油大学(华东) | 面向软件缺陷数据的特征选择及分类方法 |
CN105653450A (zh) * | 2015-12-28 | 2016-06-08 | 中国石油大学(华东) | 基于改进遗传算法与Adaboost结合的软件缺陷数据特征选择方法 |
CN105701013A (zh) * | 2016-01-04 | 2016-06-22 | 中国石油大学(华东) | 基于互信息的软件缺陷数据特征选择方法 |
CN106126413A (zh) * | 2016-06-16 | 2016-11-16 | 南通大学 | 基于两阶段包裹式特征选择的软件缺陷预测方法 |
CN107133176A (zh) * | 2017-05-09 | 2017-09-05 | 武汉大学 | 一种基于半监督聚类数据筛选的跨项目缺陷预测方法 |
CN107239798A (zh) * | 2017-05-24 | 2017-10-10 | 武汉大学 | 一种面向软件缺陷个数预测的特征选择方法 |
CN107247666A (zh) * | 2017-05-24 | 2017-10-13 | 武汉大学 | 一种基于特征选择和集成学习的软件缺陷个数预测方法 |
CN107346286A (zh) * | 2017-07-03 | 2017-11-14 | 武汉大学 | 一种基于核主成分分析和极限学习机的软件缺陷预测方法 |
CN107391452A (zh) * | 2017-07-06 | 2017-11-24 | 武汉大学 | 一种基于数据欠采样和集成学习的软件缺陷数目预测方法 |
CN107391370A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据过采样和集成学习的软件缺陷数目预测方法 |
CN107391369A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 |
Non-Patent Citations (3)
Title |
---|
"A new metrics selection method for software defect prediction IEEE";Ye Xia, et al.;《2014 IEEE International Conference on Progress in informatics and Computing》;20141204;第433-436页 * |
"软件缺陷预测中基于聚类分析的特征选择方法";刘望舒等;《中国科学: 信息科学》;20160918;第46卷(第9期);第1298-1230页 * |
"面向软件缺陷个数预测的混合式特征选择方法";马子逸,余啸等;《计算机应用研究》;20180228;第35卷(第2期);第487-502页 * |
Also Published As
Publication number | Publication date |
---|---|
CN107391365A (zh) | 2017-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107391365B (zh) | 一种面向软件缺陷预测的混合特征选择方法 | |
CN107817787B (zh) | 一种基于机器学习的智能产线机械手故障诊断方法 | |
CN107391369B (zh) | 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 | |
US7926026B2 (en) | Graphical analysis to detect process object anomalies | |
US20190354554A1 (en) | Graphically managing data classification workflows in a social networking system with directed graphs | |
CN108345544B (zh) | 一种基于复杂网络的软件缺陷分布影响因素分析方法 | |
US20200334293A1 (en) | Computation platform agnostic data classification workflows | |
US20120158623A1 (en) | Visualizing machine learning accuracy | |
US20090125916A1 (en) | Event-processing operators | |
US20140164376A1 (en) | Hierarchical string clustering on diagnostic logs | |
US20180004835A1 (en) | Data classification workflows implemented with dynamically modifiable directed graphs | |
CN104820708B (zh) | 一种基于云计算平台的大数据聚类方法和装置 | |
CN103513983A (zh) | 用于预测性警报阈值确定工具的方法和系统 | |
CN104809244B (zh) | 一种大数据环境下的数据挖掘方法和装置 | |
CN107239798B (zh) | 一种面向软件缺陷个数预测的特征选择方法 | |
CN107247666B (zh) | 一种基于特征选择和集成学习的软件缺陷个数预测方法 | |
CN104268260A (zh) | 一种流数据的分类方法及其装置和系统 | |
CN107133176A (zh) | 一种基于半监督聚类数据筛选的跨项目缺陷预测方法 | |
CN112087316B (zh) | 基于异常数据分析的网络异常根源定位方法 | |
CN109684393A (zh) | 数据采集方法、计算机可读存储介质及终端设备 | |
CN104391879A (zh) | 层次聚类的方法及装置 | |
Sartipi et al. | A user‐assisted approach to component clustering | |
Sahraoui et al. | A concept formation based approach to object identification in procedural code | |
CN103699653A (zh) | 数据聚类方法和装置 | |
WO2023093689A1 (zh) | 一种计算图优化方法、装置及设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20201013 Termination date: 20210706 |
|
CF01 | Termination of patent right due to non-payment of annual fee |