时间序列回归 - RandomForest

时间:2017-10-20 00:44:43

标签: scikit-learn time-series regression random-forest

为愚蠢的问题道歉 - 这里总计n00b。

我们说我有以下数据集。

date,site,category,locale,type,rank,sessions,logins
01/01/2017,google.com,search,US,free,1,3393093,50000
01/01/2017,google.com,overall,US,free,1,3393093,50000
01/01/2017,yahoo.com,search,US,3,free,core,393093,40000
01/01/2017,yahoo.com,news,US,9,free,393093,40000
01/01/2017,yahoo.com,overall,US,23,free,393093,40000
01/01/2017,wsj.com,news,US,21,free,200000,180000
01/01/2017,wsj.com,news,US,21,subscription,200000,180000
01/01/2017,wsj.com,overall,US,93,free,200000,180000

其中rank是该网站的Alexa排名。有几种可能的类别(搜索,电子邮件,电子商务等),排名对应于该类别中的排名。

我正在尝试预测特定日期特定网站/区域设置/排名的会话数和登录次数,基本上将其降低到多变量时间序列回归问题,我正在使用sklearn的RandomForestRegressor。

现在我根本不把它当作一个时间序列问题 - 对于培训,我删除datesite列,编码category,{{ 1}}和locale列,使用它们和rank作为输入并训练我的模型以预测ranksessions。结果看起来不错,但我想知道:

  1. 如何将其转换为适当的时间序列预测?我看到some examples by Jason Brownlee问题被重新定义为监督学习问题 - 但这不会起作用,因为我可能有数百万行训练数据。我可以按类别/区域设置/类型对培训数据进行分组,按日期排序,并在第T天测试特定类别/区域/类型组合,使用最多T-1天的数据进行培训 - 但这种方法非常昂贵因为可能存在数千种此类别/区域/类型组合

  2. 我读过有关使用移动平均线来提升效果的信息。计算训练集中loginssessions的移动平均值是微不足道的,但由于这是一个因变量,我如何在测试集中捕获它?

  3. 此任务是否有比RF好的工具?

1 个答案:

答案 0 :(得分:0)

我会在链接博客文章中使用该方法,如果您使用像shift这样的矢量化numpy操作,则数据转换不应该成为问题。

顺便说一句,如果你只是忽略了日期,那么你只是计算每个组的平均数,即你使用随机森林来构建一个非常奇特的数据透视表; - )