BasicTS icon indicating copy to clipboard operation
BasicTS copied to clipboard

关于所有预测点评价指标的计算方法问题

Open luooyoong opened this issue 1 year ago • 2 comments

您好!

关于预测点指标计算方法的问题,您的论文中用的是12个预测点的平均值,但是在之前很多时空预测的相关论文中,用的是对所有预测点进行一次性评价。比如,12个预测时间步,每个时间步为3600个点,对12*3600进行指标计算,不是12组3600个点单独计算指标,再来算平均值。 
 
算平均值的方式,评价指标的数值一般小于一次性计算的方式。

以上是我的理解,不知道对不对。

luooyoong avatar Nov 10 '23 07:11 luooyoong

感谢您的意见,我仔细思考了一下,这两种做法应该是等价的。下面是一些实际的验证:

import torch
from basicts.losses import masked_mae

B = 1000 # 1000个样本
N = 207 # 207条时间序列
L = 12 # 预测未来12个时间步
C = 1 # Channel

data = torch.randn(B, L, N, C)
pred = torch.randn(B, L, N, C)

loss1 = masked_mae(data, pred)

mae_each_horizon = []
for i in range(L):
    data_i = data[:, i, :, :]
    pred_i = pred[:, i, :, :]
    mae_each_horizon.append(masked_mae(data_i, pred_i))
loss2 = sum(mae_each_horizon) / len(mae_each_horizon)

print(loss1)
print(loss2)
tensor(1.1277)
tensor(1.1277)

zezhishao avatar Nov 10 '23 08:11 zezhishao

BasicTS中的做法就是您说的那种,使用12*3600进行指标计算。See here.

zezhishao avatar Nov 10 '23 08:11 zezhishao