【问题标题】:Forecasting in ML with XGBoost ( tricky time series)使用 XGBoost 进行 ML 预测(棘手的时间序列)
【发布时间】:2020-04-21 14:49:58
【问题描述】:

我有一个数据集,其中包含过去 3 年中 1000 家公司商店的每日销售额观察结果(当然,除了销售数字之外,我还有以下特征:促销、商店类型、分类类型等)

目标是建立一个模型来预测未来的销售。您将如何从 1000 个时间序列中构建模型并对其进行概括,以便可以使用它来预测具有某些特征的 1 家商店的销售额?

数据集类似于:https://www.kaggle.com/c/rossmann-store-sales/notebooks

根据 Kaggle 上提供的此数据集的解决方案(在 python 中),我注意到几乎每个人都在使用 XGBoost,但我对所提供的这些解决方案有一些疑问,我会感谢您的澄清。特别是:

  1. 人们如何才能将每个商店在 3.5 年内每天观察超过 1000 家商店的数据加载到模型中,而无需对商店 id 的第一个进行一次性编码?模型是否会在某个时候失败,因为它会知道 shop #1040 比 shop #35 好 - 仅仅是因为 shop id?

  2. 如果我们使用传统的 one-hot 编码,这将创建 1000 个无法管理的新列 - 但是有没有办法使用 one-hot 编码解决这个问题?

  3. 为什么人们通过添加:日、周、月作为单独的变量来提取“日期”特征?这不是误导模型吗?为什么人们不将“日期”指定为索引呢?

【问题讨论】:

  • 欢迎来到 SO!您的问题更适合 stats.stackexchange.com。 SO 适用于定义明确的编程问题。
  • 您的问题可能会被移动或关闭,因此我的意见无论如何都可以帮助您。 1.&2.是否要将 store 作为变量完全取决于您。商店 x 优于商店 y 可以作为大量隐藏地理属性的代理。 Python 中唯一的方法是一次性编码,而如果您将其声明为分类变量,R 会为您处理它。当然,内存使用量会增加,权衡是你的。 3. 在星期几、月份中的星期和一年中的月份级别捕捉季节性。

标签: python machine-learning time-series xgboost forecasting


【解决方案1】:
  • 1 - This 解释 XGBoost 的数据准备。您可能会通过非 one-hot 编码损害模型的学习能力,但似乎您有足够的特征,您的模型仍然可以学习正确的相关性。

  • 2 - 您几乎可以自己回答这个问题。 one-hot 编码方法会爆炸您拥有的特征数量,使模型不堪重负,减慢训练过程,最糟糕的是,它可能无济于事

  • 3 - 这是一种常见的特征工程方法,可为模型提供更多可使用的信息,同时又不会完全掩盖其他特征。例如。商店 A 可能会在星期一的大部分时间在 5 点进行销售。

基本上你必须尝试它,看看它是否有效。 我相信你的 Kaggler 同伴已经尝试了更多特征工程、one-hot 编码分类数据、不同模型等等的组合。

【讨论】:

  • 如果这是你请接受的一切,这个问题可以关闭
猜你喜欢
  • 2012-12-25
  • 2017-10-03
  • 2019-05-22
  • 1970-01-01
  • 2018-12-31
  • 2020-07-07
  • 2015-08-01
  • 2017-07-26
相关资源
最近更新 更多