MQF2DistributionLoss#
- class pytorch_forecasting.metrics.distributions.MQF2DistributionLoss(prediction_length: int, quantiles: List[float] = [0.02, 0.1, 0.25, 0.5, 0.75, 0.9, 0.98], hidden_size: int | None = 4, es_num_samples: int = 50, beta: float = 1.0, icnn_hidden_size: int = 20, icnn_num_layers: int = 2, estimate_logdet: bool = False)[source]#
Bases:
DistributionLoss
Multivariate quantile loss based on the article Multivariate Quantile Function Forecaster.
Requires install of additional library:
pip install pytorch-forecasting[mqf2]
- Parameters:
prediction_length (int) – maximum prediction length.
quantiles (List[float], optional) – default quantiles to output. Defaults to [0.02, 0.1, 0.25, 0.5, 0.75, 0.9, 0.98].
hidden_size (int, optional) – hidden size per prediction length. Defaults to 4.
es_num_samples (int, optional) – Number of samples to calculate energy score. If None, maximum liklihood is used as opposed to energy score for optimization. Defaults to 50.
beta (float, optional) – between 0 and 1.0 to control how scale sensitive metric is (1=fully sensitive). Defaults to 1.0.
icnn_hidden_size (int, optional) – hidden size of distribution estimating network. Defaults to 20.
icnn_num_layers (int, optional) – number of hidden layers in distribution estimating network. Defaults to 2.
estimate_logdet (bool, optional) – if to estimate log determinant. Defaults to False.
Methods
loss
(y_pred, y_actual)Calculate negative likelihood
Map the a tensor of parameters to a probability distribution.
rescale_parameters
(parameters, target_scale, ...)Rescale normalized parameters into the scale required for the output.
to_quantiles
(y_pred[, quantiles])Convert network prediction into a quantile prediction.
- loss(y_pred: Tensor, y_actual: Tensor) Tensor [source]#
Calculate negative likelihood
- Parameters:
y_pred – network output
y_actual – actual values
- Returns:
metric value on which backpropagation can be applied
- Return type:
torch.Tensor
- map_x_to_distribution(x: Tensor) Distribution [source]#
Map the a tensor of parameters to a probability distribution.
- Parameters:
x (torch.Tensor) – parameters for probability distribution. Last dimension will index the parameters
- Returns:
- torch probability distribution as defined in the
class attribute
distribution_class
- Return type:
distributions.Distribution
- rescale_parameters(parameters: Tensor, target_scale: Tensor, encoder: BaseEstimator) Tensor [source]#
Rescale normalized parameters into the scale required for the output.
- Parameters:
parameters (torch.Tensor) – normalized parameters (indexed by last dimension)
target_scale (torch.Tensor) – scale of parameters (n_batch_samples x (center, scale))
encoder (BaseEstimator) – original encoder that normalized the target in the first place
- Returns:
parameters in real/not normalized space
- Return type:
torch.Tensor
- to_quantiles(y_pred: Tensor, quantiles: List[float] | None = None) Tensor [source]#
Convert network prediction into a quantile prediction.
- Parameters:
y_pred – prediction output of network
quantiles (List[float], optional) – quantiles for probability range. Defaults to quantiles as as defined in the class initialization.
- Returns:
prediction quantiles (last dimension)
- Return type:
torch.Tensor