Kggle比赛之Artifical Neural Networks Applied to Taxi Destination Prediction

Artifical Neural Networks Applied to Taxi Destination Prediction


摘要:本文主要是基于出租车轨迹对终点的预测。其中,数据为长度不同的来自GPS的节点和各种各样相关的元信息(meta-information)。比如,出租车出发时间、司机的ID、乘客信息。本方法是一种基于神经网络的自动预测方法。我们尝试的模型架构包括多层感知机(multi-layer perceptrons)、双向循环神经网络(bidirectional recurrent neural networks)和最近比较火的记忆网络(memory network)。由于我们的目标是通过不定长的序列预测定长输出,因此该方法能够很容易的适应其他的应用。


引言

出租车终点预测是由2015 ECML/PKDD和Kaggle联合组织的一个比赛。目的是基于原始部分的轨迹(prefixes)和一些相关的元数据去预测出租车终点的经纬度。这样的预测有助于对出租车的调度。
该比赛的数据集是2013-07-01至2014-06-30期间,442辆出租车在葡萄牙波尔图行驶的一整年的轨迹数据。训练数据集包含170万数据,每一个都代表出租车的一个完成轨迹,其中每个样本包括下列属性。
* 完整的出租车轨迹
每15秒采集一次的GPS位置(经纬度)序列。其中最新的位置代表终点(label)。不同的轨迹长度会有不同。
* 与出租车相关的元数据
client ID or taxi stand ID,若乘客电话叫出租车,则有乘客ID,若乘客路边叫出租车,则有一个taxi stand ID。
taxi ID
轨迹开始时间,以时间戳的形式表示。
在竞赛设置中,测试数据集由320条部分轨迹组成,这是根据不同时间戳拍摄的五张快照创建的。测试集实际上被分成两个大小相同的子集:分别为公共测试集和私有测试集。公共测试集是比赛中正常使用的测试集,而私有测试集只针对最后排行榜使用。
与已被其他比赛者公开的方法相比,我们的方法更加的自动化。在本文的第二部分介绍了我们的获奖模型。它是一个基于MLP的模型;本文的第三部分更多的介绍了我们尝试过的复杂的选择体系结构;第4节和第5节我们在数量和质量上都对竞争测试集和一个更大的自定义测试集比较和分析了我们的各种模型。

2、获奖模型

2.1、数据分布

此任务的目的是根据出租车的历史轨迹预测出租车目的地。由于数据集是由完整的轨迹组成,因此我们必须通过合适的方式切分轨迹。由170万数据组成的数据集中给出了83480696种可能的历史轨迹。训练的历史轨迹的分布应该尽可能的接近最终所提供的、需要被评估的测试数据集。即所有训练集中的历史轨迹都有相同概率在测试集中出现。因此,生成一个包含原始训练集的所有可能完整轨迹的训练集。这个训练集不管是完整轨迹还是历史轨迹都有与测试集相同的分布。

2.2、MLP

MLP,是一个前聩全连接神经网络。该网络是以固定长度作为输入,然后,通过一层或几层隐含层对输入数据进行计算。最终,输出层返回对输入的预测情况。在这个过程中,输入层输入出租车的历史轨迹和相关元数据转化后的定长向量,输出层返回预测的出租车到达目的地的经纬度。我们使用的是标准隐含层,该隐含层首先进行矩阵乘法,然后再加bias和非线性函数。这里非线性函数使用的是RELU函数。与传统的sigmoid函数相比,RELU函数没有梯度弥散问题。因为当x大于0时,函数导数总为1。我们的获奖模型使用的是500RELU神经元的单隐含层网络。

2.3、Input Layer

我们遇到的首要问题之一是,历史轨迹是不同长度的GPS点,而MLP需要的是定长输入。为了适应MLP的需求,我们选取轨迹的前k个点和后K个点从而形成2k个点或者4k个点的输入向量。我们的获奖模型,选取k=5。GPS点服从均值为0方差为1的标准高斯分布。当原始数据中包含的点小于2k时,开始的k值和最后的k值会发生重叠。当原始数据中包含的点数小于k值时,我们通过重复开始值和结束值来保证向量长度。
对于离散元数据(包括用户ID、出租车ID、日期、时间信息),我们使用embeding的方法。更准确的说,我们把样本数据中的每一个样本数据表示成一行。对于时间和日期,我们按一天中每15分钟为一个间隔、一星期中每天为一个间隔、一年中每月为一个间隔进行划分。并把时期时间信息放在4k的位置。
表1

2.4、目的地聚类和输出层

我们的输出应该是经度和纬度两个标量值。因此输出层需要有两个神经元。然而,由于这个模型训练方式没有考虑到任何数据分布的预先信息,因此想训练出好的模型是很困难的。为了解决这个问题,我们直接将目的地先验情况整合到模型中去,然后根据目的地位置,对目的地进行聚类。
然后,输出层就等价于一个简单的线性输出层,而权重矩阵固定为我们预先设定的聚类中心,不再变化。由于输出值必须对应一个聚类中心,因此隐含层得到的Pi值之和必须为一。在这里使用softmax。此处聚类使用的是均值漂移算法,如图1所示。

2.5、损失计算和训练

此处使用的是类似于Haversine distance的一种损失函数。具体情况可恨据实际情况考虑。

3、方法选择

以下方法没有上面的模型表现好,但是可以为变长输入定长输出提供好的思路。

3.1、循环神经网络

3.2、双向循环神经网络

我们发现历史轨迹中最相关的部分为开始段和结束段,因此我们尝试对这两个部分使用 BRNN。

3.3、记忆网络

4、实验结果

由于比赛数据集较小,我们无法依靠它进行模型比较。因此,针对这篇论文,我们选用其他两个大的数据集进行模型比较。下面,本文从自定义的样本集、Kaggle公开样本集、Kaggle最终的私有样本集三个方面对以上提到的各种网络进行了测试。

5、结果分析

我们的获奖模型是使用的是目的地聚类后的MLP模型。然而,在我们的自定义数据集中,它并不是最好的模型,BRNN才是最好的模型。由于本文自定义的数据集比比赛的数据集要大得多,因此结果应该更准确,更有说服力。
内部代码中文简介见我的下一篇博客

猜你喜欢

转载自blog.csdn.net/weixin_43128028/article/details/82453738