基于联邦学习系统的决策树构建方法、装置及电子设备
技术领域
本申请涉及人工智能技术,尤其涉及一种基于联邦学习系统的决策树构建方法、装置、电子设备、存储介质及计算机程序产品。
背景技术
在人工智能的联邦学习领域,是通过数据提供方和数据使用方共同训练一个模型,然后各数据使用方基于各自的模型来进行相应的预测,在目前各行各业逐渐加强数据隐私保护的大趋势下,联邦学习,一种可以在保护数据隐私的情况下协同多方数据建立机器学习的技术,成为了各企业/行业间合作的关键之一。如今,联邦梯树模型:梯度提升树,随机森林,分类决策树,已经广泛地在纵向联邦场景下,成为了金融、风控领域的常用且强力的算法之一,在该领域,分类任务使用最为频繁。
然而,在纵向树模型中,guest方(即有标签的主动方)需要对梯度或者标签统计值进行加密,传输,host方(即没有标签的参与方)需要接受同态加密密文,然后进行计算,再返回分裂点,分裂点中包含加密的构建结果,而guest方需要根据这一构建结果进一步的计算出最优分裂点。现实场景下,guest方对标签的同态加密,host方对密文的计算,公网的传输的时间消耗是很高的,因此联邦纵向树在实际应用中,加密计算,密文计算和通信时间会有很大的一部分占比。
发明内容
本申请实施例提供一种基于联邦学习系统的决策树构建方法、装置、电子设备、计算机可读存储介质及计算机程序产品,能够有效减少决策树构建过程中的数据传输量与处理量,从而降低了传输开销,提升了决策树的构建效率。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种基于联邦学习系统的决策树构建方法,所述联邦学习系统包括具有标签信息的第一参与方设备,以及至少一个第二参与方设备,所述方法应用于第一参与方设备,包括:
获取训练样本和待构建的决策树的类型,并基于所述训练样本及所述类型,确定用于构建所述决策树的分裂点的参考数据;
对所述参考数据进行压缩处理得到第一压缩数据,并将所述第一压缩数据发送至第二参与方设备;
接收第二参与方设备发送的分裂点数据,所述分裂点数据为,所述第二参与方设备基于所述第一压缩数据,进行对应所述决策树的分裂点构建所得到;
基于所述分裂点数据,确定所述决策树的全局分裂点,并基于所述全局分裂点,构建所述决策树。
本申请实施例提供一种基于联邦学习系统的决策树构建装置,包括:
获取模块,用于获取训练样本和待构建的决策树的类型,并基于所述训练样本及所述类型,确定用于构建所述决策树的分裂点的参考数据;
压缩模块,用于对所述参考数据进行压缩处理得到第一压缩数据,并将所述第一压缩数据发送至第二参与方设备;
接收模块,用于接收第二参与方设备发送的分裂点数据,所述分裂点数据为,所述第二参与方设备基于所述第一压缩数据,进行对应所述决策树的分裂点构建所得到;
构建模块,用于基于所述分裂点数据,确定所述决策树的全局分裂点,并基于所述全局分裂点,构建所述决策树。
上述方案中,所述压缩模块,还用于基于所述决策树的类型,确定相应的压缩控制参数,所述压缩控制参数包括以下至少之一:同态最大整数位数、浮点数定点化精度、标签个数以及样本数;基于所述压缩控制参数及所述参考数据的位长,确定压缩参数;基于压缩参数,对所述参考数据进行压缩处理,得到第一压缩数据。
上述方案中,当所述决策树为梯度提升决策树时,所述参考数据为样本梯度,所述压缩控制参数包括所述同态最大整数位数、所述浮点数定点化精度以及所述样本数,所述压缩模块,还用于基于所述浮点数定点化精度,对所述样本梯度进行定点化处理,得到所述样本梯度对应的定点化整数,并基于所述样本数与所述定点化整数,确定对应所述样本梯度的占位;将所述样本梯度的占位进行求和处理,确定压缩总占位;将所述同态最大整数位数与所述压缩总占位进行整数除法处理,确定密文压缩量;将所述样本梯度的占位、所述压缩总占位以及所述密文压缩量作为所述压缩参数。
上述方案中,当所述决策树为分类决策树时,所述参考数据为样本标签,所述压缩控制参数包括所述同态最大整数位数、所述标签个数以及所述样本数,所述压缩模块,还用于基于所述样本标签,确定标签占位;将所述样本数的位长与标签个数进行求积处理,确定压缩总占位;将所述同态最大整数位数与所述压缩总占进行整数除法处理,确定密文压缩量;将所述标签占位、所述压缩总占位以及所述密文压缩量作为所述压缩参数。
上述方案中,所述压缩模块,还用于对所述第一压缩数据进行同态加密,发送同态加密后的第一压缩数据至第二参与方设备,以使所述第二参与方设备基于同态加密后的第一压缩数据,进行对应所述决策树的分裂点构建,得到所述分裂点数据。
上述方案中,所述分裂点数据为,所述第二参与方设备基于所述第一压缩数据,构建所述决策树的分裂点得到分裂点构建结果,并对所述分裂点构建结果进行压缩处理得到,所述构建模块,还用于对所述分裂点数据进行解压处理,得到所述分裂点构建结果;结合所述分裂点构建结果及所述训练样本,确定所述决策树的全局分裂点。
上述方案中,所述构建模块,还用于基于所述训练样本,对所述决策树的分裂点进行遍历,以确定第一分裂点;基于所述训练样本以及所述分裂点构建结果,对所述决策树中的分裂点进行遍历,以确定第二分裂点;将所述第一分裂点以及所述第二分裂点进行对比,以确定所述决策树的全局分裂点。
上述方案中,所述构建模块,还用于获取所述训练样本的标签;基于所述训练样本的标签与所述参考数据,对所述决策树的分裂点进行遍历,确定对应所述第一参与方设备的第一特征分裂增益直方图;其中,所述第一特征分裂增益直方图,用于确定所述第一特征分裂增益直方图中的最大增益分裂点;基于所述第一特征分裂增益直方图,确定所述决策树的分裂点的增益值,并选取增益值最大的分裂点作为所述第一分裂点;获取所述训练样本的标签;基于所述训练样本的标签与所述分裂点构建结果,对所述决策树的分裂点进行遍历,确定对应所述第二参与方设备的第二特征分裂增益直方图;其中,所述第二特征分裂增益直方图用于基于预设增益计算公式确定所述第二特征分裂增益直方图中的最大增益分裂点;基于所述第二特征分裂增益直方图,确定所述决策树的分裂点的增益值,并选取增益值最大的分裂点作为所述第二分裂点。
上述方案中,所述构建模块,还用于分别获取所述第一分裂点的增益值以及所述第二分裂点的增益值;比较所述第一分裂点的增益值以及所述第二分裂点的增益值,并选取较大增益值所对应的分裂点作为所述决策树的全局分裂点。
上述方案中,所述构建模块,还用于获取所述全局分裂点的特征值和特征编码;确定对应所述特征编码的特征,并结合所述特征及所述特征值确定特征分裂方式;基于所述特征分裂方式,构建所述决策树。
上述方案中,所述构建模块,还用于当所述全局分裂点归属于所述第一参与方设备时,获取所述全局分裂点对应的分裂点编码,并基于所述分裂点编码确定所述全局分裂点的特征值和特征编码;当所述全局分裂点属于所述第二参与方设备时,向所述第二参与方设备发送所述全局分裂点对应的分裂点编码,并接收所述第二参与方设备基于所述分裂点编码返回的特征值和特征编码。
本申请实施例提供一种电子设备,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现本申请实施例提供的基于联邦学习系统的决策树构建方法。
本申请实施例提供一种计算机可读存储介质,存储有可执行指令,用于引起处理器执行时,实现本申请实施例提供的基于联邦学习系统的决策树构建方法。
本申请实施例提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本申请实施例提供的基于联邦学习系统的决策树构建方法。
本申请实施例具有以下有益效果:
与现有的构建决策树的过程相比,本申请根据待构建的决策树的类型对基于训练样本得到的参考数据进行压缩处理,得到第一压缩数据,再通过第一压缩数据,确定相应的分裂点数据,从而确定决策树的全局分裂点,进而构建决策树。这样,通过对中间传输数据的压缩,能够有效减少决策树构建过程中的数据传输量与处理量,从而降低了传输开销,提升了决策树的构建效率。
附图说明
图1是本申请实施例提供的基于联邦学习系统的决策树构建方法的实施场景示意图;
图2是本申请实施例提供的电子设备的结构示意图;
图3是本申请实施例提供的基于联邦学习系统的决策树构建方法的流程示意图;
图4是本申请实施例提供的数据压缩方法的一个可选的流程示意图;
图5是本申请实施例提供的遍历决策树过程的一个可选的示意图;
图6A是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图;
图6B是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图;
图7A是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图;
图7B是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图;
图8是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图;
图9是本申请实施例提供的基于联邦学习系统的决策树构建方法的流程示意图;
图10是本申请实施例提供的基于联邦学习系统的决策树构建方法的流程示意图;
图11是本申请实施例提供的基于联邦学习系统的四分类决策树的压缩流程示意图;
图12是本申请实施例提供的基于联邦学习系统的梯度提升决策树的压缩流程示意图;
图13是本申请实施例提供的基于联邦学习系统的决策树的构建装置的一个可选的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
在以下的描述中,所涉及的术语“第一\第二\第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一\第二\第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)决策树(Decision Tree)是一种机器学习的方法,它具体是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。
2)联邦机器学习(Federated machine learning/Federated Learning),又名联邦学习,联合学习,联盟学习。联邦机器学习是一个机器学习框架,能有效帮助多个机构在满足用户隐私保护、数据安全和政府法规的要求下,进行数据使用和机器学习建模。联邦学习作为分布式的机器学习范式,可以有效解决数据孤岛问题,让参与方在不共享数据的基础上联合建模,能从技术上打破数据孤岛,实现协作智能。
联邦学习(Federated Learning,a.k.a.Federated Machine Learning)可以分为三类:横向联邦学习(Horizontal Federated Learning),纵向联邦学习(VerticalFederated Learning),联邦迁移学习(Federated Transfer Learning)。
其中,横向联邦学习也称为特征对齐的联邦学习(Feature-Aligned FederatedLearning),即横向联邦学习的参与者的数据特征是对齐的,适用于参与者的数据特征重叠较多,而样本标识(ID,Identity document)重叠较少的情况。纵向联邦学习也称为样本对齐的联邦学习(Sample-Aligned Federated Learning),即纵向联邦学习的参与者的训练样本是对齐的,适用于参与者训练样本ID重叠较多,而数据特征重叠较少的情况。
3)同态加密(HE,Homomorphic Encryption)是一种对称加密算法,由IBM的CraigGentry在2009年提出。同态加密的目的是找到一种加密算法,这种加密算法能够在密文上执行加法、乘法运算,使得对加密后的密文进行某种操作所得到的结果,恰好等于对加密前的明文进行预期操作后再加密得到的密文。同态加密有效保证了数据处理方可以直接对数据的密文进行相应的处理,而无法获知其所处理的数据明文信息。同态加密的这一特性使用户的数据和隐私可以得到相应的安全保障,因此,同态加密被应用于许多现实场景来保证数据的安全。
如果一个加密函数同时满足加法同态和乘法同态,称为全同态加密。使用这个加密函数可以完成各种加密后的运算(加减乘除、多项式求值、指数、对数、三角函数等)。
本申请实施例中的基于联邦学习系统的决策树可应用于风控管理,如通过构建得到的决策树实现对用户的信用为守信或不守信的二分类预测,进而结合预测结果执行针对该用户的风险控制(如放贷或不放贷);再如,通过构建得到的决策树实现对项目的风险程度进行预测打分,进而结合预测结果执行针对该项目的风险控制(实施或不实施)。
基于上述对本申请实施例中涉及的名词和术语的解释,下面说明本申请实施例提供的基于联邦学习系统的决策树构建方法的实施场景,参见图1,图1是本申请实施例提供的基于联邦学习系统的决策树构建方法的实施场景示意图,为实现支撑一个示例性应用,第一参与方设备200-1通过网络300连接第二参与方设备200-2,其中,第一参与方设备200-1可以是存储有用户标签信息的主动方设备,例如可以是银行,第二参与方设备200-2可以是存储有用户特征数据的被动方设备,例如可以是商场或超市,第一参与方设备200-1和第二参与方设备200-2互相协助进行联邦学习以使第一参与方设备200-1得到决策树,网络300可以是广域网或者局域网,又或者是二者的组合,使用无线或有线链路实现数据传输。
第一参与方设备(包括第一参与方设备200-1),用于获取训练样本和待构建的决策树的类型,并基于所述训练样本及所述类型,确定用于构建所述决策树的分裂点的参考数据;对所述参考数据进行压缩处理得到第一压缩数据,并将所述第一压缩数据发送至第二参与方设备;
第二参与方设备(包括第二参与方设备200-2),用于获取第一参与方设备发送的第一压缩数据;基于所述第一压缩数据,进行对应所述决策树的分裂点构建所得到分裂点数据;将分裂点数据发送至第一参与方设备。
第一参与方设备(包括第一参与方设备200-1),还用于接收第二参与方设备发送的分裂点数据;基于所述分裂点数据,确定所述决策树的全局分裂点,并基于所述全局分裂点,构建所述决策树。
在实际应用中,构建得到的基于联邦学习系统的决策树可以应用于风控管理,如可基于目标用户的用户特征数据,通过该决策树对用户的信用预测,得到目标用户是否守信用的评估结果,进而得到目标用户的信用高低,以结合预测得到的用户的信用执行针对该用户的风险控制。
在实际应用中,第一参与方设备200-1和第二参与方设备200-2可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。第一参与方设备200-1和第二参与方设备200-2同样可以是智能手机、平板电脑、笔记本电脑、台式计算机、智能音箱、智能手表等,但并不局限于此。第一参与方设备200-1和第二参与方设备200-2可以通过有线或无线通信方式进行直接或间接地连接,本申请在此不做限制。
下面对本申请实施例提供的实施基于联邦学习系统的决策树构建方法的电子设备的硬件结构做详细说明,电子设备包括但不限于服务器或终端。参见图2,图2是本申请实施例提供的电子设备的结构示意图,图2所示的电子设备200包括:至少一个处理器210、存储器250、至少一个网络接口220和用户接口230。电子设备200中的各个组件通过总线系统240耦合在一起。可以理解的是,总线系统240用于实现这些组件之间的连接通信。总线系统240除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图2中将各种总线都标为总线系统240。
处理器210可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口230包括使得能够呈现媒体内容的一个或多个输出装置231,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口230还包括一个或多个输入装置232,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器250可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器250可选地包括在物理位置上远离处理器210的一个或多个存储设备。
存储器250包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器250旨在包括任意适合类型的存储器。
在一些实施例中,存储器250能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统251,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块252,用于经由一个或多个(有线或无线)网络接口220到达其他计算设备,示例性的网络接口220包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
输入处理模块253,用于对一个或多个来自一个或多个输入装置232之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的基于联邦学习系统的决策树的构建装置可以采用软件方式实现,图2示出了存储在存储器250中基于联邦学习系统的决策树的构建装置254,其可以是程序和插件等形式的软件,包括以下软件模块:获取模块2541、压缩模块2542、接收模块2543,和构建模块2544,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分,将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的基于联邦学习系统的决策树的构建装置可以采用软硬件结合的方式实现,作为示例,本申请实施例提供的基于联邦学习系统的决策树的构建装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的基于联邦学习系统的决策树构建方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,Complex Programmable Logic Device)、现场可编程门阵列(FPGA,Field-ProgrammableGate Array)或其他电子元件。
基于上述对本申请实施例的基于联邦学习系统的决策树构建方法的实施场景及电子设备的说明,下面说明本申请实施例提供的基于联邦学习系统的决策树构建方法。参见图3,图3是本申请实施例提供的基于联邦学习系统的决策树构建方法的流程示意图,本申请实施例提供的基于联邦学习系统的决策树构建方法包括:
步骤101,第一参与方设备获取训练样本和待构建的决策树的类型,并基于训练样本及所述类型,确定用于构建决策树的分裂点的参考数据。
这里,训练样本可以为第一参与方设备与第二参与方设备所共有的用户,第一参与方设备作为训练样本的标签持有方与特征提供方,第二参与方设备仅作为训练样本的特征提供方。
示例性地,当待构建的决策树应用于风控管理或风控预测时,该训练样本的标签可以为标识用户守信或不守信的二分类标签,还可以为标识用户忠诚度高或低的二分类标签,亦或是用于评估用户是否为优质客户的二分类标签。这里,第一参与方为对用户进行信用评估的平台,例如可以为金融贷款平台(如银行),第二参与方可以为持有用户的特征数据的平台,例如多种类型的消费平台(例如,商场、超市、网购平台、游戏平台、手机应用商店等)、或者互联网公司等。其中,用户的特征数据可以包括但不限于用户的基础信息、业务数据、行为数据及设备信息等。基础信息包括但不限于用户的姓名、性别、年龄、学历、职业、手机号、身份证号、地址、收入数据(例如,年薪、月薪)等。业务数据包括多个业务场景下的数据,例如业务场景为贷款业务,业务数据则包括贷款数据及还款数据等,贷款数据包括贷款金额、贷款时间及贷款机构(例如,xx银行)等,还款数据包括还款金额、还款时间、还款机构及逾期还款数据(例如,逾期次数及逾期天数)等;例如业务场景为消费场景,业务数据则包括消费用途(例如,教育消费、购物消费、医疗消费、生活消费等)、消费金额、消费时间、消费机构(例如,商场、超市、便利店、网购店铺等)、消费方式(例如,信用卡消费或储蓄卡消费等)及消费时用户所处的地址等。行为数据例如可以是用户常用的支付机构(例如,微信支付、银行卡支付等)、用户常用的支付方式(例如,二维码支付方式、刷卡支付方式)及操作频率(例如,一段时间内实施支付操作的频率)等。设备信息包括用户常用设备的型号、实施用户行为时设备所处的地址等。
需要说明的是,本申请实施例在利用训练样本进行模型训练之前,还对训练样本的数据进行特征分箱,例如将年龄这一特征分箱为小于30岁,30-50岁,大于50岁等。通过特征分箱训练得到的模型的可解释性更强。
这里,待构建的决策树的类型包括梯度提升决策树、分类决策树以及随机森林等。
在实际实施时,当待构建的决策树为分类决策树时,获取特征分箱数据对应的数据标签;基于数据标签构建标签向量,示例性地,如果标签只有两个类别,则为每个样本生成一个一维向量,如果为正类,则为[1];如果为负类,则为[0];如果标签有多个类别,则生成一个多维的独热码向量,比如,有四个类别,如果标签为1、2、3、4,则对应生成向量[1,0,0,0]、[0,1,0,0]、[0,0,1,0]、[0,0,0,1];基于构建得到的标签向量确定标签向量集合,以将标签向量集合作为参考数据。
在实际实施时,当待构建的决策树为梯度提升决策树时,获取特征分箱数据对应的数据标签以及残差;基于数据标签以及残差构建样本梯度即一阶梯度和二阶梯度,示例性地,一共有t代树需要构建,这里t为大于等于1的正整数。其中,每一棵决策树的高度相同,第一参与方设备统计标签的数目,并根据本地的标签和前t-1代树的残差计算一阶梯度g与二阶梯度h;基于构建得到的一阶梯度和二阶梯度确定一阶梯度集合和二阶梯度集合,以将一阶梯度集合和二阶梯度集合作为参考数据。
需要说明的是,由于随机森林分类为分类决策树的组合,区别在于每棵树加入了行/列采样,其余构建过程与分类决策树一致,最终预测结果由所有的树的综合,因此对于随机森林分类的构建及应用过程可参考分类决策树,本申请对此不做赘述。
步骤102,对参考数据进行压缩处理得到第一压缩数据,并将第一压缩数据发送至第二参与方设备。
这里,对于对参考数据进行压缩处理得到第一压缩数据的处理过程参见图4,图4是本申请实施例提供的数据压缩方法的一个可选的流程示意图,基于图3,步骤102可以通过如下方式实现:
步骤1021,第一参与方设备基于决策树的类型,确定相应的压缩控制参数。
这里,压缩控制参数通过压缩规划模块确定,压缩控制参数包括以下至少之一:同态最大整数位数、浮点数定点化精度、标签个数以及样本数。
在实际实施时,当决策树为分类决策树时,相应的压缩控制参数包括同态最大整数位数、标签个数以及样本数;当决策树为梯度提升决策树时,相应的压缩控制参数包括同态最大整数位数、浮点数定点化精度以及样本数。
步骤1022,基于压缩控制参数及参考数据的位长,确定压缩参数。
在实际实施时,当决策树为分类决策树时,首先基于样本标签,确定标签占位;然后将样本数的位长与标签个数进行求积处理,确定压缩总占位;接着将同态最大整数位数与压缩总占进行整数除法处理,确定密文压缩量;最后将标签占位、压缩总占位以及密文压缩量作为压缩参数。
示例性地,第一参与方设备通过压缩规划模块读入压缩控制参数,确定同态最大整数位数、标签个数以及样本数,然后基于样本标签,确定单个标签所占位数即标签占位,然后基于标签个数和样本数的位长,确定明文压缩结果即压缩总占位为样本数的位长*标签个数,接着基于同态最大整数位数和压缩总占位,确定密文压缩量为同态最大整数位数//总占位。
需要说明的是,因为在决策树情况下,处理后的标签为0或者1,所以直方图统计加和的结果必然小于1*样本数,所以我们可以把一条样本的标签向量压缩为一个整数,由此可以计算出压缩后的明文所占的位数与密文压缩时的压缩量。
在实际实施时,当决策树为梯度提升决策树时,首先基于浮点数定点化精度,对样本梯度进行定点化处理,得到样本梯度对应的定点化整数;再将样本数与定点化整数进行求积处理,确定对应样本梯度的占位;然后将样本梯度的占位进行求和处理,确定压缩总占位;接着将同态最大整数位数与压缩总占位进行整数除法处理,确定密文压缩量;最后将样本梯度的占位、压缩总占位以及密文压缩量作为压缩参数。
示例性地,第一参与方设备通过压缩规划模块读入压缩控制参数,确定同态最大整数位数、浮点数定点化精度以及样本数,再基于样本梯度,确定样本对应的一阶梯度g和二阶梯度h,以对一阶梯度g和二阶梯度h进行定点化处理,得到一阶梯度g和二阶梯度h分别对应的定点化整数,即一阶梯度g整数=int(g*2^(定点化精度)),二阶梯度h整数=int(h*2^(定点化精度)),而二阶梯度h本身在[0,1]之间,所以不需要做定点化。然后考虑一阶梯度g整数,二阶梯度h整数部分相加结果的最大值,以确保位数不会溢出,将样本数与定点化整数进行求积处理,确定对应样本梯度的占位即一阶梯度g占位=位数(int(g_max*2^(定点化精度))*样本数),二阶梯度h占位=位数(int(h_max*2^(定点化精度))*样本数),再基于一阶梯度g占位和二阶梯度h占位,确定压缩总占位即一阶梯度g占位与二阶梯度h占位之和,接着基于同态最大整数位数和压缩总占位,确定密文压缩量为同态最大整数位数与总占位做整数除法的结果。
这里,若总占位小于同态最大整数位数,则算法可以继续,否则算法停止,告知位数不足。
需要说明的是,因为一阶梯度g是有可能为负数的,如果明文打包后的整数是负数,那通过加法和乘法的密文压缩就不能得到正确的结果,因此,在对一阶梯度g进行定点化处理之前,为了使梯度提升决策树的密文压缩操作正确执行,一阶梯度g要偏移为正数。具体地,分类任务中的一阶梯度g在[-1,1]之间,因此需要先将g加1,从而偏移至[0,2]之间。
这里,在得到压缩参数之后,第一参与方设备保存压缩参数同时将压缩参数发送至第二参与方设备。
步骤1023,基于压缩参数,对参考数据进行压缩处理,得到第一压缩数据。
在一些实施例中,当待构建的决策树为分类决策树时,第一参与方设备调用明文压缩模块,按照单个标签占位,压缩总占位,将每个样本的标签向量压缩为一个大整数即第一压缩数据,示例性地,假设这里的标签向量为[0,0,0,1],则以一个80位的整数表示样本标签,即将标签向量中的0和1分别以20位的整数表示,这样,将标签向量压缩成一个80位的大整数。
在另一些实施例中,当待构建的决策树为梯度提升决策树时,第一参与方设备调用明文压缩模块,基于步骤1022中对一阶梯度和二阶梯度进行定点化后得到的整数,将对应一阶梯度的整数向左移动对应二阶梯度的整数的位长,得到一个位移整数,位移整数加上对应二阶梯度的整数,得到打包后的明文压缩梯度即第一压缩数据,示例性地,假设这里的定点化后的一阶梯度g为位长74位的整数,而定点化后的二阶梯度h为位长73位的整数,将对应一阶梯度的g整数向左移动73个位长,再加上对应二阶梯度的位长73位的h整数,即得到一个147位的压缩梯度g_h。
这里,以梯度提升决策树为例,样本1的g1为0.023,h1为0.01,样本2的g2为0.01,h2为0.01,定点化为整数后得到g1=23,h1=10,g2=10,h2=10,压缩得到g_h1=2310,g_h2=1010,则压缩梯度为2310和1010。
如此,通过压缩第一参与方设备与第二参与方设备交互过程中的传输数据,减少了第一参与方设备发送至第二参与方的数据量,降低了数据传输的开销,同时以减少了后续同态加密的数据加密量,提高了数据的处理效率。
在一些实施例中,在得到第一压缩数据之后,第一参与方设备对第一压缩数据进行同态加密,发送同态加密后的第一压缩数据至第二参与方设备,以使第二参与方设备基于同态加密后的第一压缩数据,进行对应决策树的分裂点构建,得到分裂点数据,如此,通过对第一压缩数据的加密操作,以实现隐私保护,提高了数据传输过程的安全性。
步骤103,接收第二参与方设备发送的分裂点数据。
这里,分裂点数据为,第二参与方设备基于第一压缩数据,进行对应决策树的分裂点构建所得到。
在一些实施例中,基于图3,步骤103还可以通过如下方式实现:第一参与方设备接收第二参与方设备发送的分裂点数据,分裂点数据为,第二参与方设备基于第一压缩数据,构建决策树的分裂点得到分裂点构建结果,并对分裂点构建结果进行压缩处理得到。
在实际实施时,第二参与方设备在接收到第一参与方设备发送的第一压缩数据后,基于第一压缩数据,对决策树的分裂点进行遍历,示例性地,参见图5,图5是本申请实施例提供的遍历决策树过程的一个可选的示意图。假设样本数据为(32岁,本科),第二参与方设备则根据该样本数据遍历图5示出的决策树后,得到标识为A34的分类结果。
作为一个示例,当待构建决策树为二分类决策树时,参见图6A,图6A是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图,示例性地,决策树的分裂点分别为年龄和学历,标签用于指示用户的信用高低,通过对5个训练样本进行分类预测,基于第一压缩参数,第二参与方设备对5个样本的年龄与学历进行遍历,确定分裂点构建结果,如对年龄按照20分类、学历按照本科分类对应的构建结果,或者年龄按照30分类、学历按照硕士分类对应的构建结果。
作为一个示例,当待构建树为二分类梯度提升决策树时,参见图7A,图7A是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图,示例性地,决策树的分裂点分别为年龄和学历,标签用于指示用户的信用高低,通过对5个训练样本进行分类预测,基于第一压缩参数,第二参与方设备对5个样本的年龄与学历进行遍历,确定分裂点构建结果,如对年龄按照20分类、学历按照本科分类对应的构建结果,或者年龄按照30分类、学历按照硕士分类对应的构建结果。
在一些实施例中,第二参与方设备在基于第一压缩数据得到分裂点构建结果后,第二参与方设备调用密文压缩模块,基于接收的压缩参数对分裂点构建结果进行压缩得到大加密整数。
在实际实施时,这里的压缩参数包括总占位和密文压缩量,调用密文压缩模块,对加密的分裂点构建结果进行压缩,具体为,假设共有n个分裂点构建结果,密文压缩量为k,从n中循环不放回地取出k个加密的分裂点构建结果,如果不满k个,取出剩余的所有分裂点,将每一次循环中第一个取出的加密的分裂点构建结果作为第一个汇总结果,从第二个加密的分裂点构建结果开始,到第k个,最终汇总结果=(第(k-1)个汇总结果*2^总占位)+第k个加密的分裂点构建结果,保存最终汇总结果,如果n个分裂点已经处理完,跳出循环;处理完所有的汇总结果,得到多个最终汇总结果。这里,每一个汇总结果即为一个大加密整数。
接上述示例,在接收到密文[[2310]]和[[1010]]后,可以通过计算[[2310]]*10000+[[1010]]=[[23101010]]压缩为一个密文。
在实际实施时,得到多个最终汇总结果后,将多个最终汇总结果发送至第一参与方设备。需要说明的是,还可以将多个最终汇总结果制成压缩密文列表,以将压缩密文列表发送至第一参与方设备,这里,对于将最终汇总结果发送至第一参与方设备的方式,本申请对此不作限制。
步骤104,基于分裂点数据,确定决策树的全局分裂点,并基于全局分裂点,构建决策树。
在实际实施时,第一参与方设备在接收到第二参与方设备发送的分裂点数据后,对分裂点数据进行解压处理,得到分裂点的构建结果;然后结合分裂点构建结果及训练样本,确定决策树的全局分裂点。
这里,对于对分裂点数据进行解压处理,得到分裂点构建结果的过程,接下来进行详细介绍:
需要说明的是,在对分裂点数据进行解压处理之前,需要对分裂点数据进行解密处理,即对多个汇总结果即多个大加密整数进行解密,得到大整数,然后再使用解压模块对大整数进行拆解,得到为分裂点构建结果,具体地,
for i=0;i<密文压缩量;i++;
掩码=2^总占位-1;
统计结果=明文&掩码;
明文向右移动总占位个位长;
保存统计结果;
这里,统计结果即为构建结果,在每一次遍历的时候,执行以下处理,确定掩码=2^总占位-1,接着确定统计结果=明文&掩码,这里,明文即是解密得到的大整数,然后将明文向右移动总占位个位长,得到分裂点构建结果并保存。
需要说明的是,上述解压过程是对第二参与方设备压缩过程的解压处理,接下来,将对第一参与方设备的压缩过程的解压处理进行说明:
当待构建决策树为分类决策树时,第一参与方设备按照单个标签所占位数对多个分裂点构建结果进行拆解,得到最终的构建结果。示例性地,当样本为1000(二进制位长为10),标签类别数为4,分裂点构建结果的位长为40,一个40位整数的第一个10位所代表的整数为400,第一个10位所代表的整数200,第三个10位所代表的整数100,第四个10位所代表的整数300,此时,对于该分裂点,对应标签向量[1,0,0,0]、[0,1,0,0]、[0,0,1,0]、[0,0,0,1]的样本数分别为400、200、100、300。
当待构建决策树为梯度提升决策树时,第一参与方设备对多个分裂点构建结果进行浮点化,得到偏移后的一阶梯度g的和以及二阶梯度h的和,示例性地,对于每个构建结果,将构建结果向右移动二阶梯度h占位个位长,得到一阶梯度g的整数构建结果,然后将构建结果&(2^h占位-1),得到二阶梯度h的整数构建结果,接着将一阶梯度g的构建结果除以2^(精度位),得到一阶梯度g的构建结果,最后将二阶梯度h的构建结果除以2^(精度位),得到二阶梯度h的构建结果,这样就得到了一阶梯度g的构建结果和二阶梯度h的构建结果,即偏移后的一阶梯度g的和以及二阶梯度h的和。然后第一参与方设备基于样本数对偏移后的一阶梯度g的和进行还原,具体地,确定分裂点构建结果的样本数目,将g的构建结果减去(1*该分裂点构建结果的样本数目),这样就抵消了偏移。这样,就得到了最终的构建结果。
在一些实施例中,在得到最终的构建结果后,结合最终的构建结果及训练样本,确定决策树的全局分裂点。
这里,结合最终的构建结果及训练样本,确定决策树的全局分裂点的过程可以是第一参与方设备基于训练样本,对所述决策树的分裂点进行遍历,以确定第一分裂点,同时第一参与方设备基于训练样本以及分裂点构建结果,对决策树中的分裂点进行遍历,以确定第二分裂点;这里,第一分裂点是第一参与方设备处最优分裂点,第二分裂点为第二参与方设备处最优分裂点;将第一分裂点以及第二分裂点进行对比,以确定决策树的全局分裂点。
在实际实施时,基于训练样本,对决策树的分裂点进行遍历,以确定第一分裂点的过程可以是获取训练样本的标签;基于训练样本的标签与参考数据,对决策树的分裂点进行遍历,确定对应第一参与方设备的第一特征分裂增益直方图;其中,第一特征分裂增益直方图用于确定第一特征分裂增益直方图中的最大增益分裂点;基于第一特征分裂增益直方图,确定决策树的分裂点的增益值,并选取增益值最大的分裂点作为第一分裂点。
在实际实施时,基于训练样本以及分裂点构建结果,对决策树中的分裂点进行遍历,以确定第二分裂点的过程可以是获取训练样本的标签;基于训练样本的标签与所述分裂点构建结果,对决策树的分裂点进行遍历,确定对应第二参与方设备的第二特征分裂增益直方图;其中,第二特征分裂增益直方图用于确定第二特征分裂增益直方图中的最大增益分裂点;基于第二特征分裂增益直方图,确定决策树的分裂点的增益值,并选取增益值最大的分裂点作为第二分裂点。
这里,确定第一特征分裂增益直方图和第二特征分裂增益直方图中的最大增益分裂点的过程可以是基于预设增益公式,来确定第一特征分裂增益直方图和第二特征分裂增益直方图中的最大增益分裂点。
需要说明的是,当待构建决策树为分类决策树时,这里的预设增益公式可以是计算信息增益、信息熵、基尼指数、信息增益率等的公式,示例性地,当预设增益公式为计算基尼指数的公式时:
其中,这里的D为数据集,Pk为假设有K个类,样本点数属于第K类的概率,示例性地,对于按照特征A将D划分为D1和D2,则
这里需要说明的是基于不同公式的属性,确定最大增益分裂点的方式不同,如对于信息熵和基尼指数,计算得到的结果越小,对应分裂点的增益值就越大,而对于信息增益和信息增益率,计算得到的结果越大,对应分裂点的增益值就越大。
接上述示例,参见图6B,图6B是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图,这里当5个训练样本分别为样本1(19岁本科信用高),样本2(18岁本科信用高),样本3(21岁高中信用低),样本4(29岁硕士信用高)以及样本5(34岁硕士信用低),代入数据至公式(2)可得:
这样,通过比较基尼指数,基尼指数越小,对应分裂点的增益值就越大,即可得到增益值最大的分裂点,即年龄按照30分类对应的分裂点、学历按照本科分类对应的分裂点。
在另一些实施例中,当待构建决策树为梯度提升决策树时,这里的预设增益公式为:
其中,M为计算增益,所述GL为分裂点左侧样本的一阶梯度之和,GR为分裂点右侧样本的一阶梯度之和,所述HL为分裂点左侧样本的二阶梯度之和,HR为分裂点右侧样本的二阶梯度之和,G为分裂点样本的一阶梯度之和,H为分裂点样本的二阶梯度之和,λ为调整参数,用于调整所述增益的取值范围,所以,在进行计算时,需要说明的是,训练样本的样本数据是存在取值范围的,且在取值范围内存在多个可分裂点,基于每一个可分裂点,均可分裂样本数据,获得分裂点左侧样本数据和分裂点右侧样本数据,其中,分裂点左侧样本数据在分裂点进行分裂后对应分裂点左侧节点,分裂点右侧样本数据在分裂点进行分裂后对应分裂点右侧节点,进而计算所述增益,也即M的取值,进而取最大的M取值对应的分裂点作为所述最大增益分裂点。
接上述示例,参见图7B,图7B是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图,这里,在得到按照年龄20、30分类、学历本科、硕士分类对应的一阶梯度之和与二阶梯度之和后,将分裂点左侧与右侧的一阶梯度之和与二阶梯度之和分别带入上述预设增益公式,计算得到不同分裂点对应的增益值,这样,通过比较增益值,即可得到增益值最大的分裂点,即年龄按照30分类对应的分裂点、学历按照本科分类对应的分裂点。
在实际实施时,在确定第一分裂点和第二分裂点后,将第一分裂点以及第二分裂点进行对比,以确定决策树的全局分裂点,可以是分别获取第一分裂点的增益值以及第二分裂点的增益值;比较第一分裂点的增益值以及第二分裂点的增益值,并选取较大增益值所对应的分裂点作为决策树的全局分裂点。
需要说明的是,这里获取的第一分裂点的增益值以及第二分裂点的增益值为确定第一分裂点和第二分裂点的过程中得到的对应第一分裂点和第二分裂点的增益值。
在一些实施例中,在确定全局分裂点后,基于全局分裂点,构建决策树的过程,可以是通过获取全局分裂点的特征值和特征编码;确定对应特征编码的特征,并结合特征及特征值确定特征分裂方式;基于特征分裂方式,构建决策树。
需要说明的是,当全局分裂点归属于第一参与方设备时,获取全局分裂点对应的分裂点编码,并基于分裂点编码确定全局分裂点的特征值和特征编码;同时向第二参与方设备发送空消息。
当全局分裂点属于第二参与方设备时,向第二参与方设备发送全局分裂点对应的分裂点编码,并接收第二参与方设备基于分裂点编码返回的特征值和特征编码;同时记录该分裂点属于第二参与方设备。
示例性地,参见图8,图8是本申请实施例提供的分裂点的一个可选的分裂点分裂示意图,这里,落在分裂点上的样本数据包括样本2、5、7、8和10的对应的样本数据,全局分裂点对应的特征编码为3,特征值=0.4,这里,当全局分裂点归属于第二参与方设备时,第一参与方设备将编号形式的全局分裂点发送至第二参与方设备,第二参与方设备则基于该编号,获取全局分裂点对应的特征编码和特征值,并将对应的特征编码和特征值发送至第一参与方设备。如图8所示,对分裂点分裂之后得到的左子节点则对应有样本2、样本5和样本10,右子节点则对应有样本7和样本8。
在实际实施时,当待构建决策树为分类决策树时,若分裂点所在的决策树未达到停止分裂条件,则继续进行分裂,直至达到停止分裂条件,则完成对该决策树的构建。这里,预测类的概率由第一参与方设备叶子节点中各样本的比例决定。
在实际实施时,当待构建决策树为梯度提升决策树时,若分裂点所在的决策树未达到停止分裂条件,则继续进行分裂,直至达到停止分裂条件,则完成对该代决策树的构建。这里,使用上一代树的输出更新当前预测值,第一参与方设备则继续计算损失函数,确定损失函数是否收敛,若未收敛,则继续构建新的决策树,直至损失函数收敛,或者确定决策树的数量是否达到预设数量,若未达到,则继续构建新的决策树,直至达到预设数量,当损失函数收敛或者决策树达到预设数量后,完成决策树的构建。
需要说明的是,停止分裂条件可以是决策树的深度达到预设深度、决策树的增益值达到预设增益值或者样本数不满足继续分裂。
如此,对于第一参与方设备与第二参与方设备在数据传输过程中对于数据的计算量与传输量较大的情况,通过对样本标签或样本梯度在明文的状态下进行压缩,再加密,保证在压缩的情况下原有的样本梯度和样本标签可以满足加减运算,因此,减少第一参与方设备的加密量和解密量以及第二参与方设备的计算量。
应用本申请上述实施例,在构建决策树的过程中,根据待构建的决策树的类型对基于训练样本得到的参考数据进行压缩处理,得到第一压缩数据,再通过第一压缩数据,确定相应的分裂点数据,从而确定决策树的全局分裂点,进而构建决策树。这样,通过对中间传输数据的压缩,能够有效减少决策树构建过程中的数据传输量与处理量,从而降低了传输开销,提升了决策树的构建效率。
下面,将说明本申请实施例分别在两个实际的应用场景中的示例性应用。
接下来以纵向联邦分类决策树的应用场景为例,对本申请实施例提供的基于联邦学习系统的决策树构建方法进行介绍,图9是本申请实施例提供的基于联邦学习系统的决策树构建方法的一个可选的流程示意图,参见图9,本申请实施例提供的基于联邦学习系统的决策树构建方法由第一参与方设备(主导方guest)、第二参与方设备(参与方host)协同实施。第一参与方设备、第二参与方设备均可以是服务器,也可以是终端。参见图9,本申请实施例提供的基于联邦学习系统的决策树构建方法包括:
步骤201,第一参与方设备和第二参与方设备分别完成本地的初始化,对本地的特征进行分箱并开始联合构建分类决策树。
这里,待构建的分类决策树可以为二分类决策树,也可以为多分类决策树。作为一个示例,在本实施例中,待构建的分类决策树为四分类决策树,示例性地,对于标签1、2、3、4,则对应生成向量[1,0,0,0]、[0,1,0,0]、[0,0,1,0]、[0,0,0,1]。
步骤202,第一参与方设备根据每个样本标签情况处理标签,得到标签向量。
步骤203,第一参与方设备调用压缩规划模块,计算压缩参数并发送至第二参与方设备。
这里,在第一参与方设备调用压缩规划模块,计算压缩参数之前,第一参与方设备需要确定压缩控制参数,这里的压缩控制参数包括同态最大整数位数、标签个数以及样本数。
在实际实施时,第一参与方设备通过压缩规划模块读入压缩控制参数,计算压缩参数并保存,同时将压缩参数发送至第二参与方设备。这里的压缩参数包括单个标签所占位数,明文总占位以及密文压缩量。
作为一个示例,这里参见图11,图11是本申请实施例提供的基于联邦学习系统的四分类决策树的压缩流程示意图,这里同态最大整数位数为2046、标签个数为4、样本数为1000000,1000000二进制为20bit,则单个标签所占位数为20,标签总占位为20*4=80bit,密文压缩量为2046//80=25,接着,第一参与方设备将单个标签所占位数20、总占位80、密文压缩量25发送至第二参与方设备。
需要说明的是,合并的明文是一个80位的整数,对这个80位的整数做运算,结果肯定不会溢出80位,且每个20位上可以正确的反应标签累加的结果,这样即使1000000个样本均为相同标签,将标签累加的结果的位数不会超过20。
步骤204,第一参与方设备对每个样本的标签向量调用明文压缩模块进行压缩,得到对应每个样本的标签向量的大整数。
这里,调用明文压缩模块即通过决策树中的明文压缩层,按照单个标签所占位数,明文所占位数,将每个样本的标签向量压缩为一个大整数。
接上述示例,假设这里的标签向量为[0,0,0,1],则以一个80位的整数表示样本标签,即将标签向量中的0和1分别以20位的整数表示,这样,将标签向量压缩成一个80位的大整数。
步骤205,对大整数进行同态加密,得到加密整数,并发送至第二参与方设备。
步骤206,第一参与方设备和第二参与方设备初始化根节点,所有样本落在根节点,加入节点列表。
步骤207,从节点列表取出节点,在当前分裂节点,第一参与方设备使用本地特征与标签确定主导方最优分裂点。
步骤208,第二参与方设备基于接收的加密整数构建分裂点,得到加密的分裂点构建结果。
这里,第二参与方设备通过直方图统计运算,基于接收的加密整数,对待构建的决策树的分裂点进行遍历,得到加密的分裂点构建结果。
接上述示例,这里的加密的分裂点构建结果为80位加密整数。
步骤209,第二参与方设备调用密文压缩模块,基于接收的压缩参数对加密的分裂点构建结果进行压缩得到大加密整数,并将大加密整数发送至第一参与方设备。
接上述示例,这里的密文压缩量为25,总占位为80,假设共有250个加密的分裂点构建结果,则将25个加密的分裂点构建结果压缩为一个密文压缩结果,即循环10次压缩过程,计算10个最终汇总结果,对于每一个最终汇总结果的计算过程,具体为,最终汇总结果={(第一个加密的分裂点统计结果*2^80)+第二个加密的分裂点统计结果}*2^80……+第二十五个加密的分裂点统计结果。这里,在得到10个最终汇总结果后,将10个最终汇总结果制成压缩密文列表并发送至第一参与方设备。
需要说明的是,这里的最终汇总结果即是大加密整数,这里的分裂点统计结果即为分裂点构建结果。
步骤210,第一参与方设备使用解压模块对大加密整数进行解密,得到大整数。
接上述示例,这里的大整数为对10个最终汇总结果分别进行解密得到的整数,这个整数是由25个80位整数拼接而成的。
步骤211,第一参与方设备使用解压模块对大整数进行拆解,得到为多个分裂点构建结果。
接上述示例,对25个80位整数拼接而成的大整数进行拆解,得到25个80位整数,这里由于有10个大整数,因此最终得到250个80位整数。
需要说明的是,这里250个80位整数为对应每个分裂点的构建结果,即250个分裂点构建结果。
步骤212,第一参与方设备按照单个标签所占位数对多个分裂点构建结果进行拆解,得到最终的构建结果。
接上述示例,这里,基于单个标签所占位数的20,对250个分裂点构建结果进行拆解即对250个80位整数的80个位长,按照20位数进行划分,每20位得到一个对应整数,即得到4个整数。需要说明的是,在决策树情况下,处理后的标签为0或者1,因此,基于4个整数可以得到第二参与方设备的每个分裂点对应每个类别标签的样本个数。
步骤213,基于最终的构建结果,计算多个分裂点的增益,得到参与方最优分裂点。
步骤214,基于参与方最优分裂点,综合主导方最优分裂点得到全局最优分裂点。
在实际实施时,通过比较参与方最优分裂点与主导方最优分裂点的增益,选取增益较大的分裂点作为全局最优分裂点。
步骤215,判断是否符合停止分裂条件,若不符合则返回步骤206,若符合则执行步骤216。
在实际实施时,若符合分裂条件,基于特征值和特征编码分裂当前节点,将叶节点加入节点列表,回到步骤206;
若不符合分裂条件,则停止建立决策树,执行步骤216。
步骤216,完成决策树的构建。
应用本申请上述实施例,在构建决策树的过程中,根据待构建的决策树的类型对基于训练样本得到的参考数据进行压缩处理,得到第一压缩数据,再通过第一压缩数据,确定相应的分裂点数据,从而确定决策树的全局分裂点,进而构建决策树。这样,通过对中间传输数据的压缩,能够有效减少决策树构建过程中的数据传输量与处理量,从而降低了传输开销,提升了决策树的构建效率。
接下来以分类纵向梯度提升决策树的应用场景为例,对本申请实施例提供的基于联邦学习系统的决策树构建方法进行介绍,图10是本申请实施例提供的基于联邦学习系统的决策树构建方法的一个可选的流程示意图,参见图10,本申请实施例提供的基于联邦学习系统的决策树构建方法由第一参与方设备(主导方guest)、第二参与方设备(参与方host)协同实施。第一参与方设备、第二参与方设备均可以是服务器,也可以是终端。参见图10,本申请实施例提供的基于联邦学习系统的决策树构建方法包括:
步骤301,第一参与方设备和第二参与方设备分别完成本地的初始化,对本地的特征进行分箱并开始联合构建一代决策树。
这里,一共有t代树需要构建,这里t为大于等于1的正整数。其中,每一棵决策树的高度相同。
作为一个示例,一共有30代树需要构建,树高为5。
步骤302,第一参与方设备统计标签的数目,并根据本地的标签和前t-1代树的残差计算一阶梯度g与二阶梯度h。
这里,如果是一个二分类(n=2)任务,总标签数为1,否则总标签数为n。
接上述示例,这里为一个二分类梯度提升决策树。
这里,在完成了上述步骤301-步骤302的操作后,设当前标签i=0,对于总标签数中的每一个类别的标签,执行如步骤303-步骤317的过程。
步骤303,第一参与方设备调用压缩规划模块,计算压缩参数并发送至第二参与方设备。
作为一个示例,这里参见图12,图12是本申请实施例提供的基于联邦学习系统的梯度提升决策树的压缩流程示意图,这里以53精度位、样本数为1000000、同态最大整数位数为2046为例,一个g偏移后值为1.2312,则定点化为g整数=int(1.2312*2^53)=11089663722437110,然后计算得g占位=位长(18014398509481984000000)=74位,h占位=位长(9007199254740992000000)=73位,然后计算得到总占位=73+74=147,密文压缩量=2046//147=13,接着,第一参与方设备将g占位74,h占位73,总占位147,密文压缩量13发送至第二参与方设备。
步骤304,第一参与方设备调用明文压缩模块对每个样本的g,h进行压缩,得到对应每个样本的压缩梯度g_h。
接上述示例,这里g定点化为位长74位的整数,h定点化为位长73位的整数,将g向左移动73个位长,在加上定点化后位长为73的h,即得到一个147位的大整数g_h。
步骤305,第一参与方设备将对应类的压缩梯度g_h进行同态加密,得到[[g_h]]并发送至第二参与方设备。
步骤306,第一参与方设备和第二参与方设备初始化根节点,所有样本落在根节点,加入节点列表。
步骤307,从节点列表取出节点,在当前分裂节点,第一参与方设备使用本地特征与g,h确定主导方最优分裂点。
步骤308,第二参与方设备基于接收的加密整数构建分裂点,得到加密的分裂点构建结果。
这里,第二参与方设备从节点列表取出节点,在当前分裂节点使用接收的[[g_h]]计算直方图,并由直方图构建分裂点,得到加密的分裂点构建结果。
这里,加密的分裂点构建结果为第二参与方设备基于本地特征与接收的[[g_h]]对分裂点进行遍历,得到的针对每个分裂点的加密整数,该加密整数由g的和以及h的和拼接成的。
接上述示例,这里的加密的分裂点构建结果为147位加密整数。
步骤309,第二参与方设备调用密文压缩模块,基于接收的压缩参数对加密的分裂点构建结果进行压缩得到大加密整数同时统计每个分裂点构建结果中的样本数目,并将大加密整数与统计的样本数目发送至第一参与方设备。
接上述示例,这里的密文压缩量为13,总占位为147,假设共有130个加密的分裂点构建结果,则将13个加密的分裂点构建结果压缩为一个密文压缩结果,即循环10次压缩过程,计算10个最终汇总结果,对于每一个最终汇总结果的计算过程,具体为,最终汇总结果={(第一个加密的分裂点统计结果*2^147)+第二个加密的分裂点统计结果}*2^147……+第十三个加密的分裂点统计结果。这里,在得到10个最终汇总结果后,将10个最终汇总结果制成压缩密文列表并发送至第一参与方设备。
需要说明的是,这里的最终汇总结果即是大加密整数,这里的分裂点构建结果即为分裂点统计结果。
步骤310,第一参与方设备使用解压模块对大加密整数进行解密,得到大整数。
接上述示例,这里的大整数为对10个最终汇总结果分别进行解密得到的整数,这个整数是由13个147位整数拼接而成的。
步骤311,第一参与方设备使用解压模块对大整数进行拆解,得到为多个分裂点构建结果。
接上述示例,对13个147位整数拼接而成的大整数进行拆解,得到13个147位整数,这里由于有10个大整数,因此最终得到130个147位整数。
需要说明的是,这里130个147位整数为对应每个分裂点的构建结果,即130个分裂点构建结果。
步骤312,第一参与方设备对多个分裂点构建结果进行浮点化,得到偏移后的g的和以及h的和。
接上述示例,130个分裂点构建结果进行浮点化即对130个147位整数进行浮点化,具体地,对于每个147位整数,向右移动73位,得到g的74位整数构建结果,将该147位整数&2^73-1,得到h的73位整数构建结果,接着,将g的74位整数构建结果除以2^53,得到g的构建结果即偏移后的g的和,同时将h的73位整数构建结果除以2^53,得到h的构建结果即h的和。
步骤313,第一参与方设备基于接收的样本数目,对偏移后的g进行还原。
步骤314,基于g的和以及h的和,计算多个分裂点的增益,得到参与方最优分裂点。
步骤315,基于参与方最优分裂点,综合主导方最优分裂点得到全局最优分裂点。
步骤316,判断是否符合停止分裂条件,若符合则返回到步骤308,若不符合则执行步骤317。
在实际实施时,若不符合停止分裂条件,基于特征值和特征编码分裂当前节点,将叶节点加入节点列表,回到步骤308重复直至构建完当前树,若符合则停止建立决策树,执行步骤317。
接上述示例,当当前决策树的高度达到5,或者达到预设增益值,或者样本数不满足分裂要求时,为符合停止分裂条件。
步骤317,判断是否已经构建完该代所有类对应的决策树,如果已经构建完该代所有类对应的决策树,执行步骤318;如果没有构建完该代所有类对应的决策树,执行步骤303。
步骤318,使用上一代树的输出更新当前预测值。
步骤319,检测是否满足停止条件,若不满足,第一参与方设备和第二参与方设备继续联合构建决策树,返回步骤302,若满足,则执行步骤320。
接上述示例,计算损失函数,确定损失函数是否收敛或者已构建完成30颗树时,为满足停止条件。
步骤320,完成决策树的构建。
如此,通过本申请上述实施例大大减少了建模时间,提升了建模速度,建模方最终可以在更少的时间内建立多个模型,调整参数,得到效果无损的决策树模型。
应用本申请上述实施例,在构建决策树的过程中,根据待构建的决策树的类型对基于训练样本得到的参考数据进行压缩处理,得到第一压缩数据,再通过第一压缩数据,确定相应的分裂点数据,从而确定决策树的全局分裂点,进而构建决策树。这样,通过对中间传输数据的压缩,能够有效减少决策树构建过程中的数据传输量与处理量,从而降低了传输开销,提升了决策树的构建效率。
下面继续说明本申请实施例提供的基于联邦学习系统的决策树的构建装置254,参见图13,图13是本发明实施例提供的基于联邦学习系统的决策树的构建装置254的结构示意图,本发明实施例提供的基于联邦学习系统的决策树的构建装置254包括:
获取模块2541,用于获取训练样本和待构建的决策树的类型,并基于所述训练样本及所述类型,确定用于构建所述决策树的分裂点的参考数据;
压缩模块2542,用于对所述参考数据进行压缩处理得到第一压缩数据,并将所述第一压缩数据发送至第二参与方设备;
接收模块2543,用于接收第二参与方设备发送的分裂点数据,所述分裂点数据为,所述第二参与方设备基于所述第一压缩数据,进行对应所述决策树的分裂点构建所得到;
构建模块2544,用于基于所述分裂点数据,确定所述决策树的全局分裂点,并基于所述全局分裂点,构建所述决策树。
在一些实施例中,所述压缩模块2542,还用于基于所述决策树的类型,确定相应的压缩控制参数,所述压缩控制参数包括以下至少之一:同态最大整数位数、浮点数定点化精度、标签个数以及样本数;基于所述压缩控制参数及所述参考数据的位长,确定压缩参数;基于压缩参数,对所述参考数据进行压缩处理,得到第一压缩数据。
在一些实施例中,当所述决策树为梯度提升决策树时,所述参考数据为样本梯度,所述压缩控制参数包括所述同态最大整数位数、所述浮点数定点化精度以及所述样本数,所述压缩模块2542,还用于基于所述浮点数定点化精度,对所述样本梯度进行定点化处理,得到所述样本梯度对应的定点化整数,并基于所述样本数与所述定点化整数,确定对应所述样本梯度的占位;将所述样本梯度的占位进行求和处理,确定压缩总占位;将所述同态最大整数位数与所述压缩总占位进行整数除法处理,确定密文压缩量;将所述样本梯度的占位、所述压缩总占位以及所述密文压缩量作为所述压缩参数。
在一些实施例中,当所述决策树为分类决策树时,所述参考数据为样本标签,所述压缩控制参数包括所述同态最大整数位数、所述标签个数以及所述样本数,所述压缩模块2542,还用于基于所述样本标签,确定标签占位;将所述样本数的位长与标签个数进行求积处理,确定压缩总占位;将所述同态最大整数位数与所述压缩总占进行整数除法处理,确定密文压缩量;将所述标签占位、所述压缩总占位以及所述密文压缩量作为所述压缩参数。
在一些实施例中,所述压缩模块2542,还用于对所述第一压缩数据进行同态加密,发送同态加密后的第一压缩数据至第二参与方设备,以使所述第二参与方设备基于同态加密后的第一压缩数据,进行对应所述决策树的分裂点构建,得到所述分裂点数据。
在一些实施例中,所述分裂点数据为,所述第二参与方设备基于所述第一压缩数据,构建所述决策树的分裂点得到分裂点构建结果,并对所述分裂点构建结果进行压缩处理得到,所述构建模块2544,还用于对所述分裂点数据进行解压处理,得到所述分裂点构建结果;结合所述分裂点构建结果及所述训练样本,确定所述决策树的全局分裂点。
在一些实施例中,所述构建模块2544,还用于基于所述训练样本,对所述决策树的分裂点进行遍历,以确定第一分裂点;基于所述训练样本以及所述分裂点构建结果,对所述决策树中的分裂点进行遍历,以确定第二分裂点;将所述第一分裂点以及所述第二分裂点进行对比,以确定所述决策树的全局分裂点。
在一些实施例中,所述构建模块2544,还用于获取所述训练样本的标签;基于所述训练样本的标签与所述参考数据,对所述决策树的分裂点进行遍历,确定对应所述第一参与方设备的第一特征分裂增益直方图;其中,所述第一特征分裂增益直方图,用于确定所述第一特征分裂增益直方图中的最大增益分裂点;基于所述第一特征分裂增益直方图,确定所述决策树的分裂点的增益值,并选取增益值最大的分裂点作为所述第一分裂点;获取所述训练样本的标签;基于所述训练样本的标签与所述分裂点构建结果,对所述决策树的分裂点进行遍历,确定对应所述第二参与方设备的第二特征分裂增益直方图;其中,所述第二特征分裂增益直方图用于基于预设增益计算公式确定所述第二特征分裂增益直方图中的最大增益分裂点;基于所述第二特征分裂增益直方图,确定所述决策树的分裂点的增益值,并选取增益值最大的分裂点作为所述第二分裂点。
在一些实施例中,所述构建模块2544,还用于分别获取所述第一分裂点的增益值以及所述第二分裂点的增益值;比较所述第一分裂点的增益值以及所述第二分裂点的增益值,并选取较大增益值所对应的分裂点作为所述决策树的全局分裂点。
在一些实施例中,所述构建模块2544,还用于获取所述全局分裂点的特征值和特征编码;确定对应所述特征编码的特征,并结合所述特征及所述特征值确定特征分裂方式;基于所述特征分裂方式,构建所述决策树。
在一些实施例中,所述构建模块2544,还用于当所述全局分裂点归属于所述第一参与方设备时,获取所述全局分裂点对应的分裂点编码,并基于所述分裂点编码确定所述全局分裂点的特征值和特征编码;当所述全局分裂点属于所述第二参与方设备时,向所述第二参与方设备发送所述全局分裂点对应的分裂点编码,并接收所述第二参与方设备基于所述分裂点编码返回的特征值和特征编码。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。
本申请实施例提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现本申请实施例提供的基于联邦学习系统的决策树构建方法。
本申请实施例提供一种存储有可执行指令的计算机可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法。
在一些实施例中,计算机可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
综上所述,通过本申请实施例能够有效减少决策树构建过程中的数据传输量与处理量,从而降低了传输开销,提升了决策树的构建效率。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:图像的确定方法、装置、存储介质及电子装置