将损失函数转换为精度函数
Turn a loss function into an accuracy function
我有 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
,因为您先取根,然后取总和而不是均值,因此 "total root squared error" :)。如果你真的想要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(您的 best/worst 案例方法证明了这一点)。然后,(RMSE - 0) / (5 - 0) = RMSE / 5 是准确度指标:acc = RMSE / 5
我有 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
,因为您先取根,然后取总和而不是均值,因此 "total root squared error" :)。如果你真的想要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(您的 best/worst 案例方法证明了这一点)。然后,(RMSE - 0) / (5 - 0) = RMSE / 5 是准确度指标:acc = RMSE / 5