CN112835797B - 一种基于程序中间结构特征的蜕变关系预测方法 - Google Patents
一种基于程序中间结构特征的蜕变关系预测方法 Download PDFInfo
- Publication number
- CN112835797B CN112835797B CN202110146363.6A CN202110146363A CN112835797B CN 112835797 B CN112835797 B CN 112835797B CN 202110146363 A CN202110146363 A CN 202110146363A CN 112835797 B CN112835797 B CN 112835797B
- Authority
- CN
- China
- Prior art keywords
- program
- svm
- data
- samples
- 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
- 238000000034 method Methods 0.000 title claims abstract description 65
- 238000012549 training Methods 0.000 claims abstract description 45
- 239000013598 vector Substances 0.000 claims description 13
- 239000000284 extract Substances 0.000 claims description 7
- 238000010586 diagram Methods 0.000 claims description 6
- 238000005457 optimization Methods 0.000 claims description 3
- 238000004458 analytical method Methods 0.000 claims description 2
- 238000005070 sampling Methods 0.000 description 19
- 230000006870 function Effects 0.000 description 15
- 238000012360 testing method Methods 0.000 description 10
- 238000010801 machine learning Methods 0.000 description 7
- 238000002790 cross-validation Methods 0.000 description 5
- 238000012706 support-vector machine Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 4
- 238000000605 extraction Methods 0.000 description 3
- 230000010354 integration Effects 0.000 description 3
- 238000012952 Resampling Methods 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000013522 software testing Methods 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000013528 artificial neural network Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013145 classification model Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000012937 correction Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 239000003550 marker Substances 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000000611 regression analysis Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
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
- 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
- G06F18/2155—Generating training patterns; Bootstrap methods, e.g. bagging or boosting characterised by the incorporation of unlabelled data, e.g. multiple instance learning [MIL], semi-supervised techniques using expectation-maximisation [EM] or naïve labelling
-
- 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/2411—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on the proximity to a decision surface, e.g. support vector machines
-
- 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/2413—Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
- G06F18/24147—Distances to closest patterns, e.g. nearest neighbour classification
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/10—Machine learning using kernel methods, e.g. support vector machines [SVM]
-
- 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
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Evolutionary Computation (AREA)
- Bioinformatics & Computational Biology (AREA)
- Evolutionary Biology (AREA)
- Bioinformatics & Cheminformatics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Software Systems (AREA)
- Medical Informatics (AREA)
- Computing Systems (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于程序中间结构特征的蜕变关系预测方法。本发明首先将Java程序转换成程序的中间结构;其次对Java程序的中间结构进行分析,并从中提取特征;由此构建数据集;然后将所构建的数据集作为半监督SVM‑Bagging‑KNN的训练集训练二分类预测模型;最后将预测模型用于预测未出现过的Java方法的蜕变关系。本发明引入Bagging算法框架,在一个半监督算法中,在训练弱分类器的过程中引入bagging算法框架,使用强分类器预测训练集中加入的未标记数据的结果的可靠性高,这部分数据结果的高可靠性会使最终预测模型的效率。
Description
技术领域
本发明涉及一种蜕变关系的预测方法,更具体地说,本发明涉及一种基于程序中间结构特征的预测方法。
背景技术
随着经济与社会的发展以及5G时代的到来,越来越多的软件被开发出来。这些软件使我们的生活愈加便利,但是与此同时也会带来巨大的损失。例如,2007年,美国边境和海关控制网络发送了大量错误数据。这导致洛杉矶整个机场关闭了8个小时,在问题解决之前,超过17000架飞机不能起飞,这影响到了很多人的出行计划,对机场也造成很大的损失。这件事的罪魁祸首是一段有Bug的嵌入式软件。在2016年,日本发射了一颗名叫“Hitomi”的X射线天文卫星。但是仅一个月后,“Hitomi”与地面之间的通信发生了严重故障。软件错误导致了超过2.86亿美元的损失。因此保证软件的可靠性显得愈发重要。
软件测试旨在发现软件中存在的缺陷进而提高程序的可靠性,传统的软件测试需要测试人员为待测程序构造大量的测试用例和预期输出,通过对比测试用例的执行结果是否满足其预期输出来验证程序的正确性。但在很多情况下,测试人员无法为待测程序构造预期输出,那么就无法确定测试用例的执行结果是否与预期输出一致,这就是软件测试中存在Oracle问题。由于Oracle问题的存在,传统的软件测试就不能适用于这类软件的测试。
为了缓解软件测试中的Oracle问题,Chen提出了蜕变测试技术。这种方法通过检查程序执行结果之间的关系来测试程序,无需构造预期输出从而缓解了Oracle问题。蜕变关系是蜕变测试的核心也是进行蜕变测试的前提,蜕变关系的构造大部分都依赖于待测程序领域内的专业知识,也就是不同的测试领域需要了解相关领域的知识。现有的蜕变关系通常由领域专家完成,用这种方式来构造蜕变关系,需要耗费大量的人力物力。因此,使用机器学习模型预测蜕变关系来减少构建蜕变关系所需要耗费的时间及成本是大势所趋。
在自动化预测蜕变关系领域中,将程序转化为可视化的中间结构(一种与特定语言无关的表示方式,通过词法、语法和语义分析得到的)并从中提取相应的特征,然后使用机器学习算法预测蜕变关系。这些方法首先将Java方法转换成对应的控制流图。然后从控制流图中提取出节点特征和路径特征组成特征集,最后使用机器学习算法建立一个预测模型。虽然这些方法已经验证可行,但是此方法提取特征的方法以及使用的机器学习算法还有待改进。一个程序的控制流图仅可以反映一个程序的结构,该方法只从一个程序的结构中提取特征,没有从一个程序的语法特征方面进行分析,导致提取出的特征集合不全面,最终导致预测准确率不高。导致预测准确率不高的另一个因素就是机器学习算法的选择。在之前的发明中,已经通过实验证明半监督学习算法的预测准确率要比监督学习高效。但是在之前的发明中,半监督算法所训练的弱分类模型效果并不是很好,虽然有的方法对弱分类器的决策边界处的数据进行重新预测,但是还是没有从根本上解决问题。
发明内容
本发明的目的是针对现有技术的不足,提供一种基于程序中间结构特征的蜕变关系预测方法,基于Java程序的中间结构,将中间结构转化成程序流图(CFG)以及抽象语法树(AST),从程序流图以及抽象语法树中提取相应的特征,并利用机器学习生成一个预测模型,最后使用该预测模型对未知Java程序自动化选择一个或多个可使用的蜕变关系。
本发明所采用的技术方案如下:
步骤1:将Java程序转换成程序的中间结构;
步骤2:对步骤1中Java程序的中间结构进行分析,并从中提取特征;
步骤3:构建数据集;
步骤4:将步骤3中所构建的数据集作为半监督SVM-Bagging-KNN的训练集训练二分类预测模型;
步骤5:将步骤4中的预测模型用于预测未出现过的Java方法的蜕变关系。
本发明提供的技术方案包含以下有益效果:
本发明在特征提取中加入抽象语法树特征的提取,在对一个程序结构特征提取的基础上,对一个程序的语法结构进行分析并从中提取特征。加入语法特征后的数据集能够更加全面的表示一个程序的特征,既包括结构信息,又包括语法信息。
本发明引入Bagging算法框架,在一个半监督算法中,在训练弱分类器的过程中引入bagging算法框架。该算法框架通过训练多个弱分类器,以及结合一定的结合策略训练生成一个强分类器,使用该强分类器预测训练集中加入的未标记数据的结果的可靠性高,这部分数据结果的高可靠性会使最终预测模型的效率。
本发明得到一个稳定的蜕变关系预测模型,不管是使用之前方法中所用的特征集还是使用在加入抽象语法树特征后的特征集,最终的预测模型的准确率相对较高。
附图说明
图1为本发明所涉及的流程图;
图2为预测模型建立过程图;
图3为集成学习的应用模型图;
图4为基于Bagging算法集成SVM的模型图;
图5为自助采样法过程图;
图6为最终SVM预测模型建立过程图;
图7为预测模型判断蜕变关系流程图。
具体实施方式
下面结合附图,对本发明的具体实施方案作进一步详细描述。其具体流程描述如图1所示,其中:
步骤1:将Java程序转换成程序的中间结构;
本发明使用一个Java优化框架Soot来将Java方法转换为控制流图(CFG)。控制流图(Control Flow Graph,CFG)是一个有向图,它可以反应一个程序的逻辑控制流程和语句执行路径。
本发明使用JavaCC将Java方法转换为抽象语法树(AST)。抽象语法树(AbstractSyntax Tree,AST)是一个树状结构,它是对一个程序的语法树进行适当的简化和修改后形状。
步骤2:对步骤1中Java程序的中间结构进行分析,并从中提取特征;
本发明从控制流图中提取节点特征和路径特征。
节点特征由给定的节点、入度和出度组成,特征值为该节点特征在控制流图中出现的次数。图1中从CFG中提取的节点特征如下表所示。
特征 | 特征值 |
start-0-1 | 1 |
add-1-1 | 2 |
if-2-2 | 1 |
assi-1-1 | 1 |
end-1-0 | 1 |
路径特征由开始节点到每个节点的最短路径和每个节点到结束节点的最短路径组成,特征值为该路径特征在控制流图中出现的次数。图1中从CFG中提取的路径特征如下表所示。
本发明从抽象语法树中提取节点特征,给定的特征值为抽象语法树中节点的出现次数。
图1中从抽象语法树中提取节点特征集如下表所示。
步骤3:构建数据集;
从步骤2中提取的特征组成一个特征集和,并加入一个标记,该标记表示该Java方法是否满足给定的蜕变关系(正例或反例)。
步骤4:将步骤3中所构建的数据集作为半监督SVM-Bagging-KNN的训练集训练二分类预测模型;
传统的监督学习需要一组足够多的已标记数据作为训练集,否则无法获得具泛化性能的监督学习方法,而在实际应用中,得到大量标记数据是非常困难的,甚至无法实现;而无监督学习,试图通过发现未标记数据中的隐含结构,从而构造出相应的学习器,这导致无监督学习通常很难保证较高的学习精度。在已知的训练集中仅有少量标记数据的情况下,利用传统机器学习策略不能得到具有较好泛化性能和精度的学习器。
鉴于标记大规模的未标记样本既费时又耗力,若只依靠少量的标记样本进行分类,预测精度又比较低,因此针对如何从未标记数据中提取有用信息来提高分类精度这一问题,本发明提出了基于半监督Bagging-SVM-KNN的分类方法,采用半监督学习策略,利用SVM作为主分类器,联合Bagging和KNN对含有大量未标记样本的数据集进行分类,最后完成全部样本标记的数据集将训练出最终SVM分类器作为预测模型,如图2所示。
1)SVM分类器
由于在本发明的环境下,难以获取大量的有标记的数据集,只拥有少部分有标记的数据集。而在少量有标记的数据集下,SVM分类器能有一个较好的分类效果。所以本发明将SVM分类器作为主分类器。SVM原理及其主要参数介绍如下。
a)SVM原理
支持向量机(Support Vector Machine,简称SVM)是统计学习理论中最年轻的部分,其主要内容在1992年到1995年才基本完成,目前仍处于不断发展阶段。
对于非线性问题,SVM就是通过采用某种核函数,将低维空间中的非线性问题转化为高维空间中的线性问题,在高维空间中求解最优分类超平面。在SVM算法中,判别函数由支持向量唯一决定,一般情况下,支持向量的数目远远小于总的训练样本数目。最优分类超平面主要有支持向量决定,算法的复杂性主要取决于支持向量的个数,而与样本的维数关系不大,这在一定程度上解决了特征维数过大导致的维数灾难问题。此外,由于SVM算法最终转化为线性条件下的凸二次优化问题,能够保证所得到的解是全局最优解,解决了神经网络中无法避免的局部极值问题。
b)关键参数的选择
在使用包含标记样本的数据集训练SVM分类器的过程中,需要解决的一个重要问题就是如何选择适合实际问题的核函数和参数。核函数的选择会对分类器的精度有重大的影响,因此根据具体应用选则不同的核函数是使用SVM时需要重点考虑的问题之一。常见的核函数有如下几种:线性核函数、多项式核函数、高斯核函数(RBF)核、Sigmoid核函数等。本发明采用线性核函数。
本发明使用k折交叉验证结合网格算法的方法选取适当的核函数。首先将训练数据集分成k份相等的子集,针对不同的核函数,每次选取其中的k-1份数据作为训练样本,另外1份数据作为测试样本。如此重复k次,根据k次迭代后得到的MES平均值来估计期望泛化误差,期望泛化误差最小的那一组所用的核函数就是要选取的核函数。
在训练SVM分类器时,参数c和参数g的选择尤为重要。本发明使用BFS启发式广度优先搜索方法选取参数c和参数g。将各参数范围按照较大的均匀步长分割成离散数组,然后遍历各参数数组取值,交叉验证运算,统计得出最佳参数后,重现在该参数附近分配原步长大小的范围,将原步长缩小,重新分割各参数为离散数组,遍历取值,交叉验证运算,重复如上步骤,直到交叉验证的结果不再更新。交叉验证结果最好时所采用的参数即是需要选取的参数。其中,如果多个参数都可得到相同的最佳结果,则选取数值最小的参数。
2)基于Bagging算法集成SVM
从应用的角度,可以对集成学习的思想做一个概括。对于训练集数据,如图3所示,通过训练若干个个体学习器,利用一定的结合策略,就可以最终形成一个强学习器,以达到发挥个体学习器优势、降低个体学习器不良影响的目的。
SVM分类器在少量数据集的情况下,相比于其他分类器有非常好的分类效果。但是在SVM的学习过程中,通过少量标记数据集训练出的SVM是弱分类器,分类结果的准确性依旧较低。因此,本发明引入集成学习中的Bagging算法集成多个SVM分类器,形成一个强SVM分类器,对未标记样本进行分类,以此提高分类结果的准确性和稳定性。
基于Bagging算法集成SVM的模型如图4所示。
从图4可以看出,Bagging算法中个体弱SVM分类器的训练集是通过随机采样得到的。通过T次的随机采样,可以得到T个采样训练集,对于这T个采样训练集,可以分别独立的训练出T个弱SVM分类器,再对这T个弱SVM分类器通过结合策略来得到一个强SVM分类器。Bagging算法的主要过程如上所示,其中Bagging算法主要由三部分组成,分别是采样策略、基分类器以及结合策略。首先第一部分是数据集,每个弱分类器的训练集需要从原始训练集中获取,在这一步中需要确定合适的采样策略。其次要确定合适的基分类器。最后,需要选取合适的结合策略将多个弱分类器组成一个强分类器。
对于抽样策略,Bagging算法是一种基于Bootstrap抽样方法(如图5所示)的并行式算法。而Bootstrap应用于回归分析有两种方式,一种是对残差重复采样,另一种是对样本重复采样。本发明只讨论对样本数据重采样的方法,该方法直接对样本X1,X2,…,Xn以每次的概率独立重复抽样得到/>然后用多次重复得到的Bootstrap样本调整模型和推断相关统计量。也就是说,在Bagging方法中,有放回地独立重复抽样得到的Bootstrap样本训练多个不同的基分类器,最后生成一个最终强分类器。
本发明采用的是自助采样法(Bootstrap sampling)对原始训练集进行随机采样,即对于大小为n个原始训练集,每次先随机抽取一个样本放入采样集,接着把该样本放回,也就是说下次采样时该样本仍有可能被采集到,这样抽取m次,就可以得到含m个样本的采样集。重复上述操作T次,最终得到T个采样集。由于是随机采样,每个采样集和原始训练集是不同的,和其他采样集也是不同的,因此也能训练得到差异化的SVM弱分类器。
对于基分类器,本发明采用的是SVM分类器,该分类器在训练数据较少的情况下,有较好的预测结果。
对于集成策略,集成策略的好坏在一定程度上决定了集成学习模型效果的好坏,集成策略主要分为两种,第一种是平均法,另一种则是投票法。在分类问题上,通常使用的是投票法,本发明也采用投票法。一般有以下几种投票法来决定强分类器的最终预测结果:相对多数投票法、绝对多数投票法、加权投票法。由于预测某一Java程序是否能够使用某一蜕变关系是一个0-1分类问题,所以本发明使用绝对多数投票法,针对任一样本x,若T个SVM弱分类器中,有t个及以上的弱分类器的预测结果相同,即|hk(x)=ci|≥t,则强SVM分类器的最终预测结果为ci,t是一个接近T的较大值。若预测为同一类别的弱分类器数量均小于t,则该样本的最终预测结果可以利用KNN进一步讨论。
3)基于KNN改善SVM的分类边界
若某些样本无法使用强SVM分类器进行预测分类,即T个SVM弱分类器的分类意见无法达成绝对多数的意见一致,则这些样本明显是位于分类边界附近的样本,很有可能是支持向量,对分类结果起着决定性的作用,但是它们又比较容易误分。
在支持向量机分类过程中,支持向量对分类结果起着决定性的作用,直接影响到训练速度和分类精度等问题,若能仅使用支持向量进行运算,不仅能保证对分类有价值的信息不会丢失,而且能缩短训练时间。在半监督学习的过程中,选择KNN分类器辅助SVM,在大量未标记样本中挑选出部分支持向量,因为在一次次的分类边界修正过程中,BSV和nBSV以及普通样本之间可以发生相互转换,一些含有样本主要分类信息的样本会被挑选出来,加入到支持向量集中,这样分类面就会不断得以纠正,而未标记数据中大部分无用的样本不会参与到SVM的训练过程中,这样即保证了分类精度,而且降低了SVM训练的时间。相对于其他方法,由于KNN方法主要依赖周围有限的邻近样本,而不是靠判别类域的方法来确定所属类别,故KNN分类器更合适。
在半监督学习过程中,对于这些强SVM分类器标记的类别比较模糊的样本,本发明引入KNN分类器再对其中分类意见较为一致的m个样本进行分类,最后将完成标记的这m个样本和强SVM分类器中类别明确的样本一起放到原始训练集里,扩充训练集中数据的数目,再次进行下一轮的学习。
要使用KNN分类器对未知样本x进行分类,只要比较x与原始训练集中n个已知类别的样本之间的欧氏距离,从而决策x与离它最近的k个样本中数量最多的类别同类。采用欧式距离作为两个向量之间的距离,既设则xi与xj之间的距离为
4)预测模型的建立过程
结合上文的介绍,可以得到最终SVM预测模型的建立过程,如图6所示。该预测模型用于预测某一Java程序是否可以使用某一蜕变关系,即0-1分类问题。
已知一个数据集,包含一部分标记数据和大量未标记数据,本发明提出的半监督Bagging-SVM-KNN方法训练预测模型的步骤如下:
(1)用有标记数据和Bagging算法训练出n个弱SVM分类器。
(2)用该n个弱SVM分类器对数据集中未标记的数据进行分类,若样本被t个及以上的弱SVM分类器都预测为同一类型,则认为该分类结果可信度高,该样本完成标记,将数据放入有标记部分的训练集,否则该样本未完成标记。
(3)统计未完成标记的样本,选择其中分类可信度最低的m个样本,用KNN分类器对这些样本进行重新预测,完成标记,将数据放入有标记部分的训练集,若数据集中没有未标记数据,进入步4;否则,返回步(1)。
(4)此时完成半监督学习过程,是一个含有较多标记数据的数据集,使用该数据集训练出最终的SVM预测模型
步骤5:将步骤4中的预测模型用于预测未出现过的Java方法的蜕变关系。
由于蜕变关系库中存在多个蜕变关系,而一个Java程序可能满足多个蜕变关系,因此,需要对每个蜕变关系分别按照上述过程训练预测模型。一旦最终SVM预测模型完成了训练,就可以将它们应用于蜕变关系的判断。将需要判断蜕变关系的Java程序作为待求解样本,首先提取该程序的特征构建特征向量,然后将特征向量输入到训练好的预测模型中,即可自动输出预测结果,即判断该流程是否满足预测模型对应的蜕变关系。图7描述了最终SVM预测模型应用于蜕变关系判断的程序。
Claims (3)
1.一种基于程序中间结构特征的蜕变关系预测方法,其特征在于该方法包括以下步骤:
步骤1:将Java程序转换成程序的中间结构;
步骤2:对步骤1中Java程序的中间结构进行分析,并从中提取特征;
步骤3:构建数据集;
步骤4:将步骤3中所构建的数据集作为半监督SVM-Bagging-KNN的训练集训练二分类预测模型;
步骤5:将步骤4中的预测模型用于预测未出现过的Java方法的蜕变关系;
步骤1中所述的Java程序使用Java优化框架Soot和JavaCC转换成程序中间结构,分别为程序流图和抽象语法树;
步骤2中所述的中间结构分析就是对程序流图以及抽象语法树进行分析,从程序流图中提取节点特征和路径特征;
节点特征由给定的节点、入度和出度组成,特征值为该节点特征在控制流图中出现的次数;
路径特征由开始节点到每个节点的最短路径和每个节点到结束节点的最短路径组成,特征值为该路径特征在控制流图中出现的次数;
从抽象语法树中提取节点特征,给定的特征值为抽象语法树中节点的出现次数;
步骤4具体是:
4-1、用有标记数据和Bagging算法训练出n个弱SVM分类器;
4-2、用该n个弱SVM分类器对数据集中未标记的数据进行分类,若样本被t个以上的弱SVM分类器都预测为同一类型,则认为该分类结果可信度高,该样本完成标记,将数据放入有标记部分的训练集,否则该样本未完成标记;
4-3、统计未完成标记的样本,选择其中分类可信度最低的m个样本,用KNN分类器对这些样本进行重新预测,完成标记,将数据放入有标记部分的训练集,若数据集中没有未标记数据,进入4-4;否则,返回步4-1;
4-4、此时完成半监督学习过程,是一个含有较多标记数据的数据集,使用该数据集训练出最终的二分类预测模型;
步骤5中将需要判断蜕变关系的Java程序作为待求解样本,首先提取该程序的特征构建特征向量,然后将特征向量输入到训练好的二分类预测模型中,即可自动输出预测结果,即判断该流程是否满足预测模型对应的蜕变关系。
2.如权利要求1所述的一种基于程序中间结构特征的蜕变关系预测方法,其特征在于,步骤3中所述的构建数据集,就是将步骤2中提取形成的特征集合加上对应的标签。
3.如权利要求1所述的一种基于程序中间结构特征的蜕变关系预测方法,其特征在于,步骤4中所述的半监督SVM-Bagging-KNN为一种分类方法,其采用半监督学习策略,利用SVM作为主分类器,联合Bagging和KNN对含有大量未标记样本的数据集进行分类,最后完成全部样本标记的数据集,将训练出的最终SVM分类器作为二分类预测模型。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110146363.6A CN112835797B (zh) | 2021-02-03 | 2021-02-03 | 一种基于程序中间结构特征的蜕变关系预测方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110146363.6A CN112835797B (zh) | 2021-02-03 | 2021-02-03 | 一种基于程序中间结构特征的蜕变关系预测方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112835797A CN112835797A (zh) | 2021-05-25 |
CN112835797B true CN112835797B (zh) | 2024-03-29 |
Family
ID=75931745
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110146363.6A Active CN112835797B (zh) | 2021-02-03 | 2021-02-03 | 一种基于程序中间结构特征的蜕变关系预测方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112835797B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117555554A (zh) * | 2024-01-10 | 2024-02-13 | 江西财经大学 | 基于程序代码与注释文本学习的蜕变关系推荐方法与系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130063565A (ko) * | 2011-12-07 | 2013-06-17 | 조윤진 | 언라벨데이터를 이용한 앙상블 형태의 데이터마이닝 모형 구축장치 및 그 방법 |
CN107392015A (zh) * | 2017-07-06 | 2017-11-24 | 长沙学院 | 一种基于半监督学习的入侵检测方法 |
CN112115467A (zh) * | 2020-09-04 | 2020-12-22 | 长沙理工大学 | 一种基于集成学习的半监督分类的入侵检测方法 |
-
2021
- 2021-02-03 CN CN202110146363.6A patent/CN112835797B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20130063565A (ko) * | 2011-12-07 | 2013-06-17 | 조윤진 | 언라벨데이터를 이용한 앙상블 형태의 데이터마이닝 모형 구축장치 및 그 방법 |
CN107392015A (zh) * | 2017-07-06 | 2017-11-24 | 长沙学院 | 一种基于半监督学习的入侵检测方法 |
CN112115467A (zh) * | 2020-09-04 | 2020-12-22 | 长沙理工大学 | 一种基于集成学习的半监督分类的入侵检测方法 |
Non-Patent Citations (2)
Title |
---|
基于半监督学习的SVM-KNN;李昆仑;骆学荣;孟晓倩;;北京交通大学学报;20091215(06);全文 * |
基于贝叶斯分类的Web服务质量预测方法研究;任迪等;《基于贝叶斯分类的Web服务质量预测方法研究》;20170630;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN112835797A (zh) | 2021-05-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11645541B2 (en) | Machine learning model interpretation | |
US9311609B2 (en) | Techniques for evaluation, building and/or retraining of a classification model | |
CN109726120B (zh) | 一种基于机器学习的软件缺陷确认方法 | |
Doppa et al. | HC-Search: A learning framework for search-based structured prediction | |
Guo et al. | Concept drift type identification based on multi-sliding windows | |
CN111782807B (zh) | 一种基于多方法集成学习的自承认技术债务检测分类方法 | |
CN112364352B (zh) | 可解释性的软件漏洞检测与推荐方法及系统 | |
CN115964273A (zh) | 基于深度学习的航天器测试脚本自动生成方法 | |
CN112835797B (zh) | 一种基于程序中间结构特征的蜕变关系预测方法 | |
Dumancic et al. | A comparative study of distributional and symbolic paradigms for relational learning | |
Gupta et al. | Cognitive complexity and graph convolutional approach over control flow graph for software defect prediction | |
CN117494760A (zh) | 一种基于超大规模语言模型的富语义标签数据增广方法 | |
CN112783513A (zh) | 一种代码风险检查方法、装置及设备 | |
US20230186021A1 (en) | Automatic theorem solver | |
CN111126443A (zh) | 基于随机游走的网络表示学习方法 | |
Agarwal et al. | Ranking by aggregating referees: Evaluating the informativeness of explanation methods for time series classification | |
Liu et al. | A provenance meta learning framework for missing data handling methods selection | |
Chen et al. | Reconfidencing LLMs from the Grouping Loss Perspective | |
Llerena et al. | Efficient algorithms for robustness analysis of maximum a posteriori inference in selective sum-product networks | |
Gonzalez | Improving deep learning through loss-function evolution | |
Raamesh et al. | Data mining based optimization of test cases to enhance the reliability of the testing | |
CN118519681B (zh) | 一种基于深度强化学习的代码自动补全方法、系统及装置 | |
CN118672594B (zh) | 一种软件缺陷预测方法及系统 | |
Mahdavi | Enhanced clustering analysis pipeline for performance analysis of parallel applications | |
Huang | Data-driven Diagnosis for Digital Circuit Failures |
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 |