CN113127342A - 基于电网信息***特征选择的缺陷预测方法及装置 - Google Patents
基于电网信息***特征选择的缺陷预测方法及装置 Download PDFInfo
- Publication number
- CN113127342A CN113127342A CN202110339177.4A CN202110339177A CN113127342A CN 113127342 A CN113127342 A CN 113127342A CN 202110339177 A CN202110339177 A CN 202110339177A CN 113127342 A CN113127342 A CN 113127342A
- Authority
- CN
- China
- Prior art keywords
- software
- data set
- training set
- module
- version data
- 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.)
- Granted
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/3668—Software testing
- G06F11/3672—Test management
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y04—INFORMATION OR COMMUNICATION TECHNOLOGIES HAVING AN IMPACT ON OTHER TECHNOLOGY AREAS
- Y04S—SYSTEMS INTEGRATING TECHNOLOGIES RELATED TO POWER NETWORK OPERATION, COMMUNICATION OR INFORMATION TECHNOLOGIES FOR IMPROVING THE ELECTRICAL POWER GENERATION, TRANSMISSION, DISTRIBUTION, MANAGEMENT OR USAGE, i.e. SMART GRIDS
- Y04S10/00—Systems supporting electrical power generation, transmission or distribution
- Y04S10/50—Systems or methods supporting the power network operation or management, involving a certain degree of interaction with the load-side end user applications
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提出了一种基于电网信息***特征选择的缺陷预测方法及装置,所述方法包括:获取待测软件的历史版本数据集和待测版本数据集并进行规范化处理;计算待测版本数据集中每个实例与历史版本数据集中每个实例之间的相似性,根据相似性,从历史版本数据集中选取与待测版本数据集中每个实例最近的k个实例,构造训练集;对训练集进行类不平衡处理;对类平衡的训练集以及经过规范化处理的待测版本数据集进行特征选择;基于经特征选择的训练集,利用通过分类算法所构建的缺陷预测模型,预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果。本发明考虑软件不同版本之间特征差异和数据分布差异,提高软件缺陷预测效率和精度。
Description
技术领域
本发明涉及软件测试领域,具体涉及一种电网信息***测试缺陷预测方法及预测装置。
背景技术
在软件进行开发和运维的过程中,由于需求的变更、性能改善、缺陷修复、代码重构等均会引起软件的变化,进而会引起软件规模越来越大,功能越来越复杂,不同功能模块之间的关系也越来越复杂,软件中有缺陷是不可避免的。软件测试通过执行程序来尽可能多地发现软件缺陷来保证软件的质量。软件测试是软件工程中消耗时间和资源最多的部分,要利用有限的测试资源来测试所有的程序。随着分布式电源、增量配电网等的不断发展,电力信息***/电网信息***的更新迭代的频度、复杂性和时效性要求越来越高,这给软件测试缺陷预测提出了更高的要求。在面向版本迭代更新的项目缺陷预测中,源数据集和目标数据集中会存在无关特征,同时源数据集和目标数据集的数据分布可能不同。现有的缺陷检测方法中没有考虑这些特征差异和数据分布差异,对测试资源的分配还存在不足,从而导致缺陷预测的性能和效率不高。
发明内容
发明目的:针对现有技术的不足,本发明提供一种基于电网信息***特征选择的缺陷预测方法,实现更有效地分配测试资源,提高软件测试的效率和质量。
本发明的另一目的是提供一种基于电网信息***特征选择的缺陷预测装置。
技术方案:根据本发明的第一方面,提供一种基于电网信息***特征选择的测试缺陷预测方法,包括以下步骤:
(1)获取待测软件的历史版本数据集和待测版本数据集并进行规范化处理;
(2)计算待测版本数据集中每个实例与历史版本数据集中每个实例之间的相似性,根据相似性,从历史版本数据集中选取与待测版本数据集中每个实例最近的k个实例,构造训练集;
(3)对训练集进行类不平衡处理,得到类平衡的训练集;
(4)对类平衡的训练集以及经过规范化处理的待测版本数据集进行特征选择;
(5)基于经特征选择的训练集和测试集,利用通过分类算法所构建的缺陷预测模型,预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果。
根据本发明的第二方面,提供一种基于电网信息***特征选择的缺陷预测装置,包括:
数据获取模块,用于获取待测软件的历史版本数据集和待测版本数据集并进行规范化处理;
训练集构造模块,用于计算待测版本数据集中每个实例与历史版本数据集中每个实例之间的相似性,以及根据相似性,从历史版本数据集中选取与待测版本数据集中每个实例最近的k个实例,构造训练集;
训练集处理模块,用于对训练集进行类不平衡处理,得到类平衡的训练集;
特征选择模块,用于对类平衡的训练集以及经过规范化处理的待测版本数据集进行特征选择;
预测模块,用于基于经特征选择的训练集和测试集,利用通过分类算法所构建的缺陷预测模型,预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果。
有益效果:本发明提出的一种基于电网信息***特征选择的缺陷预测方法及装置,通过对数据集预处理提高数据质量;通过实例选择使历史版本数据集与当前待测版本数据集的数据分布一致;通过特征选择选取与缺陷强相关的特征,移除无关特征,提升缺陷预测的性能和效率;采用改进的分类算法在历史版本数据集上构建缺陷预测模型,预测当前待测版本各模块的缺陷倾向性,最终实现准确、有效的预测,同时对预测模型的对应参数进行记录更新,作为电网信息***测试缺陷预测的支撑数据。本发明能够有效协助软件测试者在软件测试前预测出可能有缺陷的软件模块,从而更有效地分配测试资源,进而提高软件测试的效率和质量。
附图说明
图1是本发明的基于电网信息***特征选择的缺陷预测方法总体示意图;
图2是本发明的基于电网信息***特征选择的缺陷预测方法的流程图。
具体实施方式
随着电网信息***的不断完善,电网不同信息***的历史版本越来越多,对于具有历史版本的延续性软件项目而言,在软件测试前,根据一定的测试经验来挖掘软件历史版本的缺陷数据,利用数据挖掘和机器学习算法,构建缺陷预测模型,可以有效预测后续版本各模块的缺陷情况。软件缺陷不是随机分布的,它们的分布是有规律可循的。通过挖掘软件历史缺陷数据,分析缺陷分布规律,可以准确地预测出具有缺陷倾向性的软件模块,把大多数测试资源分配给它们,而无需在不具有缺陷倾向性的模块上花费资源。进而可以在保证软件测试质量的前提下,有效地分配测试资源,显著提高软件测试的效率。
本发明实施例针对电网信息***中延续性开发和应用类项目软件代码,在进行软件测试前综合考虑数据集的数据分布对缺陷预测的影响,提出一种基于电网信息***特征选择的缺陷预测方法,概括而言,该方法包括:通过推荐相似的历史版本数据,使历史版本数据集与待测版本数据集的数据分布一致,寻找历史版本中软件缺陷的分布规律。该方法还包括:通过特征选择算法有效选取与缺陷强相关的特征,利用改进的AdaBoost分类算法构建缺陷预测模型进行训练和分析,同时,对预测模型的对应参数进行记录更新,作为电网信息***测试缺陷预测的支撑数据。
下面结合附图给出本发明方法的实施步骤的具体说明。应当指出的是,以下描述的步骤仅是为了说明本发明的目的而不是对本发明的限制。
如图1和图2所示,在步骤1中,构建历史版本数据集和待测版本数据集。
在实施例中,历史版本数据集可以基于电网所用的信息***历史版本测试的特征数、实例数(有缺陷数、无缺陷数)来构建。特征指的是信息***软件的软件度量元。软件度量元包括代码度量元和过程度量元。例如,对于电网信息化部门中所有的信息化测试项目运行过程中,所有由java语言开发,面向不同应用且具有多个连续版本的代码仓库、版本控制***等进行数据挖掘,记录这些项目历史版本模块中的类,设计与缺陷相关的软件度量元,如代码环路复杂度、代码变更行数等,度量历史版本模块标记为有无缺陷。软件度量元指的是描述软件产品特征的指标和参数,也可以理解为软件特征。目前来说,软件度量元主要分为代码度量元和过程度量元。代码度量元主要指环路复杂度,描述软件代码结构复杂性。过程度量元主要包括基于代码变更、基于开发者信息、开发过程相关的度量元。主要包括变更次数、开发人员数目、代码变更行数等。对于历史版本模块实例有无缺陷的标记可以通过经验如历史测试记录对每一个软件模块实例的度量元的值进行判断。
构建的历史版本数据集表示为:DATA={(a1,b1),(a2,b2),…,(ai,bi),…,(an,bn)},ai=(fi,1,fi,2,…,fi,j,…,fi,d),其中,ai表示软件模块实例,bi表示该实例的类别,bi∈Y,Y={有缺陷,无缺陷},n代表实例的数目,fi,j表示实例ai的第j个软件度量元的值,d表示软件度量元的数目。
对于待测版本数据集,基于同样的代码度量元获取待测版本的特征指标和参数,即软件模块实例中各个软件度量元的值。
得到的历史版本数据集和待测版本数据集统称为原始数据集。
在步骤2中,对构建的历史版本数据集和待测版本数据集中的数据进行预处理。
将记录到原始数据集中的数据进行预处理,预处理包括:检查数据一致性,进行数据规范化处理,去除其中明显失真的数据,进行有效的整理存储。在数据规范化处理中,不同软件度量元的取值范围不同,针对特征值的不同对缺陷的影响程度不同,选用随机森林填充缺失值,采用Max-min的方法对各软件度量元的取值范围进行归一化,规范化处理至[0,1],以消除不同软件度量元的取值范围不同而给缺陷预测结果带来的影响。规范化处理的公式为:
其中,pi,j表示规范化处理后第i个软件模块的第j个软件度量元的取值,qi,j表示规范化处理前第i个软件模块的第j个软件度量元的取值,Min(qj)表示所有软件模块中第j个软件度量元的最小值,Max(qj)表示最大值。在本发明的描述中,软件模块、软件模块实例、实例可以互换使用。
在步骤3中,根据预处理后的数据构造训练集和测试集。
可以根据实际需要,选择是否进行实例推荐,若项目开发过程中没有出现开发人员或开发环境等的变动,即历史版本数据集和当前待测版本数据集的数据分布一致,则可以不进行实例推荐操作,否则,进行实例推荐。由于针对一个软件项目的延续性开发,不同版的开发人员、开发环境等发生变化,数据集的数据分布会发生变化。通过实例推荐可以有效选择有效特征数据,提高预测的性能。
具体包括:通过欧式距离有效计算待测版本数据集中的每个实例与历史版本数据集中每个实例之间的相似性,然后,从历史版本数据集中选取与当前待测版本数据集中的每个实例欧式距离最小的k个近邻实例。所有的k近邻中中重复的实例仅取一次,得到新的数据集。通过多次测试k值对算法的影响,将k取值为8。欧式距离的计算公式是现有技术,此处不再赘述。
通过上述处理后得到的历史版本数据集作为训练集,待测版本数据集作为测试集。
在步骤4中,对训练集进行类不平衡处理。
在大多情况下,无缺陷模块实例的数目远远大于有缺陷模块实例的数目,因此训练集中数据存在类不平衡问题。在非平衡数据集分类中少数类样本的正确分类往往比多数类样本更加重要。本发明通过采用SMOTE方法对训练集进行类不平衡处理,以使有缺陷模块实例(少数类样本)的数目与无缺陷模块实例(多数类样本)的数目均衡,得到类平衡的训练集。
SMOTE采样是对少数类进行处理,生成少数类数据,以达到平衡数据集的目的。该算法是在随机过采样的基础上进行改进的,首先获得一个少数类x的k近邻的少数类样本,应当理解,此处的k近邻的k值不一定等同于步骤3中选取k近邻的k值,根据不平衡数据的比例设置采样倍率N,假设设定xn为x的k近邻中的一个少数类样本,按照以下公式进行采样:
Xnew=X+rand(0,1)*|X-Xn|
其完整步骤如下:
Step1.对于一个随机的少数类的实例p,以欧式距离为标准,度量其到少数类实例中所有实例的距离,得到其k个近邻实例。
Step2.有放回地随机抽取R≤k个邻居。
Step3.对这R个实例,每一个实例与实例p可以组成一条直线,然后在这条直线上随机取一个实例,就产生了一个新的样本,不断地这样做从而一共可以产生R个新的实例。
Step4.将这些新的点加入样本集中。
通过简单随机过采样方法合成的新样本存在盲目性和局限性的问题,因为该方法是通过随机复制少数类样本以达到增加少数样本的目的。SMOTE算法使用线性插值方法,并根据某些特定规则来合成新的少数类样本。这样,在增加少数类样本的数量的同时,可以防止由于增加少数类样本的数量从而导致决策域变小的问题,从而避免了算法在一定程度上过拟合,以达到提高分类器性能的目的。
在步骤5中,根据类平衡的训练集与经过规范化处理后的当前待测版本的数据集进行特征选择。
利用特征排序方法对训练集进行特征排序,选取与缺陷强相关的特征,移除无关特征。可以选择是否进行特征选择,若进行特征选择,通过ReliefF算法(RF)获得特征排序列表。根据设置的要选取的特征数目,从特征排序列表中选取排名靠前的指定数目的特征,以序号和名称的形式展示选取的特征。最后,从类平衡的训练集和规范化的当前待测版本数据集中选取出这些特征,移除其余的特征,得到特征选择后的训练集和特征选择后的测试集。
在步骤6中,利用分类算法在经过推荐选择和特征选择处理后的历史版本数据集上构建缺陷预测模型,输入特征选择后的测试集,预测当前待测版本各模块的缺陷情况,返回当前待测版本各模块的缺陷预测结果。
为了追求少数类识别的准确率和召回率的进一步提升,对分类算法加以改进。传统的分类算法大多是假定误分类代价是相同的和以提高分类器的分类精度为最终目标,因此当其在处理非平衡数据集的分类问题时,通常会将少数类样本分为多数类,进而提高分类器的分类精度。但是在非平衡数据集分类中少数类样本的正确分类往往比多数类样本更加重要。代价敏感学习即是基于以上的理论,给错分的少数类样本更高的错分代价。本实施例中将处理过的数据集交由改进的Adaboost分类算法构建的缺陷预测模型进行有效分类预测,达到提升分类器对少数类样本的分类效果的目的。
区别于传统的Adaboost算法,本发明通过将代价矩阵引入到权重更新公式中改变了Adaboost的权重更新方式,使得分类错误的少数类样本获得更高的权重,分类正确的样本的权重降低。具体的方式是针对Adaboost中的样本权值更新公式进行修改,将更新为了这里的β(i)也就是代价矩阵确定情况下代价敏感函数,在本发明中所处理的电网数据集并没有已经确定好的代价矩阵,因此本发明中针对β(i),相当于直接给定少数类样本一个系数K(K>1),当弱分类器正确分类时,β(i)=1保持不变,该样本权重正常减小;当将少数类分为多数类时,β(i)=K,该样本的权重以更快的速度增加;当将多数类分为少数类时,β(i)=1保持不变,该样本权重正常增加。在此将β(i)称为针对第i个实例的代价敏感补偿参数。通过这样的方式能够提高错分少数类样本权重,能够更快的提高少数类样本的识别率。
改进的Adaboost算法具体流程如下:
输入:经过特征处理后训练集;迭代次数T;基学习算法;
输出:组合分类器
step1.将训练集中的样本权值初始化为D1(i)=1/n。
step2.对于i=1,.....T,迭代执行在训练集上训练第t个弱分类器ht(x),并且计算第t次迭代分类器的错误率εt,也称为误差:
step3.估计误差,如果εt>0.5或者εt=0,分类器不合格,终止迭代;否则按下式更新样本的权值:
在权重更新公式中加大少数类样本误分的代价,使得少数类误分类的样本获得更样本权重。通过这种方式能够在相同的迭代次数中更多提升少数类样本的预测准确率。
通过本发明的方法,一方面帮助软件测试者在软件测试前预测出可能有缺陷的软件模块提供相应的数据支撑,引导测试资源的有效分配,提高测试的效率;另一方面分析软件缺陷产生的原因,改进软件开发过程,提高后续版本的开发质量。
通过对历史版本数据集进行实例选择和类不平衡处理后,通过特征选择选取关键特征,得到特征选择后的测试集和训练集,为了进一步优化少数类测试缺陷预测的效果,对adaboost预测模型进行了优化,通过实验对比决策树、Adaboost算法和改进的Adaboost算法构建的预测模型,本发明改进的Adaboost的少数类的precision评分高于DecisionTree和Adaboost方法,但recall评分低于DecisionTree,这是因为代价敏感函数的引入使得分类器将更多的权重分配到了分类错误的少数类实例上,其他的少数类实例的学习权重相对减少。综合考虑预测模型对于少数实例的误判和漏判,可以发现本发明提出的改进的分类模型方法的f1评分分别比DecisionTree和Adaboost高5%左右,也就是本方法在保证识全率的基础上,较好的提高了少数类实例识别预测的准确率,有效提高了预测的性能。
本发明针对电力信息***特点,基于软件缺陷检测技术将电力信息***典型应用中存在的多历史版本的延续性软件代码,在软件测试前,根据一定的测试经验挖掘软件历史版本的缺陷数据,利用数据挖掘和机器学习算法构建缺陷预测模型,有效预测后续版本各模块的缺陷情况。本发明可用于软件缺陷检测、软件缺陷预测解决方案。
在另一实施例中,提供一种基于电网信息***特征选择的缺陷预测装置,包括:
数据获取模块,用于获取待测软件的历史版本数据集和待测版本数据集并进行规范化处理;
训练集构造模块,用于计算待测版本数据集中每个实例与历史版本数据集中每个实例之间的相似性,以及根据相似性,从历史版本数据集中选取与待测版本数据集中每个实例最近的k个实例,构造训练集;
训练集处理模块,用于对训练集进行类不平衡处理,得到类平衡的训练集;
特征选择模块,用于对类平衡的训练集以及经过规范化处理的待测版本数据集进行特征选择;
预测模块,用于基于经特征选择的训练集和测试集,利用通过分类算法所构建的缺陷预测模型,预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果。
其中,数据获取模块包括:
历史版本数据集获取单元,用于记录历史版本的软件模块中的类,根据与缺陷相关的软件度量元,度量历史版本的软件模块有无缺陷,得到历史版本数据集,表示为DATA={(a1,b1),(a2,b2),…,(ai,bi),…,(an,bn)},ai=(fi,1,fi,2,…,fi,j,…,fi,d),其中,ai表示软件模块实例,bi表示该实例的类别,bi∈Y,Y={有缺陷,无缺陷},n代表实例的数目,fi,j表示实例ai的第j个软件度量元的值,d表示软件度量元的数目;
待测版本数据集获取单元,用于获取待测版本的软件模块中的类,根据与缺陷相关的软件度量元,获得软件模块实例中各个软件度量元的值;
规范化处理单元,用于选用随机森林填充缺失值,采用Max-min的方法对各软件度量元的取值范围进行归一化,公式为:
其中,pi,j表示规范化处理后第i个软件模块的第j个软件度量元的取值,qi,j表示规范化处理前第i个软件模块的第j个软件度量元的取值,Min(qj)表示所有软件模块中第j个软件度量元的最小值,Max(qj)表示所有软件模块中第j个软件度量元的最大值。
作为一种优选的实施方式,训练集处理模块使用SMOTE采样算法对训练集进行类不平衡处理,训练集处理模块具体包括:
少数类近邻确定单元,用于对于一个随机的少数类的实例p,以欧式距离为标准,度量其到少数类实例中所有实例的距离,得到其k个近邻实例;
邻居抽取单元,用于有放回地随机抽取R≤k个邻居;
新样本生成单元,用于对邻居抽取单元随机抽取的R个实例,将其中每一个实例与实例p组成一条直线,在这条直线上随机取一个实例,产生一个新的样本,共产生R个新的样本;以及
训练集更新单元,用于将新样本生成单元产生的新的样本加入训练集中,得到类平衡的训练集。
作为一种优选的实施方式,特征选择模块通过ReliefF算法获得特征排序列表,从特征排序列表中选取排名靠前的指定数目的特征,从类平衡的训练集和规范化后的当前待测版本数据集中选取出这些特征,移除其余的特征,得到特征选择后的训练集和特征选择后的测试集。
作为一种优选的实施方式,预测模块包括缺陷预测模型构建单元和缺陷预测单元,缺陷预测模型构建单元采用改进的Adaboost算法来构建缺陷预测模型并训练模型,缺陷预测单元基于特征选择后的测试集数据,利用训练后的缺陷预测模型预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果;
其中,缺陷预测模型构建单元包括:
初始化单元,用于将训练集中的样本权值初始化为D1(i)=1/n,n为实例数目;
迭代执行单元,对于i=1,.....T,迭代执行在训练集上训练第t个弱分类器ht(x),并且计算第t次迭代分类器的错误率εt:
T为迭代次数,yi为训练集中第i个实例的类别;
其中,当εt小于预设阈值时,分类器不合格,终止迭代;否则按下式更新样本的权值:
作为一种优选的实施方式,该缺陷预测装置还包括:优化模块,用于将经特征选择的待测版本数据集作为测试集,对预测模型进行优化更新。
应理解,本发明实施例中的基于电网信息***特征选择的缺陷预测装置可以实现上述方法实施例中的全部技术方案,其各个功能模块的功能可以根据上述方法实施例中的方法具体实现,在装置实施例中未加以详述的具体实现过程以及计算公式可参照上述实施例中的相关描述。
基于与方法实施例相同的技术构思,根据本发明的另一实施例,提供一种计算机设备,所述设备包括:一个或多个处理器;存储器;以及一个或多个程序,其中所述一个或多个程序被存储在所述存储器中,并且被配置为由所述一个或多个处理器执行,所述程序被处理器执行时实现方法实施例中的各步骤。
本领域内的技术人员应明白,本申请的实施例可提供为方法、***、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于电网信息***特征选择的缺陷预测方法,其特征在于,所述方法包括以下步骤:
(1)获取待测软件的历史版本数据集和待测版本数据集并进行规范化处理;
(2)计算待测版本数据集中每个实例与历史版本数据集中每个实例之间的相似性,根据相似性,从历史版本数据集中选取与待测版本数据集中每个实例最近的k个实例,构造训练集;
(3)对训练集进行类不平衡处理,得到类平衡的训练集;
(4)对类平衡的训练集以及经过规范化处理的待测版本数据集进行特征选择;
(5)基于经特征选择的训练集和测试集,利用通过分类算法所构建的缺陷预测模型,预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果。
2.根据权利要求1所述的基于电网信息***特征选择的缺陷预测方法,其特征在于,所述步骤(1)中,获取待测软件的历史版本数据集包括:记录历史版本的软件模块中的类,根据与缺陷相关的软件度量元,度量历史版本的软件模块有无缺陷,得到历史版本数据集,表示为DATA={(a1,b1),(a2,b2),…,(ai,bi),…,(an,bn)},ai=(fi,1,fi,2,…,fi,j,…,fi,d),其中,ai表示软件模块实例,bi表示该实例的类别,bi∈Y,Y={有缺陷,无缺陷},n代表实例的数目,fi,j表示实例ai的第j个软件度量元的值,d表示软件度量元的数目;
获取待测版本数据集包括:获取待测版本的软件模块中的类,根据与缺陷相关的软件度量元,获得软件模块实例中各个软件度量元的值。
4.根据权利要求1所述的基于电网信息***特征选择的缺陷预测方法,其特征在于,所述步骤(2)中利用欧式距离计算待测版本数据集中每个实例与历史版本数据集中每个实例之间的相似性。
5.根据权利要求1所述的基于电网信息***特征选择的缺陷预测方法,其特征在于,所述步骤(3)中使用SMOTE采样算法对训练集进行类不平衡处理,包括以下步骤:
(3-1)对于一个随机的少数类的实例p,以欧式距离为标准,度量其到少数类实例中所有实例的距离,得到其k个近邻实例;
(3-2)有放回地随机抽取R≤k个邻居;
(3-3)对这R个实例,每一个实例与实例p组成一条直线,在这条直线上随机取一个实例,就产生一个新的样本,共产生R个新的样本;
(3-4)将这些新产生的样本加入训练集中,得到类平衡的训练集。
7.一种基于电网信息***特征选择的缺陷预测装置,其特征在于,包括:
数据获取模块,用于获取待测软件的历史版本数据集和待测版本数据集并进行规范化处理;
训练集构造模块,用于计算待测版本数据集中每个实例与历史版本数据集中每个实例之间的相似性,以及根据相似性,从历史版本数据集中选取与待测版本数据集中每个实例最近的k个实例,构造训练集;
训练集处理模块,用于对训练集进行类不平衡处理,得到类平衡的训练集;
特征选择模块,用于对类平衡的训练集以及经过规范化处理的待测版本数据集进行特征选择;
预测模块,用于基于经特征选择的训练集和测试集,利用通过分类算法所构建的缺陷预测模型,预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果。
8.根据权利要求7所述的基于电网信息***特征选择的缺陷预测装置,其特征在于,所述数据获取模块包括:
历史版本数据集获取单元,用于记录历史版本的软件模块中的类,根据与缺陷相关的软件度量元,度量历史版本的软件模块有无缺陷,得到历史版本数据集,表示为DATA={(a1,b1),(a2,b2),…,(ai,bi),…,(an,bn)},ai=(fi,1,fi,2,…,fi,j,…,fi,d),其中,ai表示软件模块实例,bi表示该实例的类别,bi∈Y,Y={有缺陷,无缺陷},n代表实例的数目,fi,j表示实例ai的第j个软件度量元的值,d表示软件度量元的数目;
待测版本数据集获取单元,用于获取待测版本的软件模块中的类,根据与缺陷相关的软件度量元,获得软件模块实例中各个软件度量元的值;
规范化处理单元,用于选用随机森林填充缺失值,采用Max-min的方法对各软件度量元的取值范围进行归一化,公式为:
其中,pi,j表示规范化处理后第i个软件模块的第j个软件度量元的取值,qi,j表示规范化处理前第i个软件模块的第j个软件度量元的取值,Min(qj)表示所有软件模块中第j个软件度量元的最小值,Max(qj)表示所有软件模块中第j个软件度量元的最大值。
9.根据权利要求7所述的基于电网信息***特征选择的缺陷预测装置,其特征在于,所述训练集处理模块使用SMOTE采样算法对训练集进行类不平衡处理,所述训练集处理模块具体包括:
少数类近邻确定单元,用于对于一个随机的少数类的实例p,以欧式距离为标准,度量其到少数类实例中所有实例的距离,得到其k个近邻实例;
邻居抽取单元,用于有放回地随机抽取R≤k个邻居;
新样本生成单元,用于对邻居抽取单元随机抽取的R个实例,将其中每一个实例与实例p组成一条直线,在这条直线上随机取一个实例,产生一个新的样本,共产生R个新的样本;以及
训练集更新单元,用于将新样本生成单元产生的新的样本加入训练集中,得到类平衡的训练集。
10.根据权利要求7所述的基于电网信息***特征选择的缺陷预测装置,其特征在于,所述特征选择模块通过ReliefF算法获得特征排序列表,从特征排序列表中选取排名靠前的指定数目的特征,从类平衡的训练集和规范化后的当前待测版本数据集中选取出这些特征,移除其余的特征,得到特征选择后的训练集和特征选择后的测试集;
以及其中,
所述预测模块包括缺陷预测模型构建单元和缺陷预测单元,所述缺陷预测模型构建单元采用改进的Adaboost算法来构建缺陷预测模型并训练模型,所述缺陷预测单元基于特征选择后的测试集数据,利用训练后的缺陷预测模型预测待测版本软件各模块的缺陷情况,得到待测版本软件各模块的缺陷预测结果,
所述缺陷预测模型构建单元包括:
初始化单元,用于将训练集中的样本权值初始化为D1(i)=1/n,n为实例数目;
迭代执行单元,对于i=1,.....T,迭代执行在训练集上训练第t个弱分类器ht(x),并且计算第t次迭代分类器的错误率εt:
T为迭代次数,yi为训练集中第i个实例的类别;
其中,当εt小于预设阈值时,分类器不合格,终止迭代;否则按下式更新样本的权值:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339177.4A CN113127342B (zh) | 2021-03-30 | 2021-03-30 | 基于电网信息***特征选择的缺陷预测方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110339177.4A CN113127342B (zh) | 2021-03-30 | 2021-03-30 | 基于电网信息***特征选择的缺陷预测方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113127342A true CN113127342A (zh) | 2021-07-16 |
CN113127342B CN113127342B (zh) | 2023-06-09 |
Family
ID=76774868
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110339177.4A Active CN113127342B (zh) | 2021-03-30 | 2021-03-30 | 基于电网信息***特征选择的缺陷预测方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113127342B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356641A (zh) * | 2022-03-04 | 2022-04-15 | 中南大学 | 一种增量式的软件缺陷预测方法、***、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677564A (zh) * | 2016-01-04 | 2016-06-15 | 中国石油大学(华东) | 基于改进的Adaboost软件缺陷不平衡数据分类方法 |
WO2017131263A1 (ko) * | 2016-01-29 | 2017-08-03 | 한국과학기술원 | 교차 프로젝트 결함 예측을 위한 최단 이웃점을 이용한 하이브리드 인스턴스 선택 방법 |
US20180210944A1 (en) * | 2017-01-26 | 2018-07-26 | Agt International Gmbh | Data fusion and classification with imbalanced datasets |
CN108563556A (zh) * | 2018-01-10 | 2018-09-21 | 江苏工程职业技术学院 | 基于差分演化算法的软件缺陷预测优化方法 |
CN109977028A (zh) * | 2019-04-08 | 2019-07-05 | 燕山大学 | 一种基于遗传算法和随机森林的软件缺陷预测方法 |
AU2020100709A4 (en) * | 2020-05-05 | 2020-06-11 | Bao, Yuhang Mr | A method of prediction model based on random forest algorithm |
WO2020199345A1 (zh) * | 2019-04-02 | 2020-10-08 | 广东石油化工学院 | 一种基于GitHub的半监督异构软件缺陷预测算法 |
CN112465040A (zh) * | 2020-12-01 | 2021-03-09 | 杭州电子科技大学 | 一种基于类不平衡学习算法的软件缺陷预测方法 |
-
2021
- 2021-03-30 CN CN202110339177.4A patent/CN113127342B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105677564A (zh) * | 2016-01-04 | 2016-06-15 | 中国石油大学(华东) | 基于改进的Adaboost软件缺陷不平衡数据分类方法 |
WO2017131263A1 (ko) * | 2016-01-29 | 2017-08-03 | 한국과학기술원 | 교차 프로젝트 결함 예측을 위한 최단 이웃점을 이용한 하이브리드 인스턴스 선택 방법 |
US20180210944A1 (en) * | 2017-01-26 | 2018-07-26 | Agt International Gmbh | Data fusion and classification with imbalanced datasets |
CN108563556A (zh) * | 2018-01-10 | 2018-09-21 | 江苏工程职业技术学院 | 基于差分演化算法的软件缺陷预测优化方法 |
WO2020199345A1 (zh) * | 2019-04-02 | 2020-10-08 | 广东石油化工学院 | 一种基于GitHub的半监督异构软件缺陷预测算法 |
CN109977028A (zh) * | 2019-04-08 | 2019-07-05 | 燕山大学 | 一种基于遗传算法和随机森林的软件缺陷预测方法 |
AU2020100709A4 (en) * | 2020-05-05 | 2020-06-11 | Bao, Yuhang Mr | A method of prediction model based on random forest algorithm |
CN112465040A (zh) * | 2020-12-01 | 2021-03-09 | 杭州电子科技大学 | 一种基于类不平衡学习算法的软件缺陷预测方法 |
Non-Patent Citations (1)
Title |
---|
程铭;毋国庆;袁梦霆;: "基于迁移学习的软件缺陷预测", 电子学报, no. 01 * |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114356641A (zh) * | 2022-03-04 | 2022-04-15 | 中南大学 | 一种增量式的软件缺陷预测方法、***、设备及存储介质 |
CN114356641B (zh) * | 2022-03-04 | 2022-05-27 | 中南大学 | 一种增量式的软件缺陷预测方法、***、设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113127342B (zh) | 2023-06-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106201871B (zh) | 基于代价敏感半监督的软件缺陷预测方法 | |
US11580425B2 (en) | Managing defects in a model training pipeline using synthetic data sets associated with defect types | |
CN109670255B (zh) | 一种时序参数聚类的典型仿真条件推荐方法 | |
US20220300280A1 (en) | Predictive build quality assessment | |
US20200265342A1 (en) | Machine learning program verification apparatus and machine learning program verification method | |
CN112288455A (zh) | 标签生成方法及装置、计算机可读存储介质、电子设备 | |
JP2024509741A (ja) | パーツ、センサ、および計測データ統合 | |
CN111582315A (zh) | 样本数据处理方法、装置及电子设备 | |
CN114139589A (zh) | 故障诊断方法、装置、设备与计算机可读存储介质 | |
CN117574201A (zh) | 基于多工业模型的模型训练方法、装置、设备和存储介质 | |
CN113127342B (zh) | 基于电网信息***特征选择的缺陷预测方法及装置 | |
CN111582313A (zh) | 样本数据生成方法、装置及电子设备 | |
US20220215144A1 (en) | Learning Apparatus, Learning Method and Learning Program | |
JP7190246B2 (ja) | ソフトウェア不具合予測装置 | |
CN114139636B (zh) | 异常作业处理方法及装置 | |
JP2019003333A (ja) | バグ混入確率計算プログラム及びバグ混入確率計算方法 | |
JP4308113B2 (ja) | データ分析装置及びその方法、プログラム | |
CN111026661B (zh) | 一种软件易用性全面测试方法及*** | |
CN112148605B (zh) | 一种基于谱聚类的半监督学习的软件缺陷预测方法 | |
CN114328221A (zh) | 基于特征和实例迁移的跨项目软件缺陷预测方法及*** | |
JP6588494B2 (ja) | 抽出装置、分析システム、抽出方法及び抽出プログラム | |
US20220108216A1 (en) | Machine learning apparatus, method, and non-transitory computer readable medium storing program | |
CN113204482B (zh) | 基于语义属性子集划分与度量匹配的异质缺陷预测方法及*** | |
CN117313900B (zh) | 用于数据处理的方法、设备和介质 | |
CN117313899B (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 |