gluonts.mx.distribution.isqf 模块#

class gluonts.mx.distribution.isqf.ISQF(spline_knots: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], spline_heights: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], beta_l: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], beta_r: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], qk_y: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], qk_x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], num_qk: int, num_pieces: int, tol: float = 0.0001)[source]#

基类:gluonts.mx.distribution.distribution.Distribution

该类是论文 Learning Quantile Functions without Quantile Crossing for Distribution-free Time Series Forecasting 中 Incremental (Spline) Quantile Function 的分布类,作者包括 Park, Robinson, Aubet, Kan, Gasthaus, Wang。

参数
  • spline_knots – 参数化样条结点的 x 坐标 (y 坐标) 的张量。形状:(*batch_shape, (num_qk-1), num_pieces)

  • spline_heights – 参数化样条结点的 x 坐标 (y 坐标) 的张量。形状:(*batch_shape, (num_qk-1), num_pieces)

  • qk_x – 包含分位数结点递增 x 坐标 (y 坐标) 的张量。形状:(*batch_shape, num_qk)

  • qk_y – 包含分位数结点递增 x 坐标 (y 坐标) 的张量。形状:(*batch_shape, num_qk)

  • beta_l – 包含左 (右) 尾部非负可学习参数的张量。形状:(*batch_shape,)

  • beta_r – 包含左 (右) 尾部非负可学习参数的张量。形状:(*batch_shape,)

property F#
arg_names: Tuple#
property args: List#
property batch_shape: Tuple#

分布所考虑的事件集的布局。

从分布调用 sample() 会生成一个形状为 batch_shape + event_shape 的张量,而对该样本计算 log_prob (或更一般的 loss) 会生成一个形状为 batch_shape 的张量。

此属性通常仅在 mx.ndarray 模式下可用,此时可以访问分布参数的形状。

cdf(z: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

计算分位数水平 alpha_tilde,使得 q(alpha_tilde) = z。:param z: 形状为 (*batch_shape,) 的张量。

返回

形状为 (*batch_shape,) 的张量。

返回类型

alpha_tilde

cdf_spline(z: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

对于观测值 z 和在 [qk_x[k], qk_x[k+1]] 中定义的样条函数,计算分位数水平 alpha_tilde,使得 alpha_tilde。

= q^{-1}(z) 如果 z 在 qk_x[k] 和 qk_x[k+1] 之间 = qk_x[k] 如果 z < qk_x[k] = qk_x[k+1] 如果 z > qk_x[k+1] :param z: 观测值,形状 = (*batch_shape,)

返回

对应的分位数水平,形状 = (*batch_shape, num_qk-1)

返回类型

alpha_tilde

cdf_tail(z: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], left_tail: bool = True) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

计算分位数水平 alpha_tilde,使得 alpha_tilde。

= q^{-1}(z) 如果 z 在尾部区域 = qk_x_l 或 qk_x_r 如果 z 在非尾部区域

参数
  • z – 观测值,形状 = (*batch_shape,)

  • left_tail – 如果为 True,则计算左尾部的 alpha_tilde;否则,计算右尾部的 alpha_tilde。

返回

对应的分位数水平,形状 = (*batch_shape,)

返回类型

alpha_tilde

crps(z: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]#

计算 CRPS 的解析形式。:param z: 要评估的观测值。形状 = (*batch_shape,)

返回

包含 CRPS 的张量,形状与 z 相同。

返回类型

张量

crps_spline(z: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

计算样条函数的 CRPS 解析形式。:param z: 要评估的观测值。形状 = (*batch_shape,)

返回

包含 CRPS 的张量,形状与 z 相同。

返回类型

张量

crps_tail(z: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], left_tail: bool = True) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

计算左/右尾部的 CRPS 解析形式。

参数
  • z – 要评估的观测值。形状 = (*batch_shape,)

  • left_tail – 如果为 True,则计算左尾部的 CRPS;否则,计算右尾部的 CRPS。

返回

包含 CRPS 的张量,形状与 z 相同。

返回类型

张量

property event_dim: int#

事件维度数量,即 event_shape 元组的长度。

对于标量分布为 0,向量分布为 1,矩阵分布为 2,依此类推。

property event_shape: Tuple#

分布所考虑的每个单独事件的形状。

例如,标量分布的 event_shape = (),向量分布的 event_shape = (d, ) (其中 d 是向量的长度),矩阵分布的 event_shape = (d1, d2),依此类推。

从分布调用 sample() 会生成一个形状为 batch_shape + event_shape 的张量。

此属性通常仅在 mx.ndarray 模式下可用,此时可以访问分布参数的形状。

is_reparameterizable = False#
loss(z: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]#

根据分布计算 x 处的损失。

默认情况下,此方法返回 log_prob 的负值。但是,对于某些分布,对数密度不易计算,因此会计算其他损失函数。

参数

x – 形状为 (*batch_shape, *event_shape) 的张量。

返回

形状为 batch_shape 的张量,包含 x 中每个事件的损失值。

返回类型

张量

static parametrize_qk(F, quantile_knots: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Tuple[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]][source]#

参数化 num_qk 分位数结点的 x 或 y 坐标的函数。

参数

quantile_knots – 分位数结点的 x 或 y 坐标。形状:(*batch_shape, num_qk)

返回

  • qk – 分位数结点 (qk) 的 x 或 y 坐标,索引为 1, ..., num_qk-1,形状:(*batch_shape, num_qk-1)

  • qk_plus – 分位数结点 (qk) 的 x 或 y 坐标,索引为 2, ..., num_qk,形状:(*batch_shape, num_qk-1)

  • qk_l – 最左侧分位数结点 (qk) 的 x 或 y 坐标,形状:(*batch_shape)

  • qk_r – 最右侧分位数结点 (qk) 的 x 或 y 坐标,形状:(*batch_shape)

static parametrize_spline(F, spline_knots: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], qk: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], qk_plus: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], num_pieces: int, tol: float = 0.0001) Tuple[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol, mxnet.symbol.symbol.Symbol]][source]#

