掌桥专利:专业的专利平台
掌桥专利
首页

研发风险预测方法、装置、计算机设备、存储介质及产品

文献发布时间:2024-04-18 19:58:26


研发风险预测方法、装置、计算机设备、存储介质及产品

技术领域

本申请涉及人工智能技术领域,及涉及金融科技领域或其他相关领域,尤其涉及一种研发风险预测方法、装置、计算机设备、存储介质及产品。

背景技术

金融领域的业务系统在进行开发和测试时,通常会为了满足持续不断的业务需求,一个研发团队每个月度都会对程序作出一部分的更新和修改。

但这些改动可能会导致功能的错误,进而出现研发问题。因此研发问题的管理,对系统的安全稳定运行十分重要。如果能提早预测修改程序后可能出现的问题数量,那么就可以给研发团队调度足够的资源,以便于研发团队能够及时使用该资源解决研发问题,确保研发团队的研发的业务系统的可靠性。

然而,发明人发现,当前通常是采用管理者经验向研发团队调度资源,导致资源调度偏差较大,造成研发团队得到的资源过剩或不足。

发明内容

本申请提供一种研发风险预测方法、装置、计算机设备、存储介质及产品,用以解决当前的采用管理者经验向研发团队调度资源,导致资源调度偏差较大,造成研发团队得到的资源过剩或不足的问题。

第一方面,本申请提供一种研发风险预测方法,包括:

接收第一研发周期的研发作业信息;其中,所述研发作业信息包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、与所述第一研发周期对应的研发问题总量。

调用预置的风险模型根据所述风险信息,生成第二研发周期的预测信息;其中,所述预测信息包括第二研发周期的研发问题总量;所述第二研发周期是所述第一研发周期的下一时间周期。

上述方案中,调用预置的风险模型根据所述风险信息,生成第二研发周期的预测信息,包括:

将所述研发作业信息录入所述风险模型的输入层;

调用所述输入层对所述研发作业信息进行运算,得到输入层数据;

将所述输入层数据输出至所述风险模型的隐藏层,调用所述隐藏层对所述输入层数据进行运算,得到隐藏层数据;

将所述隐藏层数据输出至所述风险模型的输出层,调用所述输出层对所述隐藏层数据进行运算,得到预测信息。

上述方案中,接收第一研发周期的研发作业信息之前,所述方法还包括:

获取至少一个历史样本;其中,所述历史样本包括输入数据和输出标记;所述输入数据包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、第三研发周期以及与所述第三研发周期对应的研发问题总量;所述输出标记包括:第四研发周期的研发问题总量;所述第四研发周期是所述输入数据中所述第三研发周期的下一时间周期;

将至少一个所述历史样本划分成训练集、测试集和验证集;其中,所述训练集中具有至少一个历史样本;所述测试集中具有至少一个历史样本;所述验证集中具有至少一个历史样本;

通过所述训练集对预置的初始模型进行训练,得到第一模型;其中,所述初始模型是前馈神经网络;

通过所述测试集对所述第一模型进行测试;若确定所述第一模型通过测试,则确定所述第一模型为第二模型;

通过所述验证集对所述第二模型进行验证;若确定所述第二模型通过验证,则确定所述第二模型为风险模型。

上述方案中,通过所述训练集对预置的初始模型进行训练,得到第一模型,包括:

第i次调用所述初始模型根据所述训练集中的至少一个历史样本的输入数据,生成至少一个第i预测训练信息;其中,所述第一历史样本是训练集中的一个历史样本;i为自然数;

根据至少一个所述第i预测训练信息和所述训练集中至少一个所述历史样本的输出标记,确定第i权值变化值;

根据所述第i权值变化值对所述初始模型进行第i次迭代,得到第一模型。

上述方案中,根据至少一个所述第i预测训练信息和所述训练集中至少一个所述历史样本的输出标记,确定第i权值变化值,包括:

根据至少一个所述第i预测训练信息,与每一所述第i预测训练信息对应的历史样本的输出标记,得到第i训练差异信息;其中,所述第i训练差异信息表征第i预测训练信息和输出标记之间的差异程度;

根据所述第i训练差异信息确定第一变化值;其中,所述第一变化值是根据第i训练差异以及初始模型的学习率,确定的第i次迭代中初始模型的权值的变化量;所述学习率是用于控制初始模型在每次迭代中更新权值的步长大小;

