首页 > 解决方案 > 将损失函数转化为准确度函数

问题描述

我有 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)用作我的准确度指标吗?有没有更聪明的方法来做到这一点?

标签: pythonnumpyloss-functionloss

解决方案


实际上,您的损失更多是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


推荐阅读