Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测

近日,Artur Suilin 等人发布了 Kaggle 网站流量时序预测竞赛第一名的详细解决方案。他们不仅公开了所有的实现代码,同时还详细解释了实现的模型与经验。机器之心简要介绍了他们所实现的模型与经验,更详细的代码请查看 GitHub 项目。


GitHub 项目地址:https://github.com/Arturus/kaggle-web-traffic


下面我们将简要介绍 Artur Suilin 如何修正 GRU 以完成网站流量时序预测竞赛。


预测有两个主要的信息源:

  1. 局部特征。我们看到一个趋势时,希望它会继续(自回归模型)朝这个趋势发展;看到流量峰值时,知道它将逐渐衰减(滑动平均模型);看到假期交通流量增加,就知道以后的假期也会出现流量增加(季节模型)。
  2. 全局特征。如果我们查看自相关(autocorrelation)函数图,就会注意到年与年之间强大的自相关和季节间的自相关。


我决定使用 RNN seq2seq 模型进行预测,原因如下:

  1. RNN 可以作为 ARIMA 模型的自然扩展,但是比 ARIMA 更灵活,更具表达性。
  2. RNN 是非参数的,大大简化了学习。想象一下对 145K 时序使用不同的 ARIMA 参数。
  3. 任何外源性的特征(数值或类别、时间依赖或序列依赖)都可以轻松注入该模型。
  4. seq2seq 天然适合该任务:我们根据先前值(包括先前预测)的联合概率(joint probability)预测下一个值。使用先前预测可保持模型稳定,因为误差会在每一步累积,如果某一步出现极端预测,则有可能毁了所有后续步的预测质量。
  5. 现在的深度学习出现了太多的炒作。

特征工程

RNN 足够强大来发现和学习自身特征。模型的特征列表如下:

  • pageviews:原始值经过 log1p() 的转换得到几乎正态的时序内值分布,而不是偏态分布。
  • agent, country, site:这些特征从网页 url 中提取,然后经过 One-Hot 编码。
  • day of week:捕捉每周的季节效应。
  • year-to-year autocorrelation, quarter-to-quarter autocorrelation:捕捉各年、各季度的季节效应。
  • page popularity:高流量和低流量页面具有不同的流量变化模式,该特征(pageviews 的中间值)帮助捕捉流量规模。pageviews 特征丢失了规模信息,因为每个 pageviews 序列被独立归一化至零均值和单位方差。
  • lagged pageviews:之后将具体介绍。

特征预处理

所有特征(包括 One-Hot 编码的特征)被

  • 10
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值