01背景 纵向数据分割场景和树模型
什么是纵向树模型?
基于纵向分割数据集训练的决策树模型
纵向分隔数据集一般由前置步骤隐私求交得到,使用场景往往是联合建模。各方之间不希望将自己的数据泄露给其他方,但又希望联合建模以得到效果更好的模型。
效果好的模型还需要有一定的解释性和较好的训练效率,而树模型正好满足这个特征。
隐语提供的纵向树模型算法包括两种:可证安全算法SS-XGB和纵向联邦算法SGB
02 隐语纵向树模型的使用
使用树模型的三个简单步骤
具体的SS-XGB教程:决策树模型 | SecretFlow v1.6.1b0 | 隐语 SecretFlow
具体的SGB教程:SecretFlow
两种算法使用的区别:
准备设备和数据方面
设置训练参数方面
模型产出(评估和保存)方面
03 原理和实现-从理论到工程
SS-XGB / SGB 算法是如何炼成的?
经典算法到MPC算法(SS-XGB)
算法改造三部曲,参考论文Large-Scale Secure XGB for Vertical Federated Learning (arxiv.org)
经典算法到联邦算法(SGB)
算法改造三部曲,参考论文Large-Scale Secure XGB for Vertical Federated Learning (arxiv.org)
如何修改源码实现合适的功能?
开发的层次
组件封装
算法修改
模型导出
SS-XGB / SGB 在隐语实现有什么独特优势?
04 实践
课程链接:隐语 · 实训社区 给出了配套运行的代码,这里我只展示运行的结果
只使用Alice方数据(bank_0_8)的明文数据建模:
结果如下
联合建模
结果
可以发现AUC score有明显提升,test-auc从0.683917到了0.906039。
用SS-XGB跑,明显性能要差很多,运行了5min 24s。而同样参数的sgb,只需要33s,效率差距很明显。
从实际评估结果看,SGB和SS-XGB的准确率基本上持平,SS-XGB略微好一点点,test-auc可以从0.9060到0.9066.