基于原始或变换相依变量的预测性能指标评价

2024-03-29 14:56:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在建立一个机器学习模型来预测未来的价格。因变量价格不是正态分布的,因此,我将使用np.log(price)仅对因变量price执行对数变换。在此之后,我将把完整的数据集拆分为训练集和测试集。因此y_trainy_test现在都是对数转换价格。在机器学习模型拟合之后,我必须为拟合模型计算预测性能指标,如MAPE误差。你知道吗

  1. 在使用model.predict方法和y_test集合的np.exp()计算MAPE之前,是否应该将数据(price)转换回其原始比例?你知道吗
  2. 或者先将数据分解为训练集和测试集,只对训练集y_train进行log变换,然后对model.prediction集进行逆变换。因此,y_test集合(原始)和np.exp(model.predict())将用于计算MAPE
  3. 或者MAPE或MAE度量的值与响应变量y的标度无关,MAPE可以使用因变量price的转换对数值来报告?你知道吗

Tags: 数据模型test机器logmodelnp对数
1条回答
网友
1楼 · 发布于 2024-03-29 14:56:34

我想说的是,在你们这种情况下,有必要降低价格。这不是一个绝对的说法,但实际上取决于你的问题的设置:如果你有一个真正的价格是“1”,那么它的日志将是“0”,并且,无论你对这个单一点的预测是什么,你将得到未定义的/无限的MAPE。所以我会说是的,至少在做之前把它缩小到exp。你知道吗

我也不明白“1”和“2”的区别:它们在我看来是一样的,在“1”中,你只是把测试集的价格记录下来,然后再做一次实验,在“2”中,你只是避免做这两个操作。。。你知道吗

至于“3”,不,他们肯定不是独立于所有的转换-特别是不是日志。MAPE只独立于用常数因子重新调整数据的大小,而MAE是用常数加数对数据进行移位。你知道吗

在这一点上,要注意,没有一个衡量标准能给出一个完美的事实,仅仅应用它们可能会得到非常糟糕的结果。例如,使用MAPE,如果你有一个价格为1美分的东西,你估计它是1美元,你会给它同样的(巨大的)错误,就像它的价格是1000美元,你估计它是10万美元。另一方面,因为你在训练中记录日志,这基本上是你用来训练你的模型的规则,所以这可能不是灾难性的。只要小心,如果你有真正的价格非常接近,或更糟,确切地说,0。你知道吗

(在这种情况下,MAE可能更糟,因为它基本上会将所有的权重都赋予数据库中少数非常昂贵的项目,但我不能从这里确定)

相关问题 更多 >