CN104965787A - 一种基于三支决策的两阶段软件缺陷预测方法 - Google Patents
一种基于三支决策的两阶段软件缺陷预测方法 Download PDFInfo
- Publication number
- CN104965787A CN104965787A CN201510389995.XA CN201510389995A CN104965787A CN 104965787 A CN104965787 A CN 104965787A CN 201510389995 A CN201510389995 A CN 201510389995A CN 104965787 A CN104965787 A CN 104965787A
- Authority
- CN
- China
- Prior art keywords
- software
- software module
- decision
- module
- boundary region
- 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
Abstract
本发明公开了一种基于三支决策的两阶段软件缺陷预测方法,属于软件测试技术领域。该方法分为两个阶段:第一阶段:依据决策阈值对和软件模块的条件概率,将软件模块划分到三个不同的区域中,对于正域和负域的软件模块,将其直接判定为有缺陷模块和无缺陷模块,而对于边界域中的软件模块,则放到第二阶段去解决;第二阶段:针对边界域中的软件模块,提出了一种基于边界域的多分类器建模模型,通过集成学习机制对边界域软件模块做出有缺陷和无缺陷的确定性决策。本发明具有较高的软件缺陷预测的分类精度和较低的决策风险代价。
Description
技术领域
本发明涉及一种基于三支决策的两阶段软件缺陷预测方法,属于软件测试技术领域。
背景技术
随着软件规模的日益增长和复杂性的增加,如何保证软件产品的质量已经成为软件产业面临的一个重要问题。软件缺陷预测技术是提高软件质量的一个重要手段,通过使用早期软件版本的度量数据和测试阶段收集的历史故障数据,预测软件模块的故障趋势。软件缺陷预测技术在软件开发过程中发挥着三点作用:1)帮助挑选重构代码候选对象;2)通过合理安排测试资源提高软件测试效率;3)提高软件系统的可靠性。因此软件缺陷预测技术得到了广泛的关注。
现有研究通常将软件缺陷预测看成是一个传统的二支分类问题,将软件模块分类为有缺陷趋势模块和无缺陷趋势模块。针对该分类任务,可以直接采用机器学习中的分类模型,如决策树、贝叶斯网络、人工神经网络、支持向量机等。更进一步的,软件缺陷预测是一类典型的代价敏感学习问题,不同分类错误带来的代价不同。目前用于软件缺陷预测的代价敏感分类模型有提升神经网络算法(boosted neural network)、代价敏感提升算法(cost-sensitive boosting)等。
在现有的采用分类模型进行软件缺陷预测或者代价敏感软件缺陷预测研究中,分类模型都是采用二支决策的方法,即软件模块要么为有缺陷趋势模块,要么为无缺陷趋势模块。二支决策方法属于立即决策方式,能够简单快速的给出分类结果,但是存在着误分类率较高的问题。如对于一给定软件模块,假定其通过分类模型计算得出属于缺陷趋势模块的条件概率为51%,则属于无缺陷趋势模块的条件概率为49%,简单二支决策方法会依据多数原则将其判定为有缺陷趋势模块,对于这一类处于中间模糊地带不易划分的软件模块,立即决策方式误分率较高,由此带来的误分类代价也会增加。
发明内容
本发明提出了一种基于三支决策的两阶段软件缺陷预测方法,第一阶段考虑到软件缺陷预测的代价敏感问题,对软件模块进行分类采用三支决策方法,依据不同错误分类带来的损失代价不同,设置相应的代价函数,计算三支决策所需的阈值对,将误分率高的软件模块划分到边界域中,交由专家进行缺陷诊断,降低缺陷预测的误分率,减少代价损失。第二阶段,针对边界域的决策问题,提出一种没有专家参与情况下的自动分类方法,即基于边界域的多分类器建模模型。
本发明为解决其技术问题采用如下技术方案:
一种基于三支决策的两阶段软件缺陷预测方法,将软件缺陷预测方法分为两个阶段: 第一阶段:依据决策阈值对和软件模块的条件概率,将软件模块划分到三个不同的区域中,对于正域和负域的软件模块,将其直接判定为有缺陷模块和无缺陷模块,而对于边界域中的软件模块,则放到第二阶段去解决; 第二阶段:针对边界域中的软件模块,提出了一种基于边界域的多分类器建模模型,通过集成学习机制对边界域软件模块做出有缺陷和无缺陷的确定性决策。
所述第一阶段前,首先计算决策阈值对和软件模块的条件概率。
所述计算决策阈值对,将软件缺陷预测方法看作是一个代价敏感学习问题,需要专家提供损失函数矩阵,包括6个损失函数,分别是 ,,,,,,其中表示将属于缺陷的软件模块标记为有缺陷所带来的损失;表示将属于缺陷的软件模块划分到边界域所带来的损失;表示将属于缺陷的软件模块划分标记为无缺陷所带来的损失;表示将属于无缺陷的软件模块标记为有缺陷所带来的损失;表示将属于无缺陷的软件模块划分到边界域所带来的损失;表示将属于无缺陷的软件模块标记为无缺陷所带来的损失;要求满足以下条件:,。
第一阶段中对所有的软件模块采用三支决策的分类方式。
所述软件模块通过有缺陷模块的条件概率和决策阈值对之间关系分类判定,如果,则将软件模块预测为有缺陷模块;如果,则将软件模块预测为无缺陷模块;如果,则将软件模块划分到边界域中在第二阶段分类进行处理。
所述第二阶段通过集成学习机制对边界域软件模块进行投票给出具体分类结果。
本发明的有益效果如下:
1、本发明提出一种软件缺陷预测方法,首先采用三支决策的方法通过引入延迟决策,以贝叶斯最小风险决策理论为准则,将易被错分的软件模块划为延迟决策。然后,通过引入更多的分类器对第一阶段产生的延迟决策软件模块进行投票形式集成分类,从而确定延迟决策软件模块是否属于缺陷一类。
2、本发明基于决策粗糙集的三支决策软件缺陷预测两阶段分类方法,具有较高的软件缺陷预测的分类精度和较低的决策风险代价。
3、本发明提出的两阶段分类方法,使其分类精度更高、误分类代价更低。
附图说明
图1为本发明一个实施例提供的一种软件缺陷预测方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面结合附图对本发明实施方法作进一步的详细描述。
本发明的技术构思,主要是针对二支决策带来的误分类代价太高,提出基于三支决策的软件缺陷预测模型。
建立软件缺陷预测模型需要以下步骤,结合图1详细说明:
步骤1)基于三支决策的软件模块缺陷预测方法。
步骤S100)选定已测试模块,已确定是否有缺陷的模块作为训练数据集,并做好缺陷标签;
步骤S101)应用McCabe和Halstead度量方法对软件模块进行度量,得到我们需要的特征,构造一个训练集。
步骤S102)设:待预测软件模块;
:两种状态,为有缺陷趋势,为无缺陷趋势;
:三种决策行为,为判定软件模块属于有缺陷趋势模块:(正域),为判定软件模块为可能有缺陷趋势模块:(边界域),为判定软件模块不是有缺陷趋势模块:(负域);
:待预测软件模块为缺陷趋势模块的条件概率;
:待预测软件模块为无缺陷趋势模块的条件概率,;
:其中或,软件模块实际状态为有缺陷趋势时分别采取三种决策,,的代价。
:其中或,软件模块实际状态为无缺陷趋势时分别采取三种决策,,的代价。
步骤S103)对软件模块 作出三支决策时会有如下的期望代价:
,
,
公式1
其中:为将软件模块作出决策的期望代价;为将软件模块作出决策的期望代价;为将软件模块作出决策的期望代价;表示将属于缺陷的软件模块标记为有缺陷所带来的损失;表示将属于缺陷的软件模块划分到边界域所带来的损失;表示将属于缺陷的软件模块划分标记为无缺陷所带来的损失;表示将属于无缺陷的软件模块标记为有缺陷所带来的损失;表示将属于无缺陷的软件模块划分到边界域所带来的损失;表示将属于无缺陷的软件模块标记为无缺陷所带来的损失。
步骤S104)依据最小贝叶斯风险代价原则,在满足和时,做出接受决策,即将待测试软件模块划分到正域;在满足和时,做出延迟决策,即将待测试软件模块划分到边界域;在满足和时,即将待测试软件模块划分到负域。
步骤S105)基于一个合理的代价函数条件假设:,, 该条件表示将本来属于的样本划分到正域中的代价要小于等于将其划分到边界域中的代价,这两种代价都要小于将其划分到的负域中的代价;将本来属于的划分到的正域中的代价要小于等于将其划分到边界域中的代价,这两种代价都要小于将其划分到的负域中的代价。
步骤S106)基于公式1和,构建三支决策规则如下:
接受规则:如果,则;
延迟规则:如果,则;
拒绝规则:如果,则;
其中,。
为三支决策所需的阈值对。
步骤 S107)在依据步骤2)已经构造好的训练集上训练一个朴素贝叶斯分类器。
步骤S108)对于待测试软件模块,依据已训练好的朴素贝叶斯分类器,计算待测试软件模块属于缺陷模块的概率,记为。
步骤S109)判断与阈值对和的关系,如果,就将待测试软件模块确定为缺陷模块;如果,就将待测试软件模块确定为非缺陷模块;如果,就将待测试软件模块划分到边界域中等待更进一步的处理。
步骤2)针对边界域中的待测软件模块,采用集成学习机制,增加多个分类器对这些待测软件模块进行分类,结果由投票给出。
步骤S200)基于步骤101)构造的训练集再训练3个其他的分类器,分别是支持向量机分类器、神经网络分类器和决策树分类器。
步骤S201)基于支持向量机分类器对边界域中的待测软件模块进行分类预测,得到一个确定的预测类标。
步骤S202)基于神经网络分类器对边界域中的待测软件模块进行分类预测,得到一个确定的预测类标。
步骤S203)基于决策树分类器对边界域中的待测软件模块进行分类预测,得到一个确定的预测类标。
步骤S204)对于步骤S201、S202、S203中得到的三个预测结果进行投票,如果有2票及2票以上预测为缺陷模块,则待测试软件模块确定为缺陷模块;如果有2票及2票以上预测为非缺陷模块,则待测试软件模型确定为非缺陷模块。
Claims (6)
1.一种基于三支决策的两阶段软件缺陷预测方法,其特征在于将软件缺陷预测方法分为两个阶段: 第一阶段:依据决策阈值对和软件模块的条件概率,将软件模块划分到三个不同的区域中,对于正域和负域的软件模块,将其直接判定为有缺陷模块和无缺陷模块,而对于边界域中的软件模块,则放到第二阶段去解决; 第二阶段:针对边界域中的软件模块,提出了一种基于边界域的多分类器建模模型,通过集成学习机制对边界域软件模块做出有缺陷和无缺陷的确定性决策。
2.根据权利要求1所述的一种基于三支决策的两阶段软件缺陷预测方法,其特征在于所述第一阶段前,首先计算决策阈值对和软件模块的条件概率。
3.根据权利要求2所述的一种基于三支决策的两阶段软件缺陷预测方法,其特征在于计算决策阈值对,将软件缺陷预测方法看作是一个代价敏感学习问题,需要专家提供损失函数矩阵,包括6个损失函数,分别是 ,,,,,,其中表示将属于缺陷的软件模块标记为有缺陷所带来的损失;表示将属于缺陷的软件模块划分到边界域所带来的损失;表示将属于缺陷的软件模块划分标记为无缺陷所带来的损失;表示将属于无缺陷的软件模块标记为有缺陷所带来的损失;表示将属于无缺陷的软件模块划分到边界域所带来的损失;表示将属于无缺陷的软件模块标记为无缺陷所带来的损失;要求满足以下条件:,。
4.根据权利要求1所述的一种基于三支决策的两阶段软件缺陷预测方法,其特征在于第一阶段中对所有的软件模块采用三支决策的分类方式。
5.根据权利要求1所述的一种基于三支决策的两阶段软件缺陷预测方法,其特征在于所述软件模块通过有缺陷模块的条件概率和决策阈值对之间关系分类判定,如果,则将软件模块预测为有缺陷模块;如果,则将软件模块预测为无缺陷模块;如果,则将软件模块划分到边界域中在第二阶段分类进行处理。
6.根据权利要求1所述的一种基于三支决策的两阶段软件缺陷预测方法,其特征在于所述第二阶段通过集成学习机制对边界域软件模块进行投票给出具体分类结果。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510389995.XA CN104965787B (zh) | 2015-07-06 | 2015-07-06 | 一种基于三支决策的两阶段软件缺陷预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510389995.XA CN104965787B (zh) | 2015-07-06 | 2015-07-06 | 一种基于三支决策的两阶段软件缺陷预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104965787A true CN104965787A (zh) | 2015-10-07 |
CN104965787B CN104965787B (zh) | 2018-03-30 |
Family
ID=54219822
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510389995.XA Active CN104965787B (zh) | 2015-07-06 | 2015-07-06 | 一种基于三支决策的两阶段软件缺陷预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104965787B (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488539A (zh) * | 2015-12-16 | 2016-04-13 | 百度在线网络技术(北京)有限公司 | 分类模型的生成方法及装置、系统容量的预估方法及装置 |
CN106055483A (zh) * | 2016-06-06 | 2016-10-26 | 重庆大学 | 基于欠采样操作的代价敏感神经网络的警告分类方法 |
CN106095671A (zh) * | 2016-06-06 | 2016-11-09 | 重庆大学 | 基于过采样操作的代价敏感神经网络的警告分类方法 |
CN106201897A (zh) * | 2016-07-26 | 2016-12-07 | 南京航空航天大学 | 基于主成分分布函数的软件缺陷预测不平衡数据处理方法 |
CN107247666A (zh) * | 2017-05-24 | 2017-10-13 | 武汉大学 | 一种基于特征选择和集成学习的软件缺陷个数预测方法 |
CN107391370A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据过采样和集成学习的软件缺陷数目预测方法 |
CN109543707A (zh) * | 2018-09-29 | 2019-03-29 | 南京航空航天大学 | 基于三支决策的半监督变更级软件缺陷预测方法 |
CN109597748A (zh) * | 2017-09-30 | 2019-04-09 | 北京国双科技有限公司 | 代码缺陷预警方法及装置 |
CN109726120A (zh) * | 2018-12-05 | 2019-05-07 | 北京计算机技术及应用研究所 | 一种基于机器学习的软件缺陷确认方法 |
CN109885503A (zh) * | 2019-03-12 | 2019-06-14 | 深圳微品致远信息科技有限公司 | 一种基于机器学习的智能分析软件缺陷的方法、系统及存储介质 |
CN112418522A (zh) * | 2020-11-23 | 2021-02-26 | 重庆邮电大学 | 一种基于三支集成预测模型的工业加热炉钢温预测方法 |
CN112580785A (zh) * | 2020-12-18 | 2021-03-30 | 河北工业大学 | 基于三支决策的神经网络拓扑结构优化方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012049014A1 (en) * | 2010-10-14 | 2012-04-19 | International Business Machines Corporation | Soft failure detection |
CN102879677A (zh) * | 2012-09-24 | 2013-01-16 | 西北工业大学 | 基于粗糙贝叶斯网络分类器的智能故障诊断方法 |
CN103257921A (zh) * | 2013-04-16 | 2013-08-21 | 西安电子科技大学 | 一种基于改进随机森林算法的软件故障预测系统及其方法 |
US20140033174A1 (en) * | 2012-07-29 | 2014-01-30 | International Business Machines Corporation | Software bug predicting |
-
2015
- 2015-07-06 CN CN201510389995.XA patent/CN104965787B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012049014A1 (en) * | 2010-10-14 | 2012-04-19 | International Business Machines Corporation | Soft failure detection |
US20140033174A1 (en) * | 2012-07-29 | 2014-01-30 | International Business Machines Corporation | Software bug predicting |
CN102879677A (zh) * | 2012-09-24 | 2013-01-16 | 西北工业大学 | 基于粗糙贝叶斯网络分类器的智能故障诊断方法 |
CN103257921A (zh) * | 2013-04-16 | 2013-08-21 | 西安电子科技大学 | 一种基于改进随机森林算法的软件故障预测系统及其方法 |
Non-Patent Citations (2)
Title |
---|
刘小花等: ""软件缺陷集成预测模型研究"", 《计算机应用研究》 * |
李勇等: ""代价敏感分类的软件缺陷预测方法"", 《计算机科学与探索》 * |
Cited By (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105488539B (zh) * | 2015-12-16 | 2019-05-24 | 百度在线网络技术(北京)有限公司 | 分类模型的生成方法及装置、系统容量的预估方法及装置 |
CN105488539A (zh) * | 2015-12-16 | 2016-04-13 | 百度在线网络技术(北京)有限公司 | 分类模型的生成方法及装置、系统容量的预估方法及装置 |
CN106055483A (zh) * | 2016-06-06 | 2016-10-26 | 重庆大学 | 基于欠采样操作的代价敏感神经网络的警告分类方法 |
CN106095671A (zh) * | 2016-06-06 | 2016-11-09 | 重庆大学 | 基于过采样操作的代价敏感神经网络的警告分类方法 |
CN106095671B (zh) * | 2016-06-06 | 2018-10-02 | 重庆大学 | 基于过采样操作的代价敏感神经网络的警告分类方法 |
CN106055483B (zh) * | 2016-06-06 | 2019-03-22 | 重庆大学 | 基于欠采样操作的代价敏感神经网络的警告分类方法 |
CN106201897A (zh) * | 2016-07-26 | 2016-12-07 | 南京航空航天大学 | 基于主成分分布函数的软件缺陷预测不平衡数据处理方法 |
CN106201897B (zh) * | 2016-07-26 | 2018-08-24 | 南京航空航天大学 | 基于主成分分布函数的软件缺陷预测不平衡数据处理方法 |
CN107247666A (zh) * | 2017-05-24 | 2017-10-13 | 武汉大学 | 一种基于特征选择和集成学习的软件缺陷个数预测方法 |
CN107247666B (zh) * | 2017-05-24 | 2020-03-10 | 武汉大学 | 一种基于特征选择和集成学习的软件缺陷个数预测方法 |
CN107391370B (zh) * | 2017-07-13 | 2020-05-12 | 武汉大学 | 一种基于数据过采样和集成学习的软件缺陷数目预测方法 |
CN107391370A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据过采样和集成学习的软件缺陷数目预测方法 |
CN109597748A (zh) * | 2017-09-30 | 2019-04-09 | 北京国双科技有限公司 | 代码缺陷预警方法及装置 |
CN109543707A (zh) * | 2018-09-29 | 2019-03-29 | 南京航空航天大学 | 基于三支决策的半监督变更级软件缺陷预测方法 |
CN109543707B (zh) * | 2018-09-29 | 2020-09-25 | 南京航空航天大学 | 基于三支决策的半监督变更级软件缺陷预测方法 |
CN109726120A (zh) * | 2018-12-05 | 2019-05-07 | 北京计算机技术及应用研究所 | 一种基于机器学习的软件缺陷确认方法 |
CN109726120B (zh) * | 2018-12-05 | 2022-03-08 | 北京计算机技术及应用研究所 | 一种基于机器学习的软件缺陷确认方法 |
CN109885503A (zh) * | 2019-03-12 | 2019-06-14 | 深圳微品致远信息科技有限公司 | 一种基于机器学习的智能分析软件缺陷的方法、系统及存储介质 |
CN112418522A (zh) * | 2020-11-23 | 2021-02-26 | 重庆邮电大学 | 一种基于三支集成预测模型的工业加热炉钢温预测方法 |
CN112580785A (zh) * | 2020-12-18 | 2021-03-30 | 河北工业大学 | 基于三支决策的神经网络拓扑结构优化方法 |
CN112580785B (zh) * | 2020-12-18 | 2022-04-05 | 河北工业大学 | 基于三支决策的神经网络拓扑结构优化方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104965787B (zh) | 2018-03-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104965787A (zh) | 一种基于三支决策的两阶段软件缺陷预测方法 | |
Choudhary et al. | Crack detection in concrete surfaces using image processing, fuzzy logic, and neural networks | |
Xu et al. | Recognition of rust grade and rust ratio of steel structures based on ensembled convolutional neural network | |
CN106201897B (zh) | 基于主成分分布函数的软件缺陷预测不平衡数据处理方法 | |
CN108257114A (zh) | 一种基于深度学习的输电设备缺陷自动识别方法 | |
CN106206346A (zh) | 具取样率决定机制的量测抽样方法 | |
WO2007033300A2 (en) | Systems and methods for martingale boosting in machine learning | |
CN110263934B (zh) | 一种人工智能数据标注方法和装置 | |
CN112528975A (zh) | 工业质检方法、装置和计算机可读存储介质 | |
CN106528417A (zh) | 软件缺陷智能检测方法和系统 | |
CN107633455A (zh) | 基于数据模型的信用评估方法及装置 | |
CN110059714A (zh) | 基于多分类支持向量机的变压器故障诊断方法 | |
CN110555058A (zh) | 基于改进决策树的电力通信设备状态的预测方法 | |
CN104021180B (zh) | 一种组合式软件缺陷报告分类方法 | |
CN112465001A (zh) | 一种基于逻辑回归的分类方法及装置 | |
CN115438190B (zh) | 一种配电网故障辅助决策知识抽取方法及系统 | |
KR20210135416A (ko) | 시편의 검사를 위한 알고리즘 모듈들의 자동 선택 | |
Lv et al. | Soft computing for overflow particle size in grinding process based on hybrid case based reasoning | |
Fan | Data mining model for predicting the quality level and classification of construction projects | |
CN112363465B (zh) | 一种专家规则集训练方法、训练器和工业设备预警系统 | |
CN104123469A (zh) | 一种普适计算环境上下文一致性检测调度系统及方法 | |
CN111144429A (zh) | 对象分类方法及其系统、计算机系统及计算机可读介质 | |
CN115470854A (zh) | 信息系统故障分类方法及分类系统 | |
CN106055483B (zh) | 基于欠采样操作的代价敏感神经网络的警告分类方法 | |
CN103984960B (zh) | 一种遥感图像样本智能采集方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |