CN110471856A - 一种基于数据不平衡的软件缺陷预测方法 - Google Patents

一种基于数据不平衡的软件缺陷预测方法 Download PDF

Info

Publication number
CN110471856A
CN110471856A CN201910775361.6A CN201910775361A CN110471856A CN 110471856 A CN110471856 A CN 110471856A CN 201910775361 A CN201910775361 A CN 201910775361A CN 110471856 A CN110471856 A CN 110471856A
Authority
CN
China
Prior art keywords
minority class
sample point
data set
software
sample
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
Application number
CN201910775361.6A
Other languages
English (en)
Inventor
郭世凯
董剑
陈荣
王佳慧
李辉
郭晨
唐文君
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Dalian Maritime University
Original Assignee
Dalian Maritime University
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Dalian Maritime University filed Critical Dalian Maritime University
Priority to CN201910775361.6A priority Critical patent/CN110471856A/zh
Publication of CN110471856A publication Critical patent/CN110471856A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3616Software analysis for verifying properties of programs using software metrics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Computer Hardware Design (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于数据不平衡的软件缺陷预测方法,包括:从已知bug分布的项目中,将具有软件度量值的各类错误报告作为预测使用的原始数据集;采用RSMOTE不平衡处理策略对原数据集中文本矩阵进行不平衡处理、得到平衡数据集;使用朴素贝叶斯、多项式朴素贝叶斯、K近邻、支持向量机、分类树、和Adacost对平衡数据集进行建模找到预测效果最佳的分类器;提取未知bug位置的新项目的软件度量值,输入分类器,进行预测,输出每个程序段是否有bug的预测信息,并进行记录存储。本方法采用了RSMOTE不平衡处理策略对原数据集中文本矩阵进行不平衡处理,因此生成少数类样例更加灵活,能够产生更加广泛合理的样例。

Description

一种基于数据不平衡的软件缺陷预测方法
技术领域
本发明涉及软件缺陷预测领域,尤其涉及一种基于数据不平衡的软件缺陷预测方法。
背景技术
随着人们对软件需求的不断增加,软件开发也越来越重要,其中程序调试是软件开发过程中十分重要的一环,该过程主要包括故障检测、故障定位以及故障修复环节,其中故障定位是最为繁琐的环节。软件开发过程中,难免会出现一系列的故障,其中一部分可根据编译信息查找到并进行改正,但大部分程序故障是由逻辑错误所导致的,据统计修复软件中故障的成本占整个软件维护总成本的50%~80%,并且在修复过程中,需要有经验和对代码语义、结构等有了解的人员来完成。为了解决上述问题,研究人员提出了多种软件度量,提出的软件度量与结构和数据有关,如类内方法的数量、继承树的深度、直系继承类的数目、传出耦合和传入耦合类的个数、当该类的对象接收到消息时可以执行的不同方法的数量等等度量信息,结合这些软件度量值,通过分类器进行学习建模,将新项目与训练数据所建立模型进行比较,可以判断出某一代码段或函数段中是否存在错误,从而辅助开发人员快速找到程序故障所在,减轻程序人员手工排查错误的任务量,提高程序错误定位效率。然而在大部分工程中,故障程序段占总程序数目的少数,从而会产生类别不平衡现象,导致分类器的分类效果不好。因此许多学者针对此现象提出了多种不平衡处理方法,如基于数据层面的ROS、RUS、SMOTE方法以及基于算法层面的CSC方法,来对不平衡数据集进行处理,从而减小不平衡数据带来的影响
但目前的不平衡处理方法显然是存在一些缺点的,如随机过采样采取简单复制样本的策略来增加少数类样本,这样容易产生模型过拟合的问题,即使得模型学习到的信息过于特别(Specific)而不够泛化(General)。随机欠采样则是由于采样的样本集合要少于原来的样本集合,因此会造成一些信息缺失,即将多数类样本删除有可能会导致分类器丢失有关多数类的重要信息。而按照SMOTE算法进行线性插值合成新的样例后,得到的新的少数类只能分布在原少数类实例之间的线段中,严格的限制了新生成的少数类实例的分布范围,算法层面的CSC也存在着一些局限性,如当正类过少的时候,即使将正类错分到负类的代价很大,它也仍然更倾向与将正类分到负类。
发明内容
根据现有技术存在的问题,本发明公开了一种基于数据不平衡的软件缺陷预测方法,具体包括如下步骤:
将具有软件度量值的各类错误报告作为预测使用的原始数据集;即提取已知bug分布的项目的软件度量值作为属性,是否存在bug作为标签,形成用于训练分类器的原始数据集。
采用RSMOTE不平衡处理策略对原数据集中文本矩阵进行不平衡处理、得到平衡数据集;
使用朴素贝叶斯、多项式朴素贝叶斯、K近邻、支持向量机、分类树、和Adacost对平衡数据集进行建模找到预测效果最佳的分类器;
提取未知bug位置的新项目的软件度量值,并输入到分类器,进行预测,输出是否存在bug的信息,并进行存储,以实现对bug位置的预测。
进一步的,所述对原数据集中文本矩阵进行不平衡处理具体采用如下方式:
S21:将原始数据集中少数类进行标记,进行不平衡倍率N的计算;
S22:选择一个少数类样本点X、并对该少数类样本点的k个少数类近邻进行记录;
S23:按照欧式距离排序、依次选择一个近邻点Y;
S24:在以近邻点Y和少数类样本点X的欧式距离为直径的圆内生成新的少数类样本点;
S24:判断生成样本点是否在所选两个样本点形成的圆内、以及生成样本点的欧式距离最近的样本点是否为少数类,,若不是少数类或不在所选两个样本点形成的圆内则返回S23重新生成样本点,若满足条件则继续下一步操作;
S25:判断该样本点是否需要继续生成少数类样本点,若选择的少数类样本点X已生成的样本个数达到不平衡度N,则返回S22进行下一个少数类样本点的选择,若没有达到不平衡度N,则返回S23再选择下一个近邻点Y;
S26:当所有少数类样本点全部遍历完成,将生成的少数类样本加入原数据集以生成平衡数据集。
由于采用了上述技术方案,本发明提供的一种基于数据不平衡的软件缺陷预测方法,由于本方法采用了RSMOTE不平衡处理策略对原数据集中文本矩阵进行不平衡处理,因此生成少数类样例更加灵活,能够产生更加广泛合理的样例,使数据更加均匀,更有利于提高分类的准确性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明方法的流程图。
具体实施方式
为使本发明的技术方案和优点更加清楚,下面结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚完整的描述:
如图1所示的一种基于数据不平衡的软件缺陷预测方法,具体包括如下步骤:
S1:将具有软件度量值的各类错误报告作为预测使用的原始数据集,即将已知bug分布的程序分为小的程序段,再从每个程序段中提取出各个软件度量值,如继承树深度、每一类中方法的个数、类的直系继承类的个数等,再根据是否存在bug来确定该程序段的标签,将各类软件度量值作为属性,是否有bug作为标签,形成原始数据集。
S2:采用RSMOTE不平衡处理策略对原数据集中文本矩阵进行不平衡处理、得到平衡数据集;
算法具体内容如下:
步骤一:少数类标记:将原始数据集中少数类进行标记,进行不平衡倍率N的计算;
步骤二:少数类选择以及K近邻记录:选择一个少数类样本点X的并对该少数类样本点的k个少数类近邻进行记录。
步骤三:近邻选择:按照欧式距离排序(可从大到小或从小到大),依次选择一个近邻Y。
步骤四:生成新样本点Xnew:依据生成函数在以Y和X的欧式距离为直径的圆内生成新的少数类样本点。
步骤五:约束判断:主要判断生成样本点是否在所选两个样本点形成的圆内,以及生成样本点的欧式距离最近的样本点是否为少数类,若不是少数类则返回步骤三重新生成样本点,若是少数类则继续下一步操作。
步骤六:单个样本点循环结束条件判断:判断该点是否需要继续生成少数类样本点,若选择的少数类样本点X已生成的样本数个数达到不平衡度N,则返回步骤二,进行下一个少数类样本点的选择,若没有达到N,则返回步骤三再选择下一个近邻Y。
步骤七:全部循环结束条件判断:当所有少数类样本点全部遍历完成,将生成的少数类样本加入原数据集,以生成平衡的数据集。
对于步骤四的生成函数定义如下:
假设选择少数类样本X具有n个属性分别为x1,x2,x3,...,xn,选择的近邻Y具有n个属性分别为y1,y2,y3,...,yn,则新样本的产生空间为:
z1i=xj-|yij-xj|,z2i=xj+|yij-xj|i=1,2,...,N,j=1,2,...,n
生成函数为:
与Xi按照如下公式构建一个新样本
xnew=xj+random(0,1)×(z2i-z1i)i=1,2,...,N,j=1,2,...,n
对于步骤五的约束判断,主要有两点判断因素,一是找到距离新生成样本点最近邻的点的标签,查询是否与生成点相同,二是判断欧式距离是否满足条件,欧式距离判断可以表示为下式
限制欧式距离:
||Xinew-X||<||Yi-X||
S3:使用朴素贝叶斯、多项式朴素贝叶斯、K近邻、支持向量机、分类树、和Adacost,对经过不平衡处理后的数据集进行建模,找到预测效果最佳的分类器。
S4:将新错误报告输入至分类器内对语句块进行分类、找到出现错误的语句块实现对bug位置的预测。即使用与S1相同的方法提取未知bug位置的新项目的软件度量值,并输入到分类器,进行预测,输出每一样本即程序段内是否存在bug的信息,并将所有样本输出结果进行存储,以实现对bug位置的预测。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。

Claims (2)

1.一种基于数据不平衡的软件缺陷预测方法,其特征在于包括:
将具有软件度量值的各类错误报告作为预测使用的原始数据集;
采用RSMOTE不平衡处理策略对原数据集中文本矩阵进行不平衡处理、得到平衡数据集;
使用朴素贝叶斯、多项式朴素贝叶斯、K近邻、支持向量机、分类树、和Adacost对平衡数据集进行建模找到预测效果最佳的分类器;
将新错误报告输入至分类器内对语句块进行分类、找到出现错误的语句块实现对bug位置的预测。
2.根据权利要求1所述的方法,其特征还在于:所述对原数据集中文本矩阵进行不平衡处理具体采用采用如下方式:
S21:将原始数据集中少数类进行标记,进行不平衡倍率N的计算;
S22:选择一个少数类样本点X、并对该少数类样本点的k个少数类近邻进行记录;
S23:按照欧式距离排序、依次选择一个近邻点Y;
S24:在以近邻点Y和少数类样本点X的欧式距离为直径的圆内生成新的少数类样本点;
S24:判断生成样本点是否在所选两个样本点形成的圆内、以及生成样本点的欧式距离最近的样本点是否为少数类,若不是少数类或不在所选两个样本点形成的圆内则返回S23重新生成样本点,若满足条件则继续下一步操作;
S25:判断该样本点是否需要继续生成少数类样本点,若选择的少数类样本点X已生成的样本个数达到不平衡度N,则返回S22进行下一个少数类样本点的选择,若没有达到不平衡度N,则返回S23再选择下一个近邻点Y;
S26:当所有少数类样本点全部遍历完成,将生成的少数类样本加入原数据集以生成平衡数据集。
CN201910775361.6A 2019-08-21 2019-08-21 一种基于数据不平衡的软件缺陷预测方法 Pending CN110471856A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910775361.6A CN110471856A (zh) 2019-08-21 2019-08-21 一种基于数据不平衡的软件缺陷预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910775361.6A CN110471856A (zh) 2019-08-21 2019-08-21 一种基于数据不平衡的软件缺陷预测方法

Publications (1)

Publication Number Publication Date
CN110471856A true CN110471856A (zh) 2019-11-19

Family

ID=68512710

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910775361.6A Pending CN110471856A (zh) 2019-08-21 2019-08-21 一种基于数据不平衡的软件缺陷预测方法

Country Status (1)

Country Link
CN (1) CN110471856A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111143222A (zh) * 2019-12-30 2020-05-12 军事科学院系统工程研究院系统总体研究所 一种基于缺陷预测的软件测评方法
CN112364352A (zh) * 2020-10-21 2021-02-12 扬州大学 可解释性的软件漏洞检测与推荐方法及系统
CN112527670A (zh) * 2020-12-18 2021-03-19 武汉理工大学 一种基于Active Learning的项目内软件老化缺陷预测方法
CN113204481A (zh) * 2021-04-21 2021-08-03 武汉大学 一种基于数据重采样的类不平衡软件缺陷预测方法
CN114297054A (zh) * 2021-12-17 2022-04-08 北京交通大学 一种基于子空间混合抽样的软件缺陷数目预测方法
CN116051288A (zh) * 2023-03-30 2023-05-02 华南理工大学 一种基于重采样的金融信用评分数据增强方法
CN117972568A (zh) * 2024-04-01 2024-05-03 清华大学 主机端口活跃性预测方法、装置、设备和存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097103A1 (en) * 2011-10-14 2013-04-18 International Business Machines Corporation Techniques for Generating Balanced and Class-Independent Training Data From Unlabeled Data Set
CN108304887A (zh) * 2018-02-28 2018-07-20 云南大学 基于少数类样本合成的朴素贝叶斯数据处理系统及方法
CN109934286A (zh) * 2019-03-12 2019-06-25 大连海事大学 基于文本特征提取和不平衡处理策略的Bug报告严重程度识别方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130097103A1 (en) * 2011-10-14 2013-04-18 International Business Machines Corporation Techniques for Generating Balanced and Class-Independent Training Data From Unlabeled Data Set
CN108304887A (zh) * 2018-02-28 2018-07-20 云南大学 基于少数类样本合成的朴素贝叶斯数据处理系统及方法
CN109934286A (zh) * 2019-03-12 2019-06-25 大连海事大学 基于文本特征提取和不平衡处理策略的Bug报告严重程度识别方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
戴翔等: "基于集成混合采样的软件缺陷预测研究", 《计算机工程与科学》 *
郭世凯: "众包软件测试的质量保证方法研究", 《博士电子期刊》 *

Cited By (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111143222A (zh) * 2019-12-30 2020-05-12 军事科学院系统工程研究院系统总体研究所 一种基于缺陷预测的软件测评方法
CN112364352A (zh) * 2020-10-21 2021-02-12 扬州大学 可解释性的软件漏洞检测与推荐方法及系统
CN112364352B (zh) * 2020-10-21 2023-11-24 扬州大学 可解释性的软件漏洞检测与推荐方法及系统
CN112527670A (zh) * 2020-12-18 2021-03-19 武汉理工大学 一种基于Active Learning的项目内软件老化缺陷预测方法
CN113204481A (zh) * 2021-04-21 2021-08-03 武汉大学 一种基于数据重采样的类不平衡软件缺陷预测方法
CN113204481B (zh) * 2021-04-21 2022-03-04 武汉大学 一种基于数据重采样的类不平衡软件缺陷预测方法
CN114297054A (zh) * 2021-12-17 2022-04-08 北京交通大学 一种基于子空间混合抽样的软件缺陷数目预测方法
CN114297054B (zh) * 2021-12-17 2023-06-30 北京交通大学 一种基于子空间混合抽样的软件缺陷数目预测方法
CN116051288A (zh) * 2023-03-30 2023-05-02 华南理工大学 一种基于重采样的金融信用评分数据增强方法
CN116051288B (zh) * 2023-03-30 2023-07-18 华南理工大学 一种基于重采样的金融信用评分数据增强方法
CN117972568A (zh) * 2024-04-01 2024-05-03 清华大学 主机端口活跃性预测方法、装置、设备和存储介质

Similar Documents

Publication Publication Date Title
CN110471856A (zh) 一种基于数据不平衡的软件缺陷预测方法
CN113326244B (zh) 一种基于日志事件图和关联关系挖掘的异常检测方法
CN111949480B (zh) 一种基于组件感知的日志异常检测方法
Romero-Ben et al. Leak detection and localization in water distribution networks: Review and perspective
CN117672328B (zh) 固态硬盘的数据恢复方法、装置、设备及存储介质
CN116432123A (zh) 一种基于cart决策树算法的电能表故障预警方法
CN108663501A (zh) 一种变压器油中溶解气体浓度预测方法和系统
CN110968703B (zh) 基于lstm端到端抽取算法的异常计量点知识库构建方法及系统
Ren et al. Predicting software defects using self-organizing data mining
CN111415236A (zh) 基于云计算的区块链大数据金融用户标签估计方法及系统
CN118035100A (zh) 一种大模型增强的测试想定智能设计方法
CN115982655A (zh) 一种基于决策树的缺失数据流程异常预测方法
Fan Data mining model for predicting the quality level and classification of construction projects
CN116662674A (zh) 一种基于高效马尔科夫毯学习机制的服务推荐方法及系统
CN117473440A (zh) 一种电力时序数据预测算法集成管理系统及方法
CN112463641B (zh) 一种用于软件缺陷核查的故障模式集构建方法及系统
CN112308338A (zh) 电力数据处理方法及装置
Anagnostopoulos et al. Enhancing virtual sensors to deal with missing values and low sampling rates
Zhang Cross-project code clone consistency prediction
Yang et al. An Intelligent Risk Assessment Model Based on NLP
Reddy et al. A Hybrid Quartile deviation-based Support vector regression model for software reliability datasets
CN113899982B (zh) 利用网络设备掉电复电数据研判低压电网停电复电的方法及系统
CN118469094B (zh) 一种基于供应链的画布系统
CN112115036B (zh) 集群容量预测方法及装置
CN118550265B (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20191119

RJ01 Rejection of invention patent application after publication