SMAPE理解模糊
ambiguity of understanding SMAPE
我已经实施了几种回归预测方法,现在我想比较它们。我选择了 MAE、RMSE 和 SMAPE 评级。我的结果如下所示:
- 方法 1:MAE= 0,6,RMSE= 0,9 和 SMAPE 531
- 方法 2:MAE= 3,0,RMSE= 6,1 和 SMAPE 510
- 方法 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)))
还是计算有误?
提前致谢
好吧,也许方法是错误的..相反,我使用了 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 的结果看起来更合理
我已经实施了几种回归预测方法,现在我想比较它们。我选择了 MAE、RMSE 和 SMAPE 评级。我的结果如下所示:
- 方法 1:MAE= 0,6,RMSE= 0,9 和 SMAPE 531
- 方法 2:MAE= 3,0,RMSE= 6,1 和 SMAPE 510
- 方法 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)))
还是计算有误?
提前致谢
好吧,也许方法是错误的..相反,我使用了 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 的结果看起来更合理