根据第i-1权值变化值和预置的遗忘因子生成第二变化值;其中,所述遗忘因子是预设的参数值;所述第二变化值是根据遗忘因子和第i-1权值变化值,确定的第i次迭代中初始模型的权值的变化量;

根据所述第一变化值和所述第二变化值,得到第i权值变化值。

上述方案中,根据至少一个所述第i预测训练信息和所述训练集中至少一个所述历史样本的输出标记,确定第i权值变化值,包括:

根据至少一个所述第i预测训练信息,与每一所述第i预测训练信息对应的历史样本的输出标记,得到第i训练差异信息;其中,所述第i训练差异信息表征第i预测训练信息和输出标记之间的差异程度;

根据所述第i训练差异信息确定第三变化值;其中,所述第三变化值是根据第i训练差异以及初始模型的学习率,确定的第i次迭代中初始模型的权值的变化量;所述学习率是用于控制初始模型在每次迭代中更新权值的步长大小;

根据第i-1权值变化值和预置的迭代因子生成第四变化值;其中,其中,所述迭代因子是根据迭代次数i生成的参数值;所述第四变化值是根据迭代因子和第i-1权值变化值,确定的第i次迭代中初始模型的权值的变化量;

根据所述第三变化值和所述第四变化值,得到第i权值变化值。

上述方案中,通过所述测试集对所述第一模型进行测试;若确定所述第一模型通过测试,则确定所述第一模型为第二模型,包括:

第j次调用所述第一模型根据所述测试集中的至少一个历史样本的输入数据,生成至少一个第i预测测试信息;其中,j为自然数;

根据至少一个所述第j预测测试信息和所述训练集中至少一个所述历史样本的输出标记,得到第j测试差异信息;

若确定所述第j测试差异信息小于预置的测试差异阈值,则确定所述第一模型为第二模型;

若确定所述第j测试差异信息不小于所述测试差异阈值,则确定所述第一模型为重训模型,通过所述训练集对所述重训模型进行训练,得到第一模型。

上述方案中,通过所述验证集对所述第二模型进行验证;若确定所述第二模型通过验证,则确定所述第二模型为风险模型,包括:

第k次调用所述第二模型根据所述验证集中的至少一个历史样本的输入数据,生成至少一个第i预测验证信息;其中,k为自然数;

根据至少一个所述第k预测验证信息和所述训练集中至少一个所述历史样本的输出标记,得到第k验证差异信息;

若确定所述第k验证差异信息小于预置的验证差异阈值,则确定所述第二模型为风险模型;

若确定所述第k验证差异信息不小于所述验证差异阈值,则确定所述第二模型为重训模型,通过所述训练集对所述重训模型进行训练,得到第一模型。

第二方面,本申请提供一种研发风险预测装置,包括:

输入模块,用于接收研发作业信息;其中,所述研发作业信息包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、第一研发周期以及与所述第一研发周期对应的研发问题总量;

处理模块,用于调用预置的风险模型根据所述风险信息生成预测信息;其中,所述预测信息包括第二研发周期的研发问题总量;所述第二研发周期是所述第一研发周期的下一时间周期。

第三方面,本申请提供一种计算机设备,包括:处理器以及与所述处理器通信连接的存储器;

所述存储器存储计算机执行指令;

所述处理器执行所述存储器存储的计算机执行指令,以实现如权利要求上述的研发风险预测方法。

第四方面,本申请提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机执行指令,所述计算机执行指令被处理器执行时用于实现上述的研发风险预测方法。

第五方面,本申请提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现上述的研发风险预测方法。

本申请提供的一种研发风险预测方法、装置、计算机设备、存储介质及产品,通过接收第一研发周期的研发作业信息,并调用预置的风险模型根据所述风险信息,生成第二研发周期的预测信息;其中,所述预测信息包括第二研发周期的研发问题总量;所述第二研发周期是所述第一研发周期的下一时间周期,实现根据第一研发周期的研发作业信息,预测研发团队在下一时间周期,可能出现的研发问题的数量,使管理者能够根据该数量准确调度足够的资源,以便于研发团队能够及时使用该资源解决研发问题,不仅确保研发团队的研发的业务系统的可靠性,还避免了资源调度偏差较大的问题,造成研发团队得到的资源过剩或不足的情况发生。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本申请的实施例,并与说明书一起用于解释本申请的原理。

图1为本申请实施例提供的一种应用场景示意图;

图2为本申请实施例提供的一种研发风险预测方法的实施例1的流程图;

图3为本申请实施例提供的一种研发风险预测方法的实施例2的流程图;

图4为本申请实施例提供的一种研发风险预测装置的模块图;

