gluonts.mx.model.tpp 包#

class gluonts.mx.model.tpp.DeepTPPEstimator(prediction_interval_length: float, context_interval_length: float, num_marks: int, time_distr_output: gluonts.mx.model.tpp.distribution.base.TPPDistributionOutput = gluonts.mx.model.tpp.distribution.weibull.WeibullOutput(), embedding_dim: int = 5, trainer: gluonts.mx.trainer._base.Trainer = gluonts.mx.trainer._base.Trainer(add_default_callbacks=True, callbacks=None, clip_gradient=10.0, ctx=None, epochs=100, hybridize=False, init='xavier', learning_rate=0.001, num_batches_per_epoch=50, weight_decay=1e-08), num_hidden_dimensions: int = 10, num_parallel_samples: int = 100, num_training_instances: int = 100, freq: str = 'H', batch_size: int = 32)[source]#

基类: gluonts.mx.model.estimator.GluonEstimator

DeepTPP 是一个基于 RNN 的多元点过程模型。

在每次事件 \((\tau_i, m_i)\) 之后,我们将到达间隔时间 \(\tau_i\) 和标记 \(m_i\) 输入到 RNN 中。RNN 的状态 \(h_i\) 表示历史嵌入。我们使用 \(h_i\) 来参数化下一个到达间隔时间的分布 \(p(\tau_{i+1} | h_i)\) 和下一个标记的分布 \(p(m_{i+1} | h_i)\)。标记的分布总是分类的,但对于到达间隔时间的分布可以选择不同的选项 - 参见 gluonts.model.tpp.distribution

该模型是 [DDT+16][TWJ19][SBG20] 中描述方法的泛化。

参考文献

参数
  • prediction_interval_length – 估计器在预测时将预测的间隔长度(连续时间)。

  • context_interval_length – 用于训练估计器的间隔长度(连续时间)。

  • num_marks – 标记(不同过程)的数量,即标记集合的基数。

  • time_distr_output – 用于到达间隔时间分布的 TPPDistributionOutput。有关可能的选项,请参见 gluonts.model.tpp.distribution

  • embedding_dim – 标记向量嵌入的维度(用作 GRU 的输入)。

  • trainer – 用于训练估计器的 gluonts.mx.trainer.Trainer 对象。请注意,必须设置 Trainer(hybridize=False),因为 DeepTPPEstimator 目前不支持混合化。

  • num_hidden_dimensions – GRU 网络中的隐藏单元数量。

  • num_parallel_samples – 学习到的 Predictor 返回的样本数量。

  • num_training_instances – 在训练期间从提供的数据集中每个条目采样的训练实例数量。

  • freq – 类似于离散时间模型的 freq,指定了到达间隔时间使用的时间单位。

  • batch_size – 训练和预测时使用的批次大小。

create_predictor(transformation: gluonts.transform._base.Transformation, trained_network: gluonts.mx.model.tpp.deeptpp._network.DeepTPPTrainingNetwork) gluonts.model.predictor.Predictor[source]#

创建并返回一个预测器对象。

参数
  • transformation – 应用于数据输入模型前的转换。

  • module – 经过训练的 HybridBlock 对象。

返回

封装用于推理的 HybridBlock 的预测器。

返回类型

Predictor

create_training_data_loader(data: gluonts.dataset.Dataset, **kwargs) Iterable[Dict[str, Any]][source]#

创建一个用于训练的数据加载器。

参数

data – 用于创建数据加载器的数据集。

返回

数据加载器,即数据批次的迭代器。

返回类型

DataLoader

create_training_network() mxnet.gluon.block.HybridBlock[source]#

创建并返回用于训练的网络(即,计算损失)。

返回

根据输入数据计算损失的网络。

返回类型

HybridBlock

create_transformation() gluonts.transform._base.Transformation[source]#

创建并返回训练和推理所需的转换。

返回

在训练和推理时应用于数据集每个条目的转换。

返回类型

Transformation

create_validation_data_loader(data: gluonts.dataset.Dataset, **kwargs) Iterable[Dict[str, Any]][source]#

创建一个用于验证的数据加载器。

参数

data – 用于创建数据加载器的数据集。

返回

数据加载器,即数据批次的迭代器。

返回类型

DataLoader

lead_time: int#
prediction_length: int#
class gluonts.mx.model.tpp.PointProcessGluonPredictor(input_names: typing.List[str], prediction_net: mxnet.gluon.block.Block, batch_size: int, prediction_interval_length: float, freq: str, ctx: mxnet.context.Context, input_transform: gluonts.transform._base.Transformation, dtype: typing.Type = <class 'numpy.float32'>, forecast_generator: gluonts.model.forecast_generator.ForecastGenerator = <gluonts.mx.model.tpp.predictor.PointProcessForecastGenerator object>, **kwargs)[source]#