参数化样条结点的 x 或 y 坐标的函数。:param spline_knots: 参数化样条结点位置的变量。:param qk: 分位数结点 (qk) 的 x 或 y 坐标,

索引为 1, ..., num_qk-1,形状:(*batch_shape, num_qk-1)

参数
  • qk_plus – 分位数结点 (qk) 的 x 或 y 坐标,索引为 2, ..., num_qk,形状:(*batch_shape, num_qk-1)

  • num_pieces – 样条结段的数量

  • tol – 用于数值稳定性的容差超参数

返回

  • sk – 样条结点 (sk) 的 x 或 y 坐标,形状:(*batch_shape, num_qk-1, num_pieces)

  • delta_sk – 样条结点 (sk) 的 x 或 y 坐标的差值,形状:(*batch_shape, num_qk-1, num_pieces)

static parametrize_tail(F, beta: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], qk_x: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], qk_y: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Tuple[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]][source]#

参数化尾部参数的函数。

注意,指数尾部由以下公式给出:q(alpha) = a_l log(alpha) + b_l (左尾部) = a_r log(1-alpha) + b_r (右尾部)

其中 a_l=1/beta_l, b_l=-a_l*log(qk_x_l)+q(qk_x_l),a_r=1/beta_r, b_r=a_r*log(1-qk_x_r)+q(qk_x_r)

参数
  • beta – 参数化左尾部或右尾部,形状:(*batch_shape,)

  • qk_x – 最左侧或最右侧分位数结点的 x 坐标,形状:(*batch_shape,)

  • qk_y – 最左侧或最右侧分位数结点的 y 坐标,形状:(*batch_shape,)

返回

  • tail_a – 如上所述的 a_l 或 a_r

  • tail_b – 如上所述的 b_l 或 b_r

quantile(input_alpha: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]#

计算给定水平的分位数。

参数

level – 用于计算分位数的水准值。level 应该是一个介于 0 和 1 之间的水准值的一维张量。

返回

与传递的水准值对应的分位数。返回形状为

(num_levels, …DISTRIBUTION_SHAPE…),

其中 DISTRIBUTION_SHAPE 是底层分布的形状。

返回类型

分位数

quantile_internal(alpha: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], axis: Optional[int] = None) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

