Predicting Citywide Crowd Flows Using Deep Spatio-Temporal Residual Networks
AAAI 2017 郑宇组的论文
文章首先介绍该问题的基本概念 ,接着描述系统的框架(本文跳过),然后介绍基于DNN的预测模型,最后进行实验验证模型结构与参数和与基线模型进行对比。
OUTLINE
- 人流量数据(crowd flows)的时空属性及及外部因素
- 如何进行数据格式转化
- Deep Spatio-Temporal Residual Networks (ST-ResNet)
- 实验
文章解决的问题:人流量预测,即用历史数据预测下一时刻的人流量
方法:CNN+残差学习+多网络融合
贡献:
- 用基于卷积的残差网络捕获人流量数据空间特征
- 总结了人流量数据时间维度上的三个属性:临近(closeness ),周期(period),趋势(trend )
- 用三个网络分别取捕获上面三个属性,然后进行融合,融合的权重是模型学习出来的
- 部署到云,已落地使用
人流量数据(crowd flows)的时空属性及外部因素
- 空间属性(文中说到两点)
- Nearby:目标区域的流量会受相邻区域影响,包括目标区域人流量同样会影响本身人流量,这点非常好理解,比如我们要预测学校下一小时的人流量,当然跟之前时间内,学校及其附近的人流量有关啊。
- Distant:目标区域的流量会受远处区域影响,这点不怎么好理解,作者举了个栗子,住在离办公室非常远的人通常是坐地铁或者走高速公路去上班。
- 补充:郑宇博士讲过还有 Hierarchy,比如城市的结构(单条路->街道->区->城市……),这等于是城市高级的语义信息,也更适合用CNN这种不用做特征工程的模型 -,-(图像任务中,CNN层数越多,语义信息越丰富,相反位置信息越少,参考FPN那篇文章)
- 时间属性(三点)
- Closeness:一个区域的流量受最近一段时间的流量影响,包括远处的和近处的区域。很好理解的,这个跟传统时序数据挖掘差不多……
- Period:工作日中每天的早高峰的交通流量类似,这是这类数据独有的,~哈哈想象一下股票有周期还得了吗?
- Trend:列如冬天的时候早高峰的时间要推迟,把这个趋势画出来肯定是比较平滑的
- 外部因数(无限多~)
- 比如天气状况或者突发事件能够影响流量
如何进行数据格式转化
- 重点重点重点,如何在保证上面所说数据的特性的情况下,把获得的数据转化成模型输入数据的格式呢?
- 作者将目标城市划分成 IXJ 的网格,然后按照固定时间间隔计数每个网络的入流与出流,最后成二维矩阵(类比RGB图像->三维矩阵),如果按照时间把排序后就像视频流
- 补充:推荐一个资源 Tutorial on Trajectory Data Mining

- 这样转换,保留了数据的空间属性及时间属性,其实在这里就已经从本质上,知道了比之前的工作效果好的理由了吧~~~至于如何体现时间的三个特征具体看下文 ST-ResNet 的结构。
- 我的思考:
- 其他任务也一样,不能来个任务就上模型,一定要考虑数据特性!
- 时空数据的格式转换很重要!
- 根据数据格式,可以结合其他领域(比如图像)的解决方案进行改进
ST-ResNet
- 文章首先解释了为什么不用RNN家族来建模。因为上文说过,这类数据不同于其他时序数据,有周期趋势性,如果要抓住这些特征,需要输入很长的序列,训练会很艰难。
- 所以作者说,According to the ST domain knowledge … 序列中,少许前面关键几帧的数据就能够决定下面一帧的数据,所以作者根据临近,周期,趋势的特性,去选择关键帧输入网络。

- 时间属性建模:关键帧具体如何选择的呢?看上图中 distant, near, recent 大概就懂了吧,至于为什么是三个网络大概也懂了吧… 作者的想法是分别对这三个特征进行建模
- 融合1:分别对 distant, near, recent 建模后,将输出进行融合,融合不是简单的平均相加,是通过权重矩阵进行学习的 X R e s = W c ⋅ X c + W p ⋅ X p + W q ⋅ X q X_{Res}=W_c\cdot X_c+W_p\cdot X_p+W_q\cdot X_q X