[发明专利]一种保护多方数据隐私的XGBoost预测模型训练方法有效
申请号: | 202011452494.9 | 申请日: | 2020-12-12 |
公开(公告)号: | CN112700031B | 公开(公告)日: | 2023-03-31 |
发明(设计)人: | 史清江;谢仑辰 | 申请(专利权)人: | 同济大学 |
主分类号: | G06Q10/04 | 分类号: | G06Q10/04;G06N20/20;G06F21/62 |
代理公司: | 上海科盛知识产权代理有限公司 31225 | 代理人: | 赵继明 |
地址: | 200092 *** | 国省代码: | 上海;31 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 保护 多方 数据 隐私 xgboost 预测 模型 训练 方法 | ||
1.一种保护多方数据隐私的XGBoost预测模型训练方法,其特征在于,包括多个参与方与一个协调方,拥有标签的参与方首先利用当前模型预测结果与标签值计算一阶、二阶梯度向量与指示向量,剩余参与方通过秘密共享与协调方协助,共同计算构建一棵基于XGBoost算法的联合决策树模型,所述参与方共同协作,确定待训练数据在联合决策树模型中进行预测的结果,最后所有参与方与协调方一起迭代完成多棵联合决策树模型的构建,获得完整的多方预测模型;
训练所述联合决策树模型的具体步骤如下:
S1、拥有标签的参与方作为第一参与方,设定构建树的初始数量、初始深度、正则化参数与最大深度,将正则化参数秘密共享拆分,将所有设定的参数发至所有参与方,为每个拥有相应数量特征的参与方产生随机不重复的特征编号索引,由持有标签的第一参与方利用当前模型预测结果向量和样本标签向量计算得到一阶梯度向量和二阶梯度向量,并产生初始的全1指示向量,分别进行秘密共享拆分,对于总共的参与方,拆分为相应数量的一阶梯度向量分片、二阶梯度向量分片和指示向量分片,并分别分发至所有参与方;
S2、每个参与方i收到一阶梯度向量分片、二阶梯度向量分片和指示向量分片后,计算自身拥有的一阶梯度和的分片与二阶梯度和的分片,并利用秘密共享方法,计算各特征下各分组分别对应分裂增益的分子分片与分母分片,通过协调方确定最大分裂增益及所属的特征、分组与是否进行划分,当进行划分时,若选中的特征属于特定的参与方,生成划分后的左子树指示向量与右子树指示向量,所述左子树指示向量与右子树指示向量分别指示根据所述最大分裂增益对应特征及分组对样本集进行划分得到的左子集与右子集中样本,左子集、右子集分别与左子树、右子树对应;将所述左子树指示向量与右子树指示向量通过秘密共享拆分为多个分片,并分发至参与方;每个参与方利用接收的分片与自身拥有的指示向量分片计算样本集被划分到左子树后的左子树一阶梯度向量分片与二阶梯度向量分片,计算样本集被划分到右子树后的右子树一阶梯度向量分片与二阶梯度向量分片,使用左子树一阶梯度向量分片、二阶梯度向量分片和左子树指示向量递归构建左子树,使用右子树一阶梯度向量分片、二阶梯度向量分片和右子树指示向量递归构建右子树,并设定深度循环递增条件,若不进行划分或到达预设的最大深度,每个参与方计算决策树上当前叶子节点的权值的相应分片;
S3、对于每一条数据样本,每个参与方利用所持有部分特征的样本,计算当前联合决策树模型的预测结果,累加至之前相应数量的树模型的结果中,产生多棵树模型对于数据样本的综合预测结果;
S4、增加树模型的数量,迭代步骤S1-S3,直到构建完目标数量的联合决策树模型;
所述步骤S1、S2和S3中秘密共享算法包括秘密共享拆分、秘密共享加法、秘密共享减法和秘密共享乘法;
所述步骤S1具体包括:
S1.1、第一参与方设定构建树的初始数量、初始深度、正则化参数与最大深度,将正则化参数秘密共享拆分,将所有设定的参数分发至所有参与方,对于每个拥有相应数量特征的参与方,协调方统计参与方的特征总数,产生元素为相应数量的数组,为每个参与方随机分配相应数量的打乱顺序的数组元素,各参与方之间得到的数组元素不重合,各参与方建立乱序数组元素到自身拥有特征编号的一对一映射map(j)并在己方进行记录存储;
S1.2、所有参与方计算自身拥有样本特征中最大的特征取值数量,并发送给协调方,协调方确定全体参与方最大的特征取值数量并广播至所有参与方;
S1.3、从持有标签数据的所述第一参与方启动,各参与方使用同一种损失函数,第一参与方利用模型预测结果向量和标签值向量计算一阶梯度向量、二阶梯度向量与初始的全1指示向量,每一条数据的初始预测结果,对于每个参与方,将一阶梯度向量、二阶梯度向量和指示向量经秘密共享算法拆分为多份一阶梯度向量分片、二阶梯度向量分片和指示向量分片,并分发至相应的参与方;
所述步骤S2具体包括:
S2.1、每个参与方i收到相应的一阶梯度向量分片、二阶梯度向量分片和指示向量分片后,计算一阶梯度和的第i分片{SG}i与二阶梯度和的第i分片{SH}i,{SG}i与{SH}i分别通过参与方i拥有的一阶梯度向量分片、二阶梯度向量分片分别对向量元素求和得到;
S2.2、对于XGBoost算法,在某个树节点时,对于该节点具有的所有数据一阶梯度和SG、二阶梯度和SH、正则项λ,未分裂增益表示为:
每个参与方根据所述未分裂增益公式计算自身拥有的未分裂增益分子分片与未分裂增益分母分片,具体如下:
{gaindown}i={SH}i+{λ}i
其中,{gainup}i为未分裂增益分子分片,{gaindown}i为未分裂增益分母分片,为秘密共享乘法,{λ}i为超参数λ的第i分片;
S2.3、每个参与方i利用相应的一阶梯度向量分片与二阶梯度向量分片,计算自身拥有的所有特征所有取值区间下的一阶梯度和分片矩阵{BG}i与二阶梯度和分片矩阵{BH}i;
S2.4、每个参与方i初始化记录左子树分裂增益分子分片矩阵{leftgainup}i、左子树分裂增益分母分片矩阵{leftgaindown}i、右子树分裂增益分子分片矩阵{rightgainup}i、右子树分裂增益分母分片矩阵{rightgaindown}i;
S2.5、对于特征j,每个参与方初始化记录左子树累积一阶梯度分片变量左子树累积二阶梯度分片变量/右子树累积一阶梯度分片变量/右子树累积二阶梯度分片变量/均为0;
S2.6、每个参与方i遍历取值区间,更新计算左子树累积一阶梯度分片变量与左子树累积二阶梯度分片变量为:
其中,{BH}i[j,k]与{BH}i[j,k]分别表示分片矩阵{BG}i与{BH}i的第[j,k]个元素,
更新计算右子树累积一阶梯度分片变量与右子树累积二阶梯度分片变量:
对于XGBoost模型,其使用的分裂增益计算公式如下:
其中,λ为正则化参数;
对于每个参与方,直接计算相应特征的相应取值区间元素位置的左右子树分裂增益分子与分母分片并更新至矩阵中:
其中,j为特征编号,k为取值区间编号;
S2.7、每个参与方利用所述左右子树分裂增益分子与分母分片矩阵,遍历计算所有特征j的每个取值区间之间的分裂增益差值,通过协调方比较以确定最大分裂增益对应的挑选特征jbest与取值区间kbest;
S2.8、每个参与方对于最大分裂增益特征与取值区间,使用该位置的左右子树分裂增益分子与分母分片与未分裂增益分子与分母分片,计算总分裂增益分母分片发送至协调方,计算总分裂增益分子分片发送至第一参与方,协调方计算分母并确定协调方符号,第一参与方计算分子并确定第一参与方符号,第一参与方与协调方通过所述协调方符号和第一参与方符号共同确定最终最大增益对应的符号变量;
S2.9、当符号变量为1时,拥有最大分裂增益特征jbest的参与方,设置一个记录样本落入特征划分后左子树的全0列向量SL,取出最大分裂增益对应的取值区间令样本集中样本特征jbest取值/满足位置的SL元素取值为1,设置一个记录样本落入特征划分后右子树的M维向量/即对SL取反,对于总共N个参与方,将左子树指示向量与右子树指示向量通过秘密共享拆分为N个分片,并分发至所有参与方;
S2.10、每个参与方接收左子树指示向量与右子树指示向量的分片,重新计算自身拥有的左子树指示向量分片{SL}i与右子树指示向量分片{SR}i:
{SL}i={S}i⊙{SL}i
{SR}i={S}i⊙{SR}i
其中,⊙表示向量的同位置元素之间执行秘密共享乘法得到一个维度{S}i相同的向量,计算自身拥有的落入左子树样本的一阶梯度向量分片{GL}i与落入右子树样本的一阶梯度向量分片{GR}i:/
{GL}i={G}i⊙{SL}i
{GR}i={G}i⊙{SR}i
计算自身拥有的落入左子树样本的二阶梯度向量分片{HL}i与落入右子树样本的二阶梯度向量分片{HR}i:
{HL}i={H}i⊙{SL}i
{HR}i={H}i⊙{SR}i
S2.11、对于每个参与方i,设定{GL}i、{HL}i和{SL}i为构建左子树使用的一阶梯度向量分片、二阶梯度向量分片与指示向量分片,设定{GR}i、{HR}i和{SR}i为构建右子树使用的一阶梯度向量分片、二阶梯度向量分片与指示向量分片;
S2.12、当树的当前深度达到设定限度或符号变量不为1时,计算叶子节点权重值,对当前节点停止继续构建左右子树;
S2.13、设定深度循环递增条件,递归执行步骤S2.1至步骤S2.12,构建一棵XGBoost联合决策树模型;
所述步骤S2.3具体包括:
S2.3.1、所有参与方初始化记录区间一阶梯度和分片的相应维度矩阵{BG}i与记录区间二阶梯度和分片的相应维度矩阵{BH}i;
S2.3.2、对于拥有特征编号j,j=1,2,...,numfeature的参与方,利用S1.1所述特征编号映射,将j映射至参与方所拥有的自身特征map(j)中,统计该特征拥有的所有划分取值并记录取值的数量;
S2.3.3、参与方设置一个记录样本落入特征划分的多维矩阵Matrixindex,对于特征j,将其所有特征取值valk按从小到大顺序排列为valk,k=1,...,kj,设定leftk=valk-1且left1=-∞,rightk=valk,遍历k,取出第k个取值区间(leftk,rightk),初始化一个全0列向量S′,令参与方样本集中样本特征map(j)取值valuemap(j)满足leftk<valuemap(j)≤rightk的S′位置为1,记录Matrixindex[k,:]=S′T,待划分遍历结束后,通过秘密共享拆分为N个分片{Matrixindex}i,并分发至相应参与方;
S2.3.4、参与方i接收{Matrixindex}i,对第j号特征,遍历k直至最大取值区间数量,计算一阶梯度和分片与二阶梯度和分片:
{BG}i[j,k]=sum({Matrixindex}i[k,:]⊙{G}i)
{BH}i[j,k]=sum({Matrixindex}i[k,:]⊙{H}i)
其中,[k,:]表示选取矩阵的第k行所有元素,式中sum(v)表示对向量v的元素求和;
S2.3.5、遍历所有特征,执行步骤S2.3.2至S2.3.4,使所有参与方完成转置向量的一阶梯度和分片与二阶梯度和分片的计算;
所述步骤S2.7具体包括:
S2.7.1、每个参与方设定当前参与比对的初始划分索引列表向量col=[1,2,…,kmax],kmax为最大特征划分数量,记录col的长度为Rcol,设定初始各特征划分索引列表向量colselected;
S2.7.2、XGBoost算法中,对于特征位置[j,col[r]]与col[r]表示索引列表col中的第r个元素,[j,col[r]]表示矩阵的第j行的第col[r]个元素,/表示对/向下取整,遍历r,计算特征位置间的分裂增益差值为:
令:
nominator1col
=leftgainup[j,col[r]]*leftgaindown[j,col[r+1]]
-leftgainup[j,col[r+1]]*leftgaindown[j,col[r]]
nominator2col
=rightgainup[j,col[r]]*rightgaindown[j,col[r+1]]
-rightgainup[j,col[r+1]]*rightgaindown[j,col[r]]
denominator1col=leftgaindown[j,col[r]]*leftgaindown[j,col[r+1]]
denominator2col=rightgaindown[j,col[r]]*rightgaindown[j,col[r+1]]
则:
对于个元素,所有参与方i使用上述公式,计算S2.6中左右子树分裂增益分子与分母分片矩阵的特征j的所有划分位置差值结果分片:
/
S2.7.3、每个参与方i向协调方发送自身的隔位计算分片结果向量{nominator1col}i、{nominator2col}i、{denominator1col}i和{denominator2col}i,协调方搜集并分别计算向量其中对向量{v}i进行的运算/表示对所有{v}i分片的同位置元素求和为一个向量,对向量v与v2进行的运算v1\v2表示对两个向量的同位置元素作除法,即/
S2.7.4、初始化空列表new_col,顺序判断col_shared_value的第r个元素,r=1,2,...,若其非负,则将col[r*2]加入new_col中,否则将col[r*2+1]加入new_col中,遍历完毕后若col长度为奇数,将col最后一个元素添加至new_col,接下来协调方向所有参与方广播new_col,参与方令col=new_col;
S2.7.5、当col长度大于1时,迭代步骤S2.7.2至S2.7.4直到col的长度变为1,取出col中的唯一的元素col[0],并记录colselected[j]=col[0];
S2.7.6、遍历所有特征j,迭代步骤S2.7.1至S2.7.5,得到每一个特征的挑选划分位置,组合为完整的特征划分索引列表向量,设定当前参与比对的初始当前划分索引列表向量row=[1,2,…,numfeature],记录其长度为Rrow,numfeature为所有特征的数量;
S2.7.7、XGBoost算法中,对于特征位置[row[r],colselected[row[r]]]与其中row[r]表示索引列表row中的第r个元素,colselected[row[r]]表示colselected中以row[r]为索引位置的元素,表示对Rrow/2向下取整,遍历r,计算特征位置间的分裂增益差值为:/
令:
nominator1row
=leftgainup[row[r],colselected[row[r]]]
*leftgaindown[row[r+1],colselected[row[r+1]]]
-leftgainup[row[r+1],colselected[row[r+1]]]
*leftgaindown[row[r],colselected[row[r]]]
nominator2row
=rightgainup[row[r],colselected[row[r]]]
*rightgaindown[row[r+1],colselected[row[r+1]]]
-rightgainup[row[r+1],colselected[row[r+1]]]
*rightgaindown[row[r],colselected[row[r]]]
denominator1row
=leftgaindown[row[r],colselected[row[r]]]
*leftgaindown[row[r+1],colselected[row[r+1]]]
denominator2row
=rightgaindown[row[r],colselected[row[r]]]
*rightgaindown[row[r+1],colselected[row[r+1]]]
则:
对于个元素,使用上述公式,计算S2.6中左右子树分裂增益分子与分母分片矩阵的所有特征[1,2,…,numfeature]的相应的最好划分位置间差值结果分片,具体为:/
S2.7.8、每个参与方i向协调方发送自身的隔位计算结果向量{nominator1row}i、{nominator2row}i、{denominator1row}i、{denominator2row}i,协调方搜集并分别计算向量
S2.7.9、初始化空列表new_row,遍历row_shared_value,若其非负,则将row[r*2]加入new_row中,否则将row[r*2+1]加入new_row中,遍历完毕后若row长度为奇数,将row最后一个元素添加至new_row,接下来协调方向所有参与方广播new_row,参与方令row=new_row;
S2.7.10、当row长度大于1时,迭代步骤S2.7.6至S2.7.9直到row的长度变为1,取出row中的唯一元素row[0],参与方记录为jbest=row[0],并得到kbest=colselected[jbest],向所有参与方广播,以确定为挑选后的最好特征编号jbest与该特征最佳划分位置kbest;
所述步骤S2.8具体包括:
S2.8.1、计算最大分裂增益特征与取值区间中的分裂增益,具体为:
每个参与方i计算自身的分裂增益分子分片:
计算自身的分裂增益分母分片:
S2.8.2、剩余的参与方分别向第一参与方发送拥有的分裂增益分子分片,第一参与方搜集并计算,设定第一参与方符号,判定其正负号,令:
其中,sign1为第一参与方符号;
S2.8.3、所有参与方分别向协调方发送拥有的分裂增益分母分片,协调方搜集并计算,设定协调方符号,判定其正负号,令:
其中,sign0为协调方符号;
S2.8.4、第一参与方将第一参与方符号发送至协调方,协调方接收并计算总符号,将总符号向所有参与方广播,所有参与方接收该值为当前确立的符号变量;
所述步骤S2.12具体包括:
S2.12.1、每个参与方计算自己的二阶梯度分片和与正则项之和的一半:
其中,{SH}为二阶梯度分片,{λ}为正则项;
每个参与方计算自己的一阶梯度分片和:
{g′}i={SG}i
其中,{SG}为一阶梯度分片;
S2.12.2、每个参与方确定{h′}i的数量级位数,使得:
其中,μi为数量级位数;
S2.12.3、所有参与方向协调方发送相应的数量级位数,协调方接收并挑选最大的数量级位数为μm,确定迭代步长过程参数τ与迭代次数iter,发送给所有参与方;
S2.12.4、每个参与方i设定随机初值和初值为0的变量/从κ=1开始,按照如下公式进行迭代:
每迭代一次后设置κ=κ+1,当κ=iter时终止,参与方i记录计算结束后的权值分片
所述步骤S3具体包括:
S3.1、每个参与方对于数据样本,使用所持有部分特征,根据本地树模型进行叶子节点预测,其中对于每个树节点,根据其划分信息进行预测,设置未进入的分支子树全部叶子节点标志位为0,若划分信息非数据样本中拥有的特征,则沿着该树节点的所有左右子树进行预测,直到找到确定特征归属的叶节点,设置标志位为1,最终每个参与方得到该树预测特征产生所有叶子节点的标志位并按叶子节点的联合决策树结构顺序拼接为标志向量,同时按照相同顺序拼接多个叶子权重为结果向量;
S3.2、每个参与方将标志向量进行秘密共享拆分,发送给所有参与方;
S3.3、每个参与方接收到其他参与方发来的标志向量分片,计算所有向量分片的按位累乘向量分片,并计算该按位累乘向量分片与自身的权值分片的按位乘结果;
S3.4、每个参与方根据所述按位乘结果进行元素求和并将结果发送至第一参与方,第一参与方接收并计算预测结果;
S3.5、遍历所有数据样本,计算相应的预测结果组合而成的预测结果向量。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于同济大学,未经同济大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011452494.9/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种舵机的耐久性试验方法
- 下一篇:建筑管材施工检测装置
- 同类专利
- 专利分类
G06Q 专门适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法;其他类目不包含的专门适用于行政、商业、金融、管理、监督或预测目的的处理系统或方法
G06Q10-00 行政;管理
G06Q10-02 .预定,例如用于门票、服务或事件的
G06Q10-04 .预测或优化,例如线性规划、“旅行商问题”或“下料问题”
G06Q10-06 .资源、工作流、人员或项目管理,例如组织、规划、调度或分配时间、人员或机器资源;企业规划;组织模型
G06Q10-08 .物流,例如仓储、装货、配送或运输;存货或库存管理,例如订货、采购或平衡订单
G06Q10-10 .办公自动化,例如电子邮件或群件的计算机辅助管理
- 数据显示系统、数据中继设备、数据中继方法、数据系统、接收设备和数据读取方法
- 数据记录方法、数据记录装置、数据记录媒体、数据重播方法和数据重播装置
- 数据发送方法、数据发送系统、数据发送装置以及数据结构
- 数据显示系统、数据中继设备、数据中继方法及数据系统
- 数据嵌入装置、数据嵌入方法、数据提取装置及数据提取方法
- 数据管理装置、数据编辑装置、数据阅览装置、数据管理方法、数据编辑方法以及数据阅览方法
- 数据发送和数据接收设备、数据发送和数据接收方法
- 数据发送装置、数据接收装置、数据收发系统、数据发送方法、数据接收方法和数据收发方法
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置
- 数据发送方法、数据再现方法、数据发送装置及数据再现装置