CN111782512A - 基于不平衡噪声集的多特征软件缺陷综合预测方法 - Google Patents
基于不平衡噪声集的多特征软件缺陷综合预测方法 Download PDFInfo
- Publication number
- CN111782512A CN111782512A CN202010578757.4A CN202010578757A CN111782512A CN 111782512 A CN111782512 A CN 111782512A CN 202010578757 A CN202010578757 A CN 202010578757A CN 111782512 A CN111782512 A CN 111782512A
- Authority
- CN
- China
- Prior art keywords
- sample
- data set
- defect
- samples
- noise
- 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
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- 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
- G06F11/3676—Test management for coverage analysis
-
- 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
- G06F11/368—Test management for test version control, e.g. updating test cases to a new software version
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Medical Informatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了基于不平衡噪声集的多特征软件缺陷综合预测方法,包括以下步骤:构建包含代码特征、开发过程特征和网络结构特征的初始数据集。对数据集进行初步欠采样处理,减少多数类中的重复数据。通过倾向性得分匹配的方法为数据集中的度量元寻找k最近邻样本集。通过k最近邻样本阈值判断,实现数据集的降噪处理。对数据集中的少数类与其k最近邻样本集中的少数类进行样本合成,消除数据集的类不平衡问题。自适应地构建多种机器学习模型并选择其中最合适的机器学习模型对新版本软件进行缺陷预测。本发明解决了软件缺陷预测中普遍存在的类不平衡问题。基于倾向性得分匹配的噪声判别处理,去除了噪声样本。
Description
技术领域
本发明涉及软件缺陷预测及软件可靠性技术领域,特别涉及基于不平衡噪 声集的多特征软件缺陷综合预测方法。
背景技术
21世纪以来,软件在社会生活中的地位日益提升,无处不在,已经不仅仅 局限于工程、科研、经济等专业领域,更是走进了千家万户,成为了人们生活 中举足轻重的工具。随着软件系统规模日益增加,复杂程度呈几何式提升,软 件的缺陷也与日俱增,而软件缺陷也影响到了人民生活的方方面面。
软件缺陷数据是软件可靠性相关研究和应用的基础。长期以来,软件可靠 性领域使用的缺陷数据主要来自于有限的软件测试数据和使用中故障的分析数 据。虽然这类缺陷数据相对完整,但是缺陷数据量太少、覆盖面不足、涉及软 件类型有限,已经成为了软件可靠性研究和应用的瓶颈。
在软件的全寿命周期当中,如何提高软件的质量,对软件的缺陷进行识别 和修复已经成为一个重要的研究命题。由于相当一部分的软件缺陷有其独有特 征,根据历史缺陷信息,可以提取出相应的软件缺陷特征,在出现软件失效之 前尽早地识别软件可能存在的影响其可靠性、安全性、可用性、兼容性等软件 质量特性的缺陷模块,从而达到缺陷预测和预防的效果。
随着机器学习技术和深度学习技术的出现和不断推进,软件缺陷预测技术 从一开始的人工学习为主逐步转向以机器学习作为重要工具。由于学习能力和 数据处理能力的大幅度提高,学习更加庞大的软件缺陷数据集,从而利用机器 学习中的关联规则、分类器算法、聚类算法等对软件的缺陷特征进行分析和预 测成为了主流趋势。
如何抽象和特征化软件缺陷是运用机器学习进行软件缺陷预测的一个关键 问题,目前领域内主要选择使用CK度量元等代码特征作为软件缺陷预测的度 量元组。然而也有学者认为仅使用代码特征不足以准确地度量软件缺陷。
运用机器学习进行软件缺陷预测的另一个关键问题是软件缺陷数据集的质 量问题。由于软件缺陷分布符合“二八定律”,即80%的缺陷集中在20%的模块 当中,因此软件缺陷数据集中往往会由于缺陷样本数量远少于无缺陷样本的数 量而导致严重的类不平衡问题。当前主流的类不平衡缓解方法主要有欠采样和 过采样两种。欠采样方法通过去除多数类样本实现平衡,但会大幅减少数据 量,导致信息缺失引起的欠拟合问题。过采样方法通过对少数类样本进行复制 实现平衡,但容易导致过拟合问题的发生。
由于目前软件呈现出了迭代越来越快,结构和算法越来越复杂的特点,导 致了开发人员发现缺陷的滞后性和研究人员标记缺陷的困难性,使得一些样本 会出现标记错误的问题,为数据集引入噪声。当前主流的噪声去除方法主要是 使用各种滤波器,但这类方法往往存在算法复制、开销大、不适应软件数据特 点的问题。
发明内容
本发明的目的是提出一种基于不平衡噪声集的多特征软件缺陷综合预测方 法,可以解决现有技术中的特征度量不全面、数据集类不平衡程度较高、数据 集中存在错误标记引起的噪声样本等问题。
本发明的目的是通过以下技术方案实现的:
基于不平衡噪声集的多特征软件缺陷综合预测方法,包括以下步骤:
步骤S1、从目标软件的历史版本中提取代码特征、开发过程特征和网络结 构特征,构建初始数据集;
步骤S2、对初始数据集实施欠采样,去除部分重复的无缺陷样本,得到欠 采样数据集;
步骤S3、使用倾向得分匹配方法为欠采样数据集中的每个样本计算倾向性 得分,作为该样本的一个附加特征加入欠采样数据集中,得到倾向性得分数据 集;
步骤S4、对倾向性得分数据集中的每个样本寻找k最近邻样本,并根据该 样本的k最近邻样本集中的异类样本的数量进行噪声判别和去除,得到降噪后 的数据集;
步骤S5、计算降噪后的数据集的类不平衡系数,根据类不平衡系数对降噪 后的数据集中的每个少数类样本及其k最近邻样本集实施综合少数类过采样技 术,合成新的少数类样本,得到类平衡降噪的数据集;
步骤S6、构建基于交叉验证打分的软件缺陷预测模型,对目标软件的新版 本进行缺陷预测。
进一步的,所述的步骤S1包括:
步骤S101、对目标软件的历史版本进行代码扫描与代码特征提取;
步骤S102、对目标软件的开发历史分析和开发过程特征提取;
步骤S103、构建目标软件的网络模型和计算网络结构特征;
步骤S104、构建包含代码特征、开发过程特征和网络结构特征的初始数据 集。
进一步的,所述的步骤S2包括:
步骤S201、设定欠采样参数;
步骤S202、采集非重复无缺陷样本集;
步骤S203、采集含缺陷样本集;
步骤S204、平衡非重复无缺陷样本集与含缺陷样本集,形成平衡后的无缺 陷样本集和含缺陷样本集;
步骤S205、将平衡后的无缺陷样本集与含缺陷样本集合并成为欠采样数据 集。
进一步的,所述的步骤S204中平衡非重复无缺陷样本集与含缺陷样本集 具体为:计算非重复无缺陷样本集与含缺陷样本集的样本数比例r,如果r≥欠 采样参数,则进入步骤S205;否则随机抽取重复的无缺陷样本加入非重复无缺 陷样本集中,直至满足r≥欠采样参数,进入步骤S205。
进一步的,所述的步骤S3包括:
步骤S301、输入欠采样数据集;
步骤S302、定义一个m维权重向量,定义一个常数向量并进行极小初始 化;
步骤303、求解权重向量;
步骤304、使用权重向量,结合每个样本的特征向量代入Logistic函数, 求解得到每个样本的倾向性得分;
步骤S305、将每个样本的倾向性得分作为该样本的附加特征值加入欠采样 数据集,得到倾向性得分数据集。
进一步的,所述的步骤S4包括:
步骤S401、设置与倾向性得分匹配的最近邻数量参数k和噪声判别阈值 t;
步骤S402、遍历倾向性得分数据集中的每个样本,寻找倾向性得分与该样 本最接近的k个样本,组成该样本的k最近邻样本集;
步骤S403、对每个样本,统计其最近邻样本集中的每个最近邻样本的缺陷 标记与其异类的数量diff,若diff≥t,则认为该样本为噪声样本,从倾向性 得分数据集中剔除;
步骤S404、重复步骤S402和步骤S403,直到不再判别到噪声,得到降噪 后的数据集及其中每个样本对应的k最近邻样本集。
进一步的,所述的步骤S5包括:
步骤S501、计算降噪后的数据集的类不平衡系数;
步骤S502、遍历降噪后的数据集的每个缺陷样本xi,对每个缺陷样本随机 选取其k最近邻样本集中的一个缺陷样本xij,应用综合少数类过采样技术方 法,通过以下公式实现在两个缺陷样本连线之间随机合成一个新的缺陷样本:
xnew=xi+c(xij-xi),ynew=1,
其中c表示一个随机生成的大小介于0到1之间的常数;
步骤S503、重复步骤S502直至新的缺陷样本数量达到合成样本数量,将 所有新的缺陷样本加入降噪后的数据集中,得到类平衡降噪数据集。
进一步的,所述的步骤S6包括:
步骤S601、设定K折分层随机分组的分组数量、模型得分误差阈值;
步骤S602、每次选择一个分组数据集作为验证集,其余分组数据集作为训 练集;
步骤S603、使用训练集训练不同的机器学习算法得到不同的机器学习模 型,使用不同的机器学习模型对验证集进行预测,使用精确率与召回率的加权 调和平均值F1对预测结果进行打分;
步骤S604、重复步骤S603,直至每个分组数据集均被作为验证集预测一 次;计算不同的机器学习模型在设定的分组数量次实验中的得分的平均值,对 平均值进行排序,取最高平均值的模型算法和与最高平均值相差不超过模型得 分误差阈值的模型算法作为最终选择的算法;
步骤S605、使用类平衡降噪数据集训练被选择的机器学习算法得到缺陷预 测模型,对目标软件被测版本的度量特征进行预测,将被预测为含缺陷的模块 的并集作为最终的缺陷预测结果。
进一步的,所述的步骤S503中合成样本数量的计算公式为:
其中:f表示降噪后的数据集中无缺陷样本与含缺陷样本数量之比;
进一步的,所述的步骤S603中,精确率与召回率的加权调和平均值F1的 计算公式为:
其中:precision为精确率,recall为召回率。
本发明所提出的基于不平衡噪声集的多特征软件缺陷综合预测方法,与现 有技术相比,其有益效果主要体现在以下几个方面:
1、在软件的历史缺陷数据集构建中,从多个角度对软件进行了度量,综 合提取了软件的代码特征、过程特征和网络结构特征。解决了过去软件缺陷预 测使用单一类型缺陷特征导致对缺陷的度量不够全面深入的问题。
2、将倾向性得分匹配技术引入软件缺陷预测,使用倾向性得分对样本进 行表征,基于倾向性得分匹配进行k最近邻搜索。相比传统使用样本的所有特 征进行k最近邻搜索由于维度减少,大幅降低了算法复杂度和资源开销。所谓 k最近邻搜索,即是给定一个训练数据集,对新的输入实例,在训练数据集中 找到与该实例最邻近的k个邻居,这k个邻居的多数属于某个类,就把该输 入实例分类到这个类中。
3、结合欠采样处理和综合少数类过采样技术生成合成样本的方法对数据 集进行了类平衡处理,解决了软件缺陷预测中普遍存在的类不平衡问题。
4、在合成样本前进行了基于倾向性得分匹配的噪声判别处理,一定程度 上去除了由于缺陷标记错误引入的噪声样本,同时防止了合成样本过程中对噪 声样本的过采样导致的模型性能下降。
5、使用了交叉验证打分的方法进行预测模型构建和选择,并考虑到对软 件缺陷的测试成本小于修复成本,将被预测为含缺陷的模块的并集作为最终的 缺陷预测结果。
附图说明
图1为本发明的基于不平衡噪声集的多特征软件缺陷综合预测方法的步骤 图;
图2为本发明的基于不平衡噪声集的多特征软件缺陷综合预测方法的整体 框架图。
具体实施例
下面结合附图对本公开实施例进行详细描述。
以下通过特定的具体实例说明本公开的实施方式,本领域技术人员可由本 说明书所揭露的内容轻易地了解本公开的其他优点与功效。显然,所描述的实 施例仅仅是本公开一部分实施例,而不是全部的实施例。本公开还可以通过另 外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不 同观点与应用,在没有背离本公开的精神下进行各种修饰或改变。需说明的 是,在不冲突的情况下,以下实施例及实施例中的特征可以相互组合。基于本 公开中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的 所有其他实施例,都属于本公开保护的范围。
实施例一
本发明的基于不平衡噪声集的多特征软件缺陷综合预测方法,包括以下步 骤:
步骤S1、从目标软件的历史版本中提取代码特征、开发过程特征和网络结 构特征,构建初始数据集。
传统缺陷预测方法主要使用单一的代码特征作为软件的历史版本的度量 元。本发明综合了软件的代码特征、开发过程特征和网络结构特征作为软件缺 陷预测的度量元,从而进行初始的数据集生成。
进一步的,在本申请提供的一种优选的实施例中,步骤S1具体包括:
步骤S101、对目标软件的历史版本进行代码扫描与代码特征提取。
该步骤主要提取目标软件的CK度量元作为代码特征。CK度量元是 Chidamber和Kemerer提出的6个面向对象设计和复杂性的度量特征,包括以 下6个特征:
①wmc:类中方法权重,表示一个类中所有方法的复杂度之和,定义 为:
Ci为类中第i个方法的复杂度。原始的CK度量元没有用圈复杂度来衡量 复杂度,而是将每个方法的复杂度都赋值为1,因此WMC也就相当于是每个类 中的方法数。
②dit:继承树深度,表示一个类继承了多少个类。
③noc:一个类的直接子类数。
④cbo:对象间的耦合,是对与某个类耦合的类的计数。当一个类的方法 调用了另一个类的方法,或是访问了 这个类的变量,则认为这两个类耦合。类A的cbo是引用了A或是被A引用的 类的集合的大小。
⑤rfc:类的响应集的大小,也就是此类中所有的方法,以及被此类中方 法调用的所有方法的集合的大小。
⑥Icom:方法内聚性度量。对于类中每一个方法对,如果这对方法没有共 同引用任何实例变量,那么Icom加1,否则减1。
目前已经有许多开源工具(如CKJM等)可以通过导入目标软件代码自动 计算软件的CK度量元特征。通过使用这些工具,计算目标软件历史版本中的 每个文件的CK度量元特征并加入数据集。
步骤S102、对目标软件的开发历史分析和开发过程特征提取。
本发明所述的过程特征指的是R.Moser等人提出的代码开发和版本修改 过程中关于开发人员和开发操作的信息度量。目前软件开发往往都拥有比较完 善的开发报告和记录,尤其是许多软件的开发都将代码托管在Github、Gitee 等代码托管平台或者使用了Apache等版本管理工具,因此可以根据这些平台 和工具记录的开发历史分析,对软件开发的过程特征进行度量。
本发明所述的过程特征包括但不限于以下8个特征:
①REVISIONS:该代码文件的修改次数。
②REFACTORINGS:该代码文件被重构的次数。
③BUGFIXES:该代码文件在过往缺陷修复过程中被涉及到的次数。
④AUTHORS:编辑过该代码文件的开发者数量。
⑤LOC_ADDED:该代码文件在开发过程中新增的代码行数总和。
⑥LOC_DELETED:该代码文件在开发过程中删除的代码行数总和。
⑦CODECHURN:该代码文件中被修改过的代码行数总和。
⑧AGE:该代码文件被提交的时长(以周数为单位)。
可以使用MininGit等开源工具从上述平台中提取开发历史信息并进行计 算,得到目标软件历史版本中的每个文件的上述过程特征并加入数据集。
步骤S103、构建目标软件的网络模型和计算网络结构特征。
本发明所述网络结构特征是将每个软件代码文件抽象成有一个软件网络, 以有向图G=(V,E)表示,并通过对软件网络的分析计算,提取得到的网络结构 特征(Networkstructural features,NSF)。其中,网络中的每个节点代表代 码文件中的一个函数方法,网络中的节点集合为V=(v1,v2,...vn),网络中的有向 边集合为E=(eij丨i,j=1,2,...,n),n代表软件类网络中的节点个数。
本发明所述网络结构特征包括但不限于以下几个特征:
①Degree_centrality,表示度中心性,反映的是网络中一个节点与网络 中所有其它节点的直接联系程度。计算公式为:
其中CD(vi)表示节点i的度中心度,用于计算节点i与其它n-1个节 点j(i≠j,排除i与自身的联系;也就是说,主对角线的值可以忽略)之间 的直接联系的数量。CD(vi)的计算就是简单地将节点i在网络矩阵中对应的行 或列所在的单元格值加总。
②Out_degree_centrality,表示出度中心性,反映的是网络中一个节点 i直接指向其它节点j的比例。计算公式为:
③In_degree_centrality,表示入度中心性,反映的是网络中一个节点i 被其它节点j指向的比例。计算公式为:
④Closeness_centrality,表示接近中心性,用来度量网络中节点i和其 他节点之间j的紧密程度。计算公式为:
其中,dji是节点i到j之间的最短路径的数量。|V|表示节点集合V中的节 点总数。
⑤Betweenness_centrality,表示介数中心性,表示网络中所有最短路径 中经过该节点的路径的数目占最短路径总数的比例。计算公式为:
其中σjk(Vi)是节点vj通过节点vi指向节点vk的最短路径的个数;σjk是网络 中任意两个节点vj指向节点vk之间最短路径的数量。
⑥Eccentricity,表示效率,表示从某节点vi到网络中有向图G所有其他 节点距离的最大值。
⑦Communicability_centrality,表示连通中心性,表示的是从某节点vi出发,沿着图中的有向边走,最终又指向节点vi的所有路径长度的总和,即节 点vi的闭环路径的长度总和。
⑧Katz_centrality,表示卡茨中心值,用于度量节点的相对影响力。其 计算方法是:设Aij为节点vi和节点vj组成的邻接矩阵的特征值,则节点vi的卡 茨中心值xi为xi=α∑j(Aijxj+β)。其中,参数α初始值是0.1,参数β的初 始值是1.0。xj表示节点vj的卡茨中心值。
上述计算公式的矩阵表达式为:x=αAx+β。要计算卡茨中心值,就要 做逆矩阵计算,用迭代法来计算:x(t)=αAx(t-1)+β。其中t表示迭代 次数,最终计算公式可以变为:x=(I-αA)-1。其中I为单位矩阵,x为网 络节点的卡茨中心值值矩阵。
⑨PageRank,表示网页排名值,基于输入链接的结构来计算网络有向图G 中的节点的排名。
⑩Average_neighbor_degree,表示平均邻居节点度,是每个节点的所有 的邻居节点度的平均值。计算公式为:
其中,N(i)表示节点vi直接指向的节点的总数,kj是节点vj直接指向节点 的度,即节点vj的出度和入度和。
其中,T(i)表示通过节点vi的三角形的个数,deg(i)是节点vi的度,即出 度和入度的和。
目前,可以使用开源的软件网络度量工具(如UCINET工具等)对软件的 网络结构特征进行计算,得到目标软件历史版本中的每个文件的网络结构特征 并加入数据集。
步骤S104、构建包含代码特征、开发过程特征和网络结构特征的初始数据 集。
根据目标软件的历史缺陷报告和用于修复的合并请求等信息,对上述数据 集中的样本进行缺陷标记,对含缺陷的代码文件样本标记yi=1。对不含缺陷的 代码文件样本标记yi=0,得到初始数据集 χorigin={(xi,yi)|i∈(1,n),yi∈{0,1},xi=[xi,1,xi,2,...,xi,m]T}。其中xi为第 i个样本的特征向量,yi为第i个样本的缺陷标记,n为样本数量,m为特征维 数。
步骤S2、对初始数据集实施欠采样,去除部分重复的无缺陷样本,初步缓 解初始数据集的类不平衡问题,得到欠采样数据集Xundersample。
由于软件缺陷分布符合“二八定律”,即80%的缺陷集中在20%的模块当 中。因此步骤S1中构建的初始数据集中往往出现缺陷样本数量远少于无缺陷 样本的数量的情况。且其中会包含各版本中一直没修改过的无缺陷代码文件带 来的无缺陷重复样本。为了初步降低初始数据集的类不平衡程度,减少由重复 样本带来的模型过拟合,需要对无缺陷重复样本进行去除。具体包括以下详细 步骤:
步骤S201、设定欠采样参数ratio。
欠采样参数是指经过欠采样后期望达到的数据集类不平衡程度,即欠采样 后无缺陷样本数量与少数类样本数量的比值。为了兼顾平衡效果和避免过于严 重的数据量减少,建议设置为3或根据数据集具体情况调整。
步骤S202、采集非重复无缺陷样本集。
首先创建一个无缺陷样本集Xmaj和重复样本集Xd。遍历初始数据集Xorigin中的所有无缺陷样本,如果该无缺陷样本Xi=(xi,yi)与Xmaj的所有样本均不重 合,则将Xi加入Xmaj,否则将Xi加入Xd。完成遍历后得到一个非重复样本的无 缺陷样本集Xmaj。
步骤S203、采集含缺陷样本集Xmin。
创建一个含缺陷样本集Xmin。将初始数据集Xorigin中的所有含缺陷样本加 入含缺陷样本集Xmin。
步骤S204、平衡非重复无缺陷样本集Xmaj与含缺陷样本集Xmin,形成平衡 后的无缺陷样本集Xmaj和含缺陷样本集Xmin。
计算非重复无缺陷样本集Xmaj与含缺陷样本集Xmin的样本数比例r,如果 r≥ratio,则进入步骤S205。否则在重复样本集Xd中随机抽取样本加入非重 复无缺陷样本集Xmaj,直至满足r≥ratio,进入步骤S205。
步骤S205、合并数据集。
将平衡后的无缺陷样本集Xmaj与含缺陷样本集Xmin合并成为欠采样数据集Xundersample:
Xundersample=={(xi,yi)|i∈(1,nu),yi∈{0,1},xi=[xi,1,xi,2,...,xi,m]T}其 中特征向量xi为m维列向量,nu为欠采样数据集的样本数量。
步骤S3、使用倾向得分匹配方法为欠采样数据集Xundersample中的每个样本 计算倾向性得分,作为该样本的一个附加特征加入欠采样数据集中,得到倾向 性得分数据集。
倾向性得分匹配(Propensity Score Matching,PSM)原本是一种使用非 实验数据或观测数据进行干预效应分析的一类统计研究方法,这种方法的理论 框架是反事实推断模型,即为了解决观察到的采样数据分布与总体分布不同导 致的结论系统性偏差,使用倾向性得分对高维数据在特征空间中的差异进行衡 量。通过使用倾向性得分匹配的方法进行最近邻搜索,可以有效降低算法复杂 度和开销的同时有效支持数据集的去噪和少数类样本合成,对最接近少数类质 心的样本进行过采样,提高软件缺陷数据集的质量。本发明中,倾向性得分是 对高维数据在特征空间中的差异进行衡量的方法。通过求解欠采样数据集的权 重向量,计算欠采样数据集中各个样本的倾向性得分并作为附加特征加入欠采样数据集中,为后续的基于倾向性得分匹配的噪声去除和含缺陷过采样过程提 供依据。具体包括以下步骤:
步骤S301、输入步骤S2得到的欠采样数据集。
步骤S302、定义一个m维权重向量β。定义一个常数向量β0并进行极小 初始化,即使β0的每个元素均为一个接近0的随机小数,用于确保 -xi Tβ+β0≠0。
步骤303、求解权重向量β。
使用Logistic函数表征数据的分布。Logistic函数定义为:
定义数据集极大对数似然概率为:
使用MATLAB、python等软件求解使数据集极大对数似然概率取最大值的 β:
得到m维权重向量β。
步骤304、使用步骤S303求解得到的权重向量β,结合每个样本的特征向 量代入Logistic函数,求解得到每个样本的倾向性得分fβ(xi),其中fβ(xi)定 义为:
步骤S305、将每个样本的倾向性得分作为样本的附加特征值(即第m+1维 特征)加入欠采样数据集,得到倾向性得分数据集Xβ:
Xβ={(xi,yi)|i∈(1,n),yi∈{0,1},xi=[xi,1,xi,2,...,xi,m,xi,m+1]T}公式 (12)
步骤S4、根据步骤S3的倾向性得分,对倾向性得分数据集中的每个样本 寻找k最近邻样本。每个样本的所有k最近邻样本合起来形成该样本的k最近 邻样本集。根据该样本的k最近邻样本集中的异类样本的数量进行噪声判别和 去除,得到降噪后的数据集Xreduce。
步骤S402、倾向性得分匹配与k最近邻样本集构建。对倾向性得分数据集 Xβ中的每个样本xi,遍历倾向性得分数据集Xβ中的每个样本,寻找倾向性得分 与xi最接近的k个样本,组成该含缺陷样本xi的k最近邻样本集XKi:
XKi={(xij,yij)|j≠i,j∈(1,k),xij,m+1-xi,m+1|为最小的k个值}
步骤S404、重复步骤S402和步骤S403,直到不再判别到噪声,得到降噪 后的数据集Xreduce及其中每个样本对应的k最近邻样本集XKi。
步骤S5、计算降噪后的数据集Xreduce的类不平衡系数f,对类不平衡系数 f向下取整得到[f],根据[f]对降噪后的数据集中的每个少数类样本及其k最 近邻样本集实施综合少数类过采样技术,合成[f]个新的少数类样本,得到类 平衡降噪的数据集。
具体包括:
步骤S501、计算降噪后的数据集Xreduce的类不平衡系数f:
步骤S502、遍历降噪后的数据集Xreduce的每个缺陷样本xi,对每个缺陷样 本随机选取其k最近邻样本集XKi中的一个缺陷样本xij,应用综合少数类过采 样技术方法,通过以下公式实现在两个缺陷样本连线之间随机合成一个新的缺 陷样本:
xnew=xi+c(xij-xi),ynew=1 公式(14)
其中c表示一个随机生成的大小介于0到1之间的常数。
步骤S503、重复步骤S502直至生成的合成样本数量达到合成样本数量 Nneω,将所有新合成的缺陷样本加入降噪后的数据集中,得到类平衡降噪数据 集Xfinal。
步骤S6、构建基于交叉验证打分的软件缺陷预测模型,对目标软件的新版 本进行缺陷预测。
构建多种机器学习模型,将步骤S5得到的类平衡降噪数据集进行K折分 层随机分组,通过交叉验证的方法对各个机器学习模型进行打分,选择得分最 高的机器学习模型和得分与之相差不超过阈值的机器学习模型作为应用模型对 新版本软件进行缺陷预测,取预测为缺陷的节点的并集作为最终的缺陷结果。
具体包括如下步骤:
步骤S601、设定K折分层随机分组的分组数量Nk、模型得分误差阈值Tdev。推荐设置为Nk=10,Tdev=0.001。K折分层随机分组指的是在将数据集随机分 为Nk组,并保持每组的缺陷样本和非缺陷样本比例与原数据集的比例相等。将 步骤S5得到的类平衡降噪数据集Xfinal随机分为Nk组,每组的缺陷样本与非缺 陷样本的比例平衡,得到Nk个分组数据集的集合{Xfinal,k|k=1...Nk}。
步骤S602、每次选择一个分组数据集作为验证集Xvalidate,其余分组数据 集作为训练集Xtrain,即:
{Xvalidate=Xfinal,i,Xtrain=And set(Xfinal,j),i∈(1,Nk),j≠i∈(1,Nk)}。
步骤S603、使用训练集Xtrain训练不同的机器学习算法得到不同的机器学 习模型,使用不同的机器学习模型对验证集Xvalidate进行预测,使用精确率与召 回率的加权调和平均值F1值对预测结果进行打分。精确率与召回率的加权调 和平均值F1值的计算公式为:
其中precision为精确率,recall为召回率。
本发明中,机器学习算法包括但不限于随机森林、支持向量机、线性回归 分析、二次判别分析等,构建了15中机器学习模型。
步骤S604、重复步骤S603,直至每个分组数据集均被作为验证集一次。 计算不同的机器学习模型在Nk次实验中的得分的平均值对平均值进行 排序,取最高平均值的模型算法和与最高平均值相差不超过模型得分误差阈 值Tdev的模型算法作为最终选择的算法。
步骤S605、使用类平衡降噪数据集Xfinal训练被选择的机器学习算法得到 缺陷预测模型,对目标软件被测版本的前述的代码特征、开发过程特征和网络 结构特征进行度量和预测。步骤S604中选择了多个模型算法作为最终选择的 算法,这些不同的算法构建的预测模型的预测结果可能并不完全相同;考虑到 对软件缺陷的测试成本小于修复成本,为了在预测结果中包含尽可能多的含缺 陷的模块,使缺陷能在后续对被预测为可能含缺陷的模块进行测试时尽可能多 地被发现,因此将各个被最终选择的算法模型预测为含缺陷的模块的并集作为 最终的缺陷预测结果。
以上仅为说明本发明的实施方式,并不用于限制本发明,对于本领域的技 术人员来说,凡在本发明的精神和原则之内,不经过创造性劳动所作的任何修 改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,包括以下步骤:
步骤S1、从目标软件的历史版本中提取代码特征、开发过程特征和网络结构特征,构建初始数据集;
步骤S2、对初始数据集实施欠采样,去除部分重复的无缺陷样本,得到欠采样数据集;
步骤S3、使用倾向得分匹配方法为欠采样数据集中的每个样本计算倾向性得分,作为该样本的一个附加特征加入欠采样数据集中,得到倾向性得分数据集;
步骤S4、对倾向性得分数据集中的每个样本寻找k最近邻样本,并根据该样本的k最近邻样本集中的异类样本的数量进行噪声判别和去除,得到降噪后的数据集;
步骤S5、计算降噪后的数据集的类不平衡系数,根据类不平衡系数对降噪后的数据集中的每个少数类样本及其k最近邻样本集实施综合少数类过采样技术,合成新的少数类样本,得到类平衡降噪的数据集;
步骤S6、构建基于交叉验证打分的软件缺陷预测模型,对目标软件的新版本进行缺陷预测。
2.根据权利要求1所述的基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,所述的步骤S1包括:
步骤S101、对目标软件的历史版本进行代码扫描与代码特征提取;
步骤S102、对目标软件的开发历史分析和开发过程特征提取;
步骤S103、构建目标软件的网络模型和计算网络结构特征;
步骤S104、构建包含代码特征、开发过程特征和网络结构特征的初始数据集。
3.根据权利要求1所述的基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,所述的步骤S2包括:
步骤S201、设定欠采样参数;
步骤S202、采集非重复无缺陷样本集;
步骤S203、采集含缺陷样本集;
步骤S204、平衡非重复无缺陷样本集与含缺陷样本集,形成平衡后的无缺陷样本集和含缺陷样本集;
步骤S205、将平衡后的无缺陷样本集与含缺陷样本集合并成为欠采样数据集。
4.根据权利要求3所述的基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,所述的步骤S204中平衡非重复无缺陷样本集与含缺陷样本集具体为:计算非重复无缺陷样本集与含缺陷样本集的样本数比例r,如果r≥欠采样参数,则进入步骤S205;否则随机抽取重复的无缺陷样本加入非重复无缺陷样本集中,直至满足r≥欠采样参数,进入步骤S205。
5.根据权利要求1所述的基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,所述的步骤S3包括:
步骤S301、输入欠采样数据集;
步骤S302、定义一个m维权重向量,定义一个常数向量并进行极小初始化;
步骤303、求解权重向量;
步骤304、使用权重向量,结合每个样本的特征向量代入Logistic函数,求解得到每个样本的倾向性得分;
步骤S305、将每个样本的倾向性得分作为该样本的附加特征值加入欠采样数据集,得到倾向性得分数据集。
6.根据权利要求1所述的基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,所述的步骤S4包括:
步骤S401、设置与倾向性得分匹配的最近邻数量参数k和噪声判别阈值t;
步骤S402、遍历倾向性得分数据集中的每个样本,寻找倾向性得分与该样本最接近的k个样本,组成该样本的k最近邻样本集;
步骤S403、对每个样本,统计其最近邻样本集中的每个最近邻样本的缺陷标记与其异类的数量diff,若diff≥t,则认为该样本为噪声样本,从倾向性得分数据集中剔除;
步骤S404、重复步骤S402和步骤S403,直到不再判别到噪声,得到降噪后的数据集及其中每个样本对应的k最近邻样本集。
7.根据权利要求1所述的基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,所述的步骤S5包括:
步骤S501、计算降噪后的数据集的类不平衡系数;
步骤S502、遍历降噪后的数据集的每个缺陷样本xi,对每个缺陷样本随机选取其k最近邻样本集中的一个缺陷样本xij,应用综合少数类过采样技术方法,通过以下公式实现在两个缺陷样本连线之间随机合成一个新的缺陷样本:
xnew=xi+c(xij-xi),ynew=1,
其中c表示一个随机生成的大小介于0到1之间的常数;
步骤S503、重复步骤S502直至新的缺陷样本数量达到合成样本数量,将所有新的缺陷样本加入降噪后的数据集中,得到类平衡降噪数据集。
8.根据权利要求1所述的基于不平衡噪声集的多特征软件缺陷综合预测方法,其特征在于,所述的步骤S6包括:
步骤S601、设定K折分层随机分组的分组数量、模型得分误差阈值;
步骤S602、每次选择一个分组数据集作为验证集,其余分组数据集作为训练集;
步骤S603、使用训练集训练不同的机器学习算法得到不同的机器学习模型,使用不同的机器学习模型对验证集进行预测,使用精确率与召回率的加权调和平均值F1对预测结果进行打分;
步骤S604、重复步骤S603,直至每个分组数据集均被作为验证集预测一次;计算不同的机器学习模型在设定的分组数量次实验中的得分的平均值,对平均值进行排序,取最高平均值的模型算法和与最高平均值相差不超过模型得分误差阈值的模型算法作为最终选择的算法;
步骤S605、使用类平衡降噪数据集训练被选择的机器学习算法得到缺陷预测模型,对目标软件被测版本的度量特征进行预测,将被预测为含缺陷的模块的并集作为最终的缺陷预测结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010578757.4A CN111782512B (zh) | 2020-06-23 | 2020-06-23 | 基于不平衡噪声集的多特征软件缺陷综合预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010578757.4A CN111782512B (zh) | 2020-06-23 | 2020-06-23 | 基于不平衡噪声集的多特征软件缺陷综合预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111782512A true CN111782512A (zh) | 2020-10-16 |
CN111782512B CN111782512B (zh) | 2021-07-09 |
Family
ID=72757094
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010578757.4A Active CN111782512B (zh) | 2020-06-23 | 2020-06-23 | 基于不平衡噪声集的多特征软件缺陷综合预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111782512B (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112364942A (zh) * | 2020-12-09 | 2021-02-12 | 润联软件系统(深圳)有限公司 | 信贷数据样本均衡方法、装置、计算机设备及存储介质 |
CN112380132A (zh) * | 2020-11-20 | 2021-02-19 | 北京轩宇信息技术有限公司 | 基于航天软件缺陷数据集类不平衡的对抗验证方法及装置 |
CN112395558A (zh) * | 2020-11-27 | 2021-02-23 | 广东电网有限责任公司肇庆供电局 | 一种适用于智能电表历史故障数据的改进型不平衡数据混合采样方法 |
CN112527670A (zh) * | 2020-12-18 | 2021-03-19 | 武汉理工大学 | 一种基于Active Learning的项目内软件老化缺陷预测方法 |
CN113204482A (zh) * | 2021-04-21 | 2021-08-03 | 武汉大学 | 基于语义属性子集划分与度量匹配的异质缺陷预测方法及系统 |
CN113282686A (zh) * | 2021-06-03 | 2021-08-20 | 光大科技有限公司 | 一种不平衡样本的关联规则确定方法及装置 |
CN113919449A (zh) * | 2021-12-15 | 2022-01-11 | 国网江西省电力有限公司供电服务管理中心 | 基于精准模糊聚类算法的居民电力数据聚类方法及装置 |
CN113986602A (zh) * | 2021-12-27 | 2022-01-28 | 广州锦行网络科技有限公司 | 软件识别方法、装置、存储介质和电子设备 |
CN114297054A (zh) * | 2021-12-17 | 2022-04-08 | 北京交通大学 | 一种基于子空间混合抽样的软件缺陷数目预测方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104217026A (zh) * | 2014-09-28 | 2014-12-17 | 福州大学 | 一种基于图模型的中文微博客倾向性检索方法 |
CN107391452A (zh) * | 2017-07-06 | 2017-11-24 | 武汉大学 | 一种基于数据欠采样和集成学习的软件缺陷数目预测方法 |
CN108459955A (zh) * | 2017-09-29 | 2018-08-28 | 重庆大学 | 基于深度自编码网络的软件缺陷预测方法 |
CN108664402A (zh) * | 2018-05-14 | 2018-10-16 | 北京航空航天大学 | 一种基于软件网络特征学习的故障预测方法 |
CN108764366A (zh) * | 2018-06-07 | 2018-11-06 | 南京信息职业技术学院 | 针对非均衡数据的特征选择和聚类抽样集成二分类方法 |
US10175979B1 (en) * | 2017-01-27 | 2019-01-08 | Intuit Inc. | Defect ownership assignment system and predictive analysis for codebases |
CN110147321A (zh) * | 2019-04-19 | 2019-08-20 | 北京航空航天大学 | 一种基于软件网络的缺陷高风险模块的识别方法 |
-
2020
- 2020-06-23 CN CN202010578757.4A patent/CN111782512B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104217026A (zh) * | 2014-09-28 | 2014-12-17 | 福州大学 | 一种基于图模型的中文微博客倾向性检索方法 |
US10175979B1 (en) * | 2017-01-27 | 2019-01-08 | Intuit Inc. | Defect ownership assignment system and predictive analysis for codebases |
CN107391452A (zh) * | 2017-07-06 | 2017-11-24 | 武汉大学 | 一种基于数据欠采样和集成学习的软件缺陷数目预测方法 |
CN108459955A (zh) * | 2017-09-29 | 2018-08-28 | 重庆大学 | 基于深度自编码网络的软件缺陷预测方法 |
CN108664402A (zh) * | 2018-05-14 | 2018-10-16 | 北京航空航天大学 | 一种基于软件网络特征学习的故障预测方法 |
CN108764366A (zh) * | 2018-06-07 | 2018-11-06 | 南京信息职业技术学院 | 针对非均衡数据的特征选择和聚类抽样集成二分类方法 |
CN110147321A (zh) * | 2019-04-19 | 2019-08-20 | 北京航空航天大学 | 一种基于软件网络的缺陷高风险模块的识别方法 |
Cited By (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112380132A (zh) * | 2020-11-20 | 2021-02-19 | 北京轩宇信息技术有限公司 | 基于航天软件缺陷数据集类不平衡的对抗验证方法及装置 |
CN112380132B (zh) * | 2020-11-20 | 2024-03-29 | 北京轩宇信息技术有限公司 | 基于航天软件缺陷数据集类不平衡的对抗验证方法及装置 |
CN112395558A (zh) * | 2020-11-27 | 2021-02-23 | 广东电网有限责任公司肇庆供电局 | 一种适用于智能电表历史故障数据的改进型不平衡数据混合采样方法 |
CN112364942A (zh) * | 2020-12-09 | 2021-02-12 | 润联软件系统(深圳)有限公司 | 信贷数据样本均衡方法、装置、计算机设备及存储介质 |
CN112364942B (zh) * | 2020-12-09 | 2021-05-28 | 润联软件系统(深圳)有限公司 | 信贷数据样本均衡方法、装置、计算机设备及存储介质 |
CN112527670B (zh) * | 2020-12-18 | 2022-06-03 | 武汉理工大学 | 一种基于Active Learning的项目内软件老化缺陷预测方法 |
CN112527670A (zh) * | 2020-12-18 | 2021-03-19 | 武汉理工大学 | 一种基于Active Learning的项目内软件老化缺陷预测方法 |
CN113204482A (zh) * | 2021-04-21 | 2021-08-03 | 武汉大学 | 基于语义属性子集划分与度量匹配的异质缺陷预测方法及系统 |
CN113282686A (zh) * | 2021-06-03 | 2021-08-20 | 光大科技有限公司 | 一种不平衡样本的关联规则确定方法及装置 |
CN113282686B (zh) * | 2021-06-03 | 2023-11-07 | 光大科技有限公司 | 一种不平衡样本的关联规则确定方法及装置 |
CN113919449A (zh) * | 2021-12-15 | 2022-01-11 | 国网江西省电力有限公司供电服务管理中心 | 基于精准模糊聚类算法的居民电力数据聚类方法及装置 |
CN113919449B (zh) * | 2021-12-15 | 2022-03-15 | 国网江西省电力有限公司供电服务管理中心 | 基于精准模糊聚类算法的居民电力数据聚类方法及装置 |
CN114297054A (zh) * | 2021-12-17 | 2022-04-08 | 北京交通大学 | 一种基于子空间混合抽样的软件缺陷数目预测方法 |
CN114297054B (zh) * | 2021-12-17 | 2023-06-30 | 北京交通大学 | 一种基于子空间混合抽样的软件缺陷数目预测方法 |
CN113986602A (zh) * | 2021-12-27 | 2022-01-28 | 广州锦行网络科技有限公司 | 软件识别方法、装置、存储介质和电子设备 |
CN113986602B (zh) * | 2021-12-27 | 2022-04-15 | 广州锦行网络科技有限公司 | 软件识别方法、装置、存储介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN111782512B (zh) | 2021-07-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111782512B (zh) | 基于不平衡噪声集的多特征软件缺陷综合预测方法 | |
WO2021017679A1 (zh) | 地址信息解析方法、装置、系统及数据获取方法 | |
CN107391369B (zh) | 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 | |
CN107168995B (zh) | 一种数据处理方法及服务器 | |
US11580560B2 (en) | Identity resolution for fraud ring detection | |
Dwivedi et al. | Software design pattern mining using classification-based techniques | |
Singh et al. | Software defect prediction tool based on neural network | |
CN111726349B (zh) | 基于ga优化的gru并行网络流量异常检测方法 | |
CN114968727B (zh) | 基于人工智能运维的数据库贯穿基础设施的故障定位方法 | |
CN111325619A (zh) | 一种基于联合学习的信用卡欺诈检测模型更新方法及装置 | |
Xiaolong et al. | RFC: a feature selection algorithm for software defect prediction | |
Xie et al. | Logm: Log analysis for multiple components of hadoop platform | |
CN115309575A (zh) | 基于图卷积神经网络的微服务故障诊断方法、装置及设备 | |
CN114036531A (zh) | 一种基于多尺度代码度量的软件安全漏洞检测方法 | |
CN115809596A (zh) | 一种数字孪生故障诊断方法和装置 | |
CN115034278A (zh) | 性能指标异常检测方法、装置、电子设备和存储介质 | |
CN114139636B (zh) | 异常作业处理方法及装置 | |
CN114416573A (zh) | 一种应用程序的缺陷分析方法、装置、设备及介质 | |
CN116702157B (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
JP2024070250A (ja) | ネットワークログデータの欠測値処理およびこれを通じての通信欠陥の根本分類方法 | |
CN112783513A (zh) | 一种代码风险检查方法、装置及设备 | |
CN114710344B (zh) | 一种基于溯源图的入侵检测方法 | |
Zhu et al. | A Performance Fault Diagnosis Method for SaaS Software Based on GBDT Algorithm. | |
CN114330500A (zh) | 基于storm平台的电网电力设备在线并行诊断方法及系统 | |
CN113391987A (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 |