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