首页
/ AutoGluon时间序列预测中WAPE指标导致模型训练失败问题分析

AutoGluon时间序列预测中WAPE指标导致模型训练失败问题分析

2025-05-26 00:09:03作者:盛欣凯Ernestine

问题背景

在使用AutoGluon进行时间序列预测任务时,当选择WAPE(加权绝对百分比误差)作为评估指标时,DirectTabular和RecursiveTabular两种模型会出现训练失败的情况。这个问题最初在AutoGluon v1.0版本中被发现,并在v1.2.0版本中得到了修复。

问题表现

当用户设置eval_metric="WAPE"并尝试训练DirectTabular或RecursiveTabular模型时,会出现以下错误信息:

Can't pickle <function mean_absolute_error at 0x7f8fab2b0700>: it's not the same object as sklearn.metrics._regression.mean_absolute_error

这个问题不仅限于WAPE指标,实际上影响到了多个评估指标的使用。经过测试发现,以下指标组合会导致训练失败:

  • SQL + RecursiveTabular
  • WQL + RecursiveTabular
  • MAE + 两种模型
  • MAPE + 两种模型
  • MASE + 两种模型
  • MSE + 两种模型
  • WAPE + 两种模型

而以下指标组合则可以正常工作:

  • SQL + DirectTabular
  • WQL + DirectTabular
  • RMSE + 两种模型
  • RMSSE + 两种模型
  • SMAPE + 两种模型

问题根源

经过分析,这个问题主要与scikit-learn库的版本冲突有关。具体表现为:

  1. 在某些环境(特别是Databricks的ML Runtime)中,预装了特定版本的scikit-learn
  2. AutoGluon安装时可能会安装不同版本的scikit-learn
  3. 当尝试序列化(通过pickle)评估指标函数时,由于scikit-learn版本不一致,导致无法正确识别函数对象

这个问题在Databricks的ML Runtime环境中尤为明显,因为该环境预装了scikit-learn 1.1.1版本,而AutoGluon安装时会引入scikit-learn 1.4.1版本。

解决方案

针对这个问题,有以下几种解决方案:

  1. 升级AutoGluon版本:在AutoGluon v1.2.0版本中,这个问题已经得到了修复。建议用户升级到最新版本。

  2. 调整运行环境

    • 在Databricks环境中,可以考虑使用标准Runtime而非ML Runtime
    • 确保在安装AutoGluon后重启内核或环境
    • 将安装命令放在脚本开头,而非交互式环境中执行
  3. 使用兼容的评估指标:如果无法立即升级或更改环境,可以暂时使用RMSE、RMSSE或SMAPE等兼容的评估指标。

性能考虑

对于时间序列预测任务,用户还需要注意:

  1. GPU并不总是能带来性能提升。对于某些算法,32核CPU环境可能比GPU环境表现更好
  2. 深度学习算法(如RNN)在GPU上通常有更好的性能表现
  3. 模型选择应根据具体任务需求和可用资源进行权衡

结论

AutoGluon时间序列预测模块中的评估指标兼容性问题主要源于依赖库版本冲突。通过升级到最新版本或调整运行环境,可以有效解决这一问题。在实际应用中,用户应根据自身需求选择合适的评估指标和计算资源,以获得最佳性能。

登录后查看全文
热门项目推荐
相关项目推荐