本发明涉及机器学习领域,特别涉及一种梯度提升树模型的预测方法、装置及系统。
背景技术:
梯度提升树,属于机器学习范畴,在传统机器学习算法里面是对真实分布拟合的最好的几种算法之一。它是一种迭代的决策树算法,该算法由多棵决策树组成,所有树的结论累加起来做最终答案。
企业通常都拥有大量的用户特征数据。对这些用户,企业可以使用这些特征来训练梯度提升树,来预测用户行为。
目前来说,企业对自己拥有的数据源的价值挖掘通常已经比较彻底,急需通过与其企业数据源合作,对数据联合训练生成,来扩大数据分析来源,以挖掘出更多的价值。但是用户特征在不同企业之间是保密的。所以两个企业如果进行合作联合训练生成和预测数据,一般有以下几种方法:
1,数据托管:各方将数据托管到交易中心,由中心与外部进行数据交易,这样数据就由中心所有,参与方丢失数据所有权。
2,聚合中心:中心充当传输枢纽并通过接口将各方数据链接起来,这样中心有能力、有机会留存交易数据。
3,数据隔离域:各方将数据集中至隔离域为参与方提供服务,这样隔离域往往由强势机构负责运营,弱势方存在出让数据所有权风险。
4,数据买卖:交易方之间通过数据价值评估进行数据源交易,议价权往往由强势方掌握,且存在泄露用户数据隐私等的法律风险。
可见,现有技术中在对两方企业相同的用户进行预测数据时,存在泄露双方的用户原始特征数据的风险。
技术实现要素:
为了克服上述技术缺陷,本发明提供一种梯度提升树模型的预测方法、装置及系统,在对两方企业相同的用户进行预测数据过程中,能够保证两个数据方都不能获取对方的原始特征数据,避免泄露双方持有的特征数据。
本发明实施例提供的具体技术方案如下:
第一方面,提供一种梯度提升树模型的预测方法,应用于第一数据方,所述方法包括:
基于待测用户的第一特征数据以及预先与第二数据方联合训练生成的梯度提升树模型,获取所述第一特征数据在所述梯度提升树模型中所对应的节点值;
接收所述第二数据方通过区块链发送的所述待测用户的第二特征数据在所述梯度提升树模型中所对应的节点值;
基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测。
进一步地,所述基于待测用户的第一特征数据以及预先与第二数据方联合训练生成的梯度提升树模型,获取所述第一特征数据在所述梯度提升树模型中所对应的节点值,包括:
提取所述梯度提升树模型中的回归树的所有特征切分变量以及各所述特征切分变量对应的切分点,并在所述所有特征切分变量中确定出属于所述第一数据方的目标特征切分变量;
将所述第一特征数据与所述目标特征切分变量对应的切分点进行比较,根据比较结果,获取所述第一特征数据在所述梯度提升树模型中对应的节点值。
进一步地,所述基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测,包括:
基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值,获取所述梯度提升树模型的每棵回归树对所述待测用户的预测值;
基于所述梯度提升树模型的每棵回归树对所述待测用户的预测值,获取所述待测用户的预测标签。
进一步地,所述基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值,获取所述梯度提升树模型的每棵回归树对所述待测用户的预测值,包括:
步骤a,将所述梯度提升树模型的基础回归树作为当前回归树;
步骤b,设置所述当前回归树的根节点为父节点;
步骤c,基于所述第一特征数据对应的节点值以及所述第二特征数据对应的节点值,在所述当前回归树中确定所述待测用户对应的子节点是所述父节点的左子节点还是所述父节点的右子节点,并执行步骤d;
步骤d,判断确定出的所述子节点是否为非叶子节点,若判断为是,则执行步骤e,否则,则执行步骤f;
步骤e,设置所述子节点为父节点,并跳转到步骤c;
步骤f,将所述子节点对应的预测值确定为所述当前回归树对所述待测用户的预测值,并执行步骤g;
步骤g,以所述当前回归树的下一棵回归树作为所述当前回归树,重复执行步骤b至步骤f,直至获得所述梯度提升树模型的最后一棵回归树对所述待测用户的预测值。
进一步地,所述方法还包括:
通过区块链发送所述待测用户的标签预测结果至所述第二数据方。
第二方面,提供一种梯度提升树模型的预测方法,应用于第二数据方,所述方法包括:
在第一数据方获取到待测用户的第一特征数据在梯度提升树模型中所对应的节点值,并通过区块链将关于所述获取的通知信息发送给所述第二数据方之后,所述第二数据方基于所述待测用户的第二特征数据以及所述梯度提升树模型,获取所述第二特征数据在所述梯度提升树模型中所对应的节点值,其中,所述梯度提升树模型是所述第一数据方与所述第二数据方预先联合训练生成得到的;
将所述第二特征数据对应的节点值通过区块链发送给所述第一数据方,以使所述第一数据方基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测;
接收所述第一数据方通过区块链发送的所述待测用户的标签预测结果。
进一步地,所述第二数据方基于所述待测用户的第二特征数据以及所述梯度提升树模型,获取所述第二特征数据在所述梯度提升树模型中所对应的节点值,包括:
提取所述梯度提升树模型中的回归树的所有特征切分变量以及各所述特征切分变量对应的切分点,并在所述所有特征切分变量中确定出属于所述第二数据方的目标特征切分变量;
将所述第二特征数据与所述目标特征切分变量对应的切分点进行比较,根据比较结果,获取所述第二特征数据在所述梯度提升树模型中对应的节点值。
第三方面,提供了一种梯度提升树模型的预测装置,应用于第一数据方,所述装置包括:
获取模块,用于基于待测用户的第一特征数据以及所述第一数据方预先与第二数据方联合训练生成的梯度提升树模型,获取所述第一特征数据在所述梯度提升树模型中所对应的节点值;
接收模块,用于接收所述第二数据方通过区块链发送的所述待测用户的第二特征数据在所述梯度提升树模型中所对应的节点值;
预测模块,用于基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测。
进一步地,所述获取模块具体用于:
提取所述梯度提升树模型中的回归树的所有特征切分变量以及各所述特征切分变量对应的切分点,并在所述所有特征切分变量中确定出属于所述第一数据方的目标特征切分变量;
将所述第一特征数据与所述目标特征切分变量对应的切分点进行比较,根据比较结果,获取所述第一特征数据在所述梯度提升树模型中对应的节点值。
进一步地,所述预测模块包括:
预测子模块,用于基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值,获取所述梯度提升树模型的每棵回归树对所述待测用户的预测值;
获取子模块,用于基于所述梯度提升树模型的每棵回归树对所述待测用户的预测值,获取所述待测用户的预测标签。
进一步地,所述预测子模块具体用于执行如下步骤:
步骤a,将所述梯度提升树模型的基础回归树作为当前回归树;
步骤b,设置所述当前回归树的根节点为父节点;
步骤c,基于所述第一特征数据对应的节点值以及所述第二特征数据对应的节点值,在所述当前回归树中确定所述待测用户对应的子节点是所述父节点的左子节点还是所述父节点的右子节点,并执行步骤d;
步骤d,判断确定出的所述子节点是否为非叶子节点,若判断为是,则执行步骤e,否则,则执行步骤f;
步骤e,设置所述子节点为父节点,并跳转到步骤c;
步骤f,将所述子节点对应的预测值确定为所述当前回归树对所述待测用户的预测值,并执行步骤g;
步骤g,以所述当前回归树的下一棵回归树作为所述当前回归树,重复执行步骤b至步骤f,直至获得所述梯度提升树模型的最后一棵回归树对所述待测用户的预测值。
进一步地,所述装置还包括:
发送模块,用于通过区块链发送所述待测用户的标签预测结果至所述第二数据方。
第四方面,提供了一种梯度提升树模型的预测装置,应用于第二数据方,所述装置包括:
获取模块,用于在第一数据方获取到待测用户的第一特征数据在梯度提升树模型中所对应的节点值,并通过区块链将关于所述获取的通知信息发送给所述第二数据方之后,所述第二数据方基于所述待测用户的第二特征数据以及所述梯度提升树模型,获取所述第二特征数据在所述梯度提升树模型中所对应的节点值,其中,所述梯度提升树模型是所述第一数据方与所述第二数据方预先联合训练生成得到的;
发送模块,用于将所述第二特征数据对应的节点值通过区块链发送给所述第一数据方,以使所述第一数据方基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测;
接收模块,用于接收所述第一数据方通过区块链发送的所述待测用户的标签预测结果。
进一步地,所述获取模块具体用于:
提取所述梯度提升树模型中的回归树的所有特征切分变量以及各所述特征切分变量对应的切分点,并在所述所有特征切分变量中确定出属于所述第二数据方的目标特征切分变量;
将所述第二特征数据与所述目标特征切分变量对应的切分点进行比较,根据比较结果,获取所述第二特征数据在所述梯度提升树模型中对应的节点值。
第五方面,提供了一种梯度提升树模型的预测系统,其特征在于,所述系统包括第一电子设备和第二电子设备,其中:
所述第一电子设备包括如第三方面所述的梯度提升树模型的预测装置;
所述第二电子设备包括如第四方面所述的梯度提升树模型的预测装置。
本发明实施例提供的技术方案带来的有益效果是:
1,保证了梯度提升树模型的预测过程中,双方都不能获取对方的特征数据,避免了泄露双方持有的特征数据,并且在不泄露双方持有的特征数据的情况下,通过扩充数据特征维度进行预测,提高了预测结果的准确性;
2,在梯度提升树模型的预测过程中,通过使用区块链技术,可以对交互的数据进行审计,能够保证数据交互过程的安全性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本实施例提供的梯度提升树模型的预测方法的应用环境图;
图2示出了实施例一提供的梯度提升树模型的预测方法的流程示意图;
图3示出了图2所示方法中步骤203的一个优选实施方式的流程示意图;
图4示出了实施例二提供的梯度提升树模型的预测方法的流程示意图;
图5示出了实施例三提供的梯度提升树模型的预测方法的流程示意图;
图6示出了实施例四提供的梯度提升树模型的预测装置的结构示意图;
图7示出了实施例五提供的梯度提升树模型的预测装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明提供的梯度提升树模型的预测方法,可以应用于如图1所示的应用环境中。其中,第一电子设备101和第二电子设备102通过区块链103进行数据交互,第一电子设备101可以指第一数据方所使用的电子设备,第二电子设备102可以指第二数据方所使用的电子设备,第一电子设备101和第二电子设备102可以为各种计算机设备,例如台式计算机或服务器等设备,这些设备具备网络通信等功能,区块链103包括位于区块链网络中的多个节点设备。第一电子设备101基于待测用户的第一特征数据以及预先与第二电子设备102联合训练生成的梯度提升树模型,获取第一特征数据在梯度提升树模型中所对应的节点值;第一电子设备101接收第二电子设备102通过区块链发送的待测用户的第二特征数据在梯度提升树模型中所对应的节点值;第一电子设备101基于第一特征数据对应的节点值、第二特征数据对应的节点值以及梯度提升树模型,对待测用户进行标签预测。本发明实施例提供的方法可以应用于在多个数据方持有同一批用户的不同特征数据时,对该批用户进行预测数据的场景中。
其中,区块链是一种分布式数据存储、点对点传输、共识机制和加密算法等计算机技术的新型应用模式,其本质上是一个去中心化的数据库;区块链可由多个借由密码学串接并保护内容的串连交易记录(又称区块)构成,用区块链所串接的分布式账本能让多方有效记录交易,且可永久查验此交易(不可篡改)。共识机制是指区块链网络中实现不同节点之间建立信任、获取权益的数学算法;也就是说,共识机制是区块链网络各节点共同认可的一种数学算法。
实施例一
本发明实施例提供了一种梯度提升树模型的预测方法,应用于第一数据方,如图2所示,该方法可以包括步骤:
201、第一数据方基于待测用户的第一特征数据以及预先与第二数据方联合训练生成的梯度提升树模型,获取第一特征数据在梯度提升树模型中所对应的节点值。
本实施例中,第一数据方和第二数据方可以是两个不同公司,例如,第一数据方为保险公司,拥有一批待测用户的多个维度的客户保险特征数据,第二数据方为流量平台(例如今日头条),拥有该批待测用户的多个维度的网上行为特征数据。
第一数据方拥有待测用户{1,2,…,k}的m个特征维度的数据集x={x1,x2,…,xk},其中xi均为m维向量,记为第一特征数据;第二数据方拥有待测用户{1,2,…,k}的n个特征维度的数据集x′={x′1,x′2,…,x′k},其中x′i均为n维向量,记为第二特征数据。这里,m与n均为正整数,m与n可以相同或不同。
第一数据方和第二数据方预先联合训练生成梯度提升树模型并保存在各自本地。梯度提升树模型包括多棵回归树,各个回归树中包括多个节点,节点分为非叶子节点和叶子节点,非叶子节点对应的节点参数中包括特征切分变量和特征切分点,特征切分变量和特征切分点用于对用户的特征数据进行切分处理,以确定该用户是属于该非叶子节点的左子节点还是属于该非叶子节点的右子节点。
具体地,步骤201的实现过程可以包括:
提取梯度提升树模型中的回归树的所有特征切分变量以及各特征切分变量对应的切分点,并在所有特征切分变量中确定出属于第一数据方的目标特征切分变量;
将第一特征数据与目标特征切分变量对应的切分点进行比较,根据比较结果,获取第一特征数据在梯度提升树模型中对应的节点值。
本实施例中,第一数据方本地树文件目录下预先保存有梯度下降树模型中的回归树对应的树文件,第一数据方对树文件进行反序列化,提取出梯度下降树模型中的回归树的所有的特征切分变量(jamin,kamin)和特征切分点samin。使用第一数据方持有的待测用户的第一特征数据,对于属于本方特征切分变量,如果待测用户的第一特征数据小于等于特征切分点samin,则记为true,否则记为false,列名记为切分变量(jamin,kamin)_切分点samin,将所有待测用户对应的true值、false值存储成本地表格文件。这里,待测用户对应的true值、false值即为待测用户的第一特征数据在梯度提升树模型中所对应的节点值。
在第一数据方获取到待测用户的第一特征数据在梯度提升树模型中所对应的节点值后,通过区块链将关于获取的通知信息发送给第二数据方。
202、接收第二数据方通过区块链发送的待测用户的第二特征数据在梯度提升树模型中所对应的节点值。
其中,第二特征数据与第一特征数据的数量均可以是多个,例如,第一特征数据可以为客户保险特征数据,包括用户性别、职业、年龄、教育程度、贷款、贷款逾期记录、购买的保险类别等,购买行为信息等。第二特征数据可以为流量平台上用户的行为特征,例如浏览过某类视频的时长、次数等。
其中,第二数据方可以在接收到第一数据方通过区块链发送的通知信息之后,基于待测用户的第二特征数据以及梯度提升树模型,生成第二特征数据在梯度提升树模型中所对应的节点值,该生成过程可以参数步骤201,此处不再赘述。
本发明实施例对具体的接收过程不作具体限定。
203、基于第一特征数据对应的节点值、第二特征数据对应的节点值以及梯度提升树模型,对待测用户进行标签预测。
具体地,第一数据方可以将第一特征数据对应的节点值、第二特征数据对应的节点值与待测用户的用户标识关联存储到指定文件内,该指定文件可以以csv作为文件格式,基于该指定文件使用梯度提升树模型对待测用户进行标签预测。
在一个优选实施方式中,如图3所示,上述步骤203的具体实现过程可以包括:
301,基于第一特征数据对应的节点值、第二特征数据对应的节点值,获取梯度提升树模型的每棵回归树对待测用户的预测值。
302,基于梯度提升树模型的每棵回归树对待测用户的预测值,获取待测用户的预测标签。
具体地,基于梯度提升树模型的每棵回归树对待测用户的预测值以及梯度提升树模型的学习率,计算待测用户的最终预测值,将待测用户的最终预测值确定为待测用户的预测标签,其中,最终预测值可以采用如下计算方式获得:回归树1的预测值 学习率x(回归树2的预测值 … 回归树n的预测值),这里n为梯度提升树模型的最大树数量。
在一个优选实施方式中,上述步骤301的实现过程可以包括:
步骤a,将梯度提升树模型的基础回归树作为当前回归树;
步骤b,设置当前回归树的根节点为父节点;
步骤c,基于第一特征数据对应的节点值以及第二特征数据对应的节点值,在当前回归树中确定待测用户对应的子节点是父节点的左子节点还是父节点的右子节点,并执行步骤d;
步骤d,判断确定出的子节点是否为非叶子节点,若判断为是,则执行步骤e,否则,则执行步骤f;
步骤e,设置子节点为父节点,并跳转到步骤c;
步骤f,将子节点对应的预测值确定为当前回归树对待测用户的预测值,并执行步骤g;
步骤g,以当前回归树的下一棵回归树作为当前回归树,重复执行步骤b至步骤f,直至获得梯度提升树模型的最后一棵回归树对待测用户的预测值。
在一个优选实施方式中,在步骤203之后,方法还包括:
第一数据方通过区块链发送待测用户的标签预测结果至第二数据方。
在一个优选实施方式中,上述的梯度提升树模型通过如下过程进行联合训练生成,包括:
步骤一:第一数据方基于多个样本的多个第一特征及真实标签构建第一数据方本地的数据集,并将各样本的真实标签以及梯度提升树算法的固定值通过区块链发送至第二数据方。
本实施例中,第一数据方拥有样本用户{1,2,…,t}的m个特征维度的数据集x={x1,x2,…,xt,y},其中xi均为m维向量,记为第一特征,y为真实标签列,y={y1,y2,…,yt},其中yi为一维向量;第二数据方拥有样本用户{1,2,…,t}的n个特征维度的数据集x′={x′1,x′2,…,x′t},其中x′i均为n维向量,记为第二特征。这里,m与n均为正整数,m与n可以相同或不同。其中,第一特征包括但不限于用户性别、职业、年龄、教育程度、贷款、贷款逾期记录、购买的保险类别等,购买行为信息等。第二特征包括但不限于浏览过某类视频的时长、次数等网上行为特征。
其中,第一数据方设置梯度提升树算法的固定值,固定值包括回归树的最大深度、回归树的最大树数量、学习率、节点最小样本数。
步骤二:第二数据方基于各样本的多个第二特征以及从区块链中接收到的各样本的真实标签,构建第二数据方本地的数据集。
具体地,第二数据方接收各样本的真实标签和梯度提升树算法的固定值,将各样本的真实标签和各样本的多个第二特征进行组合,得到本地的数据集。
步骤三:第一数据方与第二数据方基于梯度提升树算法以及各自本地的数据集,通过区块链进行联合生成梯度提升树模型的基础回归树,并从基础回归树开始,利用前一棵回归树预测出的标签与真实标签的残差进行迭代,以此训练得到后一棵回归树,直到回归树数量达到预设的树数量。
在一个优选实施方式中,上述步骤三的实现过程可以包括:
s1,第一数据方和第二数据方基于各自本地的当前节点参数、梯度提升树算法的固定值以及各自本地的当前数据集,生成各自本地的当前树节点文件。
其中,第一数据方和第二数据方基于各自本地的当前节点参数分别包括当前树的深度、当前树的编号值、最小损失值、切分变量、切分点、左子树文件名、左子树用户索引、右子树文件名、右子树用户索引、是否为非叶子节点以及预测值。
其中,第一数据方和第二数据方各自生成本地的当前树节点文件后,分别将各自本地的当前树节点文件存放至各自本地的工作目录下。
其中,上述步骤s1中第一数据方生成本地的当前树节点文件,该过程包括:
s1.1,第一数据方基于当前节点参数、固定值以及当前数据集,判断当前节点是否为非叶子节点,若是,则执行步骤s1.2,若否,则执行步骤s1.4;
s1.2,遍历当前数据集中每个第一特征的每个变量及每个变量的值作为切分变量和切分点,寻找最小的损失值,并确定最小的损失值对应的第一特征、变量以及变量值。
s1.3,基于最小的损失值、最小的损失值对应的第一特征、变量以及变量值更新当前节点参数,生成当前树节点文件。
s1.4,将叶子节点用户的真实标签的平均值确定为当前节点的预测值,并基于当前节点的预测值更新当前节点参数,生成当前树节点文件。
可以理解的是,第二数据方生成本地的当前树节点文件的过程可以参照步骤s1.1至步骤s1.4,此处不再赘述。
s2,第二数据方获取第一数据方通过区块链发送的第一数据方本地的当前树节点文件,并在第一数据方本地的当前树节点文件与第二数据方本地对应的当前树节点文件中,选择最小的损失值对应的当前树节点文件作为切分树节点文件。
s3,第二数据方基于切分树节点文件中的左子树用户索引和右子树用户索引将第二数据方的当前数据集划分成两个新的数据集,并基于切分树节点文件中的节点参数以及两个新的数据集,生成本地的两个下一级的当前树节点文件。
其中,当第二数据方基于切分树节点文件中的节点参数以及两个新的数据集,生成本地的两个下一级的当前树节点文件后,切分树节点文件从第二数据方本地的工作目录被移至第一数据方本地的结果目录,两个下一级的当前树节点文件被存放至第二数据方本地的工作目录下。
s4,第一数据方获取第二数据方通过区块链发送的切分树节点文件,基于切分树节点文件中的左子树用户索引和右子树用户索引将第一数据方的当前数据集划分成两个新的数据集,并基于切分树节点文件中的节点参数以及两个新的数据集,生成本地的两个下一级的当前树节点文件。
其中,当第一数据方基于切分树节点文件中的节点参数以及两个新的数据集,生成本地的两个下一级的当前树节点文件后,切分树节点文件从第一数据方本地的工作目录被移至第一数据方本地的结果目录,两个下一级的当前树节点文件被存放至第一数据方本地的工作目录下。
s5,第一数据方将本地的两个下一级的当前树节点文件逐个通过区块链发送至第二数据方。
s6,迭代执行步骤s2至步骤s5,直至满足迭代停止条件。
其中,迭代停止条件可以是第一数据方本地的工作目录下的所有当前树节点文件全部被移至第一数据方本地的结果目录下。
s7,第一数据方和第二数据方对各自本地的所有树节点文件按照文件名进行关联,生成基础回归树。
具体地,该过程可以包括:
s7.1,在本地所有的树节点文件中确定出根树节点文件,并从根树节点文件中获取根节点参数以作为当前节点参数;
s7.2,若当前节点参数指示当前节点为非叶子节点,则获取当前树节点文件的两个下一级的树节点文件;
s7.3,根据各个下一级的树节点文件中的节点参数,确定出当前节点的两个下一级节点,并对当前节点与两个下一级节点进行关联;
s7.4,以每个下一级节点分别作为下一级的当前节点,迭代方式执行步骤s7.2至步骤s7.3,直至遍历完所有的树节点文件,得到基础回归树,得到基础回归树,得到基础回归树。
s8,第一数据方和第二数据方各自基于固定值中的学习率、前一棵回归树中的各叶子节点用户的真实标签以及各叶子节点用户的预测标签,获取各叶子节点用户对应的残差。
其中,当仅生成梯度提升模型的基础回归树时,前一棵回归树是指基础回归树。
s9,第一数据方和第二数据方基于各自的当前数据集以及各叶子节点用户对应的残差,生成第一数据方和第二数据方各自本地的新的当前数据集。
s10,针对第一数据方和第二数据方各自本地的新的当前数据集,重复执行步骤s1至步骤s7,得到前一棵回归树的后一棵回归树。
s11,迭代执行步骤s8至步骤s10,直至回归树数量达到固定值中的最大树数量。
本实施例中,在第一数据方与第二数据方基于区块链联合训练生成梯度提升树模型的过程中,第一数据方和第二数据方都不能获取对方的特征数据,避免了泄露双方持有的特征数据,并且在不泄露双方持有的特征数据的情况下,并通过扩充数据特征维度进行训练,提升了模型训练效果,并确保了数据交互过程的安全性。
本发明实施例提供一种梯度提升树模型的预测方法,通过第一数据方与第二数据方基于区块链联合训练生成梯度提升树模型,使得在梯度提升树模型的预测过程中,由于第一数据方和第二数据方都不能获取对方的特征数据,避免了泄露双方持有的特征数据,并且在不泄露双方持有的特征数据的情况下,通过扩充数据特征维度进行预测,提高了预测结果的准确性;另外,通过使用区块链技术,可以对交互的数据进行审计,能够保证数据交互过程的安全性。
实施例二
本发明实施例提供了一种梯度提升树模型的预测方法,应用于第二数据方,如图4所示,该方法可以包括步骤:
401,在第一数据方获取到待测用户的第一特征数据在梯度提升树模型中所对应的节点值,并通过区块链将关于获取的通知信息发送给第二数据方之后,第二数据方基于待测用户的第二特征数据以及梯度提升树模型,获取第二特征数据在梯度提升树模型中所对应的节点值。
其中,梯度提升树模型是第一数据方与第二数据方预先联合训练生成得到的。
具体地,第二数据方基于待测用户的第二特征数据以及梯度提升树模型,获取第二特征数据在梯度提升树模型中所对应的节点值,该过程可以包括:
提取梯度提升树模型中的回归树的所有特征切分变量以及各特征切分变量对应的切分点,并在所有特征切分变量中确定出属于第二数据方的目标特征切分变量;
将第二特征数据与目标特征切分变量对应的切分点进行比较,根据比较结果,获取第二特征数据在梯度提升树模型中对应的节点值。
本实施例中,第二数据方本地树文件目录下预先保存有梯度下降树模型中的回归树对应的树文件,第二数据方对树文件进行反序列化,提取出梯度下降树模型中的回归树的所有的特征切分变量(jbmin,kbmin)和特征切分点sbmin。使用第二数据方持有的待测用户的第二特征数据,对于属于本方特征切分变量,如果待测用户的第二特征数据小于等于特征切分点sbmin,则记为true,否则记为false,列名记为切分变量(jbmin,kbmin)_切分点sbmin,将所有待测用户对应的true值、false值存储成本地表格文件。这里,待测用户对应的true值、false值即为待测用户的第二特征数据在梯度提升树模型中所对应的节点值。
402,将第二特征数据对应的节点值通过区块链发送给第一数据方,以使第一数据方基于第一特征数据对应的节点值、第二特征数据对应的节点值以及梯度提升树模型,对待测用户进行标签预测。
具体地,将第二特征数据对应的节点值与待测用户的用户标识关联存储到本地表格文件中,并将本地表格文件通过区块链发送给第一数据方
本发明对具体的发送过程不作具体限定。
403,接收第一数据方通过区块链发送的待测用户的标签预测结果。
具体地,本发明对具体的接收过程不作具体限定。
本发明实施例提供的梯度提升树模型的预测方法,在联合训练生成的梯度提升树模型的预测过程中,由于第一数据方和第二数据方都不能获取对方的特征数据,避免了泄露双方持有的特征数据,并且在不泄露双方持有的特征数据的情况下,通过扩充数据特征维度进行预测,提高了预测结果的准确性;另外,通过使用区块链技术,可以对交互的数据进行审计,能够保证数据交互过程的安全性。
实施例三
基于上述实施例,本发明实施例提供一种梯度提升树模型的预测方法,在第一数据方与第二数据方通过基于区块链进行联合训练生成生各自本地的梯度提升树模型之后,第一数据方和第二数据方使用各自本地的用户特征数据对用户标签进行预测。假设第一数据方a拥有用户{1,2,…,k}的m个特征维度的数据集x={x1,x2,…,xk},其中xi均为m维向量,第二数据方b拥有用户{1,2,…,k}的另外n个特征维度的数据集x′={x′1,x′2,…,x′k},其中x′i均为n维向量。这里,m与n均为正整数,m与n可以相同或不同。
如图5所示,该预测方法可以包括如下步骤:
1,a反序列化treedira目录下的梯度下降树模型,提取出梯度下降树模型中分类与回归树的所有的切分变量(jamin,kamin)和切分点samin。使用本方的数据,对于属于本方特征切分变量,如果用户的特征数据小于等于切分点samin,则记为true,否则记为false,列名记为切分变量(jamin,kamin)_切分点samin,将所有的true、false值存储成表格文件f(a),并通过区块链通知b。其中,梯度提升树模型的最大树数量为n。
2,b使用和a同样的方法,将所有的true、false值存储成表格文件,并将文件通过区块链发送给a。
3,a接收到文件,将本地表格文件和接收到的表格文件和用户{1,2,…,k}组成完整的文件f(predict_prepare.csv)。
4,a使用本地梯度下降树模型对所有用户的标签进行预测,具体方法如下:
4.1,反序列化treedira下所有的树文件。
4.2,设置na=1。
4.3,设置树na的根节点为父节点。
4.4,遍历所有的用户{1,2,…,k},获得所有用户的预测值。方法如下:
4.4.1,以用户a1为例,对于树na,查看树na的父节点的参数集合a中的切分变量(jamin,kamin)和切分点samin,查找predict_prepare.csv的切分变量(jamin,kamin)_切分点samin列的a1用户的值,如果是true,则用户a1属于左子节点,如果是false,则用户a1属于右子节点。
4.4.2,判断此子节点的参数集合a中的is_leafa的值,判断是否是叶子节点;
4.4.2.1,如果is_leafa=false,设置此子节点为父节点,并转到步骤4.4.1。
4.4.2.2,如果is_leafa=true,查看用户a1最终属于哪个叶子节点。查看参数集合a的预测值a,即树na对用户a1的预测值,并转到步骤4.4.3。
4.4.3,判断n和na的大小。
4.4.3.1如果na<n,设置na=na 1,并转到步骤4.3。
4.4.3.2如果na>=n,对所有的树关于用户a1的预测值进行处理。对预测值进行组合得到用户a1的最终的预测值。最终预测值为:树1的预测值 学习率x(树2的预测值 … 树n的预测值)。
5,a通过区块链将预测结果发送给b。
综上,本发明实施例提供的梯度提升树模型的预测方法,在使用联合训练生成的梯度提升树模型对两个数据方拥有的相同的用户进行预测数据时,不会泄露双方的用户原始标签数据,并通过扩充数据特征维度进行训练,提高了模型训练效果;而且通过使用区块链技术,可以对交互的数据进行审计,能够保证数据交互过程的安全性。
实施例四
本发明实施例提供了一种梯度提升树模型的预测装置,应用于第一数据方,如图6所示,装置包括:
获取模块61,用于基于待测用户的第一特征数据以及第一数据方预先与第二数据方联合训练生成的梯度提升树模型,获取第一特征数据在梯度提升树模型中所对应的节点值;
接收模块62,用于接收第二数据方通过区块链发送的待测用户的第二特征数据在梯度提升树模型中所对应的节点值;
预测模块63,用于基于第一特征数据对应的节点值、第二特征数据对应的节点值以及梯度提升树模型,对待测用户进行标签预测。
进一步地,获取模块61具体用于:
提取梯度提升树模型中的回归树的所有特征切分变量以及各特征切分变量对应的切分点,并在所有特征切分变量中确定出属于第一数据方的目标特征切分变量;
将第一特征数据与目标特征切分变量对应的切分点进行比较,根据比较结果,获取第一特征数据在梯度提升树模型中对应的节点值。
进一步地,预测模块63包括:
预测子模块631,用于基于第一特征数据对应的节点值、第二特征数据对应的节点值,获取梯度提升树模型的每棵回归树对待测用户的预测值;
获取子模块632,用于基于梯度提升树模型的每棵回归树对待测用户的预测值,获取待测用户的预测标签。
进一步地,预测子模块631具体用于执行如下步骤:
步骤a,将梯度提升树模型的基础回归树作为当前回归树;
步骤b,设置当前回归树的根节点为父节点;
步骤c,基于第一特征数据对应的节点值以及第二特征数据对应的节点值,在当前回归树中确定待测用户对应的子节点是父节点的左子节点还是父节点的右子节点,并执行步骤d;
步骤d,判断确定出的子节点是否为非叶子节点,若判断为是,则执行步骤e,否则,则执行步骤f;
步骤e,设置子节点为父节点,并跳转到步骤c;
步骤f,将子节点对应的预测值确定为当前回归树对待测用户的预测值,并执行步骤g;
步骤g,以当前回归树的下一棵回归树作为当前回归树,重复执行步骤b至步骤f,直至获得梯度提升树模型的最后一棵回归树对待测用户的预测值。
进一步地,装置还包括:
发送模块64,用于通过区块链发送待测用户的标签预测结果至第二数据方。
本实施例提供的梯度提升树模型的预测装置,与本发明实施例一所提供的梯度提升树模型的预测方法属于同一发明构思,可执行本发明实施例一所提供的梯度提升树模型的预测方法,具备执行梯度提升树模型的生成方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例二提供的梯度提升树模型的预测方法,此处不再加以赘述。
实施例五
本发明实施例提供了一种梯度提升树模型的预测装置,应用于第二数据方,如图7所示,装置包括:
获取模块71,用于在第一数据方获取到待测用户的第一特征数据在梯度提升树模型中所对应的节点值,并通过区块链将关于获取的通知信息发送给第二数据方之后,第二数据方基于待测用户的第二特征数据以及梯度提升树模型,获取第二特征数据在梯度提升树模型中所对应的节点值,其中,梯度提升树模型是第一数据方与第二数据方预先联合训练生成得到的;
发送模块72,用于将第二特征数据对应的节点值通过区块链发送给第一数据方,以使第一数据方基于第一特征数据对应的节点值、第二特征数据对应的节点值以及梯度提升树模型,对待测用户进行标签预测;
接收模块73,用于接收第一数据方通过区块链发送的待测用户的标签预测结果。
进一步地,获取模块71具体用于:
提取梯度提升树模型中的回归树的所有特征切分变量以及各特征切分变量对应的切分点,并在所有特征切分变量中确定出属于第二数据方的目标特征切分变量;
将第二特征数据与目标特征切分变量对应的切分点进行比较,根据比较结果,获取第二特征数据在梯度提升树模型中对应的节点值。
本实施例提供的梯度提升树模型的预测装置,与本发明实施例二所提供的梯度提升树模型的预测方法属于同一发明构思,可执行本发明实施例二所提供的梯度提升树模型的预测方法,具备执行梯度提升树模型的生成方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本发明实施例二提供的梯度提升树模型的预测方法,此处不再加以赘述。
实施例六
本发明实施例提供了一种梯度提升树模型的预测系统,该系统包括第一电子设备和第二电子设备,其中:
所述第一电子设备包括如实施例四所述的梯度提升树模型的预测装置;
所述第二电子设备包括如实施例五所述的梯度提升树模型的预测装置。
上述所有可选技术方案,可以采用任意结合形成本发明的可选实施例,在此不再一一赘述。
需要说明的是,除非上下文明确要求,否则整个说明书和权利要求书中的“包括”、“包含”等类似词语应当解释为包含的含义而不是排他或穷举的含义;也就是说,是“包括但不限于”的含义。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本申请的描述中,除非另有说明,“多个”的含义是两个或两个以上。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
1.一种梯度提升树模型的预测方法,其特征在于,应用于第一数据方,所述方法包括:
基于待测用户的第一特征数据以及预先与第二数据方联合训练生成的梯度提升树模型,获取所述第一特征数据在所述梯度提升树模型中所对应的节点值;
接收所述第二数据方通过区块链发送的所述待测用户的第二特征数据在所述梯度提升树模型中所对应的节点值;
基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测。
2.根据权利要求1所述的方法,其特征在于,所述基于待测用户的第一特征数据以及预先与第二数据方联合训练生成的梯度提升树模型,获取所述第一特征数据在所述梯度提升树模型中所对应的节点值,包括:
提取所述梯度提升树模型中的回归树的所有特征切分变量以及各所述特征切分变量对应的切分点,并在所述所有特征切分变量中确定出属于所述第一数据方的目标特征切分变量;
将所述第一特征数据与所述目标特征切分变量对应的切分点进行比较,根据比较结果,获取所述第一特征数据在所述梯度提升树模型中对应的节点值。
3.根据权利要求1或2所述的方法,其特征在于,所述基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测,包括:
基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值,获取所述梯度提升树模型的每棵回归树对所述待测用户的预测值;
基于所述梯度提升树模型的每棵回归树对所述待测用户的预测值,获取所述待测用户的预测标签。
4.根据权利要求3所述的方法,其特征在于,所述基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值,获取所述梯度提升树模型的每棵回归树对所述待测用户的预测值,包括:
步骤a,将所述梯度提升树模型的基础回归树作为当前回归树;
步骤b,设置所述当前回归树的根节点为父节点;
步骤c,基于所述第一特征数据对应的节点值以及所述第二特征数据对应的节点值,在所述当前回归树中确定所述待测用户对应的子节点是所述父节点的左子节点还是所述父节点的右子节点,并执行步骤d;
步骤d,判断确定出的所述子节点是否为非叶子节点,若判断为是,则执行步骤e,否则,则执行步骤f;
步骤e,设置所述子节点为父节点,并跳转到步骤c;
步骤f,将所述子节点对应的预测值确定为所述当前回归树对所述待测用户的预测值,并执行步骤g;
步骤g,以所述当前回归树的下一棵回归树作为所述当前回归树,重复执行步骤b至步骤f,直至获得所述梯度提升树模型的最后一棵回归树对所述待测用户的预测值。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
通过区块链发送所述待测用户的标签预测结果至所述第二数据方。
6.一种梯度提升树模型的预测方法,其特征在于,应用于第二数据方,所述方法包括:
在第一数据方获取到待测用户的第一特征数据在梯度提升树模型中所对应的节点值,并通过区块链将关于所述获取的通知信息发送给所述第二数据方之后,所述第二数据方基于所述待测用户的第二特征数据以及所述梯度提升树模型,获取所述第二特征数据在所述梯度提升树模型中所对应的节点值,其中,所述梯度提升树模型是所述第一数据方与所述第二数据方预先联合训练生成得到的;
将所述第二特征数据对应的节点值通过区块链发送给所述第一数据方,以使所述第一数据方基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测;
接收所述第一数据方通过区块链发送的所述待测用户的标签预测结果。
7.根据权利要求6所述的方法,其特征在于,所述第二数据方基于所述待测用户的第二特征数据以及所述梯度提升树模型,获取所述第二特征数据在所述梯度提升树模型中所对应的节点值,包括:
提取所述梯度提升树模型中的回归树的所有特征切分变量以及各所述特征切分变量对应的切分点,并在所述所有特征切分变量中确定出属于所述第二数据方的目标特征切分变量;
将所述第二特征数据与所述目标特征切分变量对应的切分点进行比较,根据比较结果,获取所述第二特征数据在所述梯度提升树模型中对应的节点值。
8.一种梯度提升树模型的预测装置,其特征在于,应用于第一数据方,所述装置包括:
获取模块,用于基于待测用户的第一特征数据以及所述第一数据方预先与第二数据方联合训练生成的梯度提升树模型,获取所述第一特征数据在所述梯度提升树模型中所对应的节点值;
接收模块,用于接收所述第二数据方通过区块链发送的所述待测用户的第二特征数据在所述梯度提升树模型中所对应的节点值;
预测模块,用于基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测。
9.一种梯度提升树模型的预测装置,其特征在于,应用于第二数据方,所述装置包括:
获取模块,用于在第一数据方获取到待测用户的第一特征数据在梯度提升树模型中所对应的节点值,并通过区块链将关于所述获取的通知信息发送给所述第二数据方之后,所述第二数据方基于所述待测用户的第二特征数据以及所述梯度提升树模型,获取所述第二特征数据在所述梯度提升树模型中所对应的节点值,其中,所述梯度提升树模型是所述第一数据方与所述第二数据方预先联合训练生成得到的;
发送模块,用于将所述第二特征数据对应的节点值通过区块链发送给所述第一数据方,以使所述第一数据方基于所述第一特征数据对应的节点值、所述第二特征数据对应的节点值以及所述梯度提升树模型,对所述待测用户进行标签预测;
接收模块,用于接收所述第一数据方通过区块链发送的所述待测用户的标签预测结果。
10.一种梯度提升树模型的预测系统,其特征在于,所述系统包括第一电子设备和第二电子设备,其中:
所述第一电子设备包括如权利要求8所述的梯度提升树模型的预测装置;
所述第二电子设备包括如权利要求9所述的梯度提升树模型的预测装置。
技术总结