为什么Keras MAPE指标在训练过程中呈爆炸性增长,而MSE损失却没有?

时间:2020-09-29 12:10:26

标签: python tensorflow keras lstm lstm-stateful

我在Keras中实施了LSTM,以重制this paper。奇怪的行为很简单:我有一个MSE损失函数以及一个MAPE和MAE作为指标。在训练过程中,MAPE爆炸了,但MSE和MAE似乎正常训练:

Epoch 1/20
275/275 [==============================] - 191s 693ms/step - loss: 0.1005 - mape: 15794.8682 - mae: 0.2382 - val_loss: 0.0334 - val_mape: 24.9470 - val_mae: 0.1607
Epoch 2/20
275/275 [==============================] - 184s 669ms/step - loss: 0.0099 - mape: 6385.5464 - mae: 0.0725 - val_loss: 0.0078 - val_mape: 11.3268 - val_mae: 0.0803
Epoch 3/20
275/275 [==============================] - 186s 676ms/step - loss: 0.0025 - mape: 5909.3735 - mae: 0.0369 - val_loss: 0.0131 - val_mape: 14.9827 - val_mae: 0.1061
Epoch 4/20
275/275 [==============================] - 187s 678ms/step - loss: 0.0015 - mape: 4746.2788 - mae: 0.0278 - val_loss: 0.0142 - val_mape: 16.1894 - val_mae: 0.1122
Epoch 5/20
 30/275 [==>...........................] - ETA: 2:38 - loss: 0.0012 - mape: 9.3647 - mae: 0.0246

MAPE在每个时期结束时都会爆炸。这种特定行为的原因可能是什么?

每个时期的MAPE仍在减少,这不是一个真正的问题,因为它不妨碍训练过程吗?

1 个答案:

答案 0 :(得分:2)

您的损失和MAPE正在减少,因此听起来不错。但是,如果您担心MAPE中的高值,则可以判断Y值是否接近零。因为MAPE是百分比误差。

MAPE结果可能会产生误导。来自Wikipedia

尽管MAPE的概念听起来非常简单和令人信服,但它具有 实际应用中的主要弊端,并且有很多研究 关于MAPE的缺点和误导性的结果。

  1. 如果值为零(有时会在需求数据中发生),则无法使用该值,因为会有除法 零。
  2. 对于太低的预测,百分比误差不能超过100%,但是对于太高的预测,则没有上限 百分比误差。
  3. MAPE对负误差的惩罚要比对正误差的惩罚大。

要克服MAPE的这些问题,还有其他一些措施 在文献中提出:

  • 平均绝对比例误差(MASE)
  • 对称平均绝对百分比误差(sMAPE)
  • 平均方向精度(MDA)
  • 平均反正切绝对百分比误差(MAAPE)