天池大数据竞赛——资金流入流出预测赛后感想


         当我第一次听到这个比赛的时候,其实我是拒绝的。后来我还是默默地报名的参加了,虽然已经不是第一次报名天池组织的大数据竞赛,但是之前都是因为各种各样的原因报了名也没真花时间去做,所以这次狠下心来要大干一场。现在回过来想想还是蛮有意思的,这个过程中学到了很多,尤其是现学现卖的本领。

         这个题目本身还是很有意思的,根据提供的历史用户申购赎回数据预测14年9月每天的申购赎回总量。自己之前参加过数学建模竞赛,在这个预测方面有一些基础,但最后发现然并卵。

        初赛是在线下进行的,数据量也比较小,因此操作起来不是很麻烦。这个预测从总体上可以分为时间序列预测和回归两个大的方向。我们首先尝试的方法是概率模型,计算出每个用户在一周7天每一天产生申购或者赎回行为的概率,并计算出该用户在这一天申购或赎回的均值。最后需要预测的9月份就用每个用户在当天产生行为的概率乘以均值然后求和,最后测评的成绩是114分。第二天我们分析对这个模型进行了分析,我们用的概率模型存在几个问题。第一,用户的数量每天都在增加,我们的模型中没有考虑;用户每天的申购赎回金额用一个均值来表示误差比较大。我们又对题目进行了剖析,题目需要我们预测9月份每一天申购和赎回的总量,对于预测总量我们觉得对单个用户分析就不合适了,应该也要从总量来处理。然后我们查阅了一些资料,想从时间序列预测入手,时间序列预测比较经典的模型就是ARIMA模型,运用ARIMA模型需要原始序列是平稳的。而对于历史的每天的申购总量序列和赎回总量序列的平稳性也只能大概的判断,利用R语言的forecast包进行了自动ARIMA模型预测,没有其他的任何特征,最后的测评结果比概率模型高了一些。后来通过改进,加入季节性特征,并自己不断尝试p,d,q三个参数的值,因为初赛的测评机会比较多,所以尝试了很多次,选择了一个比较好的参数。如果ARIMA模型不加其他特征,是很难取得突破性的提高。在选取特征方面无从下手后,我们对历史的申购和赎回序列进行了其他的处理,尝试了指数平滑但是效果并不好。后来把这个序列类比成信号,对其利用emd经验模式动态分解,然后对分解后的每个信号进行预测并相加。尝试了无数的方法,但是并没有在某一种方法上进行很深的研究,因此成绩也不是很好。而原始的数据集的影响也是很大的,在换了数据集以后,原先的模型可能根本不适用了,原先的特征在新的数据集中也没有体现出来,因此在模型的鲁棒性上还是需要不断提高。初赛前500名进入复赛,相对来说还是比较容易,最后以156名进入复赛。

        复赛实在天池平台——御膳房上操作,这个一开始确实有点棘手,熟悉这个平台花了1、2天的时间,我们团队在这个ODPS平台上主要用的是ODPS_SQL和R脚本。首先还是依葫芦画瓢,实现了论坛上的baseline,这个中间也遇到了不少的问题,主要还是对平台不太了解,一些R脚本在本地可以运行但是放到平台上就各种报错,然后就去找阿里的平台工程师求救。后来渐渐熟悉了这个平台,也用的比较得心应手了,这次我们准备多模型结合来做,因为初赛的经验发现单模型再怎么都很难有很大的提高。也是从时间序列和回归两个方向入手,时间序列还是采用的ARIMA模型,加入了星期的特征。回归采用的是R中的lm——多元线性回归,把申购和赎回看作是星期的函数,星期是一个0-1变量,星期几对应的那个就是1,其他就是0。初次测评的成绩还算不错,但是渐渐大家都开始在baseline上改进,排名就蹭蹭蹭的掉了。考虑到申购中从支付宝余额和从银行卡购买是不一样的,因此我们将申购拆分为了这两个部分,分别用lm进行预测,同样的赎回分为了消费和转出两个部分来计算。由于lm模型中并未加入新的特征,因此提高的很有限。最后就把ARIMA预测的结果和lm预测的结果加权,不断进行调整权值,可能是原先的两个模型计算的结果并不是很好,因此怎么调整提高也不多。在和其他组交流以后,发现我们之前都没有考虑节假日的影响,其实9月有中秋节和国庆前,这些节假日用模型是很难预测。我们组的方法是借鉴历史数据的端午节等节日,假设节日相似,然后进行了一些单点调试。测评结果显示这些节假日确实影响挺大的,碍于方法上没有突破,最后虽然以100名进入part2但是最终的排名是110名。

         总结一下,通过这次比赛发现自己对数据的特征提取还是比较差,也就是说对数据的敏锐的嗅觉还不够。相信最后的前几名都是深挖了这些数据中的一些内在特征。同时也是第一次参加天池的大数据比赛,抱着试试看的心态,因为对自己最后的成绩也还算满意,总之收获还是很多的。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值