【问题标题】:Custom loss function Tensorflow / Keras penalizing relative distance自定义损失函数 Tensorflow / Keras 惩罚相对距离
【发布时间】:2021-01-14 19:29:20
【问题描述】:

我构建了一个具有三个输出类的张量流神经网络。 我的损失函数目前是val_mean_absolute_percentage_error,因为不是绝对距离,而是目标和预测变量之间的相对距离很重要。 但是,平均绝对百分比误差计算为

1/n sum(|(y_test - y_pred) / y_test|)

不完全适合我的问题,因为如果 y_pred > y_test 会受到更大的惩罚

示例 1:y_test = 5, y_pred = 2 --> Mape = 0.6

示例 2:y_pred = 5, y_test = 2 --> Mape = 1.5

然而,上述例子应该受到同样的惩罚。

有谁知道哪个(自定义)损失函数更适合我的问题?

【问题讨论】:

    标签: python tensorflow keras neural-network loss-function


    【解决方案1】:

    对于y_truey_pred 之间更大的差异,您可以考虑使用mse loss 而不是mae loss;在 RMSE/MSE 的情况下,由于误差在平均之前是平方的,因此 RMSE 会为较大的误差赋予较高的权重。

    问题是你划分为y_test,因此结果不同。您可以先尝试删除分母以获得相同的 MAPE,如果在 y_testy_pred 之间仍然获得更大的值,请考虑使用 RMSE

    【讨论】:

    • 这并不能解决问题。我正在寻找一个不依赖于幅度的指标。 y_pred=50 和 y_test=100 的惩罚应该与 y_pred=2 和 y_test=4 相同。 MSE/RMSE 在这里没有帮助
    • 我明白了。然后我认为删除 /y_test 的除法将解决您的问题,因为在这种情况下,只会保持绝对差异:D,因此在您的示例中使用 y_true, y_pred |2-5| == |5-2|
    • 你可以试试 $\sum_i \frac{ |y_i - \hat{y}_i| }{ |y_i +\hat{y}_i| }$
    猜你喜欢
    • 2020-09-01
    • 2019-03-12
    • 2018-07-14
    • 2020-11-14
    • 1970-01-01
    • 2018-10-28
    • 2017-12-29
    • 2020-02-09
    • 2020-07-18
    相关资源
    最近更新 更多