FATE入门案例——纵向 SecureBoost 模型
0,demo说明
使用的hetero_secureboost案例,角色及数据:(1) guest: breast_hetero_guest.csv (2) host: breast_hetero_host.csv。
参考来源:https://github.com/FederatedAI/FATE/tree/master/examples/dsl/v2/hetero_secureboost
1,模型训练
1,使用如下命令提交了job进行模型训练:
flow job submit -c ${runtime_config} -d ${dsl}
#配置文件为:
Binary-Class:
example-data: (1) guest: breast_hetero_guest.csv (2) host: breast_hetero_host.csv
dsl: test_secureboost_train_dsl.json
runtime_config: test_secureboost_train_binary_conf.json
2,训练细节分析:
https://github.com/FederatedAI/FATE/blob/master/python/fate_client/flow_client/README_zh.rst
训练包括以下几个阶段,分别由相应组件执行:
- reader:读取原始数据;
- dateio:将数据转换为实例样本;
- Intersection:求host和guest方的交集;
- HeteroSecureBoost:树模型;
- evaluation:评估指标。
你可以从http://hostip:8080/fateboard面板查看到建模信息:
这里的_0_1指的是训练和验证的数据集,只是example中的例子该部分都是同样的数据,所以他们会有相同的dataouput.
其实第一棵树的训练都是要使用各自的标签。(待验证)
模型输出
数据输出:
模型各种指标:
host方的模型输出:
host的标签在guest处都是匿名处理了的。
host方无data output。
host方无模型指标。
2,模型预测
那么如何用我们已经训练好的模型进行预测呢?
1,通过我们刚刚提交的jobid,找到对应的model_id和model_version:
flow job config -j 202103270933192332863 -r guest -p 9999 -o ./
2,部署模型
flow model deploy --model-id guest-9999#host-9998#model --model-version 202103270933192332863
3,修改test_predict_conf.json配置文件的model_id和model_id,包括part_id和role。
4,使用修改好的配置文件提交任务进行预测:
可以看到模型预测的DAG似乎有些不同:
由前所述,这里的read和dataio几乎是一样的,当然这也包括intersection。
guest方的module output也同上。
这里的预测结果几乎和上面看到的是一样的,还是因为example的案例中都使用了同样的样本。
不失一般性,我们看下模型输出的第2棵树:
可以知道,guest方和host方的树模型都有对方的特征(实际上这两棵树本身就应该是这样,并且他们也是互补的)。因此,在模型使用时,需要同时用到这两棵树。