[资金流入流出预测]一点心得、一份攻略、一段baseline code —— I'm PLUS

PLUS是队伍名字,不是哪个基准帖子的 升级 版哦。
去年发现有娃了之后,就给娃起了个小名叫加号,之后苹果发布了 6+,结果PLUS就烂大街了。

------------------------------------------------------------------------------我是方案简介分割线----------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
我的主要方法之前在zju和bupt分享的时候也已经提到了,详细的就不再说了,之后简单介绍下,并说明下初赛到决赛的方案的升级点。


方案简介:

1. ARIMA + LM  预测整月的数据
2.  对一些特征点进行调优  ( 中秋,调休,国庆前 )


决赛相对之前的升级:
模型方面主要是增加了数据预处理 和 线性模型中的特征;
特殊时间点方面,主要是更好的刻画了月初、月末的特征

----------------------------------------------------------------------------我是 一点心得 分割线----------------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
人力资源篇:
1. 人多力量大:一个人组队还是比较累的,而且会局限于己的思路,通过改变方法模型来提升的概率较低。
2. 主要分工:一个人来做数据、特征和尝试非最优方法;一个人来优化最优方法;一个人来调特殊时间点;一个人组队都没怎么尝试其他方法
3. 如果团队的人力资源充足的话,最好有人手能够细致的对历史数据有足够的了解,就是在初期能够对模型得到的结果有一个优劣的判断;
  后期主要是微调了,变化太细微,人工check意义不大;


评测篇:
1. 如果评测机会比较充足,同时有些迷茫后续的优化方向在哪里;花费一天的代价,了解一下自己的purchase得分和redeem得分对后续方向的指导意义比较大。
  一般来说,purchase由于比较稳定,所以得分应该更高;而redeem会因为波动比较大,预测难一些
2. 发生了许多线下拟合8月份得分提高,实际效果下降的情况;这时一定不要迷信用八月份的数据做线下评测得到的效果,需要另辟蹊径找到评价指标;
  八月份数据略坑,及早从坑里爬出来
3. 一般而言,最后的评估函数不是线性的,越准确上分速度越快,加入一些小幅的噪声有可能能够提高成绩;
  运气不太差的话,如果有相同数量的点靠近和远离正确答案,那么会有一些分数提高;这条适合最后一天拼命用。


数据处理篇:
1. 进入御膳房的时候,大家手头应该已经有两份本地的数据了;算上御膳房中的数据,综合三份数据,能够比较好的判别一些特征是否是过拟合

2. 对于大额交易的处理是一个有效的提高得分的预处理方案,主要基于的思想是,
  申购的时候,即使是淘宝卖家的申购,每天的值也是不那么大额的,异常点较少;
  而赎回的时候,淘宝卖家的赎回基本都是大额的,异常点就多。


------------------------------------------------------------------------------我是 平台使用小记 分割线--------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
平台使用小记 (有些图我直接截在word中了,可以下载附件查看)
内部赛主要的功能毕竟是帮助大家趟雷,是不是还在觉得为毛还要限制平台,为毛还只能用 R 语言, take it easy ,哥们也是 R 渣;
下面我们跌跌撞撞开始在御膳房里头把我们的方法实现一下。

说明:
1.  虽然是R 渣,但是之前预赛,我是用windows 上的R 做的,毕竟10 行代码跑个arima 门槛真的很低
2.ODPS 阿里的日常工具,这个内部员工都玩得比较666 ,不过这里用到的并不高深,很容易懂

整体流程

1.  需要对整体数据做一个处理,比如数据预处理、分解、汇总,这个正好使用 ODPS ,语法同 HIVE ,可以查 HIVE 的语法手册
2.  汇总每日的申购、赎回数据分别放到表  B 中,然后用 PAI 平台的 R 脚本读取这两张表,做时间序列分析,或者回归,分别输出到结果  D 中;
3.  单点调优后,替换  D 中的某些日期的数据,然后合并结果到输出表 E


ODPS-SQL
如果大家不熟悉 ODPS 的话,就当 sql 使就行了,要是运气不好遇到语法问题,可以查阅 hive 的语法手册,一模一样的哈。
使用 SQL 的目标是,把原始数据预处理后,形成一份时间序列分析需要使用的数据。
在项目中的数据开发中,写 ODPS-SQL ;算法平台用于做机器学习实验或者 R 脚本编程


给一个汇总每日 purchase   redeem 的样例




按照流程,假设 purchase 的历史数据放在表 A 中, redeem 放在 B 中,我们进入下一步


PAI-R
到实验的页面下,新建一个实验,然后在画布上拖三个东西,一个是数据源,一个是 R 脚本,一个是数据目标。依次用线进行连接。大概变成这样
PICTURE
数据源需要把表 A 或者表 B 的名字填进去,然后 R 脚本自动会增加语句获取该表的输入;这是一个  dataframe  的数据结果,可以通过列名把数组形式的数据取出来。
获取到数据之后,一般先转为一个时间序列的对象,然后调用模型,如 ARIMA decompose 对时序进行处理,然后预测 9 月的数据。
预测得到的数据,需要构造为一个  dataframe  的对象,然后赋值给一个叫 dataname 的变量,平台最终会自动把 dataname 中的数据,放到输出目标表中

这里有个小窍门, PAI 上的 R 编辑起来不是很友好,其实平台上的 R 与本地的 R 是没有差别的,只有数据输入输出的差别;所以如果程序能够在本地跑通,拷贝到平台上,然后改一下输入输出就可以了。
当然,要是用了平台没有的 R 包,就比较麻烦了。
对于一个程序员来说,粗浅的了解一下 R ,所花费的学习成本并不高,不过 R 资料毕竟没有其他热门语言那么多。
特别是,如果脚本跑失败了,是没有错误提示信息的,所以本地跑通显得尤为重要


PAI-机器学习
单点预测的话,能够挖掘出于当前点最相似的时间节点是比较有用的,可以用聚类方法来试一下。
主要分两步:
1. 构造特征,把特征放到数据表中
2. 拖拽算法模块进行聚类


具体流程可以参照官方文档。
成品大概如下:


------------------------------------------------------------------------------我是 baseline code 分割线--------------------------------------------------------------------
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
用ARIMA中的XREG参数做 时间序列分析 + 线性回归


demo  code 见附件




平台使用小记: word 版   平台使用小记.docx (186 K) 下载次数:602 
arimax baseline code:  arimax baseline code in R.rar (2 K) 下载次数:628 


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值