首页 > 解决方案 > 理解 SMAPE 的歧义

问题描述

我已经实现了几种回归预测方法,现在我想对它们进行比较。我选择了 MAE、RMSE 和 SMAPE 评级。我的结果如下所示:

  1. 方法 1:MAE= 0,6,RMSE= 0,9 和 SMAPE 531
  2. 方法 2:MAE= 3,0 ,RMSE= 6,1 和 SMAPE 510
  3. 方法 3:MAE= 10,1 ,RMSE= 17,00 和 SMAPE 420

当我绘制我的预测并将它们与我的测试集进行比较时,我可以看到方法 1 > 方法 2 > 方法 3。这从 MAE 和 RMSE 的值也很明显。但我认为生成的 SMAPE 越低,预测就越好。

我误解了 SMAPE 吗?由于 phyton 中没有预定义的方法,我的 SMAPE 计算如下所示:

def smape(A, F):
    return 100/len(A) * np.sum(2 * np.abs(F - A) / (np.abs(A) + np.abs(F)))

还是计算错误?

提前致谢

标签: kerasforecasting

解决方案


好吧,也许方法是错误的.. 相反,我使用了 Kaggle 的这个:

from numba import jit
import math

@jit
def smape_fast(y_true, y_pred):
    out = 0
    for i in range(y_true.shape[0]):
        a = y_true[i]
        b = y_pred[i]
        c = a+b
        if c == 0:
            continue
        out += math.fabs(a - b) / c
    out *= (200.0 / y_true.shape[0])
    return out

URL 现在与 MAE 和 RMSE 相比,我的结果从 SMAPE 看起来更合理


推荐阅读