BigQuant使用文档

303-如何固化XGBoost模型并调用|模型固化

由iquant创建,最终由small_q 被浏览 65 用户

简介

由于深度学习中牵扯到Dropout和随机种子等多处随机项,因此如果无法固化模型,当缓存丢失后会模拟交易/回测会触发重新训练,导致模型变化,本文主要讲究如何使用XGBoost模型开发AI策略的过程中的相关技术。

保存模型的好处:

  1. 模型固化,每次模型的预测结果一致,便于复现
  2. 不用每次训练模型,节省时间
  3. 可以进行策略模型交流,但又不透露模型细节

本文主要从 模型训练-模型保存-模型调用三个流程完整讲解如何使用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

\

{link}