本讲主要介绍隐语纵向树模型原理及工程实现介绍。关于纵向多方协同的集成树模型XGB算法,隐语提供了基于两种不同加密协议实现的算法,一种是基于MPC协议实现SS-XGB, 一种是基于半同态加密算法实现的SecureBoost。
一、背景-纵向数据分割场景和树模型
普通的树模型是不区分横向和纵向概念的,纵向树模型即基于纵向分割数据集训练的决策树模型。纵向数据集一般来自于前置步骤特征隐私求交得到,特征来自于各个参与方,只有一方拥有标签。各个参与方不期望将特征以明文的形式直接传递给其他参与方,也不希望泄漏相关重要信息。纵向树模型主要用于联合建模(不同特征维度、合作得到的联邦模型比单方训练的模型效果更优),并且树模型有较好的可解释性。
根据不同的安全程度要求,隐语实现了可证安全算法SS-XGB和纵向联邦算法SGB。
二、使用-隐语纵向树模型
跟传统的机器学习一致,SS-XGB包括准备阶段(环境和数据集,主要是SPU配置和加载纵向数据),训练阶段(参数设置和执行,XGBoost的参数较多,需要精心设置)以及模型评估(分为安全和不安全的评估方法,计算指标和采取进一步决策)。SGB也一样,分为准备HEU和数据阶段,设置训练参数,以及模型评估和保存。
隐语框架实现了设备抽象,Python实现分层架构-算法,灵活易读易于维护,分层架构-原语,对瓶颈算子进行优化,并且借助开源进行共享共建。
三、原理和实现-从理论到工程
首先确定保护的数据部分,哪些数据在秘密分享下进行,其中任何数据都被MPC保护。其次准备安全原语,设计用于MPC计算的算子,如秘密分享、加/乘法等。最后进行数据结构和算法的改造。
开发实战包括如何在组件中封装算法,根据算子已经实现的功能,定义组件参数和输入输出,建立安全设备,调用引擎方法和存储结果。进行算法的改造,即如何增加训练参数、修改功能等,明确要修改的算法模块,找到对应的代码模块。之后就是模型序列化以及保存和导出。
四、实践
见作业。