CN111679971A - 一种基于Adaboost的软件缺陷预测方法 - Google Patents

一种基于Adaboost的软件缺陷预测方法 Download PDF

Info

Publication number
CN111679971A
CN111679971A CN202010431568.4A CN202010431568A CN111679971A CN 111679971 A CN111679971 A CN 111679971A CN 202010431568 A CN202010431568 A CN 202010431568A CN 111679971 A CN111679971 A CN 111679971A
Authority
CN
China
Prior art keywords
sample
data
classifier
class
training
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
Application number
CN202010431568.4A
Other languages
English (en)
Other versions
CN111679971B (zh
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.)
Beihang University
Original Assignee
Beihang 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 Beihang University filed Critical Beihang University
Priority to CN202010431568.4A priority Critical patent/CN111679971B/zh
Publication of CN111679971A publication Critical patent/CN111679971A/zh
Application granted granted Critical
Publication of CN111679971B publication Critical patent/CN111679971B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/25Fusion techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/29Graphical models, e.g. Bayesian networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

本发明公开了一种基于Adaboost的软件缺陷预测方法,首先将数据集中的大类样本按信息量大小分成若干个组,接着分别用每组数据训练当前集成分类器获得本轮样本惩罚参数;再用本组数据训练并由本轮得到的样本惩罚参数计算本轮迭代中的分类器和误差率,最终获得分类器。本发明在数据训练过程中样本惩罚参数只代表了本轮迭代的训练数据在当前集成分类器中是否能够被正确分类。并且在数据处理过程中基于朴素贝叶斯理论识别出并删除数据中信息量小的样本,这些样本是造成数据类不平衡、噪声等问题的主要原因,因此,本发明的数据处理方法有效地同时解决了类不平衡问题、噪声等数据分布问题,有效地提高了数据处理效率。

Description

