如何两周获得南京全球人工智能应用大赛优胜奖?奖金五万元

640?wx_fmt=jpeg    

战绩:两周斩获南京人工智能应用大赛优胜奖


这可能是,中国数据竞赛历史上,数据挖掘初学者取得的最好的成绩


这件事情让人立刻产生质疑的冲动。

是的,没有眼花,也没有看错。本文的内容看起来像是微信转发中,需要辟谣的广告体。但是,这不是广告,不是某英语培训机构在兜售十天背会两万单词的虚假广告。


这是事实


2018年9月5日,《关于公布 2018 全球(南京)人工智能应用大赛获奖名单的通知》在本次南京全球人工智能应用大赛的平台提供和技术支持方科赛网(www.kesci.com)公布,来自华南理工大学软件学院的参赛队伍获得了优胜奖,奖金金额五万元。


640?wx_fmt=png


虽然比赛成绩已经获得举办方认可,但吃瓜群众的质疑完全没有消失:


此次比赛奖金高额,高手云集,不少参赛者牺牲了休息和娱乐(打王者荣耀)的时间,集中精力参加比赛。


为什么他们只用了两周时间?


   为什么是初学者?



拉一个近景特写,看看团队的情况。

主力队员均是大学三年级的学生,队长彭淇,光电信息科学与工程。主力队员吴志威,软件工程(卓越班)学生。华南理工软件学院CIKE实验室的带队老师蔡毅,一直鼓励队员:时间有限,尽力就好,重在参与、重在体验。因为一开始,并不是对拿奖有十足的信心。两位同学都是这辈子第一次参加人工智能比赛,加上两个月前才第一次听说南京人工智能应用大赛。

两个“第一次”加上努力与投入,并不代表没有机会赢。


接下来,捕捉一张赛事全景。

可以从旁观者的角度毫不客气地说,在南京全球人工智能应用大赛赛事中,在排名前二十的选手中,来自华南理工大学的队员目前学历和资历明显偏低,本科还没有毕业,开学才读大学四年级。


但凡稍微熟悉人工智能类、或者数据挖掘类比赛情况的人都知道,在本次,乃至在全球类似的比赛中,博士学历非常常见。


日常生活中,我们挺难接触到博士,但是人工智能作为技术的高地,非常偏爱高学历。


有人的地方就有江湖,人工智能的江湖里从来不缺少大神,大神在技术领域是用来专指技术一流的人才,也就是高级别技术人士,代表了很难超越的技术境界,无论是来自学界,还是业界。高级别技术人士为生态生产了大量的开源代码。阿里天池和科赛的不够用,还可以去国外的kaggle。但是比赛中,大神可不会提供开源的代码,因为要和他们直接竞争。


也许参赛前并不清楚对手,在本次赛事中,华南理工大学的团队和阿里天池的“战神”团队,以及来自北京理工大学的黑马(数据竞赛江湖录:打破阿里天池战神不败神话,南京人工智能应用大赛杀出黑马),他们不约而同的选择了同一道题目竞技。排名结果确定后,这支年轻的团队以0.0001的微小差别紧随第二名之后,居于第三名。


640?wx_fmt=png


来源:科赛网赛事页面截图


在交谈中,我也带着各种疑问,一口气问了很多问题:


为什么只用了两周的时间打比赛,这次的奖金数额较高,很多团队都是开足马力,全力以赴?真的是两周时间吗?听起来不怎么可信。


听完这一系列问题,队长彭淇无可奈何地说,“没办法赶上了学校考试周。确实是,我7月16日才找到队友,初赛6月1日已经开始了,8月6日结束,7月21日第一次提交成绩。”


在南京赛事的最后一场,路演现场,团队开场致辞令人印象深刻。

演讲一开始,队长彭淇目光炯炯,又不失自信的告诉评委、告诉全场来宾:

我是一名来自华南理工大三的学生,正好也是扎克伯格创建Facebook的年纪。


640?wx_fmt=jpeg


如果对以上背景情况没有什么质疑,那么我们最想知道的就是,

如何两周获得南京人工智能应用大赛优胜奖?以及作为初学者的他们,用了哪些方法?

让我们细细道来。




(一)团队解题思路




以下内容由获奖团队提供:


A丨赛题背景


江苏运满满平台的匹配和调度工作是这样进行的:托运方(货主)在运满满平台发布货源信息,通常需要4.2-17米的货车,货源包括但不限于:钢件,化工原料,建材,农产品,快递等。承运方(司机)寻找可以承接的运输任务,然后进行单程的公路运输行为。


但上述工作存在以下的问题:货运供需市场是不透明的,发货量和司机数量并不匹配,去程和回程也不匹配。供需双方受到很多因素影响。这造成了巨大的资源浪费。比如空载率高,货运价格波动严重等。


根据过去大约6个月的发货量和司机数量来预测未来7天的发货量和司机量,于该类问题最相似的实现方案是把问题当成传统时间序列问题,以统计学的方法—自回归积分滑动平均模型(ARIMA模型)进行建模处理,将时间序列数值进行差分求得为平稳差分序列,并确定出自回归项p和移动平均项q。我们会把该平台每天的货物量和司机数量导入ARIMA模型中,求出需要的参数后则对其接下来进行预测。


