时间序列¶
pyro.contrib.timeseries
模块提供了一系列用于预测应用的贝叶斯时间序列模型。
查看GP示例以了解示例用法。
抽象模型¶
- class TimeSeriesModel(name: str = '')[source]¶
-
单变量和多变量时间序列模型的基类。
- log_prob(targets)[来源]¶
对数概率函数。
- Parameters
targets (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数targets
的维度- Returns torch.Tensor
对于输出维度相关的适当多元时间序列模型的情况,返回一个0维的对数概率;否则,对于批处理的一元时间序列模型,返回一个1维的对数概率张量。
- forecast(targets, dts)[source]¶
- Parameters
目标 (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数目标的维度。这些代表用于进行预测的训练数据。dts (torch.Tensor) – 一个一维张量,表示预测未来的时间,其中零对应于最终目标
targets[-1]
的时间。
- Returns torch.distributions.Distribution
返回一个预测分布,其批次形状为
(S,)
,事件形状为(obs_dim,)
,其中S
是dts
的大小。也就是说,生成的预测分布不编码dts
中不同时间之间的相关性。
- get_dist()[source]¶
获取一个与这个时间序列模型相对应的
Distribution
对象。通常这是一个GaussianHMM
。
高斯过程¶
- class IndependentMaternGP(nu=1.5, dt=1.0, obs_dim=1, length_scale_init=None, kernel_scale_init=None, obs_noise_scale_init=None)[source]¶
基础类:
pyro.contrib.timeseries.base.TimeSeriesModel
一个时间序列模型,其中每个输出维度都使用具有Matern核的单变量高斯过程独立建模。假设目标在时间上是均匀间隔的。训练和推理在时间序列T的长度上是对数的。
- Parameters
nu (float) – Matern核的顺序;取值为0.5、1.5或2.5之一。
dt (float) – 时间序列中相邻观测值之间的时间间隔。
obs_dim (int) – 每个时间步目标的维度。
length_scale_init (torch.Tensor) – 可选的核长度尺度初始值,以
obs_dim
维度的张量形式给出kernel_scale_init (torch.Tensor) – 可选的核尺度初始值,以
obs_dim
维张量的形式给出obs_noise_scale_init (torch.Tensor) – 观测噪声尺度的可选初始值,以
obs_dim
维度的张量形式给出
- get_dist(duration=None)[source]¶
获取与
obs_dim
个独立的Matern GPs对应的GaussianHMM
分布。- Parameters
duration (int) – 时间轴的可选大小
event_shape[0]
。 当从参数未沿时间轴扩展的齐次HMMs中采样时,这是必需的。
- log_prob(targets)[source]¶
- Parameters
targets (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数targets
的维度- Returns torch.Tensor
一个形状为
(obs_dim,)
的对数概率的一维张量
- forecast(targets, dts)[来源]¶
- Parameters
目标 (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数目标的维度。这些代表用于进行预测的训练数据。dts (torch.Tensor) – 一个一维张量,表示预测未来的时间,其中零对应于最终目标
targets[-1]
的时间。
- Returns torch.distributions.Normal
返回一个预测的正态分布,其批次形状为
(S,)
,事件形状为(obs_dim,)
,其中S
是dts
的大小。
- class LinearlyCoupledMaternGP(nu=1.5, dt=1.0, obs_dim=2, num_gps=1, length_scale_init=None, kernel_scale_init=None, obs_noise_scale_init=None)[source]¶
基础类:
pyro.contrib.timeseries.base.TimeSeriesModel
一个时间序列模型,其中每个输出维度被建模为具有Matern核的共享单变量高斯过程的线性组合。
更详细地说,生成过程是:
\(y_i(t) = \sum_j A_{ij} f_j(t) + \epsilon_i(t)\)
目标 \(y_i\) 被假定为在时间上均匀分布。训练和推理在时间序列 T 的长度上是对数的。
- Parameters
nu (float) – Matern核的顺序;取值为0.5、1.5或2.5之一。
dt (float) – 时间序列中相邻观测值之间的时间间隔。
obs_dim (int) – 每个时间步目标的维度。
num_gps (int) – 用于建模时间序列的独立高斯过程的数量。 典型值可能是 \(N_{\rm gp} \in [\frac{D_{\rm obs}}{2}, D_{\rm obs}]\)
length_scale_init (torch.Tensor) – 可选的核长度尺度初始值,以
num_gps
维张量的形式给出kernel_scale_init (torch.Tensor) – 可选的核尺度初始值,以
num_gps
维张量的形式给出obs_noise_scale_init (torch.Tensor) – 观测噪声尺度的可选初始值,以
obs_dim
维度的张量形式给出
- get_dist(duration=None)[来源]¶
获取与
LinearlyCoupledMaternGP
对应的GaussianHMM
分布。- Parameters
duration (int) – 时间轴的可选大小
event_shape[0]
。 当从参数未沿时间轴扩展的齐次HMMs中采样时,这是必需的。
- log_prob(targets)[源代码]¶
- Parameters
targets (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数targets
的维度- Returns torch.Tensor
一个(标量)对数概率
- forecast(targets, dts)[source]¶
- Parameters
目标 (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数目标的维度。这些代表用于进行预测的训练数据。dts (torch.Tensor) – 一个一维张量,表示预测未来的时间,其中零对应于最终目标
targets[-1]
的时间。
- Returns torch.distributions.MultivariateNormal
返回一个预测的MultivariateNormal分布,其批次形状为
(S,)
,事件形状为(obs_dim,)
,其中S
是dts
的大小。
- class DependentMaternGP(nu=1.5, dt=1.0, obs_dim=1, linearly_coupled=False, length_scale_init=None, obs_noise_scale_init=None)[source]¶
基础类:
pyro.contrib.timeseries.base.TimeSeriesModel
一个时间序列模型,其中每个输出维度都被建模为具有Matern核的单变量高斯过程。由于高斯过程由相关的维纳过程驱动,不同的输出维度变得相关;详情请参见参考文献[1]。此外,如果linearly_coupled为True,则通过线性混合实现额外的相关性,如
LinearlyCoupledMaternGP
所示。假设目标在时间上是均匀分布的。训练和推理的时间复杂度是时间序列长度T的对数。- Parameters
nu (float) – Matern核的阶数;必须为1.5。
dt (float) – 时间序列中相邻观测值之间的时间间隔。
obs_dim (int) – 每个时间步目标的维度。
linearly_coupled (bool) – 是否在似然中线性混合各种高斯过程。 默认为 False。
length_scale_init (torch.Tensor) – 可选的核长度尺度初始值,以
obs_dim
维度的张量形式给出obs_noise_scale_init (torch.Tensor) – 观测噪声尺度的可选初始值,以
obs_dim
维度的张量形式给出
参考文献 [1] “多元时间序列的依赖Matern过程,” Alexander Vandenberg-Rodes, Babak Shahbaba.
- get_dist(duration=None)[source]¶
获取与
DependentMaternGP
对应的GaussianHMM
分布- Parameters
duration (int) – 时间轴的可选大小
event_shape[0]
。 当从参数未沿时间轴扩展的齐次HMMs中采样时,这是必需的。
- log_prob(targets)[source]¶
- Parameters
targets (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数targets
的维度- Returns torch.Tensor
一个(标量)对数概率
- forecast(targets, dts)[source]¶
- Parameters
目标 (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数目标的维度。这些代表用于进行预测的训练数据。dts (torch.Tensor) – 一个一维张量,表示预测未来的时间,其中零对应于最终目标
targets[-1]
的时间。
- Returns torch.distributions.MultivariateNormal
返回一个预测的多元正态分布,其批次形状为
(S,)
,事件形状为(obs_dim,)
,其中S
是dts
的大小。
线性高斯状态空间模型¶
- class GenericLGSSM(obs_dim=1, state_dim=2, obs_noise_scale_init=None, learnable_observation_loc=False)[source]¶
基础类:
pyro.contrib.timeseries.base.TimeSeriesModel
一个通用的线性高斯状态空间模型,使用任意时间不变的转移和观测动态进行参数化。目标(隐含地)假设在时间上是均匀分布的。训练和推理在时间序列T的长度上是对数的。
- Parameters
- get_dist(duration=None)[source]¶
获取与
GenericLGSSM
对应的GaussianHMM
分布。- Parameters
duration (int) – 时间轴的可选大小
event_shape[0]
。 当从参数未沿时间轴扩展的齐次HMMs中采样时,这是必需的。
- log_prob(targets)[source]¶
- Parameters
targets (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数targets
的维度- Returns torch.Tensor
一个(标量)对数概率。
- forecast(targets, N_timesteps)[source]¶
- Parameters
目标 (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数目标的维度。这些代表用于进行预测的训练数据。N_timesteps (int) – 从最终目标
targets[-1]
预测未来的时间步数。
- Returns torch.distributions.MultivariateNormal
返回一个预测的多变量正态分布 其批次形状为
(N_timesteps,)
且事件形状为(obs_dim,)
- class GenericLGSSMWithGPNoiseModel(obs_dim=1, state_dim=2, nu=1.5, obs_noise_scale_init=None, length_scale_init=None, kernel_scale_init=None, learnable_observation_loc=False)[源代码]¶
基础类:
pyro.contrib.timeseries.base.TimeSeriesModel
一个通用的线性高斯状态空间模型,使用任意时间不变的转移和观测动态参数化,并为每个输出维度分别使用高斯过程噪声模型。更详细地说,生成过程如下:
\(y_i(t) = \sum_j A_{ij} z_j(t) + f_i(t) + \epsilon_i(t)\)
其中潜在变量 \({\bf z}(t)\) 遵循通用的时间不变线性高斯动态,而 \(f_i(t)\) 是具有Matern核的高斯过程。
目标(隐式)假设在时间上是均匀分布的。特别是,连续时间GP动态的时间步长\(dt=1.0\)对应于\({\bf z}\)空间动态的单个离散步骤。训练和推理在时间序列T的长度上是对数的。
- Parameters
obs_dim (int) – 每个时间步目标的维度。
state_dim (int) – 每个时间步的潜在状态 \({\bf z}\) 的维度。
nu (float) – Matern核的顺序;取值为0.5、1.5或2.5之一。
length_scale_init (torch.Tensor) – 可选的核长度尺度初始值,以
obs_dim
维度的张量形式给出kernel_scale_init (torch.Tensor) – 可选的核尺度初始值,以
obs_dim
维张量的形式给出obs_noise_scale_init (torch.Tensor) – 观测噪声尺度的可选初始值,以
obs_dim
维度的张量形式给出learnable_observation_loc (bool) – 是否应该学习观测模型的均值; 默认为 False。
- get_dist(duration=None)[source]¶
获取与
GenericLGSSMWithGPNoiseModel
对应的GaussianHMM
分布。- Parameters
duration (int) – 时间轴的可选大小
event_shape[0]
。 当从参数未沿时间轴扩展的齐次HMMs中采样时,这是必需的。
- log_prob(targets)[来源]¶
- Parameters
targets (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数targets
的维度- Returns torch.Tensor
一个(标量)对数概率。
- forecast(targets, N_timesteps)[来源]¶
- Parameters
目标 (torch.Tensor) – 一个形状为
(T, obs_dim)
的二维实数目标张量,其中T
是时间序列的长度,obs_dim
是每个时间步的实数目标的维度。这些代表用于进行预测的训练数据。N_timesteps (int) – 从最终目标
targets[-1]
预测未来的时间步数。
- Returns torch.distributions.MultivariateNormal
返回一个预测的多变量正态分布 其批次形状为
(N_timesteps,)
且事件形状为(obs_dim,)