一种基于Adaboost的软件缺陷预测方法
技术领域
本发明涉及软件可靠性与软件缺陷预测技术领域,更具体的说是涉及一种基于Adaboost的软件缺陷预测方法。
背景技术
由于软件产品抽象的特殊性,人们不能直观地找出并修改软件中潜藏的所有缺陷,保证软件产品的可靠性。要获得一个高可靠性的软件产品,只能通过控制软件的设计、开发、测试过程来实现。其中,软件测试是发现缺陷、提高软件可靠性的重要手段,全面详细的软件测试可以在软件投入使用前找出软件中85%~95%的缺陷,最大程度地保证软件可靠运行,降低由于软件故障或失效造成的财产损失甚至人员伤亡。然而,随着软件的体量越来越大,测试的难度也越来越高,有限的资源不能再支持测试人员全面详细地测试系统中的每一个软件模块。
软件缺陷预测领域中面对的重大阻碍之一即历史数据类不平衡分布问题。类不平衡问题是指,在软件缺陷预测的过程中,软件缺陷数据的质量直接影响着分类算法的效果,会导致关键模块不能得到充分的测试,一旦带有缺陷的软件投入使用,将引发严重后果。软件缺陷数据对分类算法最显著的影响就是数据类分布的不平衡问题,但也有研究表明阻碍分类结果进一步优化的数据问题并不单纯是由类不平衡一个问题造成的,样本类重叠、噪声、离群点等问题往往会伴随着数据类不平衡问题出现,并影响分类算法的分类效果。但是,现有数据处理方法都是对数据类不平衡分布、噪声处理等某一种问题提出的,不能够同时解决数据中的噪声、冗余等多种分布问题,因此,选择一种数据处理方法难以将历史数据处理达到最理想程度。
对于现有的基于Adaboost的缺陷预测方法,Adaboost算法是一种集成学习算法,其原理是运用加法模型和向前分布算法将一系列弱分类器线性相加,最终获取一个强分类器。分析Adaboost算法过程可知,尽管Adaboost在缺陷预测领域有较好的预测效果,但是算法训练的目标是使损失函数降到最低,从而得到最高的准确率,每次迭代使用相同的全体数据对弱分类器进行训练。这种方法可能存在的不足在于如果数据不平衡分布,被不平衡数据训练的弱分类器会轻易地受到不平衡分布影响,为了得到更高的准确率从而牺牲小类样本的查准率。同时随着迭代次数的增多,每次迭代产生的样本惩罚系数ωm只能表征样本当前形成的集成分类器分类的惩罚权重,也即每次迭代中大类样本与小类样本被错分惩罚系数相同,因此集成分类器整体对大类样本的倾斜不会随着迭代次数的增加而改善。由于在软件缺陷预测中,错误识别一个小类样本造成的损失远远大于错误识别一个大类样本,因此Adaboost中的这个问题正是软件缺陷预测中不能接受的。
因此,如何获得一种在样本量较小时能够在测试工作开始实施之前,对软件模块是否可能存在缺陷进行合理预测,重点关注预测中可能存在缺陷的模块,合理地分配测试资源,从而有效降低测试成本的软件缺陷预测方法是本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本发明提供了一种基于Adaboost的软件缺陷预测方法,能够灵活应对数据集样本量等分布特征变化的方法,这种方法在克服朴素贝叶斯算法受数据分布影响大的同时,提升Adaboost分类算法对小类样本的查准能力。本发明的软件缺陷预测方法改变了Adaboost算法每轮迭代使用的训练数据,对算法本身的理论结构不产生影响,并且在数据处理过程中基于朴素贝叶斯理论识别出数据中信息量小的样本,有效地解决了类不平衡问题、噪声等数据分布问题,有效提高了数据处理效率。
为了实现上述目的,本发明采用如下技术方案:
一种基于Adaboost的软件缺陷预测方法,包括如下具体步骤:
步骤1:采集软件缺陷数据组成原始训练数据集,对原始训练数据集进行分类划分,获得n组训练数据组;
步骤11:输入原始训练数据集S0
步骤12:将所述训练数据集S0按标签类别划分为大类样本集SMaj和小类样本集SMin
步骤13:分别计算所述大类样本集SMajk维特征的样本均值
Figure BDA0002500716700000031
和样本方差
Figure BDA0002500716700000032
以及大类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别 Y=0时,大类样本Xik取值为xik时的后验概率为
Figure BDA0002500716700000033
步骤14:分别计算所述小类样本集SMink维特征的样本均值
Figure BDA0002500716700000034
和样本方差
Figure BDA0002500716700000035
以及小类样本后验概率,其中k=1,2,...,m,m为特征数,所述样本类别Y=0时,所述大类样本Xik取值为xik时的所述后验概率为
Figure BDA0002500716700000036
步骤15:遍历所述大样本集合SMaj中每个样本的m个特征,计算样本特征变量Dik=P(Xik=xik|Y=0)-P(Xik=xik|Y=1);
步骤16:对m个所述样本特征变量Dik求和得到样本信息量大小
Figure BDA0002500716700000037
步骤17:根据所述样本信息量大小γ对所述大类样本集SMaj中的所有所述大类样本进行排序并分组,获得n组样本子集S1,S2,S3,…Sn
步骤2:遍历n组所述训练数据组进行训练,获得若干弱分类器,将若干所述弱分类器融合获得集成分类器;
步骤21:初始化迭代次数m=1,初始化样本惩罚系数ωm=1/n,初始所述训练数据组Am=SMaj∩SMin
步骤22:输入所述训练数据组Am,m≤n,根据所述样本惩罚系数ωm训练所述训练数据组Am并获得弱分类器Gm
步骤23:根据所述弱分类器Gm计算弱分类器误差率em和弱分类器权重系数am
步骤24:根据所述弱分类器权重系数am对所述弱分类器Gm进行融合,获得当前集成分类器Fm
步骤25:如果n组所述训练数据组遍历结束,则输出当前集成分类器Fm为集成分类器;否则更新所述训练数据组Am+1=Am-Sm,Sm为所述样本子集,令m=m+1,根据所述当前集成分类器更新所述样本惩罚系数ωm,并返回所述步骤22;
步骤3:将软件运行数据输入所述集成分类器,输出软件缺陷预测结果。
经由上述的技术方案可知,与现有技术相比,本发明公开提供了一种基于Adaboost的软件缺陷预测方法,首先将数据集中的大类样本按信息量大小分成若干个组,接着分别用每组数据训练当前集成分类器获得本轮样本惩罚参数;再用本组数据训练并由本轮得到的样本惩罚参数计算本轮迭代中的分类器和误差率,最终获得分类器。本发明在数据训练过程中改变了传统 Adaboost算法每轮迭代使用的训练数据,对算法本身的理论结构不产生影响,与Adaboost中样本惩罚参数一次更新全体训练数据惩罚参数不同,本发明中样本惩罚参数只代表了本轮迭代的训练数据在当前集成分类器中是否能够被正确分类。并且在数据处理过程中基于朴素贝叶斯理论识别出数据中信息量小的样本,这些样本是造成数据类不平衡、噪声等问题的主要原因,因此,本发明的数据处理方法有效地同时解决了类不平衡问题、噪声等数据分布问题,有效提高了数据处理效率。本发明提出的预测方法经过实验验证在90%的实验数据中,效果优于其他预测方法,对Adaboost方法的提升效果经过显著性检验,显著优于原方法,有效地提升了软件缺陷预测的查全率、查准率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1附图为本发明提供的基于Adaboost的软件缺陷预测方法流程图;
图2附图为本发明提供的样本信息量计算LIMCR算法流程图;
图3附图为本发明提供的Adaboost算法流程图;
图4附图为本发明提供的训练数据选择规则示意图;
图5附图为本发明提供的ROC曲线示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例公开了一种基于Adaboost的软件缺陷预测方法,包括如下具体步骤:
S1:采集软件缺陷数据组成原始训练数据集,对原始训练数据集进行分类划分,获得n组训练数据组;
S11:输入原始训练数据集S0
S12:将训练数据集S0按标签类别划分为大类样本集SMaj和小类样本集SMin
S13:分别计算所述大类样本集SMajk维特征的样本均值
Figure BDA0002500716700000051
和样本方差
Figure BDA0002500716700000052
以及大类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别Y=0 时大类样本Xik取值为xik时的后验概率
Figure BDA0002500716700000053
S14:分别计算所述小类样本集SMink维特征的样本均值
Figure BDA0002500716700000054
和样本方差
Figure BDA0002500716700000055
以及小类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别Y=0 时大类样本Xik取值为xik时的后验概率
Figure BDA0002500716700000056
S15:遍历大样本集合SMaj中每个样本及每个样本的m个特征。根据样本特征取值计算样本特征变量Dik=P(Xik=xik|Y=0)-P(Xik=xik|Y=1),结果保留三位小数其中Xi∈SMaj
S16:根据m个样本特征变量Dik求和计算样本信息量大小
Figure BDA0002500716700000057
S17:根据所述样本信息量大小γ对所述大类样本集SMaj中的所有大类样本进行排序并分组,获得n组样本子集S1,S2,S3,…Sn
S2:遍历n组训练数据组进行训练,获得若干弱分类器,将若干弱分类器融合获得集成分类器;
S21:初始化迭代次数m=1,初始化样本惩罚系数ωm=1/n,初始训练数据组A1=SMaj∩SMin
S22:输入训练数据组Am,m≤n,根据样本惩罚系数ωm训练训练数据组Am并获得弱分类器Gm
S23:根据弱分类器Gm计算弱分类器误差率em和弱分类器权重系数am
S24:根据弱分类器权重系数am对弱分类器Gm进行融合,获得当前集成分类器Fm
S25:如果n组训练数据组遍历结束,则输出当前集成分类器Fm为集成分类器;否则更新训练数据组Am+1=Am-Sm,Sm为样本子集,令m=m+1,根据当前集成分类器更新样本惩罚系数ωm,并返回S22;
S3:将软件运行数据输入集成分类器,输出软件缺陷预测结果。
实施例
当特征空间中相同类别数据每个维度的特征都是相互独立的,以及每个维度的特征均为连续型变量,样本每个维度特征的似然概率符合高斯分布,并且大类样本标签唯一时,求大类样本后验概率经过计算后得到每个样本的信息量作为每轮训练数据迭代分组的依据:
S1:基于朴素贝叶斯算法定义一种新的单一维度上的样本信息量计算方法LIMCR;
S2:定义一个变量用以汇总特征空间所有维度上样本信息量计算结果,并描述样本信息量大小;
S3:比较样本数据信息量大小,删除信息量较小的大类样本最终得到改善过的数据集。
其中,S1中单一维度信息量计算方法如下:
在软件缺陷预测问题中一个数据样本可以由被测模块的m维特征 X(x1,x2,…,xm)和类别标签Y来表示,并且在二分类问题中Y的取值只有可能为1或0。那么,根据贝叶斯概率,样本的标签Y取值的后验概率可以根据下式计算得到:
Figure BDA0002500716700000061
当样本特征向量X取值为Xi=(Xi1=xi1,Xi2=xi2,...,Xim=xim)时,将公式(1) 展开即得到:
Figure BDA0002500716700000071
根据条件独立性假设,样本在标签为y的条件下特征向量取值的后验概率可以由下式计算获得:
Figure BDA0002500716700000072
于是得到朴素贝叶斯分类算法表达式为:
Figure BDA0002500716700000073
样本特征为Xi时,样本的类别标签Y则根据fb(Xi)的取值得到:
Figure BDA0002500716700000074
根据朴素贝叶斯的原理可知,当样本只有一个特征j时,样本xij的标签分别取0和1的后验概率p(xij|Y=1)和p(xij|Y=0)越大,比值
Figure BDA0002500716700000075
越大,从而样本Xi越容易被朴素贝叶斯分类算法正确分类。样本越容易被错误分类,则说明样本带有可能被误分类的信息量就越多,因此比值
Figure BDA0002500716700000076
越大,样本所带信息量越少。一般地,后验概率值p(xij|Y=0)和p(xij|Y=1)由整个数据集中的样本量统计计算获得,并且前提假设其值符合高斯分布,所以某样本单一特征的后验概率值计算如下:
Figure BDA0002500716700000077
式中:
Figure BDA0002500716700000078
表示类别y的所有样本在维度i上的样本方差;μy表示类别y的所有样本在该维度上的样本均值。
假设单一维度即可将样本正确分类,那么后验概率p(xi|y=1)和p(xi|y=0) 应该一个接近于1另一个接近于0,于是二者之间的差的绝对值则接近于1。由于很容易被正确分类,因此这种情况的样本不能为训练分类算法提供足够的信息。考虑到在类不平衡分布的软件缺陷数据集中大类样本的数量远远多于小类样本数,定义信息变量D用于评估大类样本在单一维度上的信息量,在类不平衡分布的数据集中,信息变量D被定义为后验概率p(X|Y=0)与p(X|Y=1)的差。在测验过程中还发现,当信息变量D结果保留3位小数时方法的效果最好。
S2中样本信息量计算方法如下:
软件缺陷数据的特征都由多维向量构成,数据在单一维度上的分布情况不能代表数据样本整体的分布情况,因此单一维度上信息变量D不足以代表样本信息量。根据朴素贝叶斯条件独立性假设,标签相同的条件下所有特征相互独立,忽略特征之间存在相关关系的情况,在这种前提假设下对样本xi所有维度上信息变量Dik(k=1,2,…m)求和,求和结果γi=∑kDik即为样本信息量的计算方法。
S3中小信息量样本确定方法具体为:
根据单一维度信息量计算方法的定义我们知道样本γi越大,该样本包含信息量越少,因此根据γi对训练数据排序并分组,结合算法的特点,每轮迭代中使用不同组数据训练弱分类器,训练数据确定方法结合算法原理分类算法推导过程中说明。
综上可知,采用样本信息量计算方法LIMCR进行迭代选择训练数据过程,样本分组示意如图2所示,具体过程为:
S11:输入原始训练数据集S0
S12:将述训练数据集按标签类别划分为大类样本集SMaj和小类样本集 SMin
S13:分别计算大类样本集SMajk维特征的样本均值
Figure BDA0002500716700000081
和样本方差
Figure BDA0002500716700000082
以及大类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别Y=0时大类样本Xik取值为xik时的后验概率
Figure BDA0002500716700000083
S14:分别计算小类样本集SMink维特征的样本均值
Figure BDA0002500716700000084
和样本方差
Figure BDA0002500716700000085
以及小类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别Y=0时大类样本Xik取值为xik时的后验概率
Figure BDA0002500716700000086
S15:遍历大样本集合SMaj中每个样本点,根据样本点的特征取值计算样本点特征变量Dik=P(Xik=xik|Y=0)-P(Xik=xik|Y=1),结果保留三位小数其中 Xi∈SMaj
S16:根据样本点特征变量计算样本信息量大小γi=∑kDik
S17:根据所述样本信息量大小γ对所述大类样本集SMaj中的所有大类样本进行排序并分组,获得所述训练数据组,分组方法如图4所示,根据样本信息量大小γ对大类样本集合中的样本数据从小到大排序,计数小类样本SMin的个数为N,则前N个大类样本为一组,当剩余样本数不足N个时全部归入前一组,以此类推得到n组样本子集S1,S2,S3,…Sn
对分类后的数据用于迭代地训练弱分类器,使每轮迭代获得的弱分类器与系数根据训练次数不同,可以获得不同程度的信息量,最后将所有弱分类器集成,获得最终分类器,也即新的预测模型。
Adaboost算法是一种集成学习算法,其原理是运用加法模型和向前分布算法将一系列弱分类器线性相加,最终获取一个强分类器。Adaboost算法分类算法计算公式如下:
Figure BDA0002500716700000091
式中Gm(x)是第m个弱分类器;αm是Gm(x)的系数;f(x)是这些弱分类器线性相加的和。
Adaboost算法的损失函数是指数函数:
L(y,f(x))=exp(-y*f(x)) (8)
式中y是样本数据的真实标签,f(x)是模型预测结果。
利用向前分布算法最小化上式即可获得每轮弱分类器是Gm(x)和弱分类器的权值αm,推导步骤如下:
Figure BDA0002500716700000092
式中
Figure BDA0002500716700000093
即为第m轮迭代过程中样本的损失权重,将样本损失权重归一化处理即可得样本下一轮迭代惩罚系数。惩罚系数可以在训练下一轮分类器的过程中增加分类器对错分样本的惩罚,从而得到一个效果优于上一轮弱分类器的新的弱分类器。上式继续展开得:
Figure BDA0002500716700000101
式中如果Gm(x)i≠yi为真,变量I(Gm(x)i≠yi)取1;否则取0。
由于αm为常数,则训练最优弱分类器Gm(x)的目标函数化简为:
Figure BDA0002500716700000102
设分类误差率:
Figure BDA0002500716700000103
式中ωmi即为该轮迭代中的样本损失权重,也即下一轮样本惩罚系数。将公式(11)和(12)分别带入公式(9)中并对公式(9)求参数αm的导数可得:
Figure BDA0002500716700000104
由此可得在第m轮训练中获得最优弱分类器Gm(x)*,分类器权重系数为em,下一轮样本惩罚系数为ωmi,一轮迭代完成。
从Adaboost算法的推导步骤中分析可知,算法训练的目标是使损失函数降到最低,从而得到最高的准确率,每次迭代使用相同的全体数据对弱分类器进行训练。这种方法可能存在的不足在于如果数据不平衡分布,被不平衡数据训练的弱分类器会轻易地受到不平衡分布影响,为了得到更高的准确率从而牺牲小类样本的查准率。同时随着迭代次数的增多,每次迭代产生的样本惩罚系数ωm只能表征样本当前形成的集成分类器分类的惩罚权重,也即每次迭代中大类样本与小类样本被错分惩罚系数相同,因此集成分类器整体对大类样本的倾斜不会随着迭代次数的增加而改善。由于在软件缺陷预测中,错误识别一个小类样本造成的损失远远大于错误识别一个大类样本,因此 Adaboost中的这个问题正是软件缺陷预测中不能接受的。
本发明中的基于Asaboost软件缺陷预测算法为类不平衡分类算法 LIMCboost,是基于Adaboost算法的改进。为了使小类样本在Adaboost算法中得到充分得重视,在尽力保持分类算法原有准确度的基础上提高算法对小类样本的识别能力,本发明结合朴素贝叶斯算法与Adaboost算法的优点,提了本发明中的方法性能稳定,能够灵活应对数据集样本量等分布特征变化的方法,这种方法在克服朴素贝叶斯算法受数据分布影响大的同时,提升Adaboost分类算法对小类样本的查准能力,从而成为软件缺陷预测问题中更有效的分类算法。
本发明的LIMCboost算法与Adaboost算法的主要区别在于Adaboost算法每轮迭代用同一组数据(也即整个数据集)训练与计算每轮弱分类器的误差率em;训练当前集成分类器,计算下一轮样本惩罚参数
Figure BDA0002500716700000111
LIMCboost算法首先将数据集中的大类样本按信息量大小分成若干个组,接着分别用每组数据训练当前集成分类器获得本轮样本惩罚参数
Figure BDA0002500716700000112
再用本组数据训练并由本轮得到的
Figure BDA0002500716700000113
计算本轮迭代中的分类器和误差率em
LIMCboost算法改变了Adaboost算法每轮迭代使用的训练数据,对算法本身的理论结构不产生影响,与Adaboost中
Figure BDA0002500716700000114
一次更新全体训练数据惩罚参数不同,LIMCboost方法中样本惩罚参数
Figure BDA0002500716700000115
只代表了本轮迭代的训练数据在当前集成分类器中是否能够被正确分类;改进后的损失函数如下:
Figure BDA0002500716700000116
式中k为数据集分组个数,m表示第m个数据组。改进后的损失函数中,每轮迭代得到的
Figure BDA0002500716700000117
与误差率em均不同,每次迭代都需要前面迭代的计算结果:
Figure BDA0002500716700000118
Figure BDA0002500716700000119
为了求最优本轮弱分类器Gm(x)*对损失函数化简结果与Adaboost相同:
Figure BDA00025007167000001110
为了得到损失函数极小值,根据上式改进后的损失函数对弱分类器权重αm求导得
Figure BDA0002500716700000121
式中
Figure BDA0002500716700000122
表示第m轮第i个样本的惩罚参数。令导数得零解αm得:
Figure BDA0002500716700000123
本发明的方法将训练数据分组分别训练不同的弱分类器,优点在于可以通过数据处理改变每次迭代训练数据的分布特征,使弱分类器不会由于训练数据固定不变而重复上一轮迭代的错误。然而,训练数据分组来训练弱分类器也使算法产生了新的缺陷,即新一轮迭代训练弱分类器可以调整优化当前集成分类器的效果,但是已经形成的弱分类器不能再重新调整以适应新的数据。
为了解决这一难题,本发明对弱分类器在软件缺陷数据上的表现进行了对比研究,结合朴素贝叶斯理论产生后验概率之差的不同定义并计算样本信息变量观察得到结论:随着样本信息量的增大,样本集合训练得到的弱分类器性能逐渐降低,也即可以依据样本信息变量将样本按照弱分类器学习的难易程度排序并分组。为了适应Adaboost算法,将计算样本学习难易程度变量γ定义为:
Figure BDA0002500716700000124
式中γ表示样本学习难易程度;Di表示样本第i个特征的单一维度信息量; m表示样本特征空间共m维。
本发明中结合朴素贝叶斯算法和Adaboost算法原理,较早训练的弱分类器无法学习后几轮迭代中使用的数据集合的信息,因此训练数据的信息应该随着迭代次数的增加而减少,这样才能保证前几轮训练的弱分类器能学习到大部分数据信息,后几轮训练的弱分类器,通过少量数据信息对整个集成分类器的效果进行调整提升,从而得到整体最优模型。此外,数据分组还要考虑样本类别,降低数据不平衡分布对分类器的影响。为了使较早训练的弱分类器学习到尽可能全的样本信息,训练数据采用迭代递减的方法分组,即在每轮迭代中删除一部分难以学习的大类样本,样本分组示意如图4所示,可以提高本发明预测的准确性。
本发明的一种基于Adaboost的软件缺陷预测方法中数据训练学习具体过程如下:
S1:输入原始训练数据集,进行分类划分,获得n组训练数据组;
S2:遍历n组训练数据组采用若分类器算法训练获得若干弱分类器,将弱分类器融合获得集成分类器;
S21:初始化迭代次数m=1,初始化样本惩罚系数ωm=1/n;
S22:输入训练数据组Am,m≤n,根据根据样本惩罚系数ωm训练训练数据组Am并获得弱分类器Gm
S23:根据弱分类器Gm计算弱分类器误差率em和弱分类器权重系数am
S24:根据弱分类器权重系数am对弱分类器Gm进行融合,获得当前集成分类器Fm
S25:如果n组训练数据组遍历结束,即m=n,则输出当前集成分类器Fm为集成分类器;否则更新所述训练数据组Am+1=Am-Sm,Sm为样本子集,令m=m+1,根据当前集成分类器Fm-1更新样本惩罚系数ωm,并返回S22。
将本发明的LIMCboost算法与表现较好的5种分类算法进行比较,验证在考虑类不平衡问题时集成分类算法LIMCboost是否较基本分类算法有显著性提升。其中算法名称、缩写标识与参数设置如下表1所示,算法中未提及参数则使用模型默认参数。
表1分类算法参数列表
Figure BDA0002500716700000131
如表2-表4所示为对29个数据集分类预测得到的结果均值与Friedman 平均序值,LIMCboost方法的效果在三个评估参数上均优于包括Adaboost在内的基本分类算法,说明LIMCboost对Adaboost的改进是有效的,它通过降低训练数据中的类不平衡分布问题提升了基本分类算法的预测性能,带有下划线的数据表示最优结果。其中,表4的AUC表示实验评估参数选择全局分类效果评估参数、表2的recall表示指定类别分类效果评估参数、表3的G-mean 表示全局分类效果参数,由上述三个评估参数对预测结果进行评估,从两方面反应由原始数据训练生成的预测模型的分类效果,经验结果经过wilcoxon 秩序和检验可知LIMCboost效果显著优于其他方法(当显著性水平α= 0.05时,p-value)。
表2
Figure BDA0002500716700000141
Figure BDA0002500716700000151
表3
Figure BDA0002500716700000152
表4
Figure BDA0002500716700000153
Figure BDA0002500716700000161
如图5所示为接受者操作特征曲线(Receiver Operating Characteristic,ROC),是描述分类模型真正例率TPR和假正例率FPR之间关系的一种图形化方法。横坐标表示假正例率(FPR),纵坐标表示真正例率(TPR)。对于一个特定的预测模型和训练数据集,其预测结果对应于ROC曲线上的一个点,通过调整该模型的阈值即可得到一条经过(0,0)和(1,1)的曲线,曲线下方的面积即为AUC(Area Under the Curve)的值。
ROC空间中存在的点,若其TPR取值越高,同时FPR取值越低,那么就代表分类器的性能越好,人们需要有一个数值来定量的表示分类器优劣,这就是AUC值。AUC值表示ROC曲线下方面积大小。一般来说,AUC的取值范围为0~1,当AUC为0.5时,表示随机猜测模型的性能。AUC值越大,说明该模型性能越好。因此,好的预测模型应尽可能地靠近坐标系的左上角。对软件缺陷预测性能评价时,可以使用AUC作为预测性能的评测指标。
在软件缺陷预测中,需要选取合理的指标来评价预测结果。首先对于最基本的性能指标,软件缺陷预测可以看作是一个二分类问题,其预测过程会产生四种不同的结果,包括真正例TP、假正例FP、真负例TN、假负例FN,其中有缺陷为正例,无缺陷为负例,含义如下表5混淆矩阵所示:
表5混淆矩阵
Figure BDA0002500716700000171
召回率R(Recall)是指被正确预测为正例数与实际正例数的比率,反应了一个有缺陷模块被正确预测出的概率,也称为查全率,计算公式如下:
Figure BDA0002500716700000172
G-mean的计算方法如下:
Figure BDA0002500716700000173
Figure BDA0002500716700000174
本发明的有益效果:
1)本发明基于朴素贝叶斯理论识别出数据中信息量小的样本,这些样本是造成数据类不平衡、噪声等问题的主要原因,因此,本发明的数据处理方法有效地同时解决了类不平衡问题、噪声等数据分布问题,有效地提高了数据处理效率。
2)本发明提出的预测方法LIMCboost经过实验验证在90%的实验数据中,效果优于其他预测方法,对Adaboost方法的提升效果经过显著性检验,显著优于原方法。新方法有效地提升了软件缺陷预测的查全率、查准率。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本发明。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。