但单纯的ARIMA模型存在以下缺点:


  1. 要求时序数据是平稳的(stationary),或者是通过差分化(differencing)后是平稳的。但是对于司机量或者货物量这个问题来说,可能会受到天气以及节假日的影响,造成数列不平稳。

  2. 本质上只能捕捉线性关系,而不能捕捉非线性关系。由于中国存在传统节日春节,大部分人都会休假,直接导致春节期间货物量和司机需求量断崖式下降,在时序上出现断层等情况,会导致数据的变成非线性数据。

  3. 统计学模型要捕捉时序中的周期性或季节性因素的话,需要有大量的数据,但是由于供给只有六个月的数据,因此数据量可能不能满足模型的需求。


为了解决这一系列问题,我们提出了一种新的,处理这类数据量较少,同时要考虑到以下几点:


  1. 曜日丨因为星期几对于货物量和司机数量的需求有较大影响,例如:周末两天的货物量和司机量相较于工作日都有所下降。

  2. 天气因素丨极端天气如暴雨、暴雪可能对司机出行有影响,从而可能影响司机数量。

  3. 时间衰减影响因素丨距离需要预测时间越近的数值,我们要给予更大权重,因为越接近需要预测的日期,可能数量的相关性就越大。

  4. 节假日因素丨节假日的货物和司机数量都有所下降。


我们称这个模型为—时间序列加权回归模型,旨在解决这类数据量小且维度低的问题。同时,对于那些数据量大,纬度高的问题,我们的模型也有实际意义,它能提供一个基线以及基本的数据分布。


B丨基本实现步骤


1     数据分析

1.1  节假日的影响

用python的matplotlib工具包将数据集中13个地区的货物量、司机量通过图像呈现出来,如下图所示:


640?wx_fmt=jpeg



▲ 13个地区的货物量


640?wx_fmt=jpeg


▲ 13个地区的司机数量


1.2    极端天气影响

由于数据集中还记录了各个地区的天气情况,因此我们猜测极端天气对货物和司机数量也有直接的影响。

我们将中雪、大雪、雨夹雪、大雪暴雪、暴雪、大雨、雷阵雨、暴雨标记为极端天气(bad_weather),其余标记为正常天气(good_weather),这里我们以司机数量为例,分析极端天气和正常天气一周7天的平均数值,作出10个地区的分析图。发现极端天气对司机数量的并没有造成明显的影响,所以接下来的训练数据中并没有去除极端天气对应的数据。


640?wx_fmt=jpeg


2     线下测试集

对所给数据进行分析后,我们选取了除去春节以及传统节假日(去除清明节、劳动节共6天)的数据集作为训练集。

我们首先在线下进行优化,并选择在线下有效的方法提交到线上进行验证。选择5月24号到5月30号共七天作为线下测试集的主要原因在于,在去除了节假日因素的影响后,我们发现5月24号到5月30号和线上测试集具有相近趋势的特点。


3     回归

以预测货物量为例(司机数量同),一个最基本的思路是,对于每个地区,将测试时间段的货物量预测为其训练时间段的货物量的均值,即:


640?wx_fmt=png



式中,pred320100为地区320100货物量的预测值;D为训练时间段的日期集合;|D|表示训练时间段的天数;Cargo320100,d表示地区320100在日d的货物量。


此时我们是把货物均值视为对训练时间段内货物量的回归。不过,我们显然可以找到一个比均值更优秀的回归值,这个值应该使训练时间段上的损失值最小。我们将这个值作为地区320100在待测7天的预测。即:


640?wx_fmt=png


式(2)中,L为赛题给定的损失函数。

加权:距离权重


通过对数据的观察和对问题的分析,我们发现一个地区的货物量情况是动态变化的,会呈现上升或下降的趋势,由此可见,越靠近测试时间段的样本重要性越大。

于是,我们给选取的训练集的每一天加上了一个权重,使得越靠近测试时间段的样本的权重越大。权重系数为ω320100,d


此时,(2)式可以改进为:


640?wx_fmt=jpeg



周期:曜日系数

时间序列问题的特点是时间样本较少,因而样本利用程度非常重要。为此,我们再做了如下的改进:在训练时间段上,我们为每个曜日计算了一个系数,


曜日ψ是星期的记法,如ψ=0为星期一,ψ=6为星期天。γ320100,ψ用来作为地区320100曜日ψ上的曜日系数。D表示训练时间段的日期集合,Dψ表示训练时间段上属于曜日ψ的子集。由此我们可以在训练样本中排除周期性成分,然后在对测试时间段进行预测时重新乘回,即:


640?wx_fmt=jpeg


式中,μ为测试时间段的一天;ψ(d)表示训练集d日的曜日(即星期几),ψ∈[0,6]。