图5为本发明计算机设备中计算机设备的硬件结构示意图。

通过上述附图,已示出本申请明确的实施例,后文中将有更详细的描述。这些附图和文字描述并不是为了通过任何方式限制本申请构思的范围,而是通过参考特定实施例为本领域技术人员说明本申请的概念。

具体实施方式

这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。

请参阅图1,本申请具体的应用场景为:运行有研发风险预测方法的服务器11,与至少一个开发系统12连接,开发系统12保存有至少一个研发团队的研发作业信息。

服务器11接收开发系统12发送的第一研发周期的研发作业信息;其中,研发作业信息包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、与第一研发周期对应的研发问题总量。

服务器11调用预置的风险模型根据风险信息,生成第二研发周期的预测信息;其中,预测信息包括第二研发周期的研发问题总量;第二研发周期是第一研发周期的下一时间周期。

因此,服务器11不仅确保研发团队的研发的业务系统的可靠性,还避免了资源调度偏差较大的问题,造成研发团队得到的资源过剩或不足的情况发生。

需要说明的是,本公开研发风险预测方法、装置、计算机设备、存储介质及产品可用于金融领域。也可用于除金融领域以外的任意领域。本公开研发风险预测方法、装置、计算机设备、存储介质及产品应用领域不作限定。

下面以具体地实施例对本申请的技术方案以及本申请的技术方案如何解决现有技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。

实施例1:

请参阅图2,本申请提供一种研发风险预测方法,包括:

S201:接收第一研发周期的研发作业信息;其中,研发作业信息包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、与第一研发周期对应的研发问题总量。

本步骤中,研发作业信息是用于对业务系统进行开发和测试的属性信息。

研发团队编号用于是研发团队的唯一性标识。

第一研发周期研发团队进行研发作业时,所在的时间周期,例如:2020年度,2020年2月份,2021年第31周等;研发作业包括产品开发以及产品测试。如果以月为粒度作为时间周期,得到的第一研发周期将为:2020年2月份、2020年3月份、2020年4月份等。

研发问题总量是研发团队在第一研发周期的研发作业中,出现的研发问题的总数,研发问题包括产品开发出现的开发问题,以及产品测试出现的测试问题。

代码修改行数是指研发团队在第一研发周期内进行研发作业时,修改的代码的行数。

业务使用次数、研发团队在第一研发周期内进行研发作业时,使用业务数据的次数,业务数据包括:用户数据、行为数据、产品数据。

开发总时长是指研发团队在第一研发周期内进行产品开发的时间总和。

测试总时长是指研发团队在第一研发周期内进行产品测试的时间总和。

S202:调用预置的风险模型根据风险信息,生成第二研发周期的预测信息;其中,预测信息包括第二研发周期的研发问题总量;第二研发周期是第一研发周期的下一时间周期。

本步骤中,采用神经网络作为风险模型,实现根据第一研发周期的研发作业信息,预测研发团队在下一时间周期,可能出现的研发问题的数量,使管理者能够根据该数量准确调度足够的资源,以便于研发团队能够及时使用该资源解决研发问题,不仅确保研发团队的研发的业务系统的可靠性,还避免了资源调度偏差较大的问题,造成研发团队得到的资源过剩或不足的情况发生。

在一个优选的实施例中,调用预置的风险模型根据风险信息,生成第二研发周期的预测信息,包括:

将研发作业信息录入风险模型的输入层;

调用输入层对研发作业信息进行运算,得到输入层数据;

将输入层数据输出至风险模型的隐藏层,调用隐藏层对输入层数据进行运算,得到隐藏层数据;

将隐藏层数据输出至风险模型的输出层,调用输出层对隐藏层数据进行运算,得到预测信息。

示例性地,采用目前可用BP神经网络、RNN循环神经网络等作为风险模型。优选的,采用BP神经网络作为风险模型,BP神经网络的每个参数,每一步都是独立的,对于研发问题数量预测这一场景来说,研发团队的代码修改行数B,该研发团队在S月度的业务使用次数M,该月度改动的测试总时长U等参数之间并不存在相互依赖的关系,因此BP神经网络更加符合预测问题数量的场景,并且训练时间相对较短。

BP神经网络的网络结构包括:输入层,隐藏层和输出层。在输入层中输入影响研发问题产生的各项指标。在隐藏层中对输入层传来的数据进行处理,并将结果传给输出层。输出层根据隐藏层传来的数据计算BP网络的预测输出。

实施例2:

