自定义损失函数Tensorflow / Keras惩罚相对距离

时间:2020-09-29 08:02:47

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

我构建了一个带有三个输出类别的张量流神经网络。 我的损失函数当前为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

但是,上述示例应同样受到惩罚。

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

1 个答案:

答案 0 :(得分:1)

对于y_truey_pred之间更大的差异,您可以考虑使用mse loss代替mae loss;对于RMSE / MSE,由于误差在求平均值之前先求平方,所以RMSE赋予较大误差的权重。

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