CN107577605A - 一种面向软件缺陷预测的特征聚类选择方法 - Google Patents
一种面向软件缺陷预测的特征聚类选择方法 Download PDFInfo
- Publication number
- CN107577605A CN107577605A CN201710788664.2A CN201710788664A CN107577605A CN 107577605 A CN107577605 A CN 107577605A CN 201710788664 A CN201710788664 A CN 201710788664A CN 107577605 A CN107577605 A CN 107577605A
- Authority
- CN
- China
- Prior art keywords
- feature
- cluster
- subset
- selection
- correlation
- 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.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种结合聚类和特征子集选择的特征降维方法,主要应用于软件缺陷预测领域,解决了缺陷预测时软件特征维度高造成的搜索空间大、建模困难,以及相互间有冗余造成的预测精度低的问题。本发明首先对可预测样本数据集进行聚类分析,将相关性强的样本聚为一簇,然后在每个簇中分别进行特征子集选择。传统的特征聚类方法,在簇中根据单个特征与类标间的相关性进行排序选择,由于每个簇不止选择一个特征,而选择的特征和类标的相关性都比较大,因此最终选择的特征子集中仍有一定的冗余信息。本发明在特征聚类后,在每个簇中运用包装式的特征子集选择方法,选择出与类标间相关性高,相互之间冗余度低的特征构成最优特征子集。通过聚类分析减小了特征子集搜索空间,子集搜索算法则进一步降低了特征间冗余度,并经实例证明基于该方法构建的模型预测准确度更高。
Description
1技术领域
本发明涉及一种在聚类基础上进行的特征子集选择方法,属于软件缺陷预测领域和机器 学习领域的结合应用。
2背景技术
随着现代信息技术的不断发展,软件领域也迅速扩大起来,软件规模不断增长,程序复 杂度不断提高,致使软件中隐藏的缺陷也越来越多,由此引发的软件故障给国家、给企业带 来了不可估量的损失。软件缺陷预测技术可以分析软件静态信息,利用与缺陷相关的度量元, 准确预测出模块的缺陷分布情况,给软件质量保证提供了重要的途径。
在分析软件模块时,有大量的度量元(即特征)可以提取,现有研究存在特征交互的问 题。特征交互是指数个特征间相互联系、相互作用的问题。一方面,特征集中可能存在一些 无关特征,它与软件中的缺陷毫无联系。另一方面,特征集中可能存在特征间的两两交互、 三三交互甚至更高强度的交互问题。换句话说,就是特征间有冗余,一个特征可以由其他一 些特征推导出来。以NASA的MDP数据集为例,他们提取的软件特征主要有三类:LOC、McCabe 和Halstead,除了基本特征从源码中获得,其他特征都是由这些基本特征间接计算获得。那 么我们的目标就是要筛选出一个最优子集,它的特征间都是相互独立且互补的,没有无关特 征和冗余特征。
二、搜索空间问题。搜索空间会随着选择的特征数的增加而呈指数级增加,N个特征所 要搜索的特征子集有2N个,大部分情况下,搜索全部的特征子集是不可能的。
三、数据不平衡问题。据统计,在实际的软件模块中也存在“二八原则”,即百分之八 十的缺陷存在于百分之二十的模块中,这样在预测过程中大量的系统资源都被用来计算无缺 陷的模块,那么尽早、准确的预测出无缺陷模块,将其移除,把系统资源留给后续计算是十 分有必要的。
基于以上几个问题,本发明公开了一种基于聚类分析的特征子集选择方法,能够有效去 除无关特征和冗余特征,减少特征子集规模,减小搜索空间,缩短运行时间,并能提高缺陷 预测的效果。
3发明内容
3.1发明目的
为了解决软件缺陷预测过程中特征交互、搜索空间大和数据不平衡的问题,本发明提出 了一种基于聚类分析的特征子集选择方法,用以缩减特征子集,提高运行效率,同时又提高 了缺陷预测准确度。
3.2技术方案
本发明为解决其技术问题采用如下技术方案:具体包含以下几个步骤:
步骤一:从软件项目集中抽取软件模块和特征数据,标记部分缺陷信息,形成初始可预 测样本数据集;
步骤二:对预处理的样本数据集,进行特征聚类。
步骤三:利用聚类结果辅助特征选择,在特征聚类后使用特征子集选择方法,选出最优 子集;
步骤四:利用最优特征子集,削减构成新的样本数据集,构建软件缺陷预测模型。
上述步骤一,在进行软件缺陷预测时,首先需要从软件项目集中抽取软件模块和特征数据, 之后标记部分缺陷信息,形成初始可预测样本数据集D;
步骤二中,我们利用一般聚类方法对样本数据集D进行聚类,首先随机选取K个数据作 为初始中心,计算各个数据到中心点的距离,将样本数据指派到最近的簇中。然后计算每个 簇的均值,重复指派过程,循环执行,直至簇中心不再变化或达到最大迭代次数。以此为基 础进行特征子集的选择。
步骤三中:基于特征聚类的结果,我们进行特征子集选择。所谓特征选择,就是从一组 数量为N的特征中选择出数量为M的最优特征(N>M)。本发明采用包装式的特征子集选择方 法,根据属性子集中每一个特征的预测能力以及它们之间的相关性进行评估。现有特征数量 为N,采用带回溯的启发式搜索算法从空集开始搜索,根据任意两个特征间的冗余度及单个 特征的预测能力对其搜索的特征子集进行评估,以后续分类器的性能作为评价标准,当预测 效果超过给定阈值且不再增加时停止搜索。最终得出包含M个特征的最优特征子集S。
步骤四中:对选择出的最优特征子集S,在初始样本数据集D中只保留最优子集中的特 征值样本,组成新的样本数据集D’。本发明采用十折交叉验证,将新的样本数据集D’分为 十组,其中九组作为训练集,用以构建训练模型,剩余一组作为测试集,重复这个随机过程 十次,这样每组样本数据都可以被预测一次,确保实施例的可信性。用训练出的缺陷预测模 型来预测缺陷情况未知的测试集样本,得出预测分类结果。
3.3有益效果
本发明采用以上技术方案与现有技术相比,具有以下有益效果:
为了解决软件缺陷预测过程中特征交互、搜索空间大和数据不平衡的问题,本发明提出 了一种基于聚类分析的特征子集选择方法,能够有效去除无关特征和冗余特征,缩减特征子 集,提高运行效率,同时又提高了缺陷预测准确度。
1)本发明针对软件缺陷预测过程中特征维度高,计算复杂度大,可能负面影响预测精度 等特点,提出了结合聚类和特征子集选择的方法,提高了预测模型的精确度。
2)本发明首先针对特征中包含较多无关特征和冗余特征的特点,进行聚类分析,减小了 不同簇中特征的相关性;其次通过特征子集选择算法选择出最优子集,进一步去除了 无关特征,并降低了特征间的冗余度。
3)本发明首先通过聚类方法,减少了特征子集搜索的空间,提高了算法效率;其次进行 了特征子集选择,去除了无关特征和冗余特征,缩减了特征子集,减少了构建模型所需的时间和空间,极大地提高了算法效率。
4具体实施方式
以下对本发明的技术方案做进一步详细说明,这里结合具体的样本数据,对整个技术方 案进行具体的实验说明。本实例的环境配置如下:windows 7系统,CPU主频2.50GHZ,以及 内存4G,编程语言为java。
本发明其中之一的实施例选择在美国航空宇航局公开的MDP数据集上进行,对比的模型 包括:FCASS:提出的模型,首先使用聚类方法对样本集进行聚类,其次以聚类结果辅助特征 子集选择,用最优子集中的特征值数据来建立模型,进行软件缺陷预测;FC-Ranking:使用 聚类方法进行样本聚类之后,以特征与类别间的相关性大小进行排序,根据设定阈值进行特 征选择。ful lDataSet:不对样本数据进行特征选择,直接使用全部特征进行建模和预测。具 体在FCASS模型中,各个阶段的处理如下:
步骤一:获取初始数据集。在进行软件缺陷预测时,首先需要从软件项目集中抽取软件 模块和特征数据,之后标记部分缺陷信息,形成初始可预测样本数据集D={X,Y},其中 X={X1,X2,X3......}是软件模块信息,Y={0,1}是缺陷标记,0表示软件模块无缺陷,1表示有 缺陷。其中样本数据的特征表示为:F={f1,f2,f,3......fn}。本发明采用十折交叉验证,每次 把数据集分为十份,每次实验中九份做训练集,一份做测试集,重复十次取预测平均值。
步骤二:对预处理样本数据集,进行聚类分析。本实施例用K-Means方法对样本数据集 D={X1,X2......}进行聚类,聚类簇数为2,C={C1,C2}。首先随机选取2个数据作为初始中心 点,为U1,U2。对每个样本Xj计算其到各个中心点Ui的距离Dist(Xj,Ui),将数据样本指派到 最近的簇中。然后计算每个簇的均值,重复指派过程,循环执行,直至聚类中心不再变化或 达到最大迭代次数,得到2个聚类簇{C1,C2}。以此为基础进行特征子集的选择。
步骤三:利用聚类结果辅助特征选择,在聚类后使用特征子集选择方法,选出最优子集。 基于聚类结果,我们进行特征子集选择。本发明选用包装式的特征子集选择方法,根据特征 子集中每一个特征的预测能力以及它们之间的关联性进行评估。对特征集 F={f1,f2,f,3......fn},采用回溯的启发式BestFirst搜索算法从空集开始前向搜索,利用CFS方法的相关性度量对其搜索的特征子集进行评估,度量公式如公式(1)所示,其中表示不同特征间的相关性,计算见公式(2);表示特征与类别间的相关性,计算见公式(3);经过代入化简,最终可得子集评价的相关性度量公式(4)。以后续使用的朴素贝叶斯分类器的性能作为评价标准,当预测效果超过给定阈值且不再增加时停止搜索。最终得出包含M个特征的最优特征子集S={f1,f2,f,3......fm}。
步骤四:利用最优特征子集,削减构成新的样本数据集,构建软件缺陷预测模型。首先 对选择出的最优特征子集S,在初始样本数据集D中只保留最优子集中的特征值样本,组成 新的样本数据集D’。其次本发明采用十折交叉验证,将新的样本数据集D’分为十组,其中 九组作为训练集,用以构建训练模型,剩余一组作为测试集,重复这个随机过程十次,这样 每组样本数据都可以被预测一次,确保实施例的可信性。最后利用训练的缺陷预测模型对测 试集的样本进行预测,得到预测分类结果并对其进行分析。
在对比的FC-Ranking模型中,聚类方法与上述FCASS模型中聚类方法类似,在得到的聚 类簇中,利用信息增益来度量特征与类别间的关系。对任一随机样本X的信息增益为:
IG(X|Y)=H(X)-H(X|Y) (5)
公式(5)中H(X)为随机变量X的熵值,假设p(x)是所有X值的先验概率,p(x/y)是给出 y值后x的后验概率,H(X)由下列公式(6)计算:
H(X)=-∑p(x)log2p(x) (6)
公式中(5)中H(X/Y)是有条件的熵值,在随机变量Y已知的情况下变量X的熵值,它可以 由公式(7)计算得出:
H(X|Y)=-∑p(y)∑p(x|y)log2p(x|y) (7)
我们根据每一个特征属性的信息增益进行评估,通过排序选择出指定个数的特征用以后 续分类器训练。
最后,在对比的全属性集fullDataSet中我们不对样本数据进行特征选择,直接使用全 部特征进行建模和预测。
Claims (4)
1.一种应用于软件缺陷预测的特征聚类选择方法,其特征在于:
1)本发明首次提出一种结合聚类和特征子集选择的特征降维方法,显著提高了软件预测模型的预测精度;
2)本方法首先对样本数据集进行聚类分析,得到聚类结果;
3)本方法基于样本聚类的结果,进行包装式特征子集选择,得到最优特征子集。
2.如权利要求1所述,本发明首次提出一种特征选择方法,结合了聚类和特征子集选择的方法。本方法的特征在于以下几个步骤:
步骤一:从软件项目集中抽取软件模块和特征数据,标记部分缺陷信息,形成初始可预测样本数据集;
步骤二:对样本数据集进行聚类分析,聚类算法可以将样本数据分成不同的簇;
步骤三:利用聚类结果辅助特征选择,在不同簇中使用特征子集选择方法,选出最优子集;
步骤四:利用最优特征子集,削减构成新的样本数据集,构建软件缺陷预测模型。
此方法首先通过特征聚类可以将相似的样本数据集中在相同簇中,然后,本发明在簇中采用了包装式的特征子集选择方法。因为聚类方法是将相关性强的样本聚为一簇,那么相同簇中的特征,尤其是与类标间相关性较大的一些特征,有较大概率存在冗余。而本发明采用在簇中进行包装式的特征子集选择将会进一步降低特征间冗余度,并且选出预测能力更强的特征,提高软件缺陷分类精确度。
3.如权利要求2所述的特征聚类方法,其特征在于:本聚类方法的主要目的是通过聚类减小不同簇中样本的相关性。为了区分软件模块有无缺陷,将样本聚为两簇,同一簇中样本相关性较强,有较大概率存在冗余,不同簇中样本间相关性较低。以此为基础进行后续特征子集的选择,不仅区分了样本间的相关性,得出冗余关系;而且降低了子集搜索的空间,化大为小,使得算法效率更高。
4.如权利要求3所述,基于特征聚类的结果进行特征子集选择,不仅能有效去除无关特征,而且降低了特征间的冗余度。搜索时根据特征的预测能力以及它们之间的相关性进行评估,倾向于选择预测能力强且相互间冗余度低的特征。我们使用启发式搜索算法,以后续分类器的性能作为评价标准。最终得出包含更少特征的最优特征子集。最后可以基于选择出的最优特征子集,构建缺陷预测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710788664.2A CN107577605A (zh) | 2017-09-04 | 2017-09-04 | 一种面向软件缺陷预测的特征聚类选择方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710788664.2A CN107577605A (zh) | 2017-09-04 | 2017-09-04 | 一种面向软件缺陷预测的特征聚类选择方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN107577605A true CN107577605A (zh) | 2018-01-12 |
Family
ID=61031390
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710788664.2A Pending CN107577605A (zh) | 2017-09-04 | 2017-09-04 | 一种面向软件缺陷预测的特征聚类选择方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107577605A (zh) |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109493929A (zh) * | 2018-09-20 | 2019-03-19 | 北京工业大学 | 基于分组变量的低冗余特征选择方法 |
CN109615075A (zh) * | 2018-12-14 | 2019-04-12 | 大连海事大学 | 一种基于多层聚类模型的居民日常行为识别方法 |
CN110135469A (zh) * | 2019-04-24 | 2019-08-16 | 北京航空航天大学 | 一种改进基于相关性特征选择的特征过滤方法及装置 |
CN111367808A (zh) * | 2020-03-05 | 2020-07-03 | 中山大学 | 一种针对跨版本软件缺陷预测的数据噪声处理方法 |
CN112328469A (zh) * | 2020-10-22 | 2021-02-05 | 南京航空航天大学 | 一种基于嵌入技术的函数级缺陷定位方法 |
CN112416789A (zh) * | 2020-11-29 | 2021-02-26 | 中国科学院电子学研究所苏州研究院 | 一种面向演化软件的过程度量元评价方法 |
CN113157561A (zh) * | 2021-03-12 | 2021-07-23 | 安徽工程大学 | 一种数控系统软件模块的缺陷预测方法 |
CN114004513A (zh) * | 2021-11-04 | 2022-02-01 | 浙江大学 | 一种需求预测方法、系统及存储介质 |
CN114791886A (zh) * | 2022-06-21 | 2022-07-26 | 纬创软件(武汉)有限公司 | 一种软件问题跟踪方法和系统 |
CN114881294A (zh) * | 2022-04-14 | 2022-08-09 | 浙江工业大学 | 一种基于融合机器学习和时间序列的需求预测方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8881095B1 (en) * | 2012-03-30 | 2014-11-04 | Sprint Communications Company L.P. | Software defect prediction |
CN104899135A (zh) * | 2015-05-14 | 2015-09-09 | 工业和信息化部电子第五研究所 | 软件缺陷预测方法和系统 |
CN105389598A (zh) * | 2015-12-28 | 2016-03-09 | 中国石油大学(华东) | 面向软件缺陷数据的特征选择及分类方法 |
CN106126413A (zh) * | 2016-06-16 | 2016-11-16 | 南通大学 | 基于两阶段包裹式特征选择的软件缺陷预测方法 |
-
2017
- 2017-09-04 CN CN201710788664.2A patent/CN107577605A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8881095B1 (en) * | 2012-03-30 | 2014-11-04 | Sprint Communications Company L.P. | Software defect prediction |
CN104899135A (zh) * | 2015-05-14 | 2015-09-09 | 工业和信息化部电子第五研究所 | 软件缺陷预测方法和系统 |
CN105389598A (zh) * | 2015-12-28 | 2016-03-09 | 中国石油大学(华东) | 面向软件缺陷数据的特征选择及分类方法 |
CN106126413A (zh) * | 2016-06-16 | 2016-11-16 | 南通大学 | 基于两阶段包裹式特征选择的软件缺陷预测方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109493929B (zh) * | 2018-09-20 | 2022-03-15 | 北京工业大学 | 基于分组变量的低冗余特征选择方法 |
CN109493929A (zh) * | 2018-09-20 | 2019-03-19 | 北京工业大学 | 基于分组变量的低冗余特征选择方法 |
CN109615075B (zh) * | 2018-12-14 | 2022-08-19 | 大连海事大学 | 一种基于多层聚类模型的居民日常行为识别方法 |
CN109615075A (zh) * | 2018-12-14 | 2019-04-12 | 大连海事大学 | 一种基于多层聚类模型的居民日常行为识别方法 |
CN110135469A (zh) * | 2019-04-24 | 2019-08-16 | 北京航空航天大学 | 一种改进基于相关性特征选择的特征过滤方法及装置 |
CN111367808B (zh) * | 2020-03-05 | 2023-05-02 | 中山大学 | 一种针对跨版本软件缺陷预测的数据噪声处理方法 |
CN111367808A (zh) * | 2020-03-05 | 2020-07-03 | 中山大学 | 一种针对跨版本软件缺陷预测的数据噪声处理方法 |
CN112328469B (zh) * | 2020-10-22 | 2022-03-18 | 南京航空航天大学 | 一种基于嵌入技术的函数级缺陷定位方法 |
CN112328469A (zh) * | 2020-10-22 | 2021-02-05 | 南京航空航天大学 | 一种基于嵌入技术的函数级缺陷定位方法 |
CN112416789A (zh) * | 2020-11-29 | 2021-02-26 | 中国科学院电子学研究所苏州研究院 | 一种面向演化软件的过程度量元评价方法 |
CN112416789B (zh) * | 2020-11-29 | 2022-11-29 | 中国科学院电子学研究所苏州研究院 | 一种面向演化软件的过程度量元评价方法 |
CN113157561A (zh) * | 2021-03-12 | 2021-07-23 | 安徽工程大学 | 一种数控系统软件模块的缺陷预测方法 |
CN114004513A (zh) * | 2021-11-04 | 2022-02-01 | 浙江大学 | 一种需求预测方法、系统及存储介质 |
CN114881294A (zh) * | 2022-04-14 | 2022-08-09 | 浙江工业大学 | 一种基于融合机器学习和时间序列的需求预测方法 |
CN114791886A (zh) * | 2022-06-21 | 2022-07-26 | 纬创软件(武汉)有限公司 | 一种软件问题跟踪方法和系统 |
CN114791886B (zh) * | 2022-06-21 | 2022-09-23 | 纬创软件(武汉)有限公司 | 一种软件问题跟踪方法和系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107577605A (zh) | 一种面向软件缺陷预测的特征聚类选择方法 | |
CN112232413B (zh) | 基于图神经网络与谱聚类的高维数据特征选择方法 | |
CN105069470A (zh) | 分类模型训练方法及装置 | |
CN108319987A (zh) | 一种基于支持向量机的过滤-封装式组合流量特征选择方法 | |
CN110442523B (zh) | 一种跨项目软件缺陷预测方法 | |
CN111343147B (zh) | 一种基于深度学习的网络攻击检测装置及方法 | |
CN107291895B (zh) | 一种快速的层次化文档查询方法 | |
KR102387885B1 (ko) | 인공지능 학습을 위한 클린 라벨 데이터 정제 방법 | |
CN111833310B (zh) | 一种基于神经网络架构搜索的表面缺陷分类方法 | |
CN111860981B (zh) | 一种基于lstm深度学习的企业国民行业类别预测方法及系统 | |
CN112364352A (zh) | 可解释性的软件漏洞检测与推荐方法及系统 | |
CN112756759A (zh) | 点焊机器人工作站故障判定方法 | |
CN111767216B (zh) | 一种可缓解类重叠问题的跨版本深度缺陷预测方法 | |
CN111783818A (zh) | 一种基于Xgboost和DBSCAN的精准营销方法 | |
JP5391637B2 (ja) | データ類似度計算システム、データ類似度計算方法およびデータ類似度計算プログラム | |
CN112685374B (zh) | 日志分类方法、装置及电子设备 | |
CN113837266B (zh) | 一种基于特征提取和Stacking集成学习的软件缺陷预测方法 | |
CN111582315A (zh) | 样本数据处理方法、装置及电子设备 | |
CN107480441A (zh) | 一种基于支持向量机的儿童脓毒性休克预后预测的建模方法及系统 | |
CN111916143B (zh) | 基于多样子结构特征融合的分子活性预测方法 | |
CN114153839A (zh) | 多源异构数据的集成方法、装置、设备及存储介质 | |
CN116720079A (zh) | 基于多特征融合的风力发电机故障模式识别方法及系统 | |
Zhao et al. | Multi-label node classification on graph-structured data | |
CN113127342B (zh) | 基于电网信息系统特征选择的缺陷预测方法及装置 | |
Zhou et al. | CABF-YOLO: a precise and efficient deep learning method for defect detection on strip steel surface |
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 | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20180112 |
|
WD01 | Invention patent application deemed withdrawn after publication |