RMSE 还是 MAPE?选择哪一个更准确?

机器算法验证 时间序列 有马 模型选择 有效值 马佩
2022-03-30 12:05:00

我有一个每周的时代系列,我想为它找到最合适的模型。到目前为止,我已经尝试了 arima、带有 arima 误差的谐波回归、神经网络,最后我想决定哪一个更适合我的原始数据。时间序列看起来像这样,具有严重的季节性和循环模式: 在此处输入图像描述 我还将Ljung-Box测试和预测值的图放在这里:

# Arima 
fit <- training %>% auto.arima(lambda = 0)
fit %>% 
  checkresiduals()

    Ljung-Box test

data:  Residuals from ARIMA(3,1,0)
Q* = 23.619, df = 23, p-value = 0.4252

Model df: 3.   Total lags used: 26

在此处输入图像描述 在此处输入图像描述

#Harmonic regression with arima error
fit2 <- auto.arima(training, lambda = 0, seasonal = TRUE, xreg = fourier(training, K = 4))
fit2 %>%
  checkresiduals()

    Ljung-Box test

data:  Residuals from Regression with ARIMA(2,1,1) errors
Q* = 21.642, df = 15, p-value = 0.1175

Model df: 11.   Total lags used: 26

在此处输入图像描述 在此处输入图像描述

#Neural Network
fit3 <- nnetar(training, lambda = 0)
fit3

在此处输入图像描述

根据Ljung-Box测试,它们似乎都很好,但不知何故未能捕捉到这里时间序列的摆动形式,我不知道它有多重要。但我的主要问题是,当我检查准确性时,如果我选择 RMSE,我必须选择谐波回归,如果我选择 MAPE,我必须选择神经网络模型。而且我还想知道为什么 RMSE 和 MAPE 值在这里如此不同。

# Arima
accuracy(forecast(fit, h = 16), test)
                    ME     RMSE      MAE       MPE     MAPE      MASE       ACF1 Theil's U
Training set  1.948693 27.56683 19.09467 -4.402578 25.87164 0.5790763 0.21495069        NA
Test set     43.293579 61.02374 46.31065 32.745528 39.26652 1.4044442 0.09636865  1.158678

# Harmonic Regression
accuracy(forecast(h = 16, fit2, xreg = fourier(training, K = 4)), test)
                    ME    RMSE      MAE         MPE      MAPE      MASE      ACF1 Theil's U
Training set  4.323546 24.4800 16.05035   -1.464388  21.89874 0.4867525 0.1751586        NA
Test set     -2.495049 42.1323 33.03114 -171.095704 194.16485 1.0017220 0.2349017  4.288442

# Neural Network
accuracy(forecast(fit3, h = 16), test)

                    ME     RMSE      MAE       MPE     MAPE      MASE      ACF1 Theil's U
Training set  3.414448 22.63083 14.31504 -2.615375 16.93870 0.4341265 0.2253450        NA
Test set     40.095160 58.90628 44.16645 28.908539 37.72779 1.3394181 0.1107563  1.119875

非常感谢您的帮助,我非常感谢您提前。

2个回答

使用 RMSE。

请注意,(R)MSE 和 MAPE 将被完全不同的点预测最小化(请参阅我Higher RMSE lower MAPE的回答)。您应该首先决定要引出未知未来分布的哪个函数,然后选择相应的误差度量。

但是,请注意,ARIMA 模型将输出条件期望预测,即优化 (R)MSE 的函数。训练一个模型以最小化 (R)MSE,然后用不同的误差度量来评估其预测是没有意义的( Kolassa, 2020, IJF )。如果您真的想找到 MAPE 最优预测,您还应该使用 MAPE 来拟合您的模型。我不知道有任何现成的预测软件可以做到这一点(如果您使用 ML 管道,您可能能够指定任何拟合标准并选择 MAPE),并且我对MAPE-最小预测。

根据目视检查,您的时间序列可能每 1 到 3 个月有一个可辨别的波。如果您在模型中包含较长时期的项,这将创建一个更“摇摆不定”的外推平均估计值和预测区间。这并不重要,但它可能会改善点预测。正如您目前所拥有的那样,测试集中的绝大多数观察结果都在预测区间内。

MAPE 代表平均绝对百分比误差。它是每个估计平均值和观察到的结果之间的平均乘法效应。RMSE 代表均方根误差,即标准差。虽然它们都总结了围绕平均值的观测值的可变性,但它们的比例不同,因此不要期望值相似。我建议使用 RMSE,因为这是模型如何拟合数据的基础。