cnn 预测过程代码_【交通+AI】使用CNN+LSTM实时出租车出行预测(上)

这篇论文主要讲述了使用成都的出租车轨迹数据进行建模后生成出行强度图,使用CNN和LSTM进行学习之后通过反卷积生成出行强度预测图。非常适合上手这个领域,主要有两点原因:第一 出租车出行强度只包含了上车下车的频次信息,不涉及OD,路线等复杂问题;第二使用的都是比较初级的网络结构,复现较为简单(误)。

最近好久没搞交通方向,应同学私信要求,我将在两周内,用三篇文章的篇幅对本文进行讲解,数据处理全过程以及代码复现(希望不会翻车),上篇对文章进行分析,后续实验在业余时间两周内完成。

数据集

文章地址 Real-Time Taxi-Passenger Prediction with L-CNN

作为改进出租车调配方法中的一个环节,出租车出行强度预测是比较重要的一环,在不考虑拥堵等问题的情况下,出租车资源向热点地区倾斜是直观的想法。对出行强度进行预测会涉及到三个方面:时间,空间,客观因素,因此以往的传统方法不能很好地满足准确性,简单性以及时效性。感觉就像做code一样,某个题目要求按照层顺序打印二叉树节点,首先无脑想到维护先入先出队列。。。同样看到时间,空间,最直白的网络结构进入脑海:LSTM,CNN。再说下数据输入,这篇文章利用出租车的GPS数据,得到不同上车下车地点的坐标,然后把成都市用500米*500米方格进行划分,统计每个方格的上下车次数,生成如下的图像

下面的任务就是用网络学习这个强度图再空间以及时间顺序上的特点,再生成新的强度图。

Nijt就是ij块方格t时段的是上下车数量,C是一系列操作(指代网络),中间的i,j是不同格子的相对位置

整体网络结构如下 50*50的强度图输入,进行多次卷积后和embedding层(天气之类的)搞成一个高维向量,再进入到LSTM中,最后反卷积生成结果图

生成图像走的下面两个式子G,D是当前交通强度图和天气等因素客观描述,h(t)是lstm的隐藏空间

Loss用的是生成强度图和实际强度图之间的差距,文章用的online-learning,也就是使用它所有历史数据进行学习,如果有新的数据就继续学。

在训练过程中有两点注意:h (t)再每天开始都有个初始值

模型是一个个时间step演进的,如果想求多个时间间隔之后的数据需要一个个时间点生成

数据预处理

数据格式如上所示,百度网盘限速数据还没下完,作者说用了排序,因此我猜想数据是按照每个时间点不同出租车id混杂在一起的,因此需要id +时间排序,找到FLAG变化的点(0,1代表空重车)。这么多数据直接用python排序十多个G的数据会很慢,用spark一句话就搞定(scala语法简洁得一批)当然spark集群需要给力,类似的数据之前排过,大概三四分钟就排好了,下一篇详细说数据处理问题。

结果是上面的样子,结果是root mean square error

第一个方法是简单的启发式预测(感觉根据之前格子的信息生成的)

第二个方法是本文方法但是不用embedding

第三个方法是本文方法

作者提到模型普遍在夜晚精度差一点,是因为数据集的周末数据较少而周末是成都人民大批出动打车逛该的时候。。。

本周内出中篇:数据预处理,快速找出乘客换乘坐标不同思路以及解决方法,GPS数据可视化

再晚些时候出下篇 : 模型复现(很多细节都文章都未给出,瑟瑟发抖)

你可能感兴趣的:(cnn,预测过程代码)