请参阅图3,本申请提供一种研发风险预测方法,包括:

S301:获取至少一个历史样本;其中,历史样本包括输入数据和输出标记;输入数据包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、第三研发周期以及与第三研发周期对应的研发问题总量;输出标记包括:第四研发周期的研发问题总量;第四研发周期是输入数据中第三研发周期的下一时间周期。

本步骤中,历史样本是研发团队进行研发作业的往年数据,本步骤的应用场景是:一个研发团队每个月度都会对程序做出一些修改,同时会产生一定量的问题。因此可将一个研发团队在过去5年每个月度(共60份)的相关历史数据收集起来并进行分析。提取每一个研发团队各项与问题相关的历史数据,以一个研发团队为维度,把这些因子作为影响问题出现的相关指标,来预测该团队在接下来的月度里会出现多少问题。相关指标包括:研发团队编号F,一组数据样本的时间S(比如:收集到的这组数据是2021年2月的,那么S=202102),该研发团队在S月度(2021年2月)的代码修改行数B,该研发团队在S月度(2021年2月)的业务使用次数M,该月度的代码开发总时长P,该月度的代码测试总时长U,该研发团队在S月度的(2021年2月)出现的研发问题总量C。然后根据以上数据预测这个团队在S+1月度(2021年3月)的研发问题总量c’,为管理者后续的研发管理提供参考数据。

其中,研发团队编号用于是研发团队的唯一性标识。

第一研发周期研发团队进行研发作业时,所在的时间周期。

研发问题总量是研发团队在第一研发周期的研发作业中,出现的研发问题的总数,研发问题包括产品开发出现的开发问题,以及产品测试出现的测试问题。

代码修改行数是指研发团队在第一研发周期内进行研发作业时,修改的代码的行数。

业务使用次数、研发团队在第一研发周期内进行研发作业时,使用业务数据的次数,业务数据包括:用户数据、行为数据、产品数据。

开发总时长是指研发团队在第一研发周期内进行产品开发的时间总和。

测试总时长是指研发团队在第一研发周期内进行产品测试的时间总和。

在一个示例性的实施例中,以月为粒度进行收集历史样本。比如收集A团队2022年1月的:研发团队编号、代码修改行数、业务使用次数、测试总时长、开发总时长、问题数量等数据,把这些数据作为一组。再把A团队2022年2月的代码修改行数,问题数量等数据作为另一组。

S302:将至少一个历史样本划分成训练集、测试集和验证集;其中,训练集中具有至少一个历史样本;测试集中具有至少一个历史样本;验证集中具有至少一个历史样本。

本步骤中,通过预置的划分比例,将至少一个历史样本划分成训练集、测试集和验证集,例如:将至少一个历史样本中的70%的历史样本作为训练集,用于网络训练;将至少一个历史样本中的15%的历史样本作为测试集,用来测试训练得到的结果;将至少一个历史样本中的15%的历史样本验证集,用来验证最终的结果。

S303:通过训练集对预置的初始模型进行训练,得到第一模型;其中,初始模型是前馈神经网络。

本步骤中,在初始模型的输入层中输入训练集中的历史样本的输入数据,再将输入数据在初始模型中依次进行逐层处理,并把处理后的数据依次传入下一层,初始模型的输出层输出第四研发周期的预测信息。

根据第四研发周期的预测信息和训练集的历史样本的输出数据之间的误差,对初始模型进行迭代处理,直至初始模型根据训练集的历史样本出现的误差,小于预置的训练阈值为止,此时,将初始模型设定为第一模型。

示例性地,取A团队在S月度的各项指标数据,输入模型后,得出这个团队下个月(S+1月)的研发问题总量c’(预测值)。再将模型输出的值c’与S+1月实际的问题总量C比对,看是否一致。例如,取一组2021年1月的数据,把该研发团队2021年1月的代码修改行数,测试总时长等信息输入后,模型预测出:该团队在2021年2月的研发问题数量为10个(预测值)。但实际上该团队在2021年2月的研发问题总量为15个。则预测值和实际值相差5个,这5个就是上述的误差。

在一个优选的实施例中,通过训练集对预置的初始模型进行训练,得到第一模型,包括:

第i次调用初始模型根据训练集中的至少一个历史样本的输入数据,生成至少一个第i预测训练信息;其中,第一历史样本是训练集中的一个历史样本;i为自然数;

根据至少一个第i预测训练信息和训练集中至少一个历史样本的输出标记,确定第i权值变化值;

