我有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))
要将其转换为精度指标,你找minmax值是正确的,但不应该用max值来减,应该先减去min值,然后除以max和min值的差值,即min-max归一化。这样可以得到的数值范围是 [0, 1]
. RMSE的最小值为0,最大值为5(你的最坏情况方法证明了这一点)。那么,(RMSE - 0) (5 - 0) = RMSE 5就是精度指标。acc = RMSE / 5