元控制器:元任务 & 元数据集 & 元模型
介绍
``Meta Controller``为``Forecast Model``提供指导,旨在学习一系列预测任务中的规律模式,并使用学习到的模式来指导即将到来的预测任务。用户可以基于``Meta Controller``模块实现自己的元模型实例。
元任务
Meta Task`实例是元学习框架中的基本元素。它保存了可用于`Meta Model`的数据。多个`Meta Task`实例可能共享同一个`Data Handler,由`Meta Dataset`控制。用户应使用`prepare_task_data()`获取可以直接输入`Meta Model`的数据。
- 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__`函数负责:
存储任务
存储原始输入数据
处理元数据的输入数据
参数
- taskdict
需要被元模型增强的任务
- meta_infoobject
元模型的输入
- get_meta_input() object
返回**处理后的**meta_info
元数据集
`Meta Dataset`控制元信息生成过程。它负责为训练`Meta Model`提供数据。用户应使用`prepare_tasks`获取`Meta Task`实例列表。
- class qlib.model.meta.dataset.MetaTaskDataset(segments: Dict[str, Tuple] | float, *args, **kwargs)
元级别获取数据的数据集。
元数据集负责:
输入任务(如Qlib任务)并准备元任务
元任务包含比普通任务更多的信息(如元模型的输入数据)
学习到的模式可以迁移到其他元数据集。应支持以下情况:
在元数据集A上训练的元模型然后应用于元数据集B
元数据集A和B之间共享某些模式,因此在元数据集A上的元输入会在元模型应用于元数据集B时使用
- __init__(segments: Dict[str, Tuple] | float, *args, **kwargs)
元数据集在初始化时维护一个元任务列表。
segments参数指示数据划分方式
MetaTaskDataset的`__init__`函数职责: - 初始化任务
- prepare_tasks(segments: List[str] | str, *args, **kwargs) List[MetaTask]
准备每个元任务的数据以供训练。
以下代码示例展示如何从`meta_dataset`获取元任务列表:
# 获取训练段和测试段,它们都是列表 train_meta_tasks, test_meta_tasks = meta_dataset.prepare_tasks(["train", "test"])
参数
- segments: Union[List[Text], Tuple[Text], Text]
选择数据的信息
返回
- list:
用于训练元模型的每个元任务准备数据的列表。对于多个段[seg1, seg2, ..., segN],返回的列表将是[[seg1中的任务], [seg2中的任务], ..., [segN中的任务]]。 每个任务都是一个元任务
元模型
通用元模型
Meta Model`实例是控制工作流程的部分。`Meta Model`的用法包括: 1. 用户使用`fit`函数训练他们的`Meta Model。 2. `Meta Model`实例通过`inference`函数提供有用信息来指导工作流程。
元任务模型
这类元模型可以直接与任务定义交互。`Meta Task Model`是它们继承的类。它们通过修改基础任务定义来指导基础任务。函数`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]:
修改后的任务定义列表。
元指导模型
这类元模型参与基础预测模型的训练过程。元模型可以在基础预测模型训练期间指导它们以提高性能。
示例
Qlib``提供了``Meta Model``模块的实现``DDG-DA
,
它适应市场动态。
``DDG-DA``包括四个步骤:
计算元信息并将其封装到``Meta Task``实例中。所有元任务形成一个``Meta Dataset``实例。
基于元数据集的训练数据训练``DDG-DA``。
对``DDG-DA``进行推理以获取指导信息。
将指导信息应用于预测模型以提高其性能。
上述示例可以在``examples/benchmarks_dynamic/DDG-DA/workflow.py``中找到。这里。