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 在非尾部区域
- 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)
- 返回
- 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)
- 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)
- 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 中的分位数水平处评估样条函数。
- 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 相同。
- 返回类型
张量
- 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#
- 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#
此对象构造的分布所考虑的每个单独事件的形状。
- 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#