创建纵向联邦学习作业
前提条件
- 空间组建完成,参考组建空间。
- 空间成员完成计算节点部署,配置参数时选择挂载方式和数据目录,参考部署计算节点。
- 空间成员在计算节点中完成数据发布,参考发布数据。
- 参与方的计算节点如果是采用云租户部署,并且使用子账号进行创建的,需要参考配置CCE集群子账号权限给子账号增加权限配置。
约束限制
- 纵向联邦作业XGBoost算法只支持两方参与训练。
- 训练作业必须选择一个当前计算节点发布的数据集。
- 作业创建者的数据集必须含有特征。
创建纵向联邦学习作业
纵向联邦学习作业在本地运行,目前支持XGBoost算法、逻辑回归LR算法和FiBiNET算法。
纵向联邦学习分为五个步骤:数据选择、样本对齐(可选)、特征选择(可选)、模型训练、模型评估。
创建过程如下:
- 用户登录进入计算节点页面。
- 在左侧导航树上依次选择 ,打开可信联邦学习作业页面。
- 在“创建”。
页面,单击图1 创建作业
- 在弹出的对话框中单击“纵向联邦”按钮,编辑“作业名称”等相关参数,完成后单击“确定”。
目前,纵向联邦学习支持“XGBoost”、“逻辑回归”、“FiBiNET”三种算法类型,XGBoost支持“分类”和“回归”两种任务类型。图2 新建作业
- 在弹出的界面进行数据选择,选择两方数据集作为整个作业的数据集,必须选择一个当前代理的数据集,另一个数据集可以来自空间中的任意一方。两方的数据集中一方数据集只含有特征,另一方的数据集必须含有标签。
重试:开关开启后,执行失败的作业会根据配置定时进行重试,仅对开启后的执行作业生效。开关关闭后,关闭前已触发重试的作业不受影响,仅对关闭后的执行作业生效。
CPU配额:执行特征选择作业和训练作业时,会创建新容器来执行,该参数的值为创建新容器的CPU核数。
内存配额:执行特征选择作业和训练作业时,会创建新容器来执行,该参数的值为创建新容器的内存。
样本粗筛:当己方数据过大无法导出成文本文件时,可以使用样本粗筛获取合作方的明文id前缀,使用大数据组件筛选出id前缀相符的数据,达到减少数据量的目的。样本粗筛时还可以选择多个标记为“非敏感”的字段进行过滤,结果会按照“id前缀,过滤字段1,过滤字段2……”的格式保存成csv文本文件。
选择完成后单击“下一步”。图3 数据选择
图4 样本粗筛
- (可选步骤) 样本对齐,支持使用新对齐的结果,如图5所示;也支持复用隐私求交作业中通过这两个数据集计算得到的结果,如图6所示。
- (可选步骤)进行特征选择,此步骤要求数据已经对齐,即两方数据集每一行的数据都是一一对应的。
单击数据集按钮切换数据集,勾选特征作为模型训练的指定特征,选择分箱方式后单击“启动分箱和IV计算”,计算得到所选特征对标签的影响程度。计算完成后,单击特征行的可以展开图表形式的分箱woe值。
“FiBiNET”算法新增限制:
- 特征方必须要有两个及以上离散特征,连续特征可有可无。
- 标签方可以不提供任何特征,如果标签方提供特征也要遵循1规则。
其他算法无限制
选择完成后单击“下一步”。
- 在所选数据集中只能有一个字段是标签。
- 训练时需勾选使用的特征选项,勾选后可以跳过特征分箱,直接进行训练。
- 分箱方式包括等频分箱和等距分箱。等频分箱是指经过计算使得每个分箱区间包含大致相等的实例数量;等距分箱是指经过计算使得每个箱体的区间间隔保持一致。
- 需要至少勾选一个无标签数据集特征才能进行模型训练。如果不勾选任何特征,会提示“选择两个数据集,一个有标签,一个无标签,且至少选择一个无标签方特征,才可启动训练。”
图7 特征选择
图8 查看特征分箱woe值
- 在页面右下角单击“启动训练”进行模型训练。
- 在弹出的界面配置执行参数,配置执行参数可选择常规配置与自定义配置。
- 常规配置:通过界面点选算法使用的常规参数,具体支持的参数请参考表1。
表1 常规配置参数 算法类型
参数名
参数描述
XGBoost
学习率
控制权重更新的幅度,以及训练的速度和精度。取值范围为0~1的小数。
树数量
定义XGBoost算法中决策树的数量,一个样本的预测值是多棵树预测值的加权和。取值范围为1~50的整数。
树深度
定义每棵决策树的深度,根节点为第一层。取值范围为1~10的整数。
切分点数量
定义每个特征切分点的数量,数量越多,准确率越高,计算时间越长。取值范围为5~10的整数。
分类阈值
区分正负例的得分阈值。
逻辑回归/FiBiNET
学习率
控制权重更新的幅度,影响训练收敛速度和模型精度,取值范围为0~1。
迭代次数
完成全部样本训练的次数,取值为正整数。
批大小
单次训练使用的样本数,取值为正整数。
分类阈值
区分正负例的得分阈值
- 自定义配置: 通过json格式的文本配置更多高级参数,具体支持的参数请参考表2。
表2 自定义配置参数 参数
是否必选
参数类型
描述
predict_threshold
否
Float
预测阈值,最小值0,最大值1
learning_rate
否
Float
学习率,最小值0,最大值1
batch_size
否
Integer
批大小,最小值1
epoch
否
Integer
迭代次数,最小值1
tree_num
否
Integer
树数量,最小值1
tree_depth
否
Integer
树深度,最小值1
split_num
否
Integer
切分点数量,最小值5
discrete_embedding_size
否
Integer
离散特征embedding的维度,最小值4
multihot_embedding_size
否
Integer
multihot特征embedding的维度,最小值4
mlp_dims
否
Array of integers
多层感知机每层的节点数
reduction_ratio
否
Integer
senet层压缩比例,最小值2
save_format
否
String
模型保存格式
loss_function
否
String
损失函数
loss_param
否
String
损失函数参数json字符串
图9 常规参数配置(XGBoost)
图10 常规参数配置(逻辑回归/FiBiNET)
图11 自定义参数配置
填写完作业参数,单击“确定”即可开始训练作业。启动作业后会生成一条新的历史作业记录。模型训练页面展示了历史作业的执行情况、模型的评估指标和生成时间。模型的评估指标是使用训练数据集产生的。
单击“查看参数”可以查看该模型训练时指定的机器学习作业参数;逻辑回归作业可以单击“查看中间结果”实时查看每一次迭代的评估指标。
图12 模型训练参数
- 常规配置:通过界面点选算法使用的常规参数,具体支持的参数请参考表1。
- 进行模型评估。在历史作业列表中,单击执行成功的记录操作列的“发起评估”,可对该模型发起一次评估作业,用于评估该模型在非训练数据集上的表现。
评估作业需要选择和训练数据集数据结构相同的两方数据集,以保证评估的正常进行。
模型评估指标包括准确率/AUC/KS/F1/召回率/精确率,取值范围均在0~1之间。AUC和F1作为综合评估指标,值越大说明训练出的模型越好。
图13 发起评估