CN110515836B - 一种面向软件缺陷预测的加权朴素贝叶斯方法 - Google Patents
一种面向软件缺陷预测的加权朴素贝叶斯方法 Download PDFInfo
- Publication number
- CN110515836B CN110515836B CN201910700517.4A CN201910700517A CN110515836B CN 110515836 B CN110515836 B CN 110515836B CN 201910700517 A CN201910700517 A CN 201910700517A CN 110515836 B CN110515836 B CN 110515836B
- Authority
- CN
- China
- Prior art keywords
- feature
- sample
- value
- test set
- 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.)
- Active
Links
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/3604—Software analysis for verifying properties of programs
-
- 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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- 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
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/22—Matching criteria, e.g. proximity measures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/24—Classification techniques
- G06F18/241—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
- G06F18/2415—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on parametric or probabilistic models, e.g. based on likelihood ratio or false acceptance rate versus a false rejection rate
- G06F18/24155—Bayesian classification
-
- 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02P—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN THE PRODUCTION OR PROCESSING OF GOODS
- Y02P90/00—Enabling technologies with a potential contribution to greenhouse gas [GHG] emissions mitigation
- Y02P90/30—Computing systems specially adapted for manufacturing
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)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Bioinformatics & Computational Biology (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Biology (AREA)
- Evolutionary Computation (AREA)
- Quality & Reliability (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种面向软件缺陷预测的加权朴素贝叶斯方法,现有技术中朴素贝叶斯方法没有考虑到训练集数据与测试集数据之间的相似性对预测结果的影响。已有的朴素贝叶斯的改进方法没有考虑到某一特征值在该特征属性中所占的概率大小的影响,所计算的相似性不够准确,因此对样本权重计算不够精确,会影响分类效果的准确性。本发明所提出的一种面向软件缺陷预测的加权朴素贝叶斯方法能够根据训练集样本与测试集样本的相似度为训练集样本加权,并且能够考虑到某一特征值在该特征属性中所占的概率大小的影响。因此,本发明可以提高朴素贝叶斯的预测性能。
Description
技术领域
本发明是对朴素贝叶斯的一种优化处理方法,旨在使用该技术后的朴素贝叶斯在进行软件缺陷预测时能够取得更加准确的分类预测效果,具体涉及一种面向软件缺陷预测的加权朴素贝叶斯方法。
背景技术
软件缺陷预测是软件开发中非常重要的环节,能够减少软件开发中的常见缺陷,降低开发成本。软件缺陷预测也是近年来软件工程中最活跃的研究问题之一。其中分类器的性能会严重影响软件缺陷预测的准确性。
缺陷预测最常用的分类器之一是朴素贝叶斯,尽管朴素贝叶斯比较简单,但是通常比更复杂的分类模型表现更好。然而,训练集所有样本对构建模型的贡献往往是不同的,与测试集样本相似性越高的样本构建的预测模型更加准确。朴素贝叶斯并没有考虑到训练集与测试集样本相似性对缺陷预测性能的影响,因此,本发明对朴素贝叶斯做出改进,根据训练集与测试集样本特征值的相似性,对训练集样本进行加权,高相似性的样本被赋予了更高的权重,然后在加权的训练样本上建立朴素贝叶斯模型,本发明称其为加权朴素贝叶斯方法。
发明内容
本发明针对朴素贝叶斯提出了一种改进的加权朴素贝叶斯方法,该方法根据训练集样本与测试集样本的相似度,对训练集样本加权,高相似性的样本权重更大。在加权的基础上建立加权朴素贝叶斯模型。
本发明具体包括以下步骤:
步骤1)对于测试集的每个特征列,求出该特征列各个的特征值以及每个特征值出现的次数。
用list存放每个特征的特征值及其出现次数的元组:
list=[dict1,dict2,...,dictk]
其中,dictj={<key1,value1>,<key2,value2>,...,<keym,valuem>};
k表示特征个数;
m表示测试集第j个特征中不同特征值的个数;
dictj表示测试集第j个特征的特征值及其出现次数的元组;
keyp表示测试集某列特征的特征值;
valuep表示keyp在该特征列出现的次数。
步骤2)计算训练集样本每个特征值在测试集同一特征列所占的概率。
其中,dictj表示测试集第j个特征的特征值及其出现次数的元组;keyp表示某列特征的特征值;valuep表示keyp在该特征列出现的次数;
dictj.keyp表示第j个特征中的第p个特征值;
count表示测试集样本个数;
aij表示训练集第i个样本的第j个特征。
步骤3)计算训练集每个样本与测试集样本的相似度,并把相似度作为每个样本的权重。相似度的计算方法为训练集样本每个特征值在测试集同一特征列所占的概率之和。计算公式为:
其中,n表示训练集样本的个数;
k表示特征的个数;
wi表示训练集第i个样本的权重;
步骤4)基于加权的训练样本建立加权朴素贝叶斯分类器。
4-1.计算先验概率。c类的加权先验概率可以重新写为:
其中,wi为训练样本i的权重;
ci为训练样本i类属值;
n为训练样本总个数;
nc为总类别数。在缺陷预测模型中n=2。
δ(x,y)是指示函数。如果x=y,则δ(x,y)=1;若x≠y,则δ(x,y)=0。对于类c,相同类的训练数据的样本越多,先验概率越大。
4-2.计算条件概率。根据样本加权方法,第j个特征aj的条件概率为:
其中,aij为第i个训练样本中的第j个特征的值;
nj是第j个特征的不同值的数量。
4-3.计算测试集中样本u有无缺陷的概率,从而判断测试集样本的类别c(u)。若样本u的有缺陷概率大于无缺陷概率,则视样本u的类别为有缺陷;否则,视为无缺陷。公式如下:
本发明的有益效果:
1、该技术考虑到训练集样本与测试集样本的相似性对分类性能的影响,为高相似性的训练集样本赋予更高的权重,因此能够提高分类器的预测性能。
2、在对训练集样本的加权过程中,考虑到了某一特征值在该特征中所占的概率大小的影响,因此权重计算方法更加准确。
附图说明
图1方法流程图
具体实施方式
下面根据一个简单的例子对本发明进行详细说明。本发明的整体流程图如附图1所示,具体步骤如下:
步骤1)对于测试集的每个特征列,求出该特征列各个的特征值以及每个特征值出现的次数。
步骤2)计算训练集样本每个特征值在测试集同一特征列所占的概率。
步骤3)计算训练集每个样本与测试集样本的相似度,并把相似度作为每个样本的权重。
步骤4)基于加权的训练样本建立加权朴素贝叶斯分类器。
进一步,假设训练集有五个样本,分别为{{2,3,6,1},{1,4,5,1},{3,2,6,-1},{4,3,4,-1},{2,4,6,-1}},其中前三列为三个特征,最后一列是标签列。1表示有缺陷,-1表示无缺陷。测试集有四个样本,分别为{u1={1,3,5},u2={2,3,4},u3={1,4,5},u4={2,3,5}}。
在步骤1中,对于测试集的每个特征列,求出该特征列各个的特征值以及每个特征值出现的次数。用list存放每个特征的特征值及其出现次数的元组:
list=[dict1,dict2,...,dictk]
其中,dicti={<key1,value1>,<key2,value2>,...,<keyn,valuem>};
因此,dict1={<1,2>,<2,2>}
dict2={<3,3>,<4,1>}
dict3={<4,1>,<5,3>}
list=[dict1,dict2,dict3]
进一步,在步骤2中,计算训练集样本每个特征值在测试集同一特征列所占的概率。
其中,count表示测试集样本个数;
aij表示训练集第i个样本的第j个特征
因此,
h(a11)=0.5;h(a12)=0.75;h(a13)=0;
h(a21)=0.5;h(a22)=0.25;h(a23)=0.75;
h(a31)=0;h(a32)=0;h(a33)=0;
h(a41)=0;h(a42)=0.75;h(a43)=0.25;
h(a51)=0.5;h(a52)=0.25;h(a53)=0;
进一步,在步骤3中,计算训练集每个样本与测试集样本的相似度,并把相似度作为每个样本的权重。相似度的计算方法为训练集样本每个特征值在测试集同一特征列所占的概率之和。计算公式为:
其中,n表示训练集样本的个数;
wi表示第i个样本的权重;
因此,w1=0.5+0.75+0=1.25
w2=0.5+0.25+0.75=1.5
w3=0+0+0=0
w4=0+0.75+0.25=1
w5=0.5+0.25+0=0.75
进一步,在步骤4中,基于加权的训练样本建立加权朴素贝叶斯分类器。对于测试样本{1,3,5},求其类标签。
4-1.计算先验概率。c类的加权先验概率可以重新写为:
其中,wi为训练样本i的权重;
ci为训练样本i类属值;
n为训练样本总个数;
nc为总类别数。在预测模型中n=2。
δ(x,y)是指示函数。如果x=y,则δ(x,y)=1;若x≠y,则δ(x,y)=0。对于类c,相同类的训练数据的样本越多,先验概率越大。
因此,nc=2;P(1)=0.58,P(2)=0.42
4-2.计算条件概率。根据样本加权方法,第j个特征aj的条件概率为:
其中,aij为第i个训练样本中的第j个特征的值;
nj是第j个特征的不同值的数量。
因此,n1=4;n2=3;n3=3;
P(a1=1|1)=0.37;P(a2=3|1)=0.39;P(a3=5|1)=0.43;
P(a1=1|-1)=0.17;P(a2=3|-1)=0.42;P(a3=5|-1)=0.21;
4-3.计算测试集中样本u有无缺陷的概率,从而判断测试集样本的类别。若样本u的有缺陷概率大于无缺陷概率,则视样本u的类别为有缺陷;否则,视为无缺陷。公式如下:
因此,P(1|u1)=0.93;P(-1|u1)=0.07
因此,测试集样本u1={1,3,5}的类标签为1。
Claims (1)
1.一种面向软件缺陷预测的加权朴素贝叶斯方法,其特征在于包括如下步骤:
步骤1)收集软件缺陷样本,构建测试集与训练集;对于测试集的每个特征列,求出该特征列各个的特征值以及每个特征值出现的次数;用list存放测试集每个特征的特征值及其出现次数的元组,用HashMap来存储每个特征值及其出现次数:
list=[dict1,dict2,…,dictk]
其中,dictj={<key1,value1>,<key2,value2>,…,<keym,valuem>};
k表示特征个数;
m表示测试集第j个特征中不同特征值的个数;
dictj表示测试集第j个特征的特征值及其出现次数的元组;
keyp表示测试集某列特征的特征值;
valuep表示keyp在该特征列出现的次数;
步骤2)计算训练集样本每个特征值在测试集同一特征列所占的概率h(aij);
其中,dictj.keyp表示第j个特征中的第p个特征值;count表示测试集样本个数;
aij表示训练集第i个样本的第j个特征
步骤3)计算训练集每个样本与测试集样本的相似度,并把相似度作为每个样本的权重;
相似度的计算方法为训练集样本每个特征值在测试集同一特征列所占的概率之和;计算公式为:
其中,n表示训练集样本的个数;
k表示特征的个数;
wi表示训练集第i个样本的权重;
步骤4)基于加权的训练样本建立加权朴素贝叶斯分类器,判断测试集样本的类别,具体步骤如下:
4-1.计算先验概率;将c类的加权先验概率重新写为:
其中,wi为训练样本i的权重;
ci为训练样本i类属值;
n为训练样本总个数;
nc为总类别数;在预测模型中n=2;
δ(x,y)是指示函数;如果x=y,则δ(x,y)=1;若x≠y,则δ(x,y)=0;对于类c,相同类的训练数据的样本越多,先验概率越大;
4-2.计算条件概率;根据样本加权方法,第j个特征aj的条件概率为:
其中,aij为第i个训练样本中的第j个特征的值;
nj是第j个特征的不同值的数量;
4-3.计算测试集中样本u有无缺陷的概率,从而判断测试集样本的类别c(u);若样本u的有缺陷概率大于无缺陷概率,则视样本u的类别为有缺陷;否则,视为无缺陷;类别c(u)公式如下:
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910700517.4A CN110515836B (zh) | 2019-07-31 | 2019-07-31 | 一种面向软件缺陷预测的加权朴素贝叶斯方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910700517.4A CN110515836B (zh) | 2019-07-31 | 2019-07-31 | 一种面向软件缺陷预测的加权朴素贝叶斯方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110515836A CN110515836A (zh) | 2019-11-29 |
CN110515836B true CN110515836B (zh) | 2023-08-11 |
Family
ID=68624802
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910700517.4A Active CN110515836B (zh) | 2019-07-31 | 2019-07-31 | 一种面向软件缺陷预测的加权朴素贝叶斯方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110515836B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113157561A (zh) * | 2021-03-12 | 2021-07-23 | 安徽工程大学 | 一种数控系统软件模块的缺陷预测方法 |
WO2023004701A1 (zh) * | 2021-07-29 | 2023-02-02 | 西门子股份公司 | 软件安全缺陷预测方法、装置和计算机可读介质 |
CN113807391A (zh) * | 2021-08-04 | 2021-12-17 | 北京百度网讯科技有限公司 | 任务模型的训练方法、装置、电子设备及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107025503A (zh) * | 2017-04-18 | 2017-08-08 | 武汉大学 | 基于迁移学习和缺陷数量信息的跨公司软件缺陷预测方法 |
CN107391369A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 |
CN109740679A (zh) * | 2019-01-13 | 2019-05-10 | 胡燕祝 | 一种基于卷积神经网络和朴素贝叶斯的目标识别方法 |
-
2019
- 2019-07-31 CN CN201910700517.4A patent/CN110515836B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107025503A (zh) * | 2017-04-18 | 2017-08-08 | 武汉大学 | 基于迁移学习和缺陷数量信息的跨公司软件缺陷预测方法 |
CN107391369A (zh) * | 2017-07-13 | 2017-11-24 | 武汉大学 | 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 |
CN109740679A (zh) * | 2019-01-13 | 2019-05-10 | 胡燕祝 | 一种基于卷积神经网络和朴素贝叶斯的目标识别方法 |
Non-Patent Citations (1)
Title |
---|
基于迁移学习的跨公司软件缺陷预测;董西伟;王玉伟;张广顺;周才学;;计算机工程与设计(03);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN110515836A (zh) | 2019-11-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2021135630A1 (zh) | 基于grcmse与流形学习的滚动轴承故障诊断方法 | |
CN110515836B (zh) | 一种面向软件缺陷预测的加权朴素贝叶斯方法 | |
Zeng et al. | A novel multi-variable grey forecasting model and its application in forecasting the amount of motor vehicles in Beijing | |
CN109086799A (zh) | 一种基于改进卷积神经网络模型AlexNet的作物叶片病害识别方法 | |
CN112465040B (zh) | 一种基于类不平衡学习算法的软件缺陷预测方法 | |
CN111914090B (zh) | 一种企业行业分类识别及其特征污染物识别的方法及装置 | |
CN108875772B (zh) | 一种基于堆叠稀疏高斯伯努利受限玻尔兹曼机和强化学习的故障分类模型及方法 | |
CN110363230B (zh) | 基于加权基分类器的stacking集成污水处理故障诊断方法 | |
CN112541532B (zh) | 基于密集连接结构的目标检测方法 | |
CN111353373A (zh) | 一种相关对齐域适应故障诊断方法 | |
CN111046961B (zh) | 基于双向长短时记忆单元和胶囊网络的故障分类方法 | |
CN114841257A (zh) | 一种基于自监督对比约束下的小样本目标检测方法 | |
CN113516228B (zh) | 一种基于深度神经网络的网络异常检测方法 | |
CN111239137B (zh) | 基于迁移学习与自适应深度卷积神经网络的谷物质量检测方法 | |
CN110826611A (zh) | 基于多个元分类器加权集成的stacking污水处理故障诊断方法 | |
CN114266289A (zh) | 一种复杂装备健康状态评估方法 | |
CN113987910A (zh) | 一种耦合神经网络与动态时间规划的居民负荷辨识方法及装置 | |
CN113283467A (zh) | 一种基于平均损失和逐类选择的弱监督图片分类方法 | |
CN117271701A (zh) | 一种基于tggat和cnn的系统运行异常事件关系抽取方法及系统 | |
CN110648023A (zh) | 基于二次指数平滑改进gm(1,1)的数据预测模型的建立方法 | |
CN116380438A (zh) | 一种故障诊断方法、装置、电子设备及存储介质 | |
CN110837853A (zh) | 一种快速分类模型构建方法 | |
CN113344031B (zh) | 一种文本分类方法 | |
CN112559741B (zh) | 核电设备缺陷记录文本分类方法、系统、介质及电子设备 | |
CN115293641A (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 |