根据第i权值变化值对初始模型进行第i次迭代,得到第一模型。

示例性地,对于本发明所构建的三层网络来说,整个网络的输入为:一组数据的月度S,在S月度的代码修改行数B,该研发团队在S月度的业务使用次数M等各项指标,记为x。输出为:该研发团队下一月度预计会出现的研发问题数量c’(预测值)。

从输入层输入历史样本的输入数据,并将输入层的数据输出到隐藏层,输入层接收到的输入数据为x,输入层的第一函数如下所示:

Z

其中,W1为输入层的第一函数的权值、B1为输入层的第一函数的阈值,Z1为输入层向隐藏层输出的数据。在隐藏层需要使用激活函数进行激活,选取ReLu函数作为激活函数,如下公式所示:

A

其中,Z1为输入层向隐藏层输出的数据,A1为经过ReLu函数对Z1处理所得到的第一数据;

再经过隐藏层的第二函数对第一数据进行处理,得到隐藏层用于向输出层输出的数据,第二函数如下所示:

Z

其中,Z2为隐藏层用于向输出层输出的数据,A1为第一数据,W2是第二函数中的权值,B2是第二函数中的阈值。

输出层采用第三函数对隐藏层输出的数据进行处理,得到预测训练信息,第三函数如下所示:

y=Relu(Z

其中,y为预测训练信息,Z2为隐藏层向输出层输出的数据;第三函数为ReLu函数。

根据至少一个第i预测训练信息,与每一第i预测训练信息对应的历史样本的输出标记,得到第i训练差异信息;其中,第i训练差异信息表征第i预测训练信息和输出标记之间的差异程度;为了确定准确的W、B值,需要用损失函数来定义误差范围。此时bp神经网络的通过输出y与输出数据C的损失函数如下所示:

其中i表示迭代次数,第i次。E为第i训练差异信息,N表示训练集中的历史样本的个数,N为正整数,y

在模型训练时,由于误差E的值是越小越好的,因此可以对权值进行优化训练、调整权值,使E减小。标准bp神经网络里,采用第四函数得到第i权值变化值;第四函数如下所示:

其中,ΔW(i)为第i权值变化值,s为学习速率,E为第i训练差异信息。

为便于理解,可将把第四函数抽象成下列第五函数:

ΔW(i)=s*g(i)

其中,

W(i+1)=W(i)-ΔW(i)

进一步地,根据至少一个第i预测训练信息和训练集中至少一个历史样本的输出标记,确定第i权值变化值,包括:

根据至少一个第i预测训练信息,与每一第i预测训练信息对应的历史样本的输出标记,得到第i训练差异信息;其中,第i训练差异信息表征第i预测训练信息和输出标记之间的差异程度;

根据第i训练差异信息确定第一变化值;其中,第一变化值是根据第i训练差异以及初始模型的学习率,确定的第i次迭代中初始模型的权值的变化量;学习率是用于控制初始模型在每次迭代中更新权值的步长大小;

根据第i-1权值变化值和预置的遗忘因子生成第二变化值;其中,遗忘因子是预设的参数值;第二变化值是根据遗忘因子和第i-1权值变化值,确定的第i次迭代中初始模型的权值的变化量;

根据第一变化值和第二变化值,得到第i权值变化值。

示例性地,基于上述举例,将s*g(i)设定为第一变化值,ΔW(i-1)是第i-1权值变化值,采用第六函数,得到第i权值变化值,第六函数如下公式所示:

ΔW(i)=s*g(i)+mΔW(i-1)

其中,ΔW(i)为第i权值变化值,m为遗忘因子。

公式的第一项为常规bp网络中权值的变化量,第二项为迭代因子,表示上一次变化对当前变化的影响。i为迭代的代数,s为学习速率,通常情况下遗忘因子会被设置为一个0到1之间的常数,遗忘因子m作为系数,会对权值变化值ΔW(i)有直接的影响。使第i权值变化值能够反映当前迭代的误差和前一次迭代的误差,保证迭代的连续性。

进一步地,根据至少一个第i预测训练信息和训练集中至少一个历史样本的输出标记,确定第i权值变化值,包括:

根据至少一个第i预测训练信息,与每一第i预测训练信息对应的历史样本的输出标记,得到第i训练差异信息;其中,第i训练差异信息表征第i预测训练信息和输出标记之间的差异程度;

根据第i训练差异信息确定第三变化值;其中,第三变化值是根据第i训练差异以及初始模型的学习率,确定的第i次迭代中初始模型的权值的变化量;学习率是用于控制初始模型在每次迭代中更新权值的步长大小;

根据第i-1权值变化值和预置的迭代因子生成第四变化值;其中,其中,迭代因子是根据迭代次数i生成的参数值;第四变化值是根据迭代因子和第i-1权值变化值,确定的第i次迭代中初始模型的权值的变化量;

根据第三变化值和第四变化值,得到第i权值变化值。

示例性地,基于上述举例,将s*g(i)设定为第一变化值,ΔW(i-1)是第i-1权值变化值,采用第七函数,得到第i权值变化值,第七函数如下公式所示:

ΔW(i)=s*g(i)+zΔW(i-1)

其中,ΔW(i)为第i权值变化值,z为迭代因子。迭代因子z由第八函数获得,第八函数如下所示:

其中,z为迭代因子,i为迭代次数,z取2位小数,i为BP神经网络训练的迭代次数,即i为正整数。因此可得z为一个大于0且小于0.97数,且z随着迭代次数i的增大而减小。当i较小时,z值较大。这个系数符合常见的遗忘因子的变化范围。使用迭代因子z,当i较小时,z的值较大,迭代因子的值较大,这样可以在迭代初期,使每次的权值有一个较大的变化,避免在训练初期bp神经网络陷入局部极小值。另外,由反比例函数的曲线可知,当迭代次数i较小时,z值变小的速度更快,这样也可以在训练初期加快函数收敛的速度,使权值W更快的逼近期望的值。而到了训练后期,迭代的代数i较大,此时不仅z的值会很小,而且z的变化也会很小,从而使得权值W的变化量也会很小,从而防止了最优解被破坏。这样不仅可以在迭代初期,加快收敛速度、规避掉BP神经网络收敛速度慢的缺点,提高BP神经网络的训练效率,而且能很快的跳出局部最优从而更好的收敛到全局最优。很好的优化BP神经网络容易收敛在局部最优的缺点,提高了网络的稳定性。

S304:通过测试集对第一模型进行测试;若确定第一模型通过测试,则确定第一模型为第二模型。

本步骤中,通过对第一模型进行测试,用于评估第一模型的性能,以确定第一模型能够准确预测训练集以外的历史样本,保证最终得到的风险模型的可靠性。

在一个优选的实施例中,通过测试集对第一模型进行测试;若确定第一模型通过测试,则确定第一模型为第二模型,包括:

第j次调用第一模型根据测试集中的至少一个历史样本的输入数据,生成至少一个第i预测测试信息;其中,j为自然数;

根据至少一个第j预测测试信息和训练集中至少一个历史样本的输出标记,得到第j测试差异信息;

若确定第j测试差异信息小于预置的测试差异阈值,则确定第一模型为第二模型;

若确定第j测试差异信息不小于测试差异阈值,则确定第一模型为重训模型,通过训练集对重训模型进行训练,得到第一模型。

示例性地,对于本发明所构建的三层网络来说,整个网络的输入为:一组数据的月度S,在S月度的代码修改行数B,该研发团队在S月度的业务使用次数M等各项指标,记为x。输出为:该研发团队下一月度预计会出现的研发问题数量c’(预测值)。

从输入层输入历史样本的输入数据,并将输入层的数据输出到隐藏层,输入层接收到的输入数据为x,输入层的第一函数如下所示:

Z

其中,W1为输入层的第一函数的权值、B1为输入层的第一函数的阈值,Z1为输入层向隐藏层输出的数据。

在隐藏层需要使用激活函数进行激活,选取ReLu函数作为激活函数,如下公式所示:

A

其中,Z1为输入层向隐藏层输出的数据,A1为经过ReLu函数对Z1处理所得到的第一数据;

再经过隐藏层的第二函数对第一数据进行处理,得到隐藏层用于向输出层输出的数据,第二函数如下所示:

Z

其中,Z2为隐藏层用于向输出层输出的数据,A1为第一数据,W2是第二函数中的权值,B2是第二函数中的阈值。输出层采用第三函数对隐藏层输出的数据进行处理,得到预测测试信息,第三函数如下所示:

y=Relu(Z

其中,y为预测测试信息,Z2为隐藏层向输出层输出的数据;第三函数为ReLu函数。

根据至少一个第j预测测试信息,与每一第j预测测试信息对应的历史样本的输出标记,得到第j测试差异信息;其中,第j测试差异信息表征第j预测测试信息和输出标记之间的差异程度;为了确定准确的W、B值,需要用损失函数来定义误差范围。此时bp神经网络的通过输出y与输出数据C的损失函数如下所示:

其中j表示迭代次数,第j次。E为第j测试差异信息,N表示测试集中的历史样本的个数,N为正整数,y

如果第j测试差异信息E小于测试差异阈值,则说明第一模型通过测试,并将第一模型设定为第二模型。

如果第j测试差异信息E不小于测试差异阈值,则说明第一模型未通过测试,需要通过训练集对第一模型再次进行训练,得到新的第一模型,并对新的第一模型再次进行测试。

S305:通过验证集对第二模型进行验证;若确定第二模型通过验证,则确定第二模型为风险模型。

本步骤中,通过验证集对第二模型进行验证,以对第二模型进行评估,如果第二模型通过验证,则说明第二模型未出现过拟合的情况,因此,确定第二模型为风险模型,进而确保风险模型的可靠性。

在一个优选的实施例中,通过验证集对第二模型进行验证;若确定第二模型通过验证,则确定第二模型为风险模型,包括:

第k次调用第二模型根据验证集中的至少一个历史样本的输入数据,生成至少一个第i预测验证信息;其中,k为自然数;

根据至少一个第k预测验证信息和训练集中至少一个历史样本的输出标记,得到第k验证差异信息;

若确定第k验证差异信息小于预置的验证差异阈值,则确定第二模型为风险模型;

若确定第k验证差异信息不小于验证差异阈值,则确定第二模型为重训模型,通过训练集对重训模型进行训练,得到第一模型。

示例性地,对于本发明所构建的三层网络来说,整个网络的输入为:一组数据的月度S,在S月度的代码修改行数B,该研发团队在S月度的业务使用次数M等各项指标,记为x。输出为:该研发团队下一月度预计会出现的研发问题数量c’(预测值)。

从输入层输入历史样本的输入数据,并将输入层的数据输出到隐藏层,输入层接收到的输入数据为x,输入层的第一函数如下所示:

Z

其中,W1为输入层的第一函数的权值、B1为输入层的第一函数的阈值,Z1为输入层向隐藏层输出的数据。在隐藏层需要使用激活函数进行激活,选取ReLu函数作为激活函数,如下公式所示:

A

其中,Z1为输入层向隐藏层输出的数据,A1为经过ReLu函数对Z1处理所得到的第一数据;再经过隐藏层的第二函数对第一数据进行处理,得到隐藏层用于向输出层输出的数据,第二函数如下所示:

Z

其中,Z2为隐藏层用于向输出层输出的数据,A1为第一数据,W2是第二函数中的权值,B2是第二函数中的阈值。

输出层采用第三函数对隐藏层输出的数据进行处理,得到预测验证信息,第三函数如下所示:

y=Relu(Z

其中,y为预测验证信息,Z2为隐藏层向输出层输出的数据;第三函数为ReLu函数。

根据至少一个第k预测验证信息,与每一第k预测验证信息对应的历史样本的输出标记,得到第k验证差异信息;其中,第k验证差异信息表征第k预测验证信息和输出标记之间的差异程度;为了确定准确的W、B值,需要用损失函数来定义误差范围。此时bp神经网络的通过输出y与输出数据C的损失函数如下所示:

其中k表示迭代次数,第k次。E为第k验证差异信息,N表示验证集中的历史样本的个数,N为正整数,y

如果第k验证差异信息E小于验证差异阈值,则说明第一模型通过验证,并将第一模型设定为第二模型。

如果第k验证差异信息E不小于验证差异阈值,则说明第二模型未通过验证,需要通过训练集对第二模型再次进行训练,得到新的第一模型,并对新的第一模型依次进行测试和验证。

S306:接收第一研发周期的研发作业信息;其中,研发作业信息包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、与第一研发周期对应的研发问题总量。

本步骤与实施例1中的S201一致,故在此不做赘述。

S307:调用预置的风险模型根据风险信息,生成第二研发周期的预测信息;其中,预测信息包括第二研发周期的研发问题总量;第二研发周期是第一研发周期的下一时间周期。

本步骤与实施例1中的S202一致,故在此不做赘述。

实施例3:

请参阅图4,本申请提供一种研发风险预测装置4,包括:

输入模块46,用于接收研发作业信息;其中,研发作业信息包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、第一研发周期以及与第一研发周期对应的研发问题总量;

处理模块47,用于调用预置的风险模型根据风险信息生成预测信息;其中,预测信息包括第二研发周期的研发问题总量;第二研发周期是第一研发周期的下一时间周期。

可选的,研发风险预测装置4,还包括:

采集模块41,用于获取至少一个历史样本;其中,历史样本包括输入数据和输出标记;输入数据包括:研发团队编号、代码修改行数、业务使用次数、开发总时长、测试总时长、第三研发周期以及与第三研发周期对应的研发问题总量;输出标记包括:第四研发周期的研发问题总量;第四研发周期是输入数据中第三研发周期的下一时间周期。

划分模块42,用于将至少一个历史样本划分成训练集、测试集和验证集;其中,训练集中具有至少一个历史样本;测试集中具有至少一个历史样本;验证集中具有至少一个历史样本。

训练模块43,用于通过训练集对预置的初始模型进行训练,得到第一模型;其中,初始模型是前馈神经网络。

测试模块44,用于通过测试集对第一模型进行测试;若确定第一模型通过测试,则确定第一模型为第二模型。

验证模块45,用于通过验证集对第二模型进行验证;若确定第二模型通过验证,则确定第二模型为风险模型。

实施例4:

为实现上述目的,本申请还提供一种计算机设备5,包括:处理器以及与处理器通信连接的存储器;存储器存储计算机执行指令;

处理器执行存储器存储的计算机执行指令,以实现上述的研发风险预测方法,其中,研发风险预测装置的组成部分可分散于不同的计算机设备中,计算机设备5可以是执行程序的智能手机、平板电脑、笔记本电脑、台式计算机、机架式服务器、刀片式服务器、塔式服务器或机柜式服务器(包括独立的服务器,或者多个应用服务器所组成的服务器集群)等。本实施例的计算机设备至少包括但不限于:可通过系统总线相互通信连接的存储器51、处理器52,如图5所示。需要指出的是,图5仅示出了具有组件-的计算机设备,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。本实施例中,存储器51(即可读存储介质)包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器51可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,存储器51也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。当然,存储器51还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,存储器51通常用于存储安装于计算机设备的操作系统和各类应用软件,例如实施例三的研发风险预测装置的程序代码等。此外,存储器51还可以用于暂时地存储已经输出或者将要输出的各类数据。处理器52在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器52通常用于控制计算机设备的总体操作。本实施例中,处理器52用于运行存储器51中存储的程序代码或者处理数据,例如运行研发风险预测装置,以实现上述实施例的研发风险预测方法。

上述以软件功能模块的形式实现的集成的模块,可以存储在一个计算机可读取存储介质中。上述软件功能模块存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器执行本申请各个实施例方法的部分步骤。应理解,上述处理器可以是中央处理单元(Central Processing Unit,简称CPU),还可以是其它通用处理器、数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application Specific Integrated Circuit,简称ASIC)等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合申请所公开的方法的步骤可以直接体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。存储器可能包含高速RAM存储器,也可能还包括非易失性存储NVM,例如至少一个磁盘存储器,还可以为U盘、移动硬盘、只读存储器、磁盘或光盘等。

为实现上述目的,本申请还提供一种计算机可读存储介质,如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘、服务器、App应用商城等等,其上存储有计算机执行指令,程序被处理器52执行时实现相应功能。本实施例的计算机可读存储介质用于存储实现研发风险预测方法的计算机执行指令,被处理器52执行时实现上述实施例的研发风险预测方法。

上述存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。存储介质可以是通用或专用计算机能够存取的任何可用介质。

一种示例性的存储介质耦合至处理器,从而使处理器能够从该存储介质读取信息,且可向该存储介质写入信息。当然,存储介质也可以是处理器的组成部分。处理器和存储介质可以位于专用集成电路(Application Specific Integrated Circuits,简称ASIC)中。当然,处理器和存储介质也可以作为分立组件存在于电子设备或主控设备中。

本申请提供一种计算机程序产品,包括计算机程序,计算机程序被处理器执行时实现上述的研发风险预测方法。

需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求书指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求书来限制。

相关技术
  • 客户稳定性的预测方法、装置、计算机设备和存储介质
  • 软件可靠性预测方法、装置、计算机设备和存储介质
  • 短时交通流变化预测方法、装置、计算机设备及存储介质
  • 房屋价值预测方法、装置、计算机设备和存储介质
  • 基金数据的预测方法、装置、计算机设备和存储介质
  • 产品性能预测模型的建立方法和装置、计算机设备、计算机可读存储介质、产品性能预测方法及预测系统
  • 产品风险预测方法、装置、计算机设备和存储介质
技术分类

06120116488313