[Accenture 面经] 预测hourly sale和traffic

OA题,两个关于同1个store的CSV,一个是sales,另外一个是traffic. Sales给出了13-18年5月每15分钟的sale额(in cents, e.g., 914,我自己猜是自动售货机); traffic是store的sensor测量出的15-18年5月的每15分钟人头数。目标是预测出接下来一个月的hourly sales和traffic. (可以利用任何external data, 建议使用节假日),自己选择Model (提示了The choice of model is not important). 题目中故意有一些missing values, 要测试做题者 (to understand your assumptions about the missing data, and how you handle them.)

我自己觉得这个题目是个时间序列的预测问题,可以利用数据在时间维度的相关性来进行预测 。不知是否将15min data合并成hourly data比较方便模型预测。 自己能想到的额外的features是day of week, hour of day, 节假日(categorical feature)。可以使用ARMA model或者LSTM? 利用时间序列的相关性来对接下来一个月进行预测。自己对ARMA没什么经验。以lstm为例,觉得可以将问题formulate成已知前m天的houly的数据,然后预测接下来1 hour的数据,刚预测出来的数据可以当作已知一个input time step, 预测下一个hour的数据。每个step的input feature vector可以包含 (hourly sale, hourly traffic, dow, hod, 节假日),输出自然是接下来一个小时的hourly sale和traffic. 但是这样会不会造成 刚开始预测的还比较准,之后就越来越不准?

不知道老师和同学们怎么看?谢谢

我提一些我的看法,和大家一起讨论:

  1. 如果是有很多features,要预测output的问题,我建议也可以考虑使用regression model,把时间信息作为feature加到模型里,比如 hourly信息是numerical feature, holiday or not信息是categorical feature. 建模成regression model, 而不是用ARMIA模型的好处是,可以使用多个feature来预测output。
  2. 如果你只是要用历史的sales信息预测未来的sales情况,那么确实ARIMA是更加适合的,因为它不涉及其他因素(feature)的影响关系。ARIMA给出一个预测结果后,就会把这个结果作为已知并继续预测,因此得到的一串output都是平滑的,至于“准不准”就不一定了。当然你也可以在这个time series上去叠加各种trend, 比如:每周末都有一个peak加上去,等等。待这些都是rule-based的人工处理了,不是通过数据里面的pattern直接建模。
  3. 对于你说的missing value的处理,我猜测你的意思是,这些sales and traffic data里面本身就有missing value, 那么你完全可以用ARIMA model直接把那些数据补齐。当然如果你有其他assumption, 比如每周的sales平均值不变(or 以固定速度增长),那么你可以直接用均值等方法把missing value补齐。
1 个赞

谢谢老师的回复!确实没有features, 只是历史sales和traffic.

关于“time series上去叠加各种trend, 比如:每周末都有一个peak加上去”,假如我通过观察确实发现有周末peak的 trend, 还想请问这个 “一个peak加上去”具体是怎么操作的?不太明白。谢谢!

在经典时间序列分析的操作中,我们是通过差分操作 (differentiation) 来去除seasonality和trend的,这样才能得到时序平稳 (stationary) 的序列,然后应用ARMA模型。你这边如果希望返过去再恢复seasonality的话,就是直接以一定的时间间隔在序列上叠加一个就可以了,比如,每周末在数据上加5。我认为你这个OA要处理的应该不是“叠加seasonality”的事情,而应该是去除trend构造平稳序列,用AR(I)MA建模的过程。如果你要再加其他的feature, e.g. holiday,我认为除了上面那种直接加5的方法,更好的就是要用regression model了。

1 个赞

同学你好,麻烦问一下,这是哪家公司的面经?我在topic里面更新标注一下。谢谢!

老师,是Accenture。

Ok,了解了。谢谢!