时间序列规则法快速入门(转自dropout)
2017-09-14 15:22
330 查看
最近参加了有关时序问题的比赛,自己的论文也是相关问题。所以
在天池技术圈看了dropout 老师 的这篇文章,询问了老师后可以转载,转载简书网址如下,以供学习。
http://www.jianshu.com/p/31e20f00c26f?spm=5176.9876270.0.0.7cb4283aZnvi5Z
大家好~我是drop-out。今年我参加了IJCAI-17数据挖掘竞赛和KDD
CUP 2017,分别获得了第三名和第九名。两个比赛都是时间序列数据。因为我本身是学金融的,对金融时间序列接触的比较多,然而我发现搞机器学习的小伙伴们时间序列处理的基本方法都没有入门~所以这里写一篇文章,以IJCAI-17口碑客流量预测大赛为背景,介绍一下时间序列规则法,让大家快速入门!= = IJCAI-17给的是蚂蚁金服的支付数据,具体来说,给的是店铺(实体店)过去每天的客流量,预测店铺未来14天每天的客流量。由过去外推未来,这是典型的时间序列问题。像支付数据、客流量数据、交通数据等,具有明显的周期性。从预测的角度说,周期性是核心,只要抓住了周期性,任务就完成了一大半。
假设给定下面的数据,任务是预测第四周每天的客流量。
明显能看到周一到周日的周期波动。预测的核心任务就是尽可能准确的提取这种周期。 第一步: 除以周均值,得到一个比例。 第二步: 按列取中位数,就可以得到一组鲁棒的周期因子。
做预测时,只要将周期因子,乘以一个base,就可以做下一周的预测啦。比如说,我们取最后一周的平均客流量100作为base,那么我们直接乘上周期因子,就得到下一周的预测:
这里只拿了三周来举例。实际应用当然要取更长的时段啦。具体取几周以测试集的效果来确定。
按列提取中位数是一种简单而有效的提取周期因子的方法。中位数十分鲁棒,不受极端值的影响。但中位数损失了很多信息。实践中,可以在此基础上进一步优化。比如可以提取一个均值和一个中位数,然后将均值和中位数融合。融合的比例按照测试集的表现来确定。也可以根据与预测周的时间距离来赋予不同的权重。
直接用最后一周的平均客流量作为base并不一定是最好的方法。也许最后三天或最后五天的均值能更好的反映最新的情况。但是,我们不能直接对最后三天客流量取均值(最后三天是周末,这样取的base就偏大了)。需要去掉周期性因素后,再取平均。具体做法,就是用客流量除以周期因子。
这样我们就可以取最后三天的平均,(108+91.4+120)/3=106.5,作为base。具体取多少天的,也要通过测试集的表现来确定。当然也可以按某些函数形式来给每天赋予不同的权重。
在IJCAI-17的这个赛题里面,天气是非常重要的一个影响因素。可以提取残差,然后用残差训练一个天气的模型。推荐使用xgboost。其他影响因素可以如法炮制。
在天池技术圈看了dropout 老师 的这篇文章,询问了老师后可以转载,转载简书网址如下,以供学习。
http://www.jianshu.com/p/31e20f00c26f?spm=5176.9876270.0.0.7cb4283aZnvi5Z
前言
大家好~我是drop-out。今年我参加了IJCAI-17数据挖掘竞赛和KDDCUP 2017,分别获得了第三名和第九名。两个比赛都是时间序列数据。因为我本身是学金融的,对金融时间序列接触的比较多,然而我发现搞机器学习的小伙伴们时间序列处理的基本方法都没有入门~所以这里写一篇文章,以IJCAI-17口碑客流量预测大赛为背景,介绍一下时间序列规则法,让大家快速入门!= = IJCAI-17给的是蚂蚁金服的支付数据,具体来说,给的是店铺(实体店)过去每天的客流量,预测店铺未来14天每天的客流量。由过去外推未来,这是典型的时间序列问题。像支付数据、客流量数据、交通数据等,具有明显的周期性。从预测的角度说,周期性是核心,只要抓住了周期性,任务就完成了一大半。
基本规则法快速入门
假设给定下面的数据,任务是预测第四周每天的客流量。周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | 周均值 | |
---|---|---|---|---|---|---|---|---|
第一周 | 20 | 10 | 70 | 50 | 250 | 200 | 100 | 100 |
第二周 | 26 | 18 | 66 | 50 | 180 | 140 | 80 | 80 |
第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 | 100 |
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | |
---|---|---|---|---|---|---|---|
第一周 | 0.2 | 0.1 | 0.7 | 0.5 | 2.5 | 2 | 1 |
第二周 | 0.325 | 0.225 | 0.825 | 0.625 | 2.25 | 1.75 | 1 |
第三周 | 0.15 | 0.08 | 0.67 | 0.6 | 2.7 | 1.6 | 1.2 |
中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | |
---|---|---|---|---|---|---|---|
中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
预测 (base=100) | 20 | 10 | 70 | 60 | 250 | 175 | 100 |
针对周期因子的优化
按列提取中位数是一种简单而有效的提取周期因子的方法。中位数十分鲁棒,不受极端值的影响。但中位数损失了很多信息。实践中,可以在此基础上进一步优化。比如可以提取一个均值和一个中位数,然后将均值和中位数融合。融合的比例按照测试集的表现来确定。也可以根据与预测周的时间距离来赋予不同的权重。
针对base的优化
直接用最后一周的平均客流量作为base并不一定是最好的方法。也许最后三天或最后五天的均值能更好的反映最新的情况。但是,我们不能直接对最后三天客流量取均值(最后三天是周末,这样取的base就偏大了)。需要去掉周期性因素后,再取平均。具体做法,就是用客流量除以周期因子。周一 | 周二 | 周三 | 周四 | 周五 | 周六 | 周日 | |
---|---|---|---|---|---|---|---|
第三周 | 15 | 8 | 67 | 60 | 270 | 160 | 120 |
中位数 | 0.2 | 0.1 | 0.7 | 0.6 | 2.5 | 1.75 | 1 |
去周期以后的客流量 | 75 | 80 | 95.7 | 100 | 108 | 91.4 | 120 |
其他影响因素
在IJCAI-17的这个赛题里面,天气是非常重要的一个影响因素。可以提取残差,然后用残差训练一个天气的模型。推荐使用xgboost。其他影响因素可以如法炮制。
相关文章推荐
- 时间序列规则法快速入门
- 一种快速的时间序列线性拟合算法
- Netty 快速入门系列 - Chapter 6 自定义数据协议【第十三讲】 通过大端序列方法将4个字节int转成 byte数组
- 简单入门循环神经网络RNN:时间序列数据的首选神经网络
- reStructuredText(.rst)语法规则快速入门
- MySQL快速入门03----字符集 & 校对规则
- drtools规则使用快速入门
- reStructuredText(.rst)语法规则快速入门
- reStructuredText(.rst)语法规则快速入门
- ASP.NET MVC3 快速入门-第八节 在模型中添加验证规则(转)
- 时间序列分解入门
- ASP.NET MVC3 快速入门-第八节 在模型中添加验证规则
- 简单入门循环神经网络RNN:时间序列数据的首选神经网络
- ASP.NET MVC3 快速入门-第八节 在模型中添加验证规则 .
- 简单入门循环神经网络RNN:时间序列数据的首选神经网络
- CSS设计规则BEM快速入门手册
- R语言入门(1)时间序列分析
- 神经网络抵制过拟合神器:Dropout 手把手论文入门 — 深度学习 DL 番外篇
- HTML快速入门5——不规则表格、表格背景、边框颜色
- ASP.NET MVC3 快速入门-第八节 在模型中添加验证规则