注意: 上方的内容不要删除
项目题目
天池智慧交通预测挑战赛
成员
姓名 | 学号 |
---|---|
曹健健 | 3120180683 |
文宗正 | 3220180751 |
高宇 | 3220180692 |
问题描述
1、问题背景分析
移动互联网时代的开启使得每个出行者都成为了交通信息的贡献者,超大规模的位置数据在云端进行处理和融合生成城市全时段,无盲区的交通信息。天池智慧交通预测挑战赛作为“数聚华夏 创享未来”中国数据创新行构成活动之一,以“移动互联时代的智慧交通预测”为主题,要求参赛者基于互联网交通信息建立算法模型,精准预测各关键路段在某个时段的车辆平均通行时间,产出旅行时间预测算法,运用大数据手段缓解拥堵毒瘤对城市管理的影响,更好的帮助交通管理者提前制定管控方案,预防和削减拥堵,实现智慧出行,实现对交通状态波动起伏的预判,助力社会智慧出行和城市交通智能管控。
2、问题描述
这是一个关于时间序列预测的问题, 并不是普通的回归问题, 而是自回归, 一般的回归问题比如最简单的线性回归模型:Y=aX1+bX2, 我们讨论的是因变量Y关于两个自变量 X1 和X2的关系, 目的是找出最优的a和b来使预测值y=aX1+bX2逼近真实值Y。 而自回归模型不一样, 在自回归中, 自变量X1和X2都为Y本身, 也就是说Y(t)=aY(t-1)+ bY(t-2),其中Y(t-1)为Y在t-1时刻的值, 而 Y(t-2)为Y在t-2时刻的值, 换句话说, 现在的Y值由过去的Y值决定, 因此自变量和因变量都为自身, 这种回归叫自回归。 根据题目给出的信息, 除了路本身的信息外, 训练数据基本上只有旅行时间, 而我们要预测的也是未来的平均旅行时间, 而且根据我们的常识, 现在的路况跟过去一段时间的路况是很有关系的, 因此该问题应该是一个自回归问题, 用过去几个时刻的交通状况去预测未来时刻的交通状况。
2.1 数据准备
移动 APP 数据实时匿名收集用户地理位置信息, 处理和融合生成城市全时段,无盲区的交通信息。天池智慧交通预测挑战赛提供城市关键路段(link)的属性信息,路段间网络拓扑结构以及每条路段在历史各时间段内的通行时间,从而可以让我们更方便地建立和测试算法模型。
数据描述:(1)路段(link)属性表:每条道路的每个通行方向由多条路段(link)构成,数据集中会提供每条link的唯一标识,长度,宽度,以及道路类型;(2) link上下游关系表:link之间按照车辆允许通行的方向存在上下游关系,数据集中提供每条link的直接上游link和直接下游link;(3)link历史通行时间表:数据集中记录了历史每天不同时间段内(2分钟为一个时间段)每条link上的平均旅行时间,每个时间段的平均旅行时间是基于在该时间段内进入link的车辆在该link上的旅行时间产出。
2.2 模型建立
传统的自回归模型有自回归模型(AR)、移动平均模型(MA)、自回归移动平均模型(ARMA)以及差分自回归移动平均模型(ARIMA), 这些自回归模型都有着严格理论基础,讲究时间的平稳性, 需要对时间序列进行分析才能判断是否能使用此类模型. 这些模型对质量良好的时间序列有比较高的精度, 但数据集中有大量的缺失值, 因此我们并没有采用此类模型. 我们的思路其实很简单: 就是构建Y(t)=aY(t-1)+ bY(t-2)+.., 但并不是用的线性模型, 用的是基于树的非线性模型, 比如随机森林和梯度提升树。我们选择的模型是基于XGBoost的算法来实现对模型的回归。
XGBoost是一种梯度提升算法、残差决策树,其基本思想为:一棵树一棵树逐渐地往模型里面加,每加一棵CRAT决策树时,要使得整体的效果(目标函数有所下降)有所提升。使用多棵决策树(多个单一的弱分类器)构成组合分类器,并且给每个叶子节点赋与一定的权值。XGBoost是boosting算法的其中一种。Boosting算法的思想是将许多弱分类器集成在一起形成一个强分类器。因为XGBoost是一种提升树模型,所以它是将许多树模型集成在一起,形成一个很强的分类器。
2.3 预期的结果
首先,通过对数据集的初始数据进行预处理,包括:数据摘要、缺失值处理、特征变换以及数据平滑等操作。我们的思路是通过前几个时刻的travel_time来预测下一个时刻的travel_time, 那么这个缺失值一定要补齐, 因为我们总不能让前几个时刻的travel_time出现空值吧, 而且这种情况下要预测的travel_time也有可能是空值。接着,对于预处理过的数据进行提取特征,主要是分为时间相关的特征和每条路本身的特征,时间特征主要是前几个时刻的travel_time,lagging特征以及基本的时间特征;与路相关的特征为路的长度,宽度,id,路的类型。最后,训练模模型和Cross Valid:训练模型时直接用上面的feature训练对应的travel_time就可以,但是时间序列feature在交叉验证和测试的时候就不能跟训练一样了,因为当我们在预测出t时刻的travel_time后,需要把这个travel_time作为预测t+1时刻travel_time的lagging特征,这个lagging特征是需要根据上次预测的结果进行更新的,如此反复直到预测到最后一个时刻的travel_time,然后在划分本地训练集和本地验证集的时候,不能随机划分,标准的话要根据时间顺序来划分。通过以上步骤训练得到模型,并利用得到的模型对于道路进行预测,预期得到的结果是模型的泛化性能很好,并且没有过拟合,可以很好的预测道路的情况,实现真正的智慧交通。
项目评估
将通过实验中算法的预测值和记录真实值之间的误差确定预测准确率,从而评估项目中算法的好坏,评价本项目中的算法在实际生活中对于交通预测的作用。
项目分工
姓名 | 任务 |
---|---|
曹健健 | 开题报告撰写、算法研究与复现 |
文宗正 | 数据的获取、预处理、算法复现 |
高宇 | 算法研究、测试和报告的撰写 |