【问题标题】:should I check relative error or percentage relative error?我应该检查相对误差还是百分比相对误差?
【发布时间】:2020-05-05 18:33:08
【问题描述】:

我优化了exponential exp函数。我正在检查关于标准数学 exp 函数的输出。

Res_optRes_std 是我的两个输出。

我首先检查了绝对错误:

Abs_error = abs(Res_opt - Res_std )

我输入了MAX_DEV = 0.500000(通过考虑我的算法)

并检查:

  if(Abs_error > MAX_DEV){
     printf("Error message").
     return 0;
   }

在少数情况下,Abs_error 的值大于0.50000 的值并且我的测试用例失败(但我觉得对于该输入,派生结果很好,因为它是一个极端情况)。

所以我决定检查相对错误。

但是我的问题是,我应该使用以下逻辑检查相对误差还是百分比相对误差 -

ACC_BAND = 0.400000000000000;
double min_acc_range = 1 - ACC_BAND;
double max_acc_range = 1 + ACC_BAND;

Relative_error =   abs(Res_opt - Res_std)/Res_std ;

if ((Relative_error < min_acc_range) || (Relative_error > max_acc_range)) {
 printf("Error message");
}

Percentage_Relative_error =   1 - (abs(Res_opt - Res_std)/Res_std)*100 ;

if ((Percentage_Relative_error < min_acc_range) || (Percentage_Relative_error > max_acc_range)) {
 printf("Error message");
}

【问题讨论】:

  • 他们的结局是一样的

标签: c error-handling


【解决方案1】:

你没有测量错......这完全是关于准确性。 这里使用绝对误差。但您可以使用百分比相对误差相对误差

相对误差百分比相对误差衡量的百分比。在平均情况下,它们的最终精度将相同。

但好的做法取决于你的价值限制。

在小值的情况下,百分比相对误差很好,因为 1.02.0 并不接近您的上限值 10.0 .

如果值较大,在1000000710000008接近的地方,相对误差一定更好。

所以取决于你可以决定的价值限制。

【讨论】:

  • 只有一个查询,我是否应该为百分比相对误差取绝对值。由于我的一些相对误差百分比为负数。
  • 您关心的是这两个值有多接近。所以是的,你可以使用绝对值。
猜你喜欢
  • 2019-07-10
  • 2016-08-20
  • 1970-01-01
  • 2020-04-15
  • 2020-12-25
  • 1970-01-01
  • 1970-01-01
  • 2019-04-18
  • 1970-01-01
相关资源
最近更新 更多