数据竞赛江湖录:打破阿里天池战神不败神话,南京人工智能应用大赛杀出黑马...

640?wx_fmt=jpeg

2018全球(南京)人工智能应用大赛于8月最后一天落下帷幕。

600万人民币奖金,吸引2855人次,1022支队伍参赛。

如果能从5727道答题方案中脱颖而出,并找到能够落地的人工智能方案,会获得一项给力的支持。那就是,总规模不少于20 亿元,用于跟投支持的人工智能产业风险投资基金。

为了弯道超车,产、政、学、研都是挺拼的。


本次大赛,有3所高校参与出题,17家企业提出了来自企业生产实践中的头疼问题。

我们可能还要思考的是:

企业有痛点,人工智能技术能不能解决?

中国有十几万活跃的行业人才,南京出手,谁来接招?

用科技的手段提升对社会和生产的效率,是大赛的初心,人工智能算法随时随地在我们身边,比如这道货源供需关系的赛题。这也是一道时间序列的预测问题。


640?wx_fmt=jpeg

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

题目名称:公路干线物流区域货源供需关系预测与区域间调度。

目标:预测各个地区未来一周的货量和司机量。

出题背景:运满满成立于2013年,隶属于江苏满运软件科技有限公司,是当前中国乃至世界最大的公路干线物流匹配和调度平台,致力于打造高效智能的物流环境,提高资源利用率,加快物流速度。准确预测区域的物流趋势,并对司机进行路线疏导,是当前最易提升整体中国干线物流效率的途径之一。目前,平台注册重卡司机400余万、货主100余万,已经成为全球最大整车运力调度平台和最大智慧物流信息平台。

赛题中提供的数据有如下的8类:司机电话日志、货量表、司机量表、货主画像、司机画像、城市公路距离记录、城市天气记录、发货记录,均为真实数据。时间序列的预测问题一直是人工智能的数据挖掘领域的高难度问题。要求选手根据历史的1月到5月的数据来预测6月1号到6月7号期间的数据。


640?wx_fmt=jpeg

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

真实数据在手,货量和司机量预测怎么操作?

猛地一看,这道赛题的参赛团队规模在20道赛题中,并没有什么起眼之处,吸引队伍数50,人数133,方案提交数552。是所有竞赛中普通的一场,但是排在前三的队伍中有一只非常的耀眼


众所周知,数据竞赛的江湖有一个排行榜,堪比百晓生《兵器谱》对兵器、武功的排名,就是阿里巴巴天池科学家排名

参考排行榜中的公开数据与资料,我们回顾一下其中的团队成员:

○ 刘洋,东南大学,博士,排名第八。

○ 李凯东,京东商城交易平台数据科学家,排名第五。

阿里天池公开给出的数据开发者规模是二十万,主力团队成员排名前十。作为经常参加国内外著名算法大赛并频频获奖的算法大牛,团队在所需的核心算法上拥有多年经验。这支取名为ITS的队伍,可以被称为“战神团队”,数据竞赛江湖的大牛团队。虽然酣战之中,多支队伍虽排名有所变化,但是ITS一路都是遥遥领先。


原本以为比赛结果完全不用意外,就在比赛结果提交的最后60分钟,剧情翻转了:

排名第三的团队,出现在排行榜的首位。

队长张寒青,一名来自北京理工大学的硕士研究生,带领北理工信息安全与对抗技术研究所的三名队员,将排名锁定为第一名,该团队最后的分数是0.00722284,领先第二名战神团队0.00002。

竞争发生在小数点后五位。


640?wx_fmt=jpeg

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

以下是来自《亲爱的数据》在南京对张寒青进行的专访:

640?wx_fmt=png

寒青你好,首先正式恭喜你和团队获得本道赛题的冠军,顺利晋级。

问题一:作为队长,能否介绍一下你的队友?

寒青:谢谢。张寒青,李蕊,白崇友。团队成员均来自北京理工大学信息安全与对抗研究所,团队承担过各类重大科研项目。主要包括,国家自然科学基金、国家973计划、国家科技支撑计划、国家242计划等。团队常年专注于大数据分析和信息安全相关科研工作,已发表SCI、EI检索学术论文100余篇。

问题二:你们的成绩是0.00722284,怎样理解这个结果的意义?

寒青:总体来看,排在前三的团队,大家的成绩差别不大。将这个数据转换下来看,0.0072差不多就是,将均值超过1000的数据预测的误差控制在了70左右。团队曾经将历史数据最后一天数据作为未来7天的预测值,得到的成绩是0.0036,这种预测方法应该是最接近人类直觉的预测。也就是假如让你来猜后七天的数据,拍脑袋直观的推测,能得到0.0036,加上算法能精确到0.0072。

各个地区司机量和货量差别巨大,货量一般在1000以内,司机量多的地区可能接近10000。所以可以拿均值看看这个算法的直观效果。所以就有了,将均值超过1000的数据预测的误差控制在了70左右。1000的实际值,预测值在930-1070左右。但是1000应该不准确,对历史数据初步统计司机量和货量的均值在1700左右。

问题三:数据挖掘过程中,发现了哪些有趣的强特?你们团队的方法有何特别之处?

寒青:特征表达是数据赛题中重要的一环,特征选取的好坏决定成绩上限。团队的在探索数据中确实发现了一些有趣的强特。例如除了曜日周期外发现上中下月周期也很重要;司机量和发货前一天的天气的关系特别大,和发货当天的关系不大等等。

在这个次比赛中,我们团队引入了BCKs-RM(Basis –Cycle-Keys RegressionModel)方案。该方案思路简明,在实战也能取得了不错的效果,对实际场景中时间序列预测的问题具有一定参考价值

问题四:能不能简单说一下方案框架和BCKs-RM(Basis-Cycle-Keys RegressionModel)预测方法?

寒青:这里先解释一下BCKs-RM。在该次比赛中探索出了一种解决周期时间序列预测的普适性方法:BCKs-RM。对于周期时间序列,其特征可以概括为3类:基准特征(Basis)、周期特征(Cycle)、以及一些每个序列节点都具备的其他重要特征,在本方案中该特征是天气因素,但是如果换一个其他场景,这个因素可以改变。因此,我们将这个关键因素改为Keys,意味着可以灵活替换关键特征。这3类特征基础之上,加上后文介绍的特殊数据构造方法,就可以构建出回归预测模型。我们称这种回归预测方法为BCKs-RM。在这道题中,通过对司机量和货物量的邻近周期的基准特征、周期特征、以及天气特征等关键影响因素进行建模完成相应的回归预测任务。

问题五,由于比赛中时间较为紧张,如果数据挖掘工作继续,该方案还有哪些的提升潜力?

寒青:第一、深入挖掘Basis特征。仍然有许多待挖掘的特征没有补充进来。未来工作可以进一步探究发货路程、司机画像和货主画像表格中蕴含的信息然后结合模型以达到更好的预测效果。

第二、模型融合。时间原因初赛过程中没有尝试模型融合这项技术,而实际经验中模型融合一般能够提高预测性能。未来可以引入其他模型增加模型之间的差异性,通过模型融合技术进一步提高预测准确率。

第三、采用多标签学习。通过多标签学习,将两个模型融合为一个模型。增加简便性的同时,可以充分发掘司机量和货运量之间存在的隐式联系提高预测准确率。

第四、深度学习技术的应用。由于在比赛环境下,赛题提供的历史数据有限(除去了节假日之后,训练数据维持在5000条左右)。如果在满足数据量充足的约束条件下,未来可以采用深度学习方法,充分挖掘特征之间的内在联系,取得更好的预测效果。


以下是张寒青提供的关于BCKs-RM(Basis –Cycle-Keys Regression Model)方案在应用方面的细节:


1

赛题背景


从赛题背景来看,干线物流的场景下,甲方有货要运输的货主,在运满满等平台发布货源信息,乙方司机寻找可以承接的运输任务,进行单程的运输。一般情况下,货运供需市场是不透明的,发货量和司机数量并不匹配。空载率高,货运价格波动严重等因素造成了巨大的资源浪费。

赛题想通过预测各个地区未来一周的货量和司机量从而进行智能调度而解决问题。为了清晰展现目标,以一个地区为例,通过可视化方法描绘了其历史货量和司机量变化情况。方案的目标是预测未来七天的货物量和司机量。

640?wx_fmt=png


2

数据分析


赛题提供了如下8种数据,通过初步分析选取了和目标直接相关的货量表和司机量表进行可视化分析。

640?wx_fmt=png

红色曲线代表四个地区五个月司机量历史数据变化图,蓝色是对应地区货量历史数据变化图。可以初步得出四点结论:不同地区呈现呈现一直变化规律,变化规律存在周期性,且周期为七天,上述图标都存在一个巨大凹陷,存在节假日干扰。部分地区存在数据缺失。

640?wx_fmt=png

我们选择了320100区域五月份(靠近预测时间段)非节假日的3个周的司机量和货量数据作为代表,然后数据进行可视化分析。

从图2中可以得出如下结论:

(1)货量和司机量均呈现明显的周期变化规律。并且变化的周期为一个周。

(2)货量和司机量在一个周期内,受星期的影响规律不一致。司机量是周一最大然后往后呈现递减态。而货量是一周中间段最大,周一和周末较小,一周之内数量分布呈现凸状。

640?wx_fmt=png


3

解题思路


我们需要挑战的问题是,多源、多类型混杂数据特征挖掘影响因素和预测值深度关联方法。

我们的解题基本思路是: 预测值=周期+天气+Base

640?wx_fmt=jpeg

通过对数据的初步了解后,开始寻求解题方案。仔细分析问题后,我们明确了问题的两大难点:一个是主办方提供的信息很多,但是无法直接利用。二是无法建立影响因素和预测值之间的联系。带着这个两个疑问,通过查阅资料和深入思考后,逐步找到了正确解题方案。该方案一个雏形思路就是,选取一个基准值,然后分别计算出周期和伴随时间变化的因素天气对结果的权值。二者相乘作为最后的预测结果

640?wx_fmt=png

对上述的思路进行延拓,得到我们最终的解决方案我们称之为BCKs-RM(Basis –Cycle-Keys RegressionModel)方案

从名字开始解释原理:这里的BCKs实际代表3个方面的关键影响因素。考虑到基准值不应该只是单一值,将基准值延拓成另计周期统计特征和货物成份特征统称为Basis。在实践中发现上、中、下月周期是有用的,因此周期特征分为星期和月份两个,统称为Cycle,而把伴随时间变化的天气因素成为Keys。这个名称看似和天气不相符。主要是因为,我们在总结我们的方法时发现方案具有一定的普适性,在其他类似场景中,这个因素可以替换。命名为Keys:表示它像钥匙一样,解不同的题需要换不同的钥匙。另外,考虑关键因素和预测结果的关系可能不是简单的权值和基准值的相乘这么简单。于是,通过特殊的数据构造方法,用机器学习模型建立Basis、Cycle、Keys和预测值之间关系。上图就是我们方案的核心原理。

640?wx_fmt=png


方案的整体框架,主要分为模型构建和未来值预测两个过程。下面通过4个方面,逐一说明方案的关键技术。

640?wx_fmt=png

首先是基于滑窗法数据构造方法,该环节是问题得以解决的关键。

首先将提供的历史数据按照时间先后排列,然后重头开始选取滑窗。一个滑窗可以分为3部分:邻近周期区,空隔区,Label区。在邻近周期区提取Basis特征,空格区是为了和缺失的5.31号数据对应。在Label区提取每一天的周期特征和天气特征加上相同的Basis特征和当天的标签值就构成了一条标签数据。这样一个窗口就产生了7条标签数据。充分融合了Basis、Cycle、Keys特征。划窗步长为1天,在原始数据集构造出5000多条标签数据。为模型构建奠定良好数据基础。

640?wx_fmt=png

第二个关键技术是数据筛选,数据缺失和节假日的数据均存在严重干扰。

640?wx_fmt=png

通过规则分别对春运数据、法定节假日数据和不连续数据进行处理。

640?wx_fmt=png

第三个是特征工程,从3个方面选取特征。

Basis特征主要选取了邻近周期统计特征,和货物成份特征,Cycle选取了周期特征和上中下月周期特征,Keys是天气特征。

640?wx_fmt=png

具体的特征构建如下,

640?wx_fmt=png

最后一个是关键技术是模型构建。

本方案选取了集成学习模型XGBoost作为回归预测算法。选择和赛题相同的评价指标RMSE作为优化目标函数,以线下10折交叉验证的最好参数为依据,提交预测结果。

640?wx_fmt=png

   

本方案在线上评分中排名第一,分数为0.0072。单看这个值没有直观认识。团队将各地区历史数据最后一天作为后7天的预测值,这是最接近人类直觉预测值,得到线上的评分为0.00361。充分说明算法预测效果优势明显。另外,团队曾以5.24-5.30预测值,1.01-5.23值作为训练数据。线下分数表现超过0.009,有违常理。经过分析,发现由于2018年,年份的特殊性前5月的月初均存在节假日干扰,猜想:增强数据的完备性,预测效果还将大幅度提升

640?wx_fmt=png


由于比赛场景限制,该方案有多处可以改进之处:

进一步深入挖掘Basis特征,充分历史提供的信息;模型融合提高效果,多标签学习增加模型简便性;如果有条件获取更多的数据,可以采用深度学习,挖掘特征内在联系,取得更好的预测效果。

640?wx_fmt=png


4

特色创新


640?wx_fmt=png

本方案的特色有如下三点:

多源、多类型混杂数据时间滑窗特征构建方法:该方法充分挖掘复杂场景下关键影响因素;引入一种周期时间序列预测的黑盒泛化模型,将周期时间序列预测问题转换为回归问题,可作为此类问题的通用解决方案,具有普适性。灵活选择预测算法,适应不同类型数据和不同规模的数据场景,具有较好的可拓展性。

One More Thing

查看张寒青完整代码分享请移步

(超链接:https://www.kesci.com/home/project/5b8f488da233f8001069565d?from=deardata20180906_share)

亲爱的数据

出品:谭婧

美编:陈泓宇

640?wx_fmt=png


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值