基类: gluonts.mx.model.predictor.GluonPredictor

标记时间点过程模型的预测器对象。

TPP 预测在几个方面与标准离散时间模型不同。首先,至少目前,只有实现 PointProcessSampleForecast 的样本预测可用。与 TPP 估计器对象类似,预测器使用 prediction_interval_length 而不是 prediction_length

预测器还考虑了预测网络输出一个包含样本本身及其 valid_length 的 2 元组张量这一事实。

参数

prediction_interval_length – 预测间隔的长度

as_symbol_block_predictor(batch: Optional[Dict[str, Any]] = None, dataset: Optional[gluonts.dataset.Dataset] = None) gluonts.mx.model.predictor.SymbolBlockPredictor[source]#

返回当前 GluonPredictor 的一个变体,该变体由 Gluon SymbolBlock 支持。如果当前预测器已经是 SymbolBlockPredictor,则仅返回自身。

batch 或 dataset 必须设置一个。

参数
  • batch – 底层网络调用 hybridize() 后用于必需前向传递的数据批次。

  • dataset – 如果未设置 batch,则从中提取批次的数据集。

返回

从当前预测器派生出的、由 SymbolBlock 支持的预测器。

返回类型

SymbolBlockPredictor

hybridize(batch: Dict[str, Any]) None[source]#

对底层预测网络进行混合化(hybridization)。

参数

batch – 调用 hybridize() 后用于必需前向传递的数据批次。

predict(dataset: gluonts.dataset.Dataset, num_samples: Optional[int] = None, num_workers: Optional[int] = None, num_prefetch: Optional[int] = None, **kwargs) Iterator[gluonts.model.forecast.Forecast][source]#

计算所提供数据集中时间序列的预测。此方法未在此抽象类中实现;请使用其子类之一。:param dataset: 包含要预测的时间序列的数据集。

返回

预测的迭代器,顺序与提供的数据集迭代器相同。

返回类型

Iterator[Forecast]

serialize_prediction_net(path: pathlib.Path) None[source]#
class gluonts.mx.model.tpp.PointProcessSampleForecast(samples: Union[mxnet.ndarray.ndarray.NDArray, numpy.ndarray], valid_length: Union[mxnet.ndarray.ndarray.NDArray, numpy.ndarray], start_date: pandas._libs.tslibs.timestamps.Timestamp, freq: str, prediction_interval_length: float, item_id: Optional[str] = None, info: Optional[Dict] = None)[source]#

基类: gluonts.model.forecast.Forecast

用于时间点过程推理的样本预测对象。与标准预测对象不同,它不实现固定长度样本。每个样本具有可变长度,保存在单独的 valid_length 属性中。

重要的是,PointProcessSampleForecast 未实现离散时间预测中可用的一些方法(例如 quantileplot)。

参数
  • samples – 样本的多维数组,形状为 (number_of_samples, max_pred_length, target_dim)。target_dim 等于 2,其中第一维包含到达间隔时间,第二维包含分类标记。

  • valid_length – 一个整数数组,表示 samples 中每个样本的有效长度。即,valid_length[0] == 2 表示 samples[0, ...] 中只有前两个条目是有效的“点”。

  • start_date (pandas._libs.tslibs.period.Period) – 样本的起始时间戳

  • freq – 到达间隔时间的时间单位

  • prediction_interval_length (float) – 抽取样本所对应的预测间隔的长度。

  • item_id (Optional[str]) – 项目 ID,如果可用。

  • info (Optional[Dict]) – 可选的附加信息字典。

dim() int[source]#

返回预测器对象的维度。

property freq#
property index: pandas.core.indexes.period.PeriodIndex#
mean = None#
plot(**kwargs)[source]#

使用 matplotlib 绘制中位数预测和预测区间。

默认绘制 0.50.9 预测区间。可以通过设置 intervals 选择其他区间。

这会绘制到当前的 axes 对象(通过 plt.gca()),如果提供了 ax,则绘制到 ax。类似地,如果没有显式设置 color,则颜色使用 matplotlib 的内部颜色循环。

可以设置 name 作为中位数预测的 label。除非将 show_label 设置为 True,否则不标注区间。

prediction_interval_length: float#
prediction_length: int = None#
quantile(q: Union[float, str]) numpy.ndarray[source]#

从预测分布中计算分位数。

参数

q – 要计算的分位数。

返回

预测范围内的分位数的值。

返回类型

numpy.ndarray