将损失函数变成精度函数

时间:2020-05-05 09:50:41

标签: python numpy loss-function loss

我有RMSE损失,定义为:

RMSE = np.sum(np.sqrt((np.array(pred_df.real_values) - np.array(pred_df.estimate_values))**2))

其中,实际值和预测值介于0.0和5.0之间。

我想将此作为精度指标,而不是作为损失,但是我不知道此函数取值的间隔。我唯一能想到的是:

情况更糟-所有预测都是错误的(相距5.0):RMSE = 5.0 * len(pred_df) 最佳情况-所有预测都是正确的:RMSE = 0.0

我可以只使用RMSE - 5.0 * len(pred_df)作为我的准确性指标吗?有更聪明的方法吗?

1 个答案:

答案 0 :(得分:1)

实际上,您的损失更多地是TRSE,因为您首先求根,然后求和而不是平均值,因此就是“总平方根误差” :)。如果您真的想要RMSE损失,

RMSE = np.sqrt(np.mean((np.array(pred_df.real_values) - np.array(pred_df.estimate_values))**2))

要将其转换为精度度量,可以正确地找到最小/最大值,但不应减去最大值。您应该先减去最小值,然后除以最大值和最小值之间的差,即最小值-最大值归一化。这将给出[0, 1]范围内的值。 RMSE的最小值为0,最大值为5(最好/最坏的情况证明了这一点)。然后,(RMSE-0)/(5-0)= RMSE / 5是精度指标:acc = RMSE / 5