Claims (3)

1.一种基于Adaboost的软件缺陷预测方法,其特征在于,包括如下具体步骤:
步骤1:采集软件缺陷数据组成原始训练数据集,对原始训练数据集进行分类划分,获得n组训练数据组;
步骤2:遍历n组所述训练数据组进行训练,获得若干弱分类器,将若干所述弱分类器融合获得集成分类器;
步骤3:将软件运行数据输入所述集成分类器,输出软件缺陷预测结果。
2.根据权利要求1所述的一种基于Adaboost的软件缺陷预测方法,其特征在于,所述步骤1基于贝叶斯算法进行数据分类方法LIMCR具体实现过程为:
步骤11:输入原始训练数据集S0
步骤12:将所述训练数据集S0按标签类别划分为大类样本集SMaj和小类样本集SMin
步骤13:分别计算所述大类样本集SMajk维特征的样本均值
Figure FDA0002500716690000011
和样本方差
Figure FDA0002500716690000012
以及大类样本后验概率,其中k=1,2,...,m,m为特征数,样本类别Y=0时,大类样本Xik取值为xik时的后验概率为
Figure FDA0002500716690000013
步骤14:分别计算所述小类样本集SMink维特征的样本均值
Figure FDA0002500716690000014
和样本方差
Figure FDA0002500716690000015
以及小类样本后验概率,其中k=1,2,...,m,m为特征数,所述样本类别Y=1时,所述大类样本Xik取值为xik时的所述后验概率为
Figure FDA0002500716690000016
进入步骤15;否则输出重采样数据集Snew
步骤15:遍历所述大样本集合SMaj中每个样本的m个特征,计算样本特征变量Dik=P(Xik=xik|Y=0)-P(Xik=xik|Y=1);
步骤16:对m个所述样本特征变量Dik求和得到样本信息量大小
Figure FDA0002500716690000017
步骤17:根据所述样本信息量大小γ对所述大类样本集SMaj中的所有所述大类样本进行排序并分组,获得n组样本子集S1,S2,S3,...Sn
3.根据权利要求2所述的一种基于Adaboost的软件缺陷预测方法,其特征在于,所述步骤2的具体实现过程为:
步骤21:初始化迭代次数m=1,初始化样本惩罚系数ωm=1/n,初始所述训练数据组Am=SMaj∩SMin
步骤22:输入所述训练数据组Am,m≤n,根据所述样本惩罚系数ωm训练所述训练数据组Am并获得弱分类器Gm
步骤23:根据所述弱分类器Gm计算弱分类器误差率em和弱分类器权重系数am
步骤24:根据所述弱分类器权重系数am对所述弱分类器Gm进行融合,获得当前集成分类器Fm
步骤25:如果n组所述训练数据组遍历结束,则输出当前集成分类器Fm为集成分类器;否则更新所述训练数据组Am+1=Am-Sm,Sm为所述样本子集,令m=m+1,根据所述当前集成分类器更新所述样本惩罚系数ωm,并返回所述步骤22。
CN202010431568.4A 2020-05-20 2020-05-20 一种基于Adaboost的软件缺陷预测方法 Active CN111679971B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010431568.4A CN111679971B (zh) 2020-05-20 2020-05-20 一种基于Adaboost的软件缺陷预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010431568.4A CN111679971B (zh) 2020-05-20 2020-05-20 一种基于Adaboost的软件缺陷预测方法

