为什么平均绝对百分比误差(MAPE)极高?

我从 machinelearningmastery 获得了代码

我修改了 model.compile() 函数,添加了 mape 指标来计算平均绝对百分比误差。运行代码后,每个epoch的 mape 值都非常大,考虑到它是一个百分比指标。我是否遗漏了什么明显的问题,还是输出是正确的?输出如下所示:

Epoch 91/1000s - loss: 0.0103 - mean_absolute_percentage_error: 1764997.4502Epoch 92/1000s - loss: 0.0103 - mean_absolute_percentage_error: 1765653.4924Epoch 93/1000s - loss: 0.0102 - mean_absolute_percentage_error: 1766505.5107Epoch 94/1000s - loss: 0.0102 - mean_absolute_percentage_error: 1766814.5450Epoch 95/1000s - loss: 0.0102 - mean_absolute_percentage_error: 1767510.8146Epoch 96/1000s - loss: 0.0101 - mean_absolute_percentage_error: 1767686.9054Epoch 97/1000s - loss: 0.0101 - mean_absolute_percentage_error: 1767076.2169Epoch 98/1000s - loss: 0.0100 - mean_absolute_percentage_error: 1767014.8481Epoch 99/1000s - loss: 0.0100 - mean_absolute_percentage_error: 1766592.8125Epoch 100/1000s - loss: 0.0100 - mean_absolute_percentage_error: 1766348.6332

我运行的代码(省略了预测部分)如下所示:


回答:

我通过在调用compile之前使用 keras.backend.set_epsilon(1) 将模糊因子epsilon设置为1来解决这个问题。

提示在源代码中

def mean_absolute_percentage_error(y_true, y_pred):diff = K.abs((y_true - y_pred) / K.clip(K.abs(y_true),                                        K.epsilon(),                                        None))return 100. * K.mean(diff, axis=-1)

这意味着,由于某些未知原因,训练集上MAPE计算中的 K.abs(y_true) 项低于模糊默认值(1e-7),因此它使用了该默认值,从而导致了巨大的数值。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注