我如何安排我的数据来预测 6 周的每日销售额

数据挖掘 机器学习 时间序列 预测
2022-02-11 03:56:22

我有一个 data.table 基础,其中包含许多变量,可用于预测未来 6 周每日销售额的销售额事实上,所有的数据库都是按日期排列的,你可以在这里看到。注意,这里我只是向你展示了一些变量。

> Data_train[order(Date)]
         Store DayOfWeek       Date Sales Customers Open Promo StateHoliday SchoolHoliday
      1:     1         2 2013-01-01     0         0    0     0            a             1
      2:     2         2 2013-01-01     0         0    0     0            a             1
      3:     3         2 2013-01-01     0         0    0     0            a             1
      4:     4         2 2013-01-01     0         0    0     0            a             1
      5:     5         2 2013-01-01     0         0    0     0            a             1
     ---                                                                                 
1017205:  1111         5 2015-07-31  5723       422    1     1            0             1
1017206:  1112         5 2015-07-31  9626       767    1     1            0             1
1017207:  1113         5 2015-07-31  7289       720    1     1            0             1
1017208:  1114         5 2015-07-31 27508      3745    1     1            0             1
1017209:  1115         5 2015-07-31  8680       538    1     1            0             1 .

我的问题是关于根据目标目标排列数据的问题。我的问题实际上是关于Date变量。事实上,我建议这条路:

  1. 我按每个日期汇总所有销售额(因为我有很多类型的商店)。
  2. 我根据 Date 的升序排列我的数据库。
  3. 我不需要日期变量中的重复行,所以我删除了它们。

只是为了向您展示考虑变量的新基础。

> Data_train[,SumSaleseachDay:=sum(Sales),by=c('Date')][order(Date)][!duplicated(Date)][,-c('Sales','Customers'),with=FALSE]
     Store DayOfWeek       Date Open Promo StateHoliday SchoolHoliday SumSaleseachDay
  1:     1         2 2013-01-01    0     0            a             1           97235
  2:     1         3 2013-01-02    1     0            0             1         6949829
  3:     1         4 2013-01-03    1     0            0             1         6347820
  4:     1         5 2013-01-04    1     0            0             1         6638954
  5:     1         6 2013-01-05    1     0            0             1         5951593
 ---                                                                                 
938:     1         1 2015-07-27    1     1            0             1        10707292
939:     1         2 2015-07-28    1     1            0             1         9115073
940:     1         3 2015-07-29    1     1            0             1         8499962
941:     1         4 2015-07-30    1     1            0             1         8798854
942:     1         5 2015-07-31    1     1            0             1        10109742

附加信息: 我有一个1017209行数据库。2013-01-01对于每家商店,我都有其在和之间的历史销售额2015-07-31而且我还包含17 个变量来构建模型。

上述步骤只会导致按天进行预测。

如果我想预测每个 Store按天,我应该怎么做?
先感谢您!

2个回答

我想这完全取决于你想要什么——你想要每家商店的预测吗?如果是这样,您需要将数据集仅聚合到商店级别。如果没有,并且您希望按天计算整体销售额,那么您可以将其汇总。

另一个考虑因素是是否有许多商店级别的特征,例如位置、天气、当地人口统计数据。这些特征可能对模型学习有用,并且如果聚合存储级数据会丢失分辨率,因此不聚合会更好。与此相反的是,您是否有足够的数据为每个商店学习代表性趋势!所以它确实有点循环,取决于你的数据集的大小。

我猜您正试图根据每家商店收集的两年数据来预测未来的销售额。因此,我建议您在每个商店的每个单独集合上训练模型,该模型将预测该商店当天的预测并将预测提供给单独的模型,该模型将根据单个商店预测预测所有商店的整体预测,因此您可以从模型中获得单个预测以及整体预测。

-> 根据您的评论 记住这有点费时,但我认为值得花在好的结果上,您可以跳过它并从我学到很多的教程中学习(不是推广)

它们不是针对您的特定目的,而是与您的目的相近

您可以在以下教程中学习预测的整个过程

在这里,我们一步一步地解释我所解释的

->首先对来自每个商店的所有数据集进行归一化

->然后选择您要使用的算法

->然后以有条理的方式排列存储数据,因为您在训练时可能会有点困惑

->最初只需选择一个数据集并调整超参数并仔细了解这些参数的工作原理,因为您会经常使用它们。

->当您获得点从商店列表的顶部到底部开始并为每个具有相似名称的商店存储经过训练的模型时

->完成所有商店后,您将根据您的要求获得每个商店的预测,然后收集这些预测并对它们进行平均,您将从所有商店获得近似预测