Publications (2)

Publication Number Publication Date
CN111679971A true CN111679971A (zh) 2020-09-18
CN111679971B CN111679971B (zh) 2021-07-20

Family

ID=72433753

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010431568.4A Active CN111679971B (zh) 2020-05-20 2020-05-20 一种基于Adaboost的软件缺陷预测方法

Country Status (1)

Country Link
CN (1) CN111679971B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112233694A (zh) * 2020-10-10 2021-01-15 中国电子科技集团公司第三研究所 一种目标识别方法、装置、存储介质及电子设备
CN113157561A (zh) * 2021-03-12 2021-07-23 安徽工程大学 一种数控系统软件模块的缺陷预测方法
CN113723622A (zh) * 2021-08-10 2021-11-30 中国科学院计算机网络信息中心 一种烟叶感官质量预测方法
CN114356641A (zh) * 2022-03-04 2022-04-15 中南大学 一种增量式的软件缺陷预测方法、系统、设备及存储介质

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080003617A (ko) * 2006-07-03 2008-01-08 한국과학기술원 에이다부스트와 에스브이엠 학습 분류기를 이용한 눈영역 추출기 및 추출방법
CN102103694A (zh) * 2009-12-21 2011-06-22 展讯通信(上海)有限公司 基于视频的人脸实时检测方法及其装置
CN105224463A (zh) * 2015-10-28 2016-01-06 南京大学 一种基于崩溃栈数据的软件缺陷代码定位方法
CN105403147A (zh) * 2015-11-20 2016-03-16 山东科技大学 一种基于嵌入式的瓶胚检测系统和检测方法
CN110809155A (zh) * 2018-08-04 2020-02-18 北京字节跳动网络技术有限公司 使用更新的运动信息的限制

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20080003617A (ko) * 2006-07-03 2008-01-08 한국과학기술원 에이다부스트와 에스브이엠 학습 분류기를 이용한 눈영역 추출기 및 추출방법
CN102103694A (zh) * 2009-12-21 2011-06-22 展讯通信(上海)有限公司 基于视频的人脸实时检测方法及其装置
CN105224463A (zh) * 2015-10-28 2016-01-06 南京大学 一种基于崩溃栈数据的软件缺陷代码定位方法
CN105403147A (zh) * 2015-11-20 2016-03-16 山东科技大学 一种基于嵌入式的瓶胚检测系统和检测方法
CN110809155A (zh) * 2018-08-04 2020-02-18 北京字节跳动网络技术有限公司 使用更新的运动信息的限制

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
卢婷: "基于AdaBoost的分类器学习算法比较研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112233694A (zh) * 2020-10-10 2021-01-15 中国电子科技集团公司第三研究所 一种目标识别方法、装置、存储介质及电子设备
CN112233694B (zh) * 2020-10-10 2024-03-05 中国电子科技集团公司第三研究所 一种目标识别方法、装置、存储介质及电子设备
CN113157561A (zh) * 2021-03-12 2021-07-23 安徽工程大学 一种数控系统软件模块的缺陷预测方法
CN113723622A (zh) * 2021-08-10 2021-11-30 中国科学院计算机网络信息中心 一种烟叶感官质量预测方法
CN114356641A (zh) * 2022-03-04 2022-04-15 中南大学 一种增量式的软件缺陷预测方法、系统、设备及存储介质
CN114356641B (zh) * 2022-03-04 2022-05-27 中南大学 一种增量式的软件缺陷预测方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN111679971B (zh) 2021-07-20

