您的位置:首页 > 大数据

数据挖掘实战经验——交通大数据预测

2017-08-13 01:18 357 查看
最近在天池打了一个大数据比赛,还是和之前打过的KDD CUP一样的交通流预测,但是这次做的时候没有简单粗暴的使用规则型方式导出结果,而是选择了提取特征后建模的方法,在初赛取得了73/1716的成绩,感觉有一些收获在这里记录一下,没有什么干货,只当成日记,希望来日回望,还识得如此青葱少年。

开始:

7月20号我从泰安出发回青岛上学,觉得在暑假里可以搞一些好玩的东西了,说实话这个季节青岛是真tm热,坐在宿舍里一动不动都能汗流浃背,很想念家里的空调。最开始的时候本来是想做天池的新手训练赛的,因为自己对数据挖掘也不是特别懂,想着通过比赛顺便学一些模型和处理数据的技巧,也能剩下一些时间去学习C++继续写我的机器学习模型库。我就去和老师说我想做这个新手训练赛,求大佬带我,然后老师说别做这个比赛了,这个没有奖金的,竞争不激烈来打另外一个吧,就这样我被老师拉进了一个队伍,除了老师以外还有一个数学统计系的漂亮学姐。就这样我开始了征战这个比赛的漫漫长路。

赛题:

这次的比赛依旧是旅行时间预测,跟2017 KDD CUP的taskI是一样的,只是我当时做的是taskII。起初看到题目还觉得挺简单的,因为没有KDD那种繁杂的数据和抽象的图,也没有乱七八糟的天气等其他特征,整个题目就提供了三个数据集,道路Link的拓扑关系,道路Link的路长和路宽,旅行时间。后来发现数据集实在是太大,给了132个Link的数据,拓扑关系相当复杂,光样本加起来有8W多,各种特征提取出来都放到内存里,我不争气的4G的虚拟机开始报错Error:signal9 -kill,我想可能是内存爆了,后来就每天开着teamviewer在老师的工作站上跑,每次就加载数据和提取特征就得等个五六分钟,你问我那五六分钟都在干什么?我想你还不知道我能把south
park第五季看完的原因。

过程:

基本上我还是在做一个攻城狮应该做的事情,身份并没有升级到科学家上面,每天还是在码代码,只是从C++改成了python,这次比赛也让我对python这种及其好用且亲民的语言有了更好的认识,C++虽然难用,但是你懂得C++编译的原理搞懂了它的特性,想实现什么功能就自己造轮子,python好就好在不用自己造轮子,但是学习别人的轮子怎么用,对我来说竟然成为了一件难事,对于pandas和numpy的不熟悉让我对数据的处理及其繁琐,导致90%的时间都放在了format上面没有把精力放在建模上。每天重复的事情就是晚上老师和我说做什么,第二天我写一天,第二天老师晚上又和我说做什么。。。不过做着做着自己也就熟悉了套路,如果下次打比赛的话,估计自己也能亲自去思考要怎么去处理。总之这段时间对我来说并不怎么好,用了很多时间去实现那些很容易实现的事情,去写那些只能用一次的脚本,让我觉得有点无聊乏味,但最终我的辛苦倒是没有白费,我们队伍成功进入了复赛,我也大概掌握了一些做数据挖掘的方法。

经验与教训:

1.自己的python学的太垃圾。说自己耗费了多少时间,付出了多少辛苦根本就是没意义的事情,没人会在乎你的努力,那只是因为自己垃圾而必须付出的努力而已。自己学习python也只局限于半本《简明python教程》,下学期开学以后希望有机会把传说中的《python核心编程》看一遍,估计到时候自己的python会像我看了primer的C++一样进步。

2.对科学计算包不熟悉。numpy,scipy,pandas的API我都没有看过,很多可以用这些第三方库解决的问题,我都直接用python造轮子了,导致自己编程效率并不好,所以自己准备了这些第三方库的API准备最近几天打印下来看一看,这个可以说是很急了。

3.在开始打比赛前熟悉赛题及做初步分析。这方面在打KDD CUP时就做的很好,当时用了整整一天的时间反复看了赛题,然后又用了好几天画图看一天内的流量变化,一个月内的流量变化,对于真个数据有了一种宏观的把控之后才开始做结果出MAPE,这次比较暴力的方面就是老师并没有让我做一些前期的数据分析工作,而是直接提取特征建模测mape然后不停的换特征换参数进行mape的比较,但是这样觉得自己对于数据的理解并不是特别好,下次做的话觉得还是要做好前期的工作。

4.没有考虑好前就动手。这也是自己的老毛病了,自己有的时候性子也比较急,还没想清楚的时候就开始动手,最后导致写程序写一半突然觉得不对或者觉得逻辑混乱,自己在高中的时候做数学题就这样,习惯也带到大学来了。以后写程序,无论什么都应该先从本子上画画再写,思路清晰写,写起来也轻松。

5.没有做好每天的工作日志。这个可以说是一个很大的错误,每天都提交结果,提交完了第二天也就没事了,也忘了MAPE提交了还是下降了,这一次参数和特征有什么变动,出现了什么问题,线上MAPE和线下MAPE差别多大,如果每天都把今天做的测试和提交的结果记录下来,看看过程中的变化,或许能对下一步该做什么有更好的思路。

6.自己数学基础太差。没有线性代数和概率论的支持,自己理解什么东西都很困难,但是近期不准备自己学了,实在是没有兴趣,还是大二跟着老师一起学好了。

总结:

觉得确实学到了一些知识,老师和学姐也很有耐心,能拿到现在的名次已经很开心,毕竟自己几斤几两也心里清楚。说白了名次什么都是身外之物,学到的知识才是自己的,第二赛季马上就要开始了,战争仍在继续,一切还未终止。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息