如何将损失/指标更改为mean_absolute_percentage_error(MAPE)?

时间:2019-11-13 09:46:14

标签: r keras neural-network

我正在R中学习Keras,并希望以最少的Mean_absolute_percentage_error(MAPE)构建和优化NN模型。

我在官方文档page中找到了此示例,但报告为Mean_absolute_error 如何修改该代码以优化MAPE?

1 个答案:

答案 0 :(得分:2)

所有这些都可以通过检查keras的官方文档来解决。 metrics函数就是您想要的。在keras中,模型的性能由指标函数来判断。

指标的documentation状态:

  

“度量标准函数类似于损失函数,除了   训练模型时不使用评估指标的结果。   您可以将任何损失函数用作度量函数。”

如果要使用mean_absolute_percentage_error优化模型,则应寻找损失函数而不是指标。但是更改实际上是一样的。既然您问了关于mean_absolute_error的问题,我假设您想更改指标。

因此,在示例中,您可以轻松地使用任何loss函数来更改指标参数。当然还有mean_absolute_percentage_error。

build_model <- function() {

  model <- keras_model_sequential() %>%
    layer_dense(units = 64, activation = "relu",
                input_shape = dim(train_data)[2]) %>%
    layer_dense(units = 64, activation = "relu") %>%
    layer_dense(units = 1)

  model %>% compile(
    loss = "mse",
    optimizer = optimizer_rmsprop(),
    metrics = list("mean_absolute_percentage_error")
  )

  model
}

model <- build_model()
model %>% summary()

在情节中也要这样做。

library(ggplot2)

plot(history, metrics = "mean_absolute_percentage_error", smooth = FALSE) + 
  coord_cartesian(ylim = c(0, 5)) #you should change lims accordingly

如果要更改损失函数,请在模型构建中使用它。

loss = "mean_absolute_percentage_error",

编辑:由于r documentation使用了另一种语法,因此我不小心在此答案中使用了python文档。但这没有什么区别,因为我们只使用损失函数名称。您也可以像这样使用它:metrics = metric_mean_absolute_percentage_error。有时在解释功能时会更详细地介绍python文档。