Similar Documents

Publication Publication Date Title
CN111679971B (zh) 一种基于Adaboost的软件缺陷预测方法
Gorham et al. Measuring sample quality with diffusions
CN112507996B (zh) 一种主样本注意力机制的人脸检测方法
US11775610B2 (en) Flexible imputation of missing data
Yu et al. A method for a posteriori identification of knee points based on solution density
CN104102917A (zh) 域自适应分类器的构造及数据分类的方法和装置
CN114331238B (zh) 智能模型算法优选方法、系统、存储介质及计算机设备
CN111522743B (zh) 一种基于梯度提升树支持向量机的软件缺陷预测方法
CN117371511A (zh) 图像分类模型的训练方法、装置、设备及存储介质
KR20220014744A (ko) 강화 학습을 기반으로 한 데이터 전처리 시스템 및 방법
CN114610924A (zh) 基于多层分类识别模型的商品图片相似度匹配搜索方法和系统
CN111816306A (zh) 一种医学数据处理方法、预测模型的训练方法及装置
CN112905166B (zh) 人工智能编程系统、计算机设备、计算机可读存储介质
JPH02228763A (ja) 予測装置及びその方法
CN115437960A (zh) 回归测试用例排序的方法、装置、设备和存储介质
CN112288571B (zh) 一种基于快速构建邻域覆盖的个人信用风险评估方法
CN112861956A (zh) 基于数据分析的水污染模型构建方法
CN109344881B (zh) 一种基于时空连续性的扩展分类器
Perrin Point process-based approaches for the reliability analysis of systems modeled by costly simulators
JP4460417B2 (ja) 自動分類方法、自動分類プログラム、記録媒体、および、自動分類装置
CN111026661A (zh) 一种软件易用性全面测试方法及系统
Bai et al. PCX: Markov blanket classification for large data sets with few cases
Budiman et al. Optimization Of Classification Results By Minimizing Class Imbalance On Decision Tree Algorithm
Daróczy et al. Quantum Inspired Adaptive Boosting
Ivanytska et al. Study of Methods of Complex Data Analysis that Based on Machine Learning Technologies

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