CN111045716B - 一种基于异构数据的相关补丁推荐方法 - Google Patents
一种基于异构数据的相关补丁推荐方法 Download PDFInfo
- Publication number
- CN111045716B CN111045716B CN201911067915.3A CN201911067915A CN111045716B CN 111045716 B CN111045716 B CN 111045716B CN 201911067915 A CN201911067915 A CN 201911067915A CN 111045716 B CN111045716 B CN 111045716B
- Authority
- CN
- China
- Prior art keywords
- patch
- model
- prediction
- probability
- logistic regression
- 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
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开一种基于异构数据的相关补丁推荐方法,包括爬取代码审查的多元异构数据,洗清数据,拼接多元异构数据特征为补丁特征向量,配对补丁对,以与预测补丁有相关性为正样本,与预测补丁无相关性为负样本,并为正、负样本标记二分类标签后,划分训练集和验证集,用训练集分别训练逻辑回归、随机森林和LightGBM三个模型,得到相应概率和预测标签,再根据预测标签计算对应的准确率,最后再根据融合权值与相应概率的加权求和构建预测评分,获取最优预测评分。本发明利用机器学习对提交到代码审查***的数据进行相关性评估得到最优推荐,提高推荐可靠性稳定性,更节省人力成本。
Description
技术领域
本发明涉及代码审查领域,尤其涉及一种基于异构数据的相关补丁推荐方法。
背景技术
代码审查是软件工程项目顺利迭代的重要基础,是由多元复杂的小任务构成,包括代码规范的修正、代码的补充注释等。目前在软件工程领域应用较多的是采用人工审查的方法对代码进行更新和版本管理,人力成本高。
目前软件工程行业一般使用git、Gerrit等类似的***进行代码管理和审查。在这些***上每更新一次代码,我们称之为一次代码修改或一个补丁。这些***,为每一份提交的补丁提供了一个审查者、提交者以完成查询或评论。补丁审查的基本流程是:
1)程序员,即作者完成补丁;
2)提交者提交补丁到审查***;
3)审查者到审查***审查并评。通过,则流程结束;否则,补丁作者参考审查者意见作出修改,并将流程回到第一步。
以下以Gerrit为例,对此类***做详细说明:
1)代码审查***会保存各个版本的补丁代码,而这些版本的代码属于同一个补丁,或者称为一次代码更新。
2)一般的代码审查***会给每一个提交到***的补丁加上一个唯一的数值型id,这个id越大,说明这个补丁提交的时间越晚。
3)提交到***的补丁,一般包含:用以介绍本次补丁所解决问题的简述、提交者信息、审查者信息、提交时间、代码文件、diff文件即***生成的相应代码修改对比文件。
各个版本代码的回溯和对相关提交的参考是修正代码错误和异常的必要流程。但由于每个工程下代码迭代次数多和代码文件数过多,靠人工去寻找与当前问题提交相关的其余提交,或者依靠人工事先去标注提交之间是否相关,都耗费大量的人力成本和时间成本。
发明内容
本发明为克服上述现有技术所述的至少一种缺陷(不足),提供一种基于异构数据的相关补丁推荐方法。
本发明旨在至少在一定程度上解决上述技术问题。
为了达到上述技术效果,本发明的技术方案如下:
一种基于异构数据的相关补丁推荐方法,包括:
S10爬取代码审查网站代码审查记录或文件的多元异构数据,其中多元异构数据包括补丁基本信息、补丁代码、补丁简述、与预测补丁具有相关性的补丁列表;
S20利用补丁基本信息构建元特征;统计补丁代码中各种补丁类型的频次,并将同一个补丁修改过程中各个修改类型的频次组合成补丁的修改特征向量;提取补丁的相应简述,并将之自然语言转换成机器可识别的简述嵌入特征;将补***特征、修改特征向量、简述的嵌入特征拼接为补丁特征向量;
S30补丁代码中预测补丁i与补丁列表中补丁j组成补丁i-补丁j对,视为正样本,预测补丁i与补丁列表外的补丁j组成补丁i-补丁j对,视为负样本,i代表当前项,j为变量,代表成对补丁数,为正、负样本标记二分类标签;从多元异构数据中采集正、负样本构成样本集,将样本集划分为训练集、验证集;
S40用训练集训练逻辑回归模型、随机森林模型、LightGBM模型;
S50设置预测阈值η及从概率到标签的映射关系,将验证集输入逻辑回归模型得到概率PLR和对应预测标签,输入随机森林模型得到概率PRF和对应预测标签,输入LightGBM模型得到概率PLGB和对应预测标签,使用相应的预测标签计算相应模型预测的准确率,分别得到逻辑回归模型的准确率aLR、随机森林模型的准确率aRF、LightGBM模型的准确率aLGB;
S60分别计算逻辑回归、随机森林、LightGBM的融合权值wI,通过融合权值wI与概率PLR、概率PRF、概率PLGB的加权求和构建预测评分score,获取最优预测评分score。
优选地,所述S10之后,所述S20之前,还包括:
S70按机器可识别的要求对多元异构数据进行文本或列表的清洗处理,清洗处理至少统一名称的大小写形式、将字符串类型的相关列表转换成可识别的列表类型。
优选地,所述S30中提取补丁的相应简述,并将之自然语言转换成机器可识别的简述嵌入特征的方法包括:
S301对每个简述文本去停用词处理,停用词至少包括疑问词和各种标点;
S302采用word2vec方法得到简述中词的word2vec向量;
S303将词的word2vec向量嵌入词在简述中的相应位置,并替换相应位置的词,由此获得M*N的简述矩阵,其中M为简述的长度,N为词的word2vec向量维度;
S304对简述矩阵的每一列做平均,得到1*N的向量视为简述对应的嵌入特征。
优选地,所述补丁的基本信息包括提交者和/或审查者信息、所爬取补丁的审查者姓名、补丁的提交者姓名、补丁的作者姓名、补丁所属项目的名称、补丁所属项目分支的名称、补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数。
优选地,所述S20中利用补丁基本信息构建元特征的方法具体为:
直接提取补丁的基本信息中补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数的数值特征视为补***特征;
除补丁的基本信息中补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数外的其余补丁基本信息,都视作类别字段并进行独热编码;将同一个补丁的各个类别字段的独热编码组合成一组多维稀疏的独热编码特征,将独热编码特征视为补***特征。
优选地,所述逻辑回归模型、随机森林模型、LightGBM模型均做二分类任务,以预测两个补丁是否相关为目标,即以一个补丁i-补丁j对所对应标签为0或1为目标,最终模型的预测输出样本标记为1的概率,以及样本对应的预测标签0或1。
优选地,所述S40具体为:
利用训练集训练逻辑回归模型,就是将补丁对特征x=[x1,x2,...,xn]T输入至逻辑回归模型,利用逻辑回归模型中的参数向量:w=[w1,w2,...,wn]T,将输入特征和参数向量线性加和为两向量的内积:wT·x=w1x1+w2x2+...+wnxn,预测目标公式:其中pLR是逻辑回归的输出,即样本标签为1的概率,x是模型的输入特征向量,w为逻辑回归的各个特征的线性加和参数,b为线性加和的偏置值,σ(wT·x+b)为sigmoid映射函数,经过负梯度下降方法优化w和b,得到一个确定的逻辑回归模型,记为LR;
利用训练集训练随机森林模型。随机森林是K棵CART决策树的集合,CART分类树为每个叶子节点分配一个得分,最终得分是所有CART的预测得分均值,且每棵CART分类树都是独立的,以训练集训练一个确定的随机森林模型,记为RF,记补丁对的特征向量为x,经模型输出样本标签为1的概率的预测目标公式:
利用训练集训练LightGBM模型。LightGBM的训练是一个迭代建立决策树的过程,设置M次迭代得到LightGBM模型,记为FM(x)=FM-1(x)+αMTM(x),其中TM(x)为迭代过程中建立的第M棵树,αM为第M棵树的权值,输入训练集训练得到一个确定的LightGBM模型,记为LGB,输入验证集的补丁特征向量x至LightGBM模型,LightGBM模型输出样本标签为1的概率:其中FM(x)为LightGBM模型经M次迭代后的最终模型,M为迭代收敛次数。
优选地,所述S50中所述从概率到标签的映射公式为:
其中I为LR、RF或LGB。
优选地,所述准确率αI的计算公式为:
优选地,所述S60中融合权重和预测评分的计算公式分别为:
分别计算逻辑回归模型、随机森林模型、LightGBM模型的融合权值wI:
预测评分计算公式:
与现有技术相比,本发明技术方案的有益效果是:实现了相关补丁对应页面的自动推荐,节省了大量人工寻找相关补丁页面的成本,同时有效提高审查人员高效率工作;同时本发明采用了多元异构数据作为机器学习模型训练的输入,从不同的维度刻画了代码审查中多个提交之间的异同,充分利用了不同维度的信息;另外,采用多模型融合的方法产生最后的推荐结果,提高了推荐可靠性和稳定性。
附图说明
图1为本发明模型融合示意图。
力2为所述采用word2vec方法得到简述中词的word2vec向量的示例图。
图3为所述基于bagging集成方式的集成树模型的训练示意架构。
具体实施方式
附图仅用于示例性说明,不能理解为对本专利的限制;
为了更好说明本实施例,附图某些部件会有省略、放大或缩小,并不代表实际产品的尺寸;
对于本领域技术人员来说,附图中某些公知结构及其说明可能省略是可以理解的。
下面结合附图和实施例对本发明的技术方案做进一步的说明。
如图1-3所示,一种基于异构数据的相关补丁推荐方法,包括:
S10爬取代码审查网站代码审查记录或文件的多元异构数据,其中多元异构数据包括补丁基本信息、补丁代码、补丁简述、与预测补丁具有相关性的补丁列表;
S20利用补丁基本信息构建元特征;统计补丁代码中各种补丁类型的频次,并将同一个补丁修改过程中各个修改类型的频次组合成补丁的修改特征向量;提取补丁的相应简述,并将之自然语言转换成机器可识别的简述嵌入特征;将补***特征、修改特征向量、简述的嵌入特征拼接为补丁特征向量;
S30补丁代码中预测补丁i与补丁列表中补丁j组成补丁i-补丁j对,视为正样本,预测补丁i与补丁列表外的补丁j组成补丁i-补丁j对,视为负样本,i代表当前项,j为变量,代表成对补丁数,为正、负样本标记二分类标签;从多元异构数据中采集正、负样本构成样本集,将样本集划分为训练集、验证集;
S40用训练集训练逻辑回归模型、随机森林模型、LightGBM模型;
S50设置预测阈值η及从概率到标签的映射关系,将验证集输入逻辑回归模型得到概率PLR和对应预测标签,输入输入随机森林模型得到概率PRF和对应预测标签,输入LightGBM模型概率PLGB和对应预测标签,使用相应的预测标签计算相应模型预测的准确率,分别得到逻辑回归模型的准确率aLR、随机森林模型的准确率aRF、LightGBM模型的准确率aLGB;
S60分别计算逻辑回归模型、随机森林模型、LightGBM模型的融合权值wI,通过融合权值wI与概率PLR、概率PRF、概率PLGB的加权求和构建预测评分score,获取最优预测评分score。
优选地,所述S10之后,所述S20之前,还包括:
S70按机器可识别的要求对多元异构数据进行文本或列表的清洗处理,清洗处理至少统一名称的大小写形式、将字符串类型的相关列表转换成可识别的列表类型。
优选地,所述S30中提取补丁的相应简述,并将之自然语言转换成机器可识别的简述嵌入特征的方法包括:
S301对每个简述文本去停用词处理,停用词至少包括疑问词和各种标点;
S302采用word2vec方法得到简述中词的word2vec向量;
S303将词的word2vec向量嵌入词在简述中的相应位置,并替换相应位置的词,由此获得M*N的简述矩阵,其中M为简述的长度,N为词的word2vec向量维度;
S304对简述矩阵的每一列做平均,得到1*N的向量视为简述对应的嵌入特征。
优选地,所述补丁的基本信息包括提交者和/或审查者信息、所爬取补丁的审查者姓名、补丁的提交者姓名、补丁的作者姓名、补丁所属项目的名称、补丁所属项目分支的名称、补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数。
优选地,所述S20中利用补丁基本信息构建元特征的方法具体为:
直接提取补丁的基本信息中补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数的数值特征视为补***特征;
除补丁的基本信息中补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数外的其余补丁基本信息,都视作类别字段并进行独热编码;将同一个补丁的各个类别字段的独热编码组合成一组多维稀疏的独热编码特征,将独热编码特征视为补***特征。
优选地,所述逻辑回归模型、随机森林模型、LightGBM模型均做二分类任务,以预测两个补丁是否相关为目标,即以一个补丁i-补丁j对所对应标签为0或1为目标,最终模型的预测输出样本标记为1的概率,以及样本对应的预测标签0或1。
优选地,所述S40具体为:
利用训练集训练逻辑回归模型,就是将补丁对特征x=[x1,x2,...,xn]T输入至逻辑回归模型,利用逻辑回归模型中的参数向量:w=[w1,w2,...,wn]T,将输入特征和参数向量线性加和为两向量的内积:wT·x=w1x1+w2x2+...+wnxn,预测目标公式:其中pLR是逻辑回归的输出,即样本标签为1的概率,x是模型的输入特征向量,w为逻辑回归的各个特征的线性加和参数,b为线性加和的偏置值,σ(wT·x+b)为sigmoid映射函数,经过负梯度下降方法优化w和b,得到一个确定的逻辑回归模型,记为LR;
利用训练集训练随机森林模型。随机森林是K棵CART决策树的集合,CART分类树为每个叶子节点分配一个得分,最终得分是所有CART的预测得分均值,且每棵CART分类树都是独立的,以训练集训练一个确定的随机森林模型,记为RF,记补丁对的特征向量为x,经模型输出样本标签为1的概率的预测目标公式:
利用训练集训练LightGBM模型。LightGBM的训练是一个迭代建立决策树的过程,设置M次迭代得到LightGBM模型,记为FM(x)=FM-1(x)+αMTM(x),其中TM(x)为迭代过程中建立的第M棵树,αM为第M棵树的权值,输入训练集训练得到一个确定的LightGBM模型,记为LGB,输入验证集的补丁特征向量x至LightGBM模型,LightGBM模型输出样本标签为1的概率:其中FM(x)为LightGBM模型经M次迭代后的最终模型,M为迭代收敛次数。
优选地,所述S50中所述从概率到标签的映射公式为:
其中I为LR、RF或LGB。
优选地,所述准确率的计算公式为:
优选地,所述S60中融合权重和预测评分的计算公式分别为:
分别计算逻辑回归模型、随机森林模型、LightGBM模型的融合权值wI:
预测评分计算公式:
实操实例:
1、采取网络爬虫的方式自动获取多个项目在Gerrit上的审查记录和文件或数据,爬取得到的数据存在异构性,有多种类型,至少包括以下三种类型:
1)补丁的基本信息(补***特征的源头):提交者、审查者这类的离散型数据;对采用爬虫的方法爬取补丁的提交信息,包括补丁的审查者姓名、补丁的提交者姓名、补丁的作者姓名、补丁所属项目的名称、补丁所属项目分支的名称、补丁提交的时间、参与补丁审查的人员数、发生修改的代码文件数等。
2)爬取每个补丁提交时的简述,是文本数据。
3)采用爬虫的方式爬取补丁,补丁中发生修改的代码文件,其中每个补丁的代码仅包含发生更改的若干个代码文本文件。
2、数据清洗:对对爬虫获取的数据做清洗,例如统一名称的大小写形式、将字符串类型的相关列表转换成列表类型等。
3、对补丁网页的基本信息中人类可识别的字段转换为机器可识别的特征,例如对类别字段做独热编码,独热编码是机器学习中常用的处理类别型特征的方法,独热编码主要用于对类别的特征进行归一化处理,比如项目名,项目分支名等。编码原理简单来说就是根据特征所包含的类别个数重新构造特征。举个例子,假设项目的分支一共有master,dev,release共3个,这在机器学习算法中不太好处理,所以一般将特征的离散值用数字表示。例如将master编码为0,dev编码为1,release编码为2。但是,即使转化为数字,上述数据也不能直接用在我们的分类模型中。因为,分类器默认的输入数据是连续的,并且是有序的。针对这个问题,一种可能的解决方案是采用独热编码(One-Hot Encoding),独热,就是编码中只有一个位是有效的,所以又称为“一位有效编码”。以下表仅作为示例说明,表示一个项目分支字段对应的独热编码方式,项目名”、“项目分支名”为补丁的两个类别字段:
表一
将一个提交补丁的各个类别字段的独热编码组合成一组特征,包括补丁的审查者姓名、补丁的提交者姓名、补丁的作者姓名、补丁所属项目的名称、补丁所属项目分支的名称,最终形成一个多维稀疏的特征向量。
表二
3)对补丁提交的时间、参与补丁审查的人员数、发生修改的代码文件数这3类数值型字段只需保留原始的数值形式直接作为特征。
4、提取各个提交的代码文本中各种修改类型的频次:这个步骤的主要作用是提取不同补丁迭代更改的过程信息,作为相关补丁推荐用到的特征,它反映的是不同补丁在修改过程上的相关性,提取各个提交的代码文本中各种修改类型的频次:
1)取出一个补丁中的初始版本代码文件和最终版本代码文件;
2)利用Changedistiller工具对比两份文件的差异,统计最终版本代码相对于初始版本代码的各个修改类型的频次,修改类型包括:增加声明、更改声明、删除申明、增加类、修改类、删除类、增加方法、修改方法、删除方法、重命名方法、修改返回类型、修改参数类型、重命名参数、增加参数、删除参数、增加属性、重命名属性、改变条件表达式等;
3)将同一个补丁的修改过程中的各个修改类型的频次组合成向量,作为一组特征。
5、提取各个补丁提交时的简述的嵌入特征
1)将补丁简述从自然语言转换成机器可识别的特征向量,向量嵌入方法是深度学习一种数值映射方法的通用称呼。在处理文本数据的时候,这种方法就是将每个词语对应的高维稀疏的独热编码,通过神经网络的负梯度学习得到对应的低维稠密向量,在此我们统称为嵌入特征。例如,给出一个文档,文档就是一个单词序列比如“A B A C B F G”,对于这样的“A B A C B F G”的一个序列,我们最后能得到:A对应的向量为[0.1 0.6 -0.5],B对应的向量为[-0.2 0.9 0.7],同样的也可以得到一句话对应的一个向量。补丁简述直观的反映其对应的补丁所解决的问题,在解决的问题上反映相关性。但是为了让机器理解此类文本信息,需要对其进行嵌入。提取各个补丁提交时的简述的嵌入特征,实施步骤包括:
1)对每个简述文本做去停用词处理,停用词包括“what”,“why”,“/”,“.”等疑问词和和标点;
2)采用word2vec方法得到简述中词的词向量;
3)按词在简述中位置,用词的word2vec向量替换到相应位置,对于每一个简述,得到一个M*N的矩阵,其中M为简述的长度,N为word2vec嵌入时的输出的词向量维度。
4)将简述对应的矩阵的每一列做平均,得到一个1*N的向量,即本条简述对应的嵌入特征向量。
6、拼接特征、打标签,训练逻辑回归、随机森林、LightGBM模型
1)拼接特征是对以上构建的全部类型的特征向量做一个前后连接,得到一个新的向量;
2)由于从网站上爬取下来的补丁-补丁之间是没有现成的标签的,故需要打标签,又由于部分网页对应的补丁,目前是存在人工添加的其它相关补丁列表的,那么这部分人工标记的相关补丁对就可以视为正样本,不在这些相关列表里的补丁对就可以视为负样本。
具体地,给拼接特征和打上标签的实施步骤包括:
将Gerrit***上每个补丁对应的“相关补丁”列表爬取到本地,这些列表是***审查人员人工构建的,见示例图1,补丁i对应的列表记为li,li包括n个相关的项,长度记为ni。
首先想要得到正样本,就要找到实际存在相关关系的两个补丁,现假设一个补丁现在存在一个人工构建的“相关补丁”的推荐列表,则显然当前这个补丁和此列表中的补丁都存在着相关关系。将预测补丁和列表中存在的补丁组成“补丁i-补丁j”的补丁对,其中补丁i为预测补丁,补丁j为列表中的补丁,这样的补丁对的标签记为1。
其次想要得到负样本,就要找到实际不存在相关关系的两个补丁。现假设一个补丁现在存在一个人工构建的“相关补丁”的推荐列表,那么除了此列表外的其它补丁,和预测补丁都不存在相关关系。但是这样的“不相关”补丁对的数量相对于“相关”补丁对,数量上会大很多。
为了负样本和正样本的数量达到均衡,从***中随机取ni个补丁,其中这ni个补丁均不在li中。预测补丁i同样地和这ni个补丁组成“补丁i-补丁j”的补丁对,这样的补丁对的标签记为0。将上述样本对合并,同时将补丁i和补丁j各自的特征连接起来。例如,即补丁i的特征为特征维度为D,补丁j的特征为特征维度为D,则合并后模型的输入特征为
最后正负样本比例为1:1,各个补丁对的特征维度为2*D。接着以0.7:0.3的比例划分训练集、验证集。利用训练集训练逻辑回归、随机森林、LightGBM三种模型。
3)逻辑回归、随机森林、LightGBM三种模型均采用分类算法,但是三者对输入的特征的学习方式和学习能力不同,这三种模型每一种都可以完成独立的二分类任务。本发明训练的模型均为二分类模型:以预测两个补丁是否相关为目标,即以一个“补丁-补丁”对所对应标签为0、1为目标,最终模型的预测输出包括样本为1的概率,以及样本对应的预测标签0或1。具体方法是:
首先逻辑回归能够较好地表达输入与输出之间隐含的线性关系,自动减少特征多重共线性的负面影响。利用训练集样本的特征作为输入,记输入特征为:x=[x1,x2,...,xn]T,现有参数向量:w=[w1,w2,...,wn]T,记线性加和为两向量的内积:wT·x=w1x1+w2x2+...+wnxn,其预测公式如下:其中pLR是逻辑回归的输出,即样本标签为1的概率,x是模型的输入特征向量,w为逻辑回归的各个特征的线性加和参数,b为线性加和的偏置值,σ(wT·x+b)为sigmoid映射函数,经过负梯度下降方法优化w和b,得到一个确定的逻辑回归模型,记为LR。
在得到概率之后,设定的阈值η作为确定0、1标签的依据,比如η=0.5。从概率到标签的映射公式为:
利用划分出来的验证集样本的特征作为输入,就可以得到验证集中的样本的预测标签,进一步可以得到LR单独预测的准确率:
而随机森林是常用的一种基于Bagging的集成树模型,能够较好地表达表达输入与输出之间隐含的非线性关系,同时拥有较高稳定性。随机森林是K棵CART(分类树和回归树)的集合。CART为每个叶子节点分配一个得分,最终得分是所有CART的预测得分均值;另外,在随机森林中,每一棵树的构建都是独立进行的。同样的,以训练集训练得到一个确定的随机森林模型,记为RF。在验证和实际预测时,记输入特征向量为x,经模型可以输出样本标签为1的概率:
其中Tk(x)是第k棵CART树,这里每一棵树的学习目标是x对应的标签,输出分类概率,Tr表示包含所有CART树的函数空间。那么经过从概率到标签的映射公式:
利用划分出来的验证集样本的特征作为输入,就可以得到验证集中的样本的预测标签,进一步可以得到RF模型单独预测的准确率
而LightGBM是基于boosting的集成树模型,能够较好地表达表达输入与输出之间隐含的非线性关系,同时拥有较高的拟合能力。与随机森林每一棵树独立构建不同,LightGBM的训练是一个迭代地建立决策树的过程。例如,经M次迭代得到的LightGBM最终模型可以记为
F”M(x)=F”M-1(x)+αMTM(x)
其中TM(x)为迭代过程中建立的第M棵树,αM为第M棵树的权值。同样的,以训练集训练得到一个确定的LightGBM模型,记为LGB。在验证和实际预测时,记输入特征向量为x,经模型可以输出样本标签为1的概率:
其中FM(x)为LightGBM经M次迭代后的最终模型,M为迭代收敛次数。那么经过从概率到标签的映射公式:
利用划分出来的验证集样本的特征作为输入,就可以得到验证集中的样本的预测标签,进一步可以得到LGB模型单独预测的准确率
7、利用S6三个模型在验证集中的准确率计算融合权值,并在与测试时对概率做加权求和,记求和结果为score,并按score对样本排序,取前k个作为最后的推荐结果。首先,对于同样的特征,不同的模型可以从不同的角度学习到特征包含的信息。另外,准确率能够反映单个模型对特征的学习能力的强弱,根据准确率计算得到的融合权值可以侧面反映在几个模型里各模型预测结果的可信程度。所以融合一方面保证了最终模型学习的全面性,而加权保证了最终模型可以区分对不同角度信息的依赖程度。这种多模型的加权融合有利于提高最终推荐的准确性和稳定性。
1)计算各个模型的权值,权重计算公式:
2)构造推荐候选集及预测评分score。由于***中存在着大量的补丁,在实际推荐时若两两构成补丁对并全部参与预测,则需要耗费大量的计算机资源,所以需要经过一定规则构造一个较小的候选集参与预测。经分析,现有Gerrit的“相关补丁”的***存储id存在以下关系:80%的“补丁对”中两个补丁id的差值小于300。又考虑到本发明的推荐方法主要用于以下场景:当***上新提交了一个补丁,***能够从过去存储的所有补丁中找到和当前相关的补丁作为推荐列表,所以在给一个补丁做“相关”推荐时,考虑在这个补丁之前提交的其它补丁是否与之相关。所以本发明以各个补丁在***中的id为依据,从预测补丁id出发,取出预测补丁之前提交的N个其它补丁,组成N个补丁对构成的推荐候选集,并依照S3、S4、S5、S6的方法构建和拼接特征,其中N>0,本发明预设N为300。
利用上述的训练好的三个模型对这N个补丁对进行预测,1≤i≤300:
pi·I随着I分别表示逻辑回归模型、随机森林模型、LightGBM模型中预测为1的概率,并计算最后的融合得分为:
其中scorei表示第i个补丁对融合得分,wI,I=LR,RF或LGB随着I分别表示逻辑回归、随机森林、LightGBM的融合权重,pi·I随着I分别表示逻辑回归模型、随机森林模型、LightGBM模型中预测为1的概率。最后对于score值排名前k的补丁对,打上预测标签1,也就是将这k个补丁对中的补丁作为预测补丁的最后“相关补丁”的推荐,本发明预设k为10。
与现有技术相比,本发明技术方案的有益效果是:实现了相关补丁对应页面的自动推荐,节省了大量人工寻找相关补丁页面的成本,同时有效提高审查人员高效率工作;同时本发明采用了多元异构数据作为机器学习模型训练的输入,从不同的维度刻画了代码审查中多个提交之间的异同,充分利用了不同维度的信息;另外,采用多模型融合的方法产生最后的推荐结果,提高了推荐可靠性和稳定性。
相同或相似的标号对应相同或相似的部件;
附图中描述位置关系的用于仅用于示例性说明,不能理解为对本专利的限制;
显然,本发明的上述实施例仅仅是为清楚地说明本发明所作的举例,而并非是对本发明的实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其它不同形式的变化或变动。这里无需也无法对所有的实施方式予以穷举。凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明权利要求的保护范围之内。
Claims (8)
1.一种基于异构数据的相关补丁推荐方法,其特征在于,包括:
S10爬取代码审查网站代码审查记录或文件的多元异构数据,其中多元异构数据包括补丁基本信息、补丁代码、补丁简述、与预测补丁具有相关性的补丁列表;
S20利用补丁基本信息构建元特征统计补丁代码中各种补丁类型的频次,并将同一个补丁修改过程中各个修改类型的频次组合成补丁的修改特征向量;提取补丁的相应简述,并将之自然语言转换成机器可识别的简述嵌入特征;将补***特征、修改特征向量、简述的嵌入特征拼接为补丁特征向量;
S30补丁代码中预测补丁i与补丁列表中补丁j组成补丁i-补丁j对,视为正样本,预测补丁i与补丁列表外的补丁j组成补丁i-补丁j对,视为负样本,i代表当前项,j为变量,代表成对补丁数,为正、负样本标记二分类标签;从多元异构数据中采集正、负样本构成样本集,将样本集划分为训练集、验证集;
S40用训练集训练逻辑回归模型、随机森林模型、LightGBM模型;
S50设置预测阈值η及从概率到标签的映射关系,将验证集输入逻辑回归模型得到概率PLR和对应预测标签,输入随机森林模型得到概率PRF和对应预测标签,输入LightGBM模型概率PLGB和对应预测标签,使用相应的预测标签计算相应模型预测的准确率,分别得到逻辑回归模型的准确率aLR、随机森林模型的准确率aRF、LightGBM模型的准确率aLGB;
S60分别计算逻辑回归模型、随机森林模型、LightGBM模型的融合权值wI,通过融合权值wI与概率PLR、概率PRF、概率PLGB的加权求和构建预测评分score,获取最优预测评分score;
所述逻辑回归模型、随机森林模型、LightGBM模型均做二分类任务,以预测两个补丁是否相关为目标,即以一个补丁i-补丁j对所对应标签为0或1为目标,最终模型的预测输出样本标记为1的概率,以及样本对应的预测标签0或1;
所述S40具体为:
利用训练集训练逻辑回归模型,就是将补丁对特征x=[x1,x2,...,xn]T输入至逻辑回归模型,利用逻辑回归模型中的参数向量:w=[w1,w2,...,wn]T,将输入特征和参数向量线性加和为两向量的内积:wT·x=w1x1+w2x2+...+wnxn,预测目标公式:其中pLR是逻辑回归的输出,即样本标签为1的概率,x是模型的输入特征向量,w为逻辑回归的各个特征的线性加和参数,b为线性加和的偏置值,σ(wT·x+b)为sigmoid映射函数,经过负梯度下降方法优化w和b,得到一个确定的逻辑回归模型,记为LR;
利用训练集训练随机森林模型;随机森林是K棵CART决策树的集合,CART分类树为每个叶子节点分配一个得分,最终得分是所有CART的预测得分均值,且每棵CART分类树都是独立的,以训练集训练一个确定的随机森林模型,记为RF,记补丁对的特征向量为x,则经模型输出样本标签为1的概率的预测目标公式:其中Tk(x)是第K棵CART树,每棵树的学习目标是x对应的标签,输出分类概率,Tr表示包含所有CART树的函数空间;
2.如权利要求1所述的基于异构数据的相关补丁推荐方法,其特征在于,所述S10之后,所述S20之前,还包括:
S70按机器可识别的要求对多元异构数据进行文本或列表的清洗处理,清洗处理至少统一名称的大小写形式、将字符串类型的相关列表转换成可识别的列表类型。
3.如权利要求1所述的基于异构数据的相关补丁推荐方法,其特征在于,所述S30中提取补丁的相应简述,并将之自然语言转换成机器可识别的简述嵌入特征的方法包括:
S301对每个简述文本去停用词处理,停用词至少包括疑问词和各种标点;
S302采用word2vec方法得到简述中词的word2vec向量;
S303将词的word2vec向量嵌入词在简述中的相应位置,并替换相应位置的词,由此获得M*N的简述矩阵,其中M为简述的长度,N为词的word2vec向量维度;
S304对简述矩阵的每一列做平均,得到1*N的向量视为简述对应的嵌入特征。
4.如权利要求1所述的基于异构数据的相关补丁推荐方法,其特征在于,所述补丁的基本信息包括提交者和/或审查者信息、所爬取补丁的审查者姓名、补丁的提交者姓名、补丁的作者姓名、补丁所属项目的名称、补丁所属项目分支的名称、补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数。
5.如权利要求4所述的基于异构数据的相关补丁推荐方法,其特征在于,所述S20中利用补丁基本信息构建元特征的方法具体为:
直接提取补丁的基本信息中补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数的数值特征视为补***特征;
除补丁的基本信息中补丁提交时间、参与补丁审查的人员数、发生修改的代码文件数外的其余补丁基本信息,将它们视为类别字段,并进行独热编码;将同一个补丁的各个类别字段的独热编码组合成一组多维稀疏的独热编码特征,将独热编码特征视为补***特征。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911067915.3A CN111045716B (zh) | 2019-11-04 | 2019-11-04 | 一种基于异构数据的相关补丁推荐方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911067915.3A CN111045716B (zh) | 2019-11-04 | 2019-11-04 | 一种基于异构数据的相关补丁推荐方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111045716A CN111045716A (zh) | 2020-04-21 |
CN111045716B true CN111045716B (zh) | 2022-02-22 |
Family
ID=70232211
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911067915.3A Active CN111045716B (zh) | 2019-11-04 | 2019-11-04 | 一种基于异构数据的相关补丁推荐方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111045716B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113469730A (zh) * | 2021-06-08 | 2021-10-01 | 北京化工大学 | 一种非合同场景下的基于RF-LightGBM融合模型的客户复购预测方法及装置 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106408184A (zh) * | 2016-09-12 | 2017-02-15 | 中山大学 | 一种基于多源异构数据的用户信用评估模型 |
CN108090607A (zh) * | 2017-12-13 | 2018-05-29 | 中山大学 | 一种基于多模型堆栈融合的社交媒体用户人口属性预测方法 |
CN109472462A (zh) * | 2018-10-18 | 2019-03-15 | 中山大学 | 一种基于多模型堆栈融合的项目风险评级方法及装置 |
CN109522917A (zh) * | 2018-09-10 | 2019-03-26 | 中山大学 | 一种基于多模型堆叠融合预测的方法 |
CN109887540A (zh) * | 2019-01-15 | 2019-06-14 | 中南大学 | 一种基于异构网络嵌入的药物靶标相互作用预测方法 |
CN109960759A (zh) * | 2019-03-22 | 2019-07-02 | 中山大学 | 基于深度神经网络的推荐***点击率预测方法 |
CN110263257A (zh) * | 2019-06-24 | 2019-09-20 | 北京交通大学 | 基于深度学习的多源异构数据混合推荐模型 |
CN110348580A (zh) * | 2019-06-18 | 2019-10-18 | 第四范式(北京)技术有限公司 | 构建gbdt模型的方法、装置及预测方法、装置 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106548210B (zh) * | 2016-10-31 | 2021-02-05 | 腾讯科技(深圳)有限公司 | 基于机器学习模型训练的信贷用户分类方法及装置 |
-
2019
- 2019-11-04 CN CN201911067915.3A patent/CN111045716B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106408184A (zh) * | 2016-09-12 | 2017-02-15 | 中山大学 | 一种基于多源异构数据的用户信用评估模型 |
CN108090607A (zh) * | 2017-12-13 | 2018-05-29 | 中山大学 | 一种基于多模型堆栈融合的社交媒体用户人口属性预测方法 |
CN109522917A (zh) * | 2018-09-10 | 2019-03-26 | 中山大学 | 一种基于多模型堆叠融合预测的方法 |
CN109472462A (zh) * | 2018-10-18 | 2019-03-15 | 中山大学 | 一种基于多模型堆栈融合的项目风险评级方法及装置 |
CN109887540A (zh) * | 2019-01-15 | 2019-06-14 | 中南大学 | 一种基于异构网络嵌入的药物靶标相互作用预测方法 |
CN109960759A (zh) * | 2019-03-22 | 2019-07-02 | 中山大学 | 基于深度神经网络的推荐***点击率预测方法 |
CN110348580A (zh) * | 2019-06-18 | 2019-10-18 | 第四范式(北京)技术有限公司 | 构建gbdt模型的方法、装置及预测方法、装置 |
CN110263257A (zh) * | 2019-06-24 | 2019-09-20 | 北京交通大学 | 基于深度学习的多源异构数据混合推荐模型 |
Non-Patent Citations (3)
Title |
---|
Code Review Knowledge Perception: Fusing Multi-Features for Salient-Class Location;Yuan Huang et al.;《IEEE TRANSACTIONS ON SOFTWARE ENGINEERING》;20180829;第1-17页 * |
Fusing Kalman Filter With TLD Algorithm For Target Tracking;Chengjian Sun et al.;《Proceedings of the 34th Chinese Control Conference》;20150730;第3736-3741页 * |
基于集成学习的出租车预计到达时间预测;李辉华;《中国优秀博硕士学位论文全文数据库(硕士)信息科技辑》;20190715;第I140-61页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111045716A (zh) | 2020-04-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Liu et al. | Learning to spot and refactor inconsistent method names | |
CN109446338B (zh) | 基于神经网络的药物疾病关系分类方法 | |
CN110196906B (zh) | 面向金融行业的基于深度学习文本相似性检测方法 | |
Alam et al. | Domain analysis of information extraction techniques | |
CN111160035B (zh) | 文本语料的处理方法和装置 | |
CN113806563B (zh) | 面向多源异构建筑人文史料的建筑师知识图谱构建方法 | |
CN108984775B (zh) | 一种基于商品评论的舆情监控方法及*** | |
WO2005010727A2 (en) | Extracting data from semi-structured text documents | |
CN113254507B (zh) | 一种数据资产目录智能构建盘点方法 | |
CN115019906A (zh) | 多任务序列标注的药物实体和相互作用联合抽取方法 | |
Shafiq et al. | NLP4IP: Natural language processing-based recommendation approach for issues prioritization | |
CN111045716B (zh) | 一种基于异构数据的相关补丁推荐方法 | |
CN116342167B (zh) | 基于序列标注命名实体识别的智能成本度量方法和装置 | |
CN117076765A (zh) | 基于异构图神经网络的智能招聘***人岗匹配方法及*** | |
CN116484025A (zh) | 漏洞知识图谱构建方法、评估方法、设备及存储介质 | |
EP3977310B1 (en) | Method for consolidating dynamic knowledge organization systems | |
CN114611489A (zh) | 文本逻辑条件抽取ai模型构建方法、抽取方法及*** | |
Dziczkowski et al. | An autonomous system designed for automatic detection and rating of film reviews | |
CN113326348A (zh) | 一种博客质量评估方法及工具 | |
Short et al. | Tag recommendations in stackoverflow | |
Shahzad et al. | On comparing manual and automatic generated textual descriptions of business process models | |
US20230004583A1 (en) | Method of graph modeling electronic documents with author verification | |
CN117852553B (zh) | 基于聊天记录提取元器件交易场景信息的语言处理*** | |
CN113821618B (zh) | 一种电子病历是否类细项提取方法与*** | |
Dai et al. | Grantextractor: A winning system for extracting grant support information from biomedical literature |
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 |