geometric_mean_relative_squared_error#

geometric_mean_relative_squared_error(y_true, y_pred, horizon_weight=None, multioutput='uniform_average', square_root=False, **kwargs)[source]#

Geometric mean relative squared error (GMRSE).

If square_root is False then calculates GMRSE and if square_root is True then calculates root geometric mean relative squared error (RGMRSE).

In relative error metrics, relative errors are first calculated by scaling (dividing) the individual forecast errors by the error calculated using a benchmark method at the same index position. If the error of the benchmark method is zero then a large value is returned.

GMRSE applies geometric mean squared error (GMSE) to the resulting relative errors. RGMRSE applies root geometric mean squared error (RGMSE) to the resulting relative errors.

Parameters:
y_truepd.Series, pd.DataFrame or np.array of shape (fh,) or (fh, n_outputs) where fh is the forecasting horizon

Ground truth (correct) target values.

y_predpd.Series, pd.DataFrame or np.array of shape (fh,) or (fh, n_outputs) where fh is the forecasting horizon

Forecasted values.

y_pred_benchmarkpd.Series, pd.DataFrame or np.array of shape (fh,) or (fh, n_outputs) where fh is the forecasting horizon, default=None

Forecasted values from benchmark method.

horizon_weightarray-like of shape (fh,), default=None

Forecast horizon weights.

multioutput{‘raw_values’, ‘uniform_average’} or array-like of shape (n_outputs,), default=’uniform_average’

Defines how to aggregate metric for multivariate (multioutput) data. If array-like, values used as weights to average the errors. If ‘raw_values’, returns a full set of errors in case of multioutput input. If ‘uniform_average’, errors of all outputs are averaged with uniform weight.

square_rootbool, default=False

Whether to take the square root of the mean squared error. If True, returns root mean squared error (RMSPE) If False, returns mean squared error (MSPE)

Returns:
lossfloat

GMRSE or RGMRSE loss. If multioutput is ‘raw_values’, then GMRSE or RGMRSE is returned for each output separately. If multioutput is ‘uniform_average’ or an ndarray of weights, then the weighted average GMRSE or RGMRSE of all output errors is returned.

References

Hyndman, R. J and Koehler, A. B. (2006). “Another look at measures of forecast accuracy”, International Journal of Forecasting, Volume 22, Issue 4.

Examples

>>> from aeon.performance_metrics.forecasting import         geometric_mean_relative_squared_error
>>> y_true = np.array([3, -0.5, 2, 7, 2])
>>> y_pred = np.array([2.5, 0.0, 2, 8, 1.25])
>>> y_pred_benchmark = y_pred*1.1
>>> geometric_mean_relative_squared_error(y_true, y_pred,     y_pred_benchmark=y_pred_benchmark)
0.0008303544925949156
>>> y_true = np.array([[0.5, 1], [-1, 1], [7, -6]])
>>> y_pred = np.array([[0, 2], [-1, 2], [8, -5]])
>>> y_pred_benchmark = y_pred*1.1
>>> geometric_mean_relative_squared_error(y_true, y_pred,     y_pred_benchmark=y_pred_benchmark)
0.622419372049448
>>> geometric_mean_relative_squared_error(y_true, y_pred,     y_pred_benchmark=y_pred_benchmark, multioutput='raw_values')
array([4.09227746e-06, 1.24483465e+00])
>>> geometric_mean_relative_squared_error(y_true, y_pred,     y_pred_benchmark=y_pred_benchmark, multioutput=[0.3, 0.7])
0.8713854839582426