科学倡议数据开放竞赛

更新时间:

先说说比赛

大赛背景:数据开放及算法共享是大数据及互联网+时代的核心精神,但是由于行业壁垒及数据隐私等原因,很多研究人员及学生无法接触到大规模真实数据。秉着推动数据开放及共享的理念,大赛推出目前在城市、交通、地理、行为等领域内起着重要作用的公交卡及公交车GPS轨迹数据,邀请数据分析和挖掘爱好者一展身手。

比赛概况:初赛的内容为识别公交站点及乘客下车点,优胜团队进入复赛。参加复赛的队伍获得10天的数据,用此数据集进行无限定创意发挥,并被授权使用开放数据集进行学术研究。大赛的一、二、三等奖和优秀奖将根据大众评审和专家评审的结果最终确定。获奖团队将获得参赛证书和奖金。

再说说我自己的经历和感想

2015年7月份初赛开始,命题为使用深圳公交AFC和AVL数据识别公交站点和乘客下车站点,我学交通出身的,平时对公交数据应用也关注较多,因此对于整个命题的技术路线还是比较清晰,博士论文写作期间也大量应用了R语言进行数据分析,因此对于初赛前半段提供的样本数据,还是比较顺利的完成了程序的开发。

真正遇到困难是在初赛的后半段,当几MB的样本数据变为几GB的完整数据时,就需要开始考虑算法优化的问题了,之前用于样本数据的算法迁移到完整数据上非常消耗计算资源,初步测算需要十几天的时间才能跑完,肯定没法直接用。我也是边摸索边尝试,从三个方面进行优化,首先是技术路线的优化、其次是使用适合大数据的R语言包比如data.table, dplyr等(这些包我都是第一次使用)、最后是重写代码减少for循环的使用换而采用内置的函数或者mapply。这样尝试了有半个多月,经常是晚上调整程序,半夜运行,然后白天起来看结果。最终优化完成程序完整运行只需要几个小时的时间。另一个困难就是主办方提供的Linux云计算平台,对于非计算机专业出身又完全没有接触过Linux的我来说碰到了很大的困难,尤其是在平台上部署R环境和安装一些R语言包,经常折腾到想要放弃,最终youtube教学视频和stackoverflow上的问答帮了大忙。

初赛采用的云计算平台能够实时进行评分,因此很能激发参赛队伍的竞争意识,尤其是比赛快结束的那几天,队伍的排名经常一天变动好几遍。我的成绩排名一直都还不错,从最初的第5名逐步上升到最后的第1名,直到比赛截止前的2小时,实时评分被第二名超越,但最终采用全样本进行的终极排名还是以微弱优势排到了第一。

决赛为自由命题,感觉其他几个参赛队伍大多是GIS背景,而我是交通背景,因此从思路上来说更加考虑数据在交通行业实际应用的问题。很多时候,科学研究和实践应用之间有很大的差距,这在国内尤为明显,学术界有很复杂的模型进行公交线网的规划和公交运营的优化,但真正到了业界,都还是以经验为主。我希望成果能一定程度上缝合两者之间的差距,因此选择写了Transit Analyst这个应用,即面向公交企业的公交辅助决策系统,而不是做一个研究,当然Transit Analyst目前还有一些核心功能有待进一步的开发。程序采用R和Shiny进行开发,Shiny的好处就是网络应用,一方面能够方便用户使用,另一方面也有起到宣传作用。这是我写的第一个完整的Shiny程序,程序中调用了leaflet、plotly等服务。在熟悉R语言的前提下,学习使用Shiny非常方便,是非计算机专业出身的业余程序猿开发数据应用的利器。Shiny程序可以在shinyapps.io上非常简单的进行发布。最终经过专家的现场评分,决赛也排名第一。

最终成果应用: https://yiling.shinyapps.io/TransitAnalyst/
源代码: https://github.com/yilingdeng/ISPRS
欢迎提供意见建议和开展项目科研合作!

我的竞赛海报 alt text