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

640?wx_fmt=jpeg    

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


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


这件事情让人马上产生质疑的冲动。微信

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


这是事实
函数


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:有什么好的学习方法?

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

第2、多看开源代码,很是启发,学到只知其一;不知其二的时候,来一份开源的代码,细节的精妙都蕴含在代码之中,学习很是有效。


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

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


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

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





(三)总 结




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


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

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



640?wx_fmt=png




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


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


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


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


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

队员的背后是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