【问题标题】:Turn a loss function into an accuracy function将损失函数转化为准确度函数
【发布时间】:2020-08-19 22:41:06
【问题描述】:

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

【问题讨论】:

    标签: python numpy loss-function loss


    【解决方案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

    【讨论】:

      猜你喜欢
      • 2014-06-27
      • 2020-07-16
      • 2021-06-13
      • 2020-08-17
      • 2020-11-03
      • 2018-03-20
      • 1970-01-01
      • 2019-03-13
      • 1970-01-01
      相关资源
      最近更新 更多