meanabsolutepercentageerror
Metric
MeanAbsolutePercentageErrorfromtorchmetrics(torchmetrics.MeanAbsolutePercentageError)
When to invoke this skill
The user has predictions + ground truth and asks to evaluate with MeanAbsolutePercentageError, or
mentions torchmetrics.MeanAbsolutePercentageError directly, or wants the standard torchmetrics implementation.
Reference signature
from torchmetrics import MeanAbsolutePercentageError
# MeanAbsolutePercentageError(**kwargs: Any) -> None
Library docstring
Compute `Mean Absolute Percentage Error`_ (MAPE).
.. math:: \text{MAPE} = \frac{1}{n}\sum_{i=1}^n\frac{| y_i - \hat{y_i} |}{\max(\epsilon, | y_i |)}
Where :math:`y` is a tensor of target values, and :math:`\hat{y}` is a tensor of predictions.
As input to ``forward`` and ``update`` the metric accepts the following input:
- ``preds`` (:class:`~torch.Tensor`): Predictions from model
- ``target`` (:class:`~torch.Tensor`): Ground truth values
As output of ``forward`` and ``compute`` the metric returns the following output:
- ``mean_abs_percentage_error`` (:class:`~torch.Tensor`): A tensor with the mean absolute percentage error over
state
Args:
kwargs: Additional keyword arguments, see :ref:`Metric kwargs` for more info.
Note:
MAPE output is a non-negative floating point. Best result is ``0.0`` . But it is important to note that,
bad predictions, can lead to arbitrarily large values. Especially when some ``target`` values are close to 0.
This `MAPE implementation returns`_ a very large number instead of ``inf``.
Example:
>>> from torch import tensor
>>> from torchmetrics.regression import MeanAbsolutePercentageError
>>> target = tensor([1, 10, 1e6])
>>> preds = tensor([0.9, 15, 1.2e6])
>>> mean_abs_percentage_error = MeanAbsolutePercentageError()
>>> mean_abs_percentage_error(preds, target)
tensor(0.2667)
Quick recipe
import torchmetrics as _m
score = _m.MeanAbsolutePercentageError(y_true, y_pred)
Don'ts
- Don't reimplement when the library version handles edge cases (NaN, ties, empty inputs) better than a hand-rolled formula.
- Always check the library version's argument order — sklearn is
(y_true, y_pred)while torchmetrics is(preds, target).