元控制器:元任务 & 元数据集 & 元模型

简介

控制器预测 模型 提供指导,旨在学习一系列预测任务中的规律模式,并利用所学模式指导未来的预测任务。用户可根据 控制器 模块实现自己的元模型实例。

元任务

元任务 实例是元学习框架中的基本单元,用于保存可供 元模型 使用的数据。多个 元任务 实例可共享同一个 数据处理器,由 元数据集 控制。用户应使用 prepare_task_data() 获取可直接输入到 元模型 的数据。

qlib.model.meta.task.MetaTask(task: dict, meta_info: object, mode: str = 'full')

单个元任务,元数据集包含一系列此类任务。它作为 MetaDatasetDS 中的一个组件。

数据处理方式不同

  • 训练和测试时的处理输入可能不同

    • 训练时,训练任务中的 X、y、X_test、y_test 是必需的(# PROC_MODE_FULL #),但在测试任务中则非必需(# PROC_MODE_TEST #)。

    • 当元模型可迁移到其他数据集时,仅需 meta_info(# PROC_MODE_TRANSFER #)

__init__(task: dict, meta_info: object, mode: str = 'full')

__init__ 函数负责

  • 存储任务

  • 存储用于

  • 为元数据处理输入数据

参数:
  • task (dict) – 需要由元模型增强的任务

  • meta_info (object) – 元模型的输入数据

get_meta_input() object

返回处理后的 meta_info

元数据集

元数据集 控制元信息的生成过程,其职责是为训练 元模型 提供数据。用户应使用 prepare_tasks 来获取一组 元任务 实例。

class qlib.model.meta.dataset.MetaTaskDataset(segments: Dict[str, Tuple] | float, *args, **kwargs)

一个以元级别获取数据的数据集。

元数据集负责

  • 接收任务(例如 Qlib 任务)并准备元任务

    • 元任务包含比普通任务更多的信息(例如元模型的输入数据)

学习到的模式可以迁移到其他元数据集。以下情况应被支持:

  • 在元数据集 A 上训练的元模型,然后应用于元数据集 B

    • 元数据集 A 和 B 之间存在一些共享模式,因此在将元模型应用于元数据集 B 时,会使用元数据集 A 的元输入

__init__(segments: Dict[str, Tuple] | float, *args, **kwargs)

元数据集在初始化时会维护一个元任务列表。

segments 表示数据的划分方式。

MetaTaskDataset 的 __init__ 函数的职责是初始化任务。

prepare_tasks(segments: List[str] | str, *args, **kwargs) List[MetaTask]

准备每个元任务中的数据,使其准备好用于训练。

以下代码示例展示了如何从 meta_dataset 中获取元任务列表:

# get the train segment and the test segment, both of them are lists
train_meta_tasks, test_meta_tasks = meta_dataset.prepare_tasks(["train", "test"])
参数:

segments (Union[List[Text], Tuple[Text], Text]) – 用于选择数据的信息

返回:

每个元任务的准备数据列表,用于训练元模型。对于多个片段 [seg1, seg2, … , segN],返回的列表将为 [[seg1 中的任务], [seg2 中的任务], … , [segN 中的任务]]。每个任务都是一个元任务。

返回类型:

list

元模型

通用元模型

元模型实例是控制工作流的部分。元模型的使用包括:1. 用户使用 fit 函数训练其 元模型。2. 元模型 实例通过 inference 函数提供有用信息来指导工作流。

qlib.model.meta.model.MetaModel

指导模型学习的元模型。

单词 Guiding 可根据模型学习阶段分为两类:- 学习任务的定义:请参阅 MetaTaskModel 的文档 - 控制模型的学习过程:请参阅 MetaGuideModel 的文档

抽象 fit(*args, **kwargs)

元模型的训练过程。

抽象 inference(*args, **kwargs) 对象

元模型的推理过程。

返回:

用于指导模型学习的一些信息。

返回类型:

object

元任务模型

此类元模型可直接与任务定义交互。因此,元任务模型 是它们继承的基类,通过修改基础任务定义来指导基础任务。可使用 prepare_tasks 函数获取修改后的基础任务定义。

qlib.model.meta.model.MetaTaskModel

此类元模型处理基础任务定义。在训练完成后,元模型会创建用于训练新的基础预测模型的任务。prepare_tasks 直接修改任务定义。

fit(元数据集: MetaTaskDataset)

预期 MetaTaskModel 从元数据集中获取已准备的元任务,然后从这些元任务中学习知识。

推理(元数据集: MetaTaskDataset) 列表[dict]

MetaTaskModel 将对元数据集进行推理。预期 MetaTaskModel 从元数据集中获取已准备的元任务,然后创建符合 Qlib 格式的修改后任务,以便由 Qlib 训练器执行。

返回:

修改后的任务定义列表。

返回类型:

List[dict]

元引导模型

这种元模型参与基础预测模型的训练过程。元模型可在基础预测模型训练期间对其进行引导,以提升其性能。

qlib.model.meta.model.MetaGuideModel

这种元模型旨在引导基础模型的训练过程。元模型在基础预测模型的训练过程中与其交互。

抽象 fit(*args, **kwargs)

元模型的训练过程。

抽象 推理(*args, **kwargs)

元模型的推理过程。

返回:

用于指导模型学习的一些信息。

返回类型:

object

示例

Qlib 提供了 模型 模块的实现,即 DDG-DA,该模块能够适应市场动态。

DDG-DA 包含四个步骤:

  1. 计算元信息并将其封装为 任务 实例。所有元任务构成一个 数据集 实例。

  2. 基于元数据集的训练数据训练 DDG-DA

  3. DDG-DA 进行推理,以获取引导信息。

  4. 将引导信息应用于预测模型,以提升其性能。

上述示例可在 examples/benchmarks_dynamic/DDG-DA/workflow.py 中找到。