我有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
• 什么会导致 Go 无法在不损失精度的情况下将浮点数放入寄存器? (使用 bpf 进行跟踪)
• GradientTape 返回无自定义 CSI 损失函数
• 为什么 long double 的精度不比 double 高?
• 训练过程后加载具有自定义损失函数的 coatnet 模型时出错
• 如何在 TypeScript 中键入基于原型的 ES5 类?
• 在类中使用函数参数调用函数时,在这些函数中无法访问字段。为什么? [重复]
• 如何等待一个普通函数中的异步函数,稍后将在 python 中转换为协程
• 如何将 Stream<T?> 转换为 Stream<T>