python - 将损失函数转化为准确度函数
问题描述
我有 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)
用作我的准确度指标吗?有没有更聪明的方法来做到这一点?
解决方案
实际上,您的损失更多是TRSE
因为您先求根,然后是总和而不是平均值,因此是“总平方根误差”:)。如果你真的想要 RMSE 损失,
RMSE = np.sqrt(np.mean((np.array(pred_df.real_values) - np.array(pred_df.estimate_values))**2))
要将其转换为准确度指标,您可以正确找到最小值/最大值,但不应减去最大值;您应该首先减去最小值,然后除以最大值和最小值的差值,即 min-max 归一化。这将给出范围内的值[0, 1]
。RMSE 的最小值为 0,最大值为 5(您的最佳/最坏情况方法证明了这一点)。然后,(RMSE - 0) / (5 - 0) = RMSE / 5 是准确度指标:acc = RMSE / 5