303-如何固化XGBoost模型并调用|模型固化
由iquant创建,最终由small_q 被浏览 67 用户
简介
由于深度学习中牵扯到Dropout和随机种子等多处随机项,因此如果无法固化模型,当缓存丢失后会模拟交易/回测会触发重新训练,导致模型变化,本文主要讲究如何使用XGBoost模型开发AI策略的过程中的相关技术。
保存模型的好处:
- 模型固化,每次模型的预测结果一致,便于复现
- 不用每次训练模型,节省时间
- 可以进行策略模型交流,但又不透露模型细节
本文主要从 模型训练-模型保存-模型调用三个流程完整讲解如何使用Xgboost模型进行AI策略开发
训练模型
https://bigquant.com/codesharev2/dba72385-3430-4546-b5ca-03664620e000
模型保存
先查看最后一次满意的模型结果缓存id,如上图m5模块是训练出来的模型结果。执行下面的代码,将模型文件保存在XGBoost_model.csv文件中。
# 保存模型
model_data = m5.model_pack.read()
pd.DataFrame([model_data]).to_pickle('XGBoost_model.csv')
模型调用
参考上图,将原模型的相关模块删除,并新建一个Python函数模块连接m10-XGBoost模块
Python函数模块添加如下代码:
def bigquant_run(input_1, input_2, input_3):
# Python 代码入口函数,input_1/2/3 对应三个输入端,data_1/2/3 对应三个输出端
# 示例代码如下。在这里编写您的代码
import dai
import pandas as pd
data = pd.read_pickle('XGBoost_model.csv')
model_ds = dai.DataSource.write_pickle(data.iloc[0].to_dict())
return dict(data_1=model_ds, data_2=None, data_3=None)
即从文件中读取保存的XGBoost_model.csv文件到缓存中,并将模型传给XGBoost模块。
回测验证并模拟交易
运行修改后的模版,如果能跑出结果说明模型固化完成,固化后点击模拟交易即可。
https://bigquant.com/codesharev2/07d79042-2273-4ed3-96b9-c49abd2654f6
\