Page 182 - 《软件学报》2021年第12期
P. 182
3846 Journal of Software 软件学报 Vol.32, No.12, December 2021
连接网络以获取区域 i 的最终需求预测值 ˆ y t+ i 1 .最终预测函数如下:
i
ˆ y t+ 1 = σ (W y + f i t b f ) (10)
i
其中,W f 与 b f 都为可学习的参数.因为真实的需求值 y t+ 1 经过标准化处理,所以σ(⋅)为 Sigmoid 函数使最终输出的
区间为[0,1],目的为使整个模型更快收敛.模型使用的损失函数定义为
⎡ ⎛ y i − ˆ y i ⎞ 2 ⎤
L = i ∑ n 1 ⎢ ⎢ ⎣ (y i t+ = 1 − y ˆ ) + t+ i 1 2 γ ⎜ ⎝ t+ 1 y t+ i 1 t+ 1 ⎟ ⎠ ⎥ ⎥ ⎦ (11)
其中,γ为超参数.上述损失函数实际由均方误差和平均绝对百分误差两部分组成.因为均方误差易受极端值影
响,为了避免训练被大值样本支配,所以引入平均绝对百分误差.
3 实验与结果分析
3.1 数据集处理
本文使用快车平台真实的订单轨迹数据 CD2Data 与 XA2Data 来验证模型的有效性,数据集来自滴滴出行
“盖亚”数据开放计划.
• CD2Date:数据为 2016 年 10 月和 11 月成都市二环部分区域快车平台订单数据;
• XA2Date:数据为 2016 年 10 月和 11 月西安市二环部分区域快车平台订单数据.
本文将两个数据集中 2016 年 10 月 8 日至 2016 年 11 月 23 日(共 47 天)的数据作为训练集,2016 年 11 月
24 日至 2016 年 11 月 30 日(共 7 天)的数据作为测试集.数据集中,2016 年国庆假期期间的数据因为较平时相比
波动过大所以舍弃.处理数据时,本文将两个数据集所对应的区域进行网格化处理,划分成 20×20 个小区域.并且
仅将早 6 点到晚 21 点之间的数据作为观测数据,每个时间片的时间跨度设为半小时.进而提取出每块区域每个
时间片的需求数量.值得注意的是:因为本文主要分析的问题为乘车需求预测,所以订单的位置以乘客的初始位
L
置为准.最后将单位需求数据进行标准化处理,进而得到所有区域单个时间片的需求数据集合 D .DCSN 模型
T
除了应用到了乘车的轨迹数据,还应用了外部数据以及城市的 POI 数据.本文将天气等外部离散数据转化为
One-Hot 向量嵌入到模型中;POI 数据则使用百度地图信息检索功能获取,同样将其进行网格划分,进而统计每
块区域的 POI 种类及数量.
当测试预测结果时,本文使用待预测时间片的前 8 个时间片(即前 4 小时)来对该区域接下来的乘车需求进
行预测.并且在实验过程中,本文过滤掉了区域需求小于 5 的样本,这是工业中常用的做法.因为在现实生活的应
用程序中,人们并不关心这种低需求场景.
3.2 实验参数设置
本文基于 Tensorflow 和 Keras 框架实现 DCSN 模型.在空间特征提取时,控制输入特征图大小的 s 取 11,即
对目标及其周围 11×11 的区域进行空间特征提取.在 DCN 模型中,本文将卷积层数 K 设为 3,滤波器大小设为
3×3,滤波器数量设为 64.经过多次对比实验后,本文将 LSTM 模型中时间步长 h 设为 8.在 DCSN 模型中,除了作
为最终预测组件的全连接层,其中的激活函数为 Sigmoid 函数,其余全连接层中的激活函数皆为 ReLU 函数.模型
的损失函数已在第 2.4 节中具体说明,模型使用的优化算法为 Adam.
本文使用平均绝对百分比误差(MAPE)和均方误差(RMSE)作为评价指标,其具体计算公式下:
1
MAPE = ∑ X | y t+ i 1 − ˆ y i t+ 1 | (12)
X i= 1 y t+ i 1
1 X
i
RMSE = i ∑ (y i 1 − y ˆ ) 2 (13)
1
t+
X 1 t+ =
其中, ˆ y i t+ 1 与 y i t+ 1 分别为预测值与真实值,X 为样本数量.