C丨模型的创新性


  1. 这是一种新的处理时间序列问题的模型,该模型在数据量较小,可提取的特征维度较低的情况下,能够充分同时考虑到曜日、节假日、时间衰减等因素;

  2. 能够不断地在原有模型基础上加上需要考虑的影响因素,具有较好的泛化性;

  3. 传统的统计学方法解决时间序列问题需要较长的时间跨度才能够捕捉到周期性因素,但是我们的模型能够在先验经验的基础上,给定可能的周期,让模型在少量数据集的情况下也能去捕捉到周期趋势。


以上是赛题的思路分享,这次比赛的取得了不错的成绩,希望能够借此机会向队员讨教一些好的学习方法与经验。


640?wx_fmt=jpeg




(二)访谈内容



Q1:为什么会有兴趣?

觉得数据科学会是未来技术的方向,自己有兴趣,大一自学了C和C++语言。大二进了自动化学院的课题组,做了一些工程化的项目,一下萌生了对数据挖掘超级大的兴趣,觉得非常好玩,也喜欢投入地去钻研一些问题,并找到解决方法的快感。一种沉浸在数据竞赛中的快感能产生很大的动力去解决问题。面对问题,钻进去解决,看到自己的分数一步一步提高是莫大的幸福。


Q2:损失函数中衰减系数的作用是什么?

可以理解为如何利用这些历史数据,有了衰减系数,5月末的数据比例用的多,1月份的数据比例用的少。就好比在算损失函数的时候 5月末的数据占了50/99,而1月份的数据占了 1/99。那算出来的预测数据 肯定和5月末的数据相关性更大了。


Q3:有什么收获?

收获了队友,收获了友谊,在自己喜欢的领域找到并肩作战的战友。相互学习、相互鼓励。


Q4:有什么好的学习方法?

第一、多coding,一定要上手练习。

第二、多看开源代码,非常启发,学到一知半解的时候,来一份开源的代码,细节的精妙都蕴含在代码之中,学习非常有效。


Q5:能不能打听一下主力队员的学习成绩和学习基础?

队长彭淇的专业排名是全专业第二名。主力队员吴志威,也是软件工程卓越班学生,大三上学期的排名是全专业第四。


Q6:是否认同“数据竞赛是最好的、学习数据挖掘的方法”这一说法?

竞赛平台强迫你去实践。因为受条件限制,很多和企业业务和实际相关的数据挖掘的问题,和工程平时接触不到,比赛最接近工程的运作,学习到的,通过比赛来运用是非常好的。由实验室老师的带领和指导,学习的更加有效。参赛过程中对表达能力也是一种锻炼,数学问题一般比较抽象,很难表述。在表达方面,CIKE实验室的蔡毅老师给我们提了一个要求,如果把复杂是数据挖掘问题讲解到连女朋友都能听懂了,那么才OK。





(三)总 结




有人说,自古英雄出少年。也有人说,高手的生死决定了一技的兴衰。科技的发展从某一方面理解就是人才的发展。人工智能的专业人才已经成为科技领域的基础资源。


本次南京全球人工智能应用大赛的平台提供和技术支持方,

科赛网(www.kesci.com)创始人范向伟认为,人工智能人才核心的特点是基于新的生产要素,就是数据、算法和算力,新的生产要素必然产生新的人才能力要求。从工程师到科学家的培养,关乎中国人工智能的兴衰。学界和业界也在积极探索,积极合作。



640?wx_fmt=png




笔者通过近距离的观察,努力尝试回答文章开头的问题:


如何两周获得南京人工智能应用大赛优胜奖?


第一、参赛队员对人工智能的兴趣是激发参与者探索问题的原生驱动力。


第二、参赛队员良好的学习基础,竞赛中运用的知识与技能来自于常年的积累。


第三、在实验室团队老师的带领下,队员成长在一个友好、互助、好学的环境中。

队员的背后是CIKE实验室雄厚的积累,队员的身边是务实的科研氛围。在前文中多次提到的蔡毅老师是华南理工大学CIKE实验室负责人。任20多个知名国际学术会议的主席和程序委员会委员,多个学术期刊编委和客座主编。CIKE实验室近三年参与的竞赛成绩斐然,实验室成员在阿里天池、Kaggle、中国计算机学会(CCF)BDCI竞赛、教育部大数据挑战赛等多个国内外智能大赛中获得多个大奖。实验室承担多个企事业单位委托的人工智能项目,有丰富的人工智能技术落地应用经验。


640?wx_fmt=png

640?wx_fmt=jpeg


两周的参赛时间确实非常短,但这不是一个偶然事件,不是碰巧的成功。我们可以理解为一支训练有素、经验丰富的专业团队,派出精锐力量,对于战斗目标的一次奇袭,并完美取胜。


One More Thing


在文章的最后,因为今天是9月10日,教师节。队员们想借此机会谨向华南理工大学软件学院CIKE实验室的蔡毅老师致以节日的问候,感谢老师一直以来,给予的帮助与教导。(完)



亲爱的数据

出品:谭婧

美编:陈泓宇

640?wx_fmt=png


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值