在分位数水平 input_alpha 处评估分位数函数。:param alpha: 如果 axis=None,形状为 (*batch_shape,) 的张量,否则包含一个

在指定位置的额外轴。

参数

axis – 包含要计算的不同分位数水平的轴的索引。详细信息请阅读下面的描述。

返回

分位数张量,形状与 alpha 相同。

返回类型

张量

quantile_spline(alpha: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], axis: Optional[int] = None) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

在包含在 alpha 中的分位数水平处评估样条函数。

参数
  • alpha – 输入分位数水平

  • axis – 沿其扩展的轴。关于 input_alpha 形状和 axis 的详细信息,请参考 quantile_internal 中的描述。

返回

分位数张量,形状 = (*batch_shape, num_qk-1) 如果 axis = None = (1, *batch_shape, num_qk-1) 如果 axis = 0 = (*batch_shape, num_qk-1, num_pieces) 如果 axis = -2

返回类型

张量

quantile_tail(alpha: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], axis: Optional[int] = None, left_tail: bool = True) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

在包含在 alpha 中的分位数水平处评估尾部函数。:param alpha: 输入分位数水平。:param axis: 沿其扩展的轴。

关于 input_alpha 形状和 axis 的详细信息,请参考 quantile_internal 中的描述。

参数

left_tail – 如果为 True,则计算左尾部的分位数;否则,计算右尾部的分位数。

返回

分位数张量,形状与 alpha 相同。

返回类型

张量

sample(num_samples: typing.Optional[int] = None, dtype=<class 'numpy.float32'>) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

用于抽取随机样本的函数。:param num_samples: 样本数量。:param dtype: 数据类型。

返回

张量,如果 num_samples = None 则形状为 (*batch_shape,),否则为 (num_samples, *batch_shape)。

返回类型

张量

class gluonts.mx.distribution.isqf.ISQFOutput(num_pieces: int, qk_x: List[float], tol: float = 0.0001)[source]#

基类:gluonts.mx.distribution.distribution_output.DistributionOutput

Incremental (Spline) Quantile Function 的 DistributionOutput 类。

参数
  • num_pieces – 每个样条的样条段数量。当 num_pieces = 1 时,ISQF 退化为 IQF。

  • alpha – 包含分位数结点的 x 坐标的张量。

  • tol – 用于数值安全保障的容差。

distr_cls#

别名:gluonts.mx.distribution.isqf.ISQF

distribution(distr_args, loc: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None, scale: Optional[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]] = None) gluonts.mx.distribution.isqf.ISQF[source]#

输出分布类的函数。distr_args: 分布参数。loc: 数据均值的偏移。scale: 数据比例。

classmethod domain_map(F, *args: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], tol: float = 0.0001) Tuple[Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol], Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]][source]#

域映射函数。此函数的输入由 self.args_dim 指定。knots, heights

参数化样条结点的 x-/y-坐标,形状 = (*batch_shape, (num_qk-1)*num_pieces)。q: 参数化分位数结点的 y 坐标,形状 = (*batch_shape, num_qk)。beta_l, beta_r: 参数化左/右尾部,形状 = (*batch_shape, 1)。

property event_shape: Tuple#

此对象构造的分布所考虑的每个单独事件的形状。

reshape_spline_args(distr_args, qk_x)[source]#

辅助函数,将 knots 和 heights 重塑为 (*batch_shape, num_qk-1, num_pieces),将 alpha 重塑为 (*batch_shape, num_qk)。

class gluonts.mx.distribution.isqf.TransformedISQF(base_distribution: gluonts.mx.distribution.isqf.ISQF, transforms: List[gluonts.mx.distribution.bijection.Bijection])[source]#

基类:gluonts.mx.distribution.transformed_distribution.TransformedDistribution, gluonts.mx.distribution.isqf.ISQF

arg_names: Tuple#
crps(y: Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol]) Union[mxnet.ndarray.ndarray.NDArray, mxnet.symbol.symbol.Symbol][source]#

根据分布计算 x连续秩概率得分 (CRPS)。

参数

x – 形状为 (*batch_shape, *event_shape) 的张量。

返回

形状为 batch_shape 的张量,包含根据分布计算的 x 中每个事件的 CRPS 得分。

返回类型

张量