元控制器:元任务、元数据集和元模型
章节大纲
-
元控制器:元任务、元数据集与元模型
简介
元控制器为预测模型提供指导,其目的是学习一系列预测任务中的规律模式,并利用这些学习到的模式来指导未来的预测任务。用户可以基于 Meta Controller 模块实现自己的元模型实例。
元任务
元任务实例是元学习框架中的基本元素。它保存可供元模型使用的数据。多个元任务实例可能共享同一个
Data Handler
,由元数据集控制。用户应该使用prepare_task_data()
来获取可以直接输入元模型的数据。class 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]
准备每个元任务中的数据,并为训练做好准备。
以下代码示例展示了如何从元数据集中检索元任务列表:
Python# 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
元模型
通用元模型
元模型实例是控制工作流的部分。元模型的用法包括:
-
用户使用
fit
函数训练他们的元模型。 -
元模型实例通过
inference
函数提供有用信息来指导工作流。
class qlib.model.meta.model.MetaModel
指导模型学习的元模型。
“指导”一词可以根据模型学习的阶段分为两类:
-
学习任务的定义:请参阅
MetaTaskModel
的文档。 -
控制模型的学习过程:请参阅
MetaGuideModel
的文档。
abstract fit(*args, **kwargs)
元模型的训练过程。
abstract inference(*args, **kwargs) -> object
元模型的推理过程。
返回:
一些用于指导模型学习的信息。
返回类型:object
元任务模型
此类元模型可能直接与任务定义交互。因此,元任务模型是它们要继承的类。它们通过修改基本任务定义来指导基本任务。
prepare_tasks
函数可用于获取修改后的基本任务定义。class qlib.model.meta.model.MetaTaskModel
此类元模型处理基本任务定义。元模型在训练后为训练新的基本预测模型创建任务。prepare_tasks 直接修改任务定义。
fit(meta_dataset: MetaTaskDataset)
MetaTaskModel 应该从 meta_dataset 中获取已准备好的 MetaTask。然后,它将从元任务中学习知识。
inference(meta_dataset: MetaTaskDataset) -> List[dict]
MetaTaskModel 将对 meta_dataset 进行推理。MetaTaskModel 应该从 meta_dataset 中获取已准备好的 MetaTask。然后,它将创建带有 Qlib 格式的修改后的任务,这些任务可以由 Qlib 训练器执行。
返回:
一个修改后的任务定义列表。
返回类型:List[dict]
元指导模型
此类元模型参与基本预测模型的训练过程。元模型可以在基本预测模型的训练过程中指导它们,以提高其性能。
class qlib.model.meta.model.MetaGuideModel
此类元模型旨在指导基本模型的训练过程。元模型在基本预测模型的训练过程中与它们交互。
abstract fit(*args, **kwargs)
元模型的训练过程。
abstract inference(*args, **kwargs)
元模型的推理过程。
返回:
一些用于指导模型学习的信息。
返回类型:object
示例
Qlib 提供了一个名为 DDG-DA 的 Meta Model 模块实现,该模块可适应市场动态。
DDG-DA 包括四个步骤:
-
计算元信息并将其封装到
Meta Task
实例中。所有元任务构成一个Meta Dataset
实例。 -
基于元数据集的训练数据训练
DDG-DA
。 -
对
DDG-DA
进行推理以获取指导信息。 -
将指导信息应用于预测模型以提高其性能。
上述示例可以在
examples/benchmarks_dynamic/DDG-DA/workflow.py
中找到。 -