mean_squared_scaled_error¶
- mean_squared_scaled_error(y_true, y_pred, sp=1, horizon_weight=None, multioutput='uniform_average', square_root=False, **kwargs)[source]¶
Mean squared scaled error (MSSE) or root mean squared scaled error (RMSSE).
If square_root is False then calculates MSSE, otherwise calculates RMSSE if square_root is True. Both MSSE and RMSSE output is non-negative floating point. The best value is 0.0.
This is a squared varient of the MASE loss metric. Like MASE and other scaled performance metrics this scale-free metric can be used to compare forecast methods on a single series or between series.
This metric is also suited for intermittent-demand series because it will not give infinite or undefined values unless the training data is a flat timeseries. In this case the function returns a large value instead of inf.
Works with multioutput (multivariate) timeseries data with homogeneous seasonal periodicity.
- 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_trainpd.Series, pd.DataFrame or np.array of shape (n_timepoints,) or (n_timepoints, n_outputs), default = None
Observed training values.
- spint
Seasonal periodicity of training data.
- 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 scaled error. If True, returns root mean squared scaled error (RMSSE) If False, returns mean squared scaled error (MSSE)
- Returns:
- lossfloat
RMSSE loss. If multioutput is ‘raw_values’, then MSSE or RMSSE is returned for each output separately. If multioutput is ‘uniform_average’ or an ndarray of weights, then the weighted average MSSE or RMSSE of all output errors is returned.
References
M5 Competition Guidelines. https://mofc.unic.ac.cy/wp-content/uploads/2020/03/M5-Competitors-Guide-Final-10-March-2020.docx
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 mean_squared_scaled_error >>> y_train = np.array([5, 0.5, 4, 6, 3, 5, 2]) >>> y_true = np.array([3, -0.5, 2, 7, 2]) >>> y_pred = np.array([2.5, 0.0, 2, 8, 1.25]) >>> mean_squared_scaled_error(y_true, y_pred, y_train=y_train, square_root=True) 0.20568833780186058 >>> y_train = np.array([[0.5, 1], [-1, 1], [7, -6]]) >>> y_true = np.array([[0.5, 1], [-1, 1], [7, -6]]) >>> y_pred = np.array([[0, 2], [-1, 2], [8, -5]]) >>> mean_squared_scaled_error(y_true, y_pred, y_train=y_train, square_root=True) 0.15679361328058636 >>> mean_squared_scaled_error(y_true, y_pred, y_train=y_train, multioutput='raw_values', square_root=True) array([0.11215443, 0.20203051]) >>> mean_squared_scaled_error(y_true, y_pred, y_train=y_train, multioutput=[0.3, 0.7], square_root=True) 0.17451891814894502