机场客流量的时空分布预第一名方案
向AI转型的程序员都关注了这个号????????????
机器学习AI算法工程 公众号:datayx
为了有效利用机场资源,机场正利用大数据技术,提升生产运营的效率。机场拥有巨大的旅客吞吐量,与巨大的人员流动相对应的则是巨大的服务压力。安防、安检、突发事件应急、值机、行李追踪等机场服务都希望能够预测未来的旅客吞吐量,并据此提前调配人力物力,更好地为旅客服务。
完整版答辩PPT下载
关注微信公众号 datayx 然后回复 机场 即可获取。
AI项目体验地址 https://loveai.tech
一、业务背景
1.1 业务理解
本次任务以广州白云机场真实的客流数据为基础,它包含每天数万离港旅客在机场留下百万级的数据记录。参赛队伍需要通过数据算法来构建客流量预测模型,具体而言是预测特定时间、特定无线AP的连接人数。
1.2 数据理解
赛题给出六张表,涵盖了四个方面的数据:无线历史连接数据、航班排班数据、地理位置信息及旅客行为信息。
1.2.1 历史连接
无线历史连接数据包含的是机场无线AP历史连接信息,格式如下:
其中flight_id是航班id,scheduled_flt_time计划起降时间,actual_flt_time是真实起降时间,bgate_id是登机口信息,arrival_departure是起飞OR降落标记(D表示起飞,A表示降落)。在预测区间上actual_flt_time字段为空,降落的飞机没有登机口信息。注意,这张表里面使用的时间是格林威治时间,而北京时间=格林威治时间+8小时。
航班排班确定之后,一整天的旅客登机位于哪个登机口就已经确定,借此可以推断出在某个时刻哪些登机口附近的旅客较多。
1.2.3 地理位置
地理位置涉及两张表,一张表给出每个登机口分别在什么区域,另一张表给出部分无线AP的坐标信息。
我们最终目标是“预测客流量的时空分布”,在空间方面,可以利用这些地理位置信息将航班起降与相应区域关联起来。
1.2.4 旅客行为
旅客行为设计两张表:安检表和行程表。
1.3 赛题解读
要直接解决的问题是利用机场大量数据来预测每个时间点、每个无线AP的连接人数,这一结果可以反映机场客流的时空分布。题目中为了减少噪声对建模过程的影响,取最小时间单位为10分钟,即预测每10分钟的平均值,比如11日00:00-00:09这10分钟上的均值是第一个预测目标点。
首先,我们以同一时间点、同一无线热点的历史连接数据作为基础模型;其次,以航班起飞这一事件对基础模型进行修正;再次,通过划分子模型降低维度来优化模型;最后,对11日凌晨3个小时引入近期信息进一步提升预测精度。
二、核心思路
我们的算法基于GBRT回归模型,包含多方面特征:历史特征、航班特征、位置特征与时间特征等。
2.1 特征详述
2.1.1 历史特征
通过无线AP的同一时间点历史连接数据可以大致推算出当前时刻该无线AP的连接数,这可以作为整个模型的基础。从下图可以看出,真实值一直围绕着历史均值上下浮动,而三种历史均值在不同情况下各有优势。我们计算了包括AVG、MIN、MAX、STDDEV多个指标,计算方式有同点、同时段、同区域三种,时间窗口为最近1/2/3/4/5/6/7/14/30天。
最直接的想法是用历史值来近似当前的真实值,实际数据也佐证了这一想法,左图是真实值与三种历史均值示意图,可以看出真实值一直围绕着历史均值上下浮动,而三种的历史均值在不同情况下各有优势。将三种历史均值扩展到多个时间窗口的多个聚合指标后,便形成了我们的基础模型,如右图所示。计算这些聚合指标时我们有三种不同的方式,最直接的做法同时间点、同热点的历史数据进行聚合。第二种是为了减少时间维度上的噪声,对同时段,同热点的历史数据进行了聚合,什么是同时段呢?就是该时间点上下30分钟。第三种是为了减少空间维度上的噪声,对同时间点,同组内的历史数据进行了聚合,什么是同组呢?就是组号相同的所有热点。另外,为了挖掘连接数的时序变化趋势,聚合窗口由短到长分为9种。基于时序模型的历史特征可以为预测提供一个很好的基准值,那这些波动又该如何建模呢?
AVG、MIN、MAX与STDDEV分别用于衡量均值、下限、上限与变化剧烈程度。最直接的方式是对同时间点、同无线AP历史数据进行聚合。为了减少时空噪声的影响,我们还考虑了同时段(该点上下30分钟内)、同无线AP的历史数据与同时间点、同区域(无线AP组号相同)内无线AP的历史连接数据。为了涵盖连接数的时序变化趋势,聚合窗口由短到长分为9种。
我们首先来看一下整个乘机流程,经验和数据均表明,值机、安检、候机与行李区人流密集,而航班的起降会极大地影响这些区域的客流分布。
2.1.2 航班特征
虽然基于时序分析的历史特征可以为预测提供一个很好的基准值,但很多波动无法刻画。这些波动往往是由航班起飞、到达这些事件引起的,需要通过航班特征来刻画。从下图可以看出,旅客一般提前1.5个小时左右进行安检,然后进入候机区等待,所以我们统计了所有登机口该时间点后10/30/60/90/120/180/240分钟内起飞航班数量,分为多个时间窗口是由于有的旅客在10分钟内起飞,有的旅客在1个小时内起飞;另外,航班经常晚点10-30分钟,所以我们统计了所有登机口该时间点前10/30/60分钟内起飞航班的数量,分为多个时间窗口是由于有的旅客晚点10分钟,有的旅客晚点半个小时。注意,我们对那些共享飞机的航班进行了合并处理。
假如一个航班预计在这个时间点起飞,从左上图可以看到旅客一般提前1个半小时左右进行安检,然后进入候机区等待,所以我们统计了预测时间点后多个时间窗口上的起飞航班数量,这些指标可以很好地刻画有多少旅客10分钟内就要起飞,又有多少旅客一个小时内才会起飞;另一方面,航班经常会晚点10-30分钟,所以同上我们统计了预测时间点前多个窗口上的起飞航班数量。然而线上GBRT模型最多允许800维特征,因此我们初期模型起飞特征时间窗口会少一些。现实生活中,为了提升资源的利用率,经常多个航班共享一架飞机。在这里,我们对共享同一飞机的航班进行了合并处理。
达航班对于接机区、中转区与取行李区的人流分布有着影响较大。因为到达航班没有区分具体的登机口,我们统计的是该时间点前后10/30/60/90分钟内到达航班的总数量,在此我们也对那些共享飞机的航班进行了合并处理。
2.1.3 时间特征
时间信息可以帮助我们区分特殊的时间段,比如夜间和节假日等,包含了天内分钟偏移、星期与节假日等信息。
天内分钟偏移是天内分钟的索引值,直观地讲是该时间点是天内第几个10分钟,比如00:00-00:09的天内分钟偏移为0,因为它是天内第1个10分钟。它可以帮助我们区分天内不同时段:夜间和白天的客流分布很可能是不同的。
星期与节假日信息可以帮助我们区分特殊的日期。星期方面直接将星期几作为特征,而节假日方面我们把每天分为五种情况进行标注:0表示工作日,1表示最后一个工作日,2表示假期第一天,3表示假期中,4表示假期最后一天。
2.1.4 位置特征
位置特征可以帮助我们区分特殊的区域,包含无线AP所在的区域、楼层与其坐标值、所在组的编号等信息。通过这些信息,算法可以为不同区域分别考虑:有的区域连接数一直很多,有的区域连接数变化剧烈。
2.2 模型建立
我们最初的模型是用单个回归模型预测所有区域,但这样做会导致输入的维度非常高。实际可以用于训练的数据却十分有限,所以会产生过拟合现象。为了减少过拟合,需要向模型中合理地引入先验知识。
我们观察到可以将白云机场分为四个区域:登机区域 (W1、W2、W3、E1、E2、E3)、T区域、WC区域与EC区域。对于候机区域的无线AP点,只需要考虑与之距离最近6个登机口的起飞航班特征;对于T区域,只需要考虑W、E这两个大区域的总起飞航班特征及T区域内AP组号;对于WC区域,只需要考虑W1、W2、W3这三个登机区域的总起飞航班特征及WC区域内AP组号;对于EC区域,只需要考虑E1、E2、E3这三个登机区域的总起飞航班特征及EC区域内AP组号。另外,将B901-B909的航班起飞特征放在WC区域,因为这9个登机口位于WC区域的一楼。将单个回归模型分为四个子模型后——从单个回归模型预测所有区域到为不同区域分别建模,输入的维度大幅度降低。
另外,对于时间类特征,如星期、天内分钟偏移等,我们将其看作1维整数,而不使用one-hot高维编码,这一技巧进一步降低了输入维度。与线性回归等参数回归模型不同,GBRT是基于空间划分的回归模型,对于诸如星期这类有序变量,它可以根据训练数据将其合理地划分为多个区间,比如可以将星期划分为[星期一, 星期四]、[星期五, 星期日]两个区间。
最后,对于11日凌晨的3个小时(00:00-02:59),通过为它们引入10日夜晚的近期信息,比如10日最后一个时间点的连接数及安检信息等,可以进一步优化预测结果。也就是说,预测短期内客流分布可以做得更准确。
首先来看起飞特征,左边是白云机场的平面图,整个机场可以分为四个区域。对于每个区域,并不是所有登机口的起飞特征都有用。对于候机区域的无线AP点,只需要考虑与之距离最近的登机口起飞信息;对于T区域,只需要考虑W、E两个大区域的总体起飞信息;对于WC区域,只需要考虑W1到W3三个登机区域的总体起飞信息,以及B901到B909这九个登机口的起飞信息,这里值得注意的是实际上B901到B909这九个登记口在WC区的一楼;对于EC区域,只需要考虑E1到E3三个登机区域的总体起飞信息。
其次,对于时间类特征,如星期、天内分钟偏移等,它们是有序变量,而GBRT与线性回归不同,它是基于空间划分的回归模型,可以根据训练数据进行合理的区间划分,所以我们把这些有序变量看作1维整数,而不使用one-hot高维编码。再次,组号也需要one-hot编码,维度较高,分区域后每个子模型只需要考虑本区域内的组编号就可以了,这样组号编码维度从原来的100多维降到20维左右。最后,加上上面所说的起飞特征维度优化,模型输入的维度得到大幅降低。
上面是我们算法的主体部分,最后还有一个小优化。从左图可以看出,无线AP一段时间内的连接数实际上相对稳定,所以短期内的预测可以做到更准确。比如,预测11号前三个小时,10号最后一个小时的真实连接和安检信息我们是知道的,可以利用这些信息来提升预测的准确性。
我们算法的基础是基于历史连接的时序模型,加入事件驱动后成绩得到大幅度的提升,虽然我们当时优势明显,但并没有松懈,又通过降低维度以及引入近期信息的方式进一步优化算法。我们的算法可以统一自动化地学习模式规律,没有任何人工设定的规则,所以它具有很好的可扩展性以及更低的维护成本。
三、 经验总结
本次比赛收获良多,经验总结如下:
第一,工欲善其事,必先利其器。用合适的工具做合适的事情,比如利用文档管理算法设计及模型迭代,利用Python自动生成SQL代码,利用PAI命令执行训练及预测等。
第二,莫要画地为牢。思路要开阔,不能过于局限,比如只局限于使用历史连接数据,或只局限于使用单一模型等。
第三,三个臭皮匠胜过诸葛亮。团队合作好于单枪匹马,团队合作不但可以在有限的时间内尝试更多思路,还能互相找出对方的思维误区。
第四,逆水行舟,不进则退。无论当前成绩如何,都要不断地优化模型,否则迟早会被人超越。虽然,我们团队前期优势明显,如果就此懈怠,没有继续优化模型,很难保持第一到比赛结束。
第五,格局决定输,细节决定赢。不同梯队是由于算法整体架构不同,同一梯队内排名是由于细节关注程度不同。
阅读过本文的人还看了以下文章:
不断更新资源
深度学习、机器学习、数据分析、python
搜索公众号添加: datayx
长按图片,识别二维码,点关注
AI项目体验
https://loveai.tech