这篇论文是2021年发表于nature communication上的一篇文章。文章提出了一个deep gravity 模型来生成移动轨迹,并且该模型考虑了从地理数据中抽取的多种特征,使用深度神经网络来学习特征和移动流之间的关系。
引言
最近几年,人类移动的行为引起了很大的研究兴趣,它关注人类生活的方方面面。人类移动建模在各个研究领域也有很大的应用。流生成问题是具有挑战性的,该问题需要在没有关于流的历史信息的情况下进行。
早在20世纪,George K.Zipf在牛顿万有引力的基础上提出了重力模型,该模型有很多的优点,也有显而易见的缺点,比如不能精确的捕获流的结构、实际流的可变性比预期的要大、没有考虑地理特征。因此研究流生成问题需要更加精细的输入数据和更加灵活的模型,前者的解决方法是从地理数据中提取特征,后者的解决方法是使用深度神经网络,但深度学习方法只能在有历史数据的情况下进行流的生成,同时深度学习也不够透明。
本文作者提出了一个deep gravity model,是最先进的流生成的模型的自然扩展,其对应于形式上等价于具有一个Softmax层的线性神经网络的多项Logistic回归。
Results
作者先是给出如下定义,对于给定的感兴趣区域R,我们定义地理多边形
τ
\tau
τ为R的划分,所谓划分,论文中给出的解释是互斥且覆盖。本文的任务即是在没有任何R的历史数据的情况下,预测任意两个位置
y
i
,
y
j
y_i,y_j
yi,yj之间的流量。为了衡量生成流和真实流之间的相似度,作者采用Commen Part of Commuters(CPC)指标来衡量生成流
y
g
y^g
yg和真实流
y
r
y_r
yr之间的相似度,
C
P
C
=
2
∑
m
i
n
(
y
g
(
l
i
,
l
j
)
,
y
r
(
l
i
,
l
j
)
)
∑
y
g
(
l
i
,
l
j
)
+
∑
y
r
(
l
i
,
l
j
)
CPC=\frac{2\sum min(y^g(l_i,l_j),y^r(l_i,l_j))}{\sum y^g(l_i,l_j)+\sum y^r(l_i,l_j)}
CPC=∑yg(li,lj)+∑yr(li,lj)2∑min(yg(li,lj),yr(li,lj))
除此之外,还采用皮尔逊相关系数、规范化的均根方差、JSD来衡量两者之间的线性相关、误差、相似性。
深度重力模型推导
单一约束的重力模型规定位置
l
i
l_i
li,
l
j
l_j
lj之间的流量为:
y
‾
(
l
i
,
l
j
)
=
O
i
p
i
j
=
O
i
m
j
β
1
f
(
r
i
j
)
∑
k
m
k
β
1
f
(
r
i
k
)
\overline{y}(l_i,l_j)=O_i p_{ij}=O_i\frac{m_j^{\beta_1}f(r_{ij})}{\sum_km_k^{\beta_1}f(r_{ik})}
y(li,lj)=Oipij=Oi∑kmkβ1f(rik)mjβ1f(rij)
其中,
O
i
O_i
Oi是
i
i
i点的总流出量,
m
j
m_j
mj是位置
l
j
l_j
lj的人口数,
p
i
j
p_{ij}
pij是观测到一次旅行从
i
−
>
j
i->j
i−>j的概率,
β
1
\beta_1
β1是参数,
f
(
r
i
j
)
f(r_{ij})
f(rij)是威慑函数,可以为幂函数或指数函数,
r
i
j
r_{ij}
rij是两地之间的距离。这样,重力模型就可以看出是具有多项式分布的广义线性模型。可以通过最大似然法估计
β
\beta
β的参数。对数似然函数的负值与交叉熵损失成正比。这样我们就可以把流生成问题看成是分类问题了。
模型结构
模型输入, x ( i , j ) = c o n c a t ( x i , x j , r i , j ) , j = 1 , 2 , 3... n x(i,j)=concat(x_i,x_j,r_{i,j}),j=1,2,3...n x(i,j)=concat(xi,xj,ri,j),j=1,2,3...n,其中, x i x_i xi位置i的特征向量, r i , j r_{i,j} ri,j是两地之间的距离。
x被送入前馈神经网络,它有15个隐藏层,其中,前6个的维度为256,其他的维度为128,用LeakyReLu作为激活函数。模型输出的形式为
z
h
(
l
i
,
l
j
)
=
a
(
W
h
∗
z
h
−
1
(
l
i
.
l
j
)
)
z^{h}(l_i,l_j)=a(W^h*z^{h-1}(l_i.l_j))
zh(li,lj)=a(Wh∗zh−1(li.lj))
最后,会得到一个标量
s
(
l
i
.
l
j
)
s(l_i.l_j)
s(li.lj),然后,对于所有
j
=
1
,
2
,
3...
n
j=1,2,3...n
j=1,2,3...n,将得到的s经过softmax函数计算一个概率向量。两个地点之间的flow为概率乘源点的outflow。
特征向量x的维度等于特征的个数,特征向量最后除位置的面积来归一化。
每个flow都用39个特征表示。同时,作者考虑了另外两个版本的模型,一个是轻量版本,只考虑POI的数量,不考虑种类。一个是重型版本,考虑每个flow都有起点和终点最近的K个地理特征的平均值。
Deep Gravity的交叉熵损失函数为:
y
(
l
i
.
l
j
)
/
O
j
y(l_i.l_j)/O_j
y(li.lj)/Oj是从i流向j的分数。
Experiment
实验在UK,EU,US三个地点进行。作者一共考虑了四类模型,分别为重力模型G、深度重力模型DG、非线性重力模型NG、多特征重力模型MFG。
地理转换
表明模型也可以为没有数据可用于训练模型的地理区域生成流量概率。
解释生成的流
Italy和US对人口更为敏感,UK对其他特征都很友好。
Discussion
模型在人口稀少的地方更为准确。
我们的分析清楚地表明,正是深层神经网络和自愿地理信息的结合,极大地增强了流动性流生成的现实性,为新一代数据驱动的流生成模型铺平了道路。
该模型的未来改进可能在于分析我们是否可以在其他尺度上应用地理可转移性:我们是否可以使用农村地区的劳动力在城市中产生flow?另一方面,我们能利用城市的劳动力在农村地区生产flow吗?我们可以使用在整个国家训练的模型在不同的国家生成flow吗
疑问点
location是如何划分的?
答:作者定义了如下名词:
(1)ROI:在本文中,作者使用方格G来划分某一区域C,其中G是由一系列方块
R
i
j
R_{ij}
Rij组成的,即
G
=
{
R
i
j
}
G=\{R_{ij}\}
G={Rij}
,其中,
i
j
ij
ij分别代表方块的左上和右下坐标。镶嵌可以是任何的形状,在这篇文章中,作者使用python的scikit-mobility库定义了885个25*25
k
m
2
km^2
km2大小的方块,覆盖了整个英格兰区域。其中,一半的方块被当做训练集,另一半被当做测试集。
(2)Locations:每个ROI被进一步划分为更多的location。英国人口普查定义了232,296个不重叠的面,称为人口普查输出区域(OAs)。对于给定的感兴趣区域Rij,其包含的locations被定义为其质心包含在Rij中的所有OAs。
(3)Location features:从OpenStreetMap (OSM)70,71收集每个地点的地理特征信息,这是一个在线合作项目,旨在利用从志愿者那里收集的地理信息创建一个开源的世界地图。OSM数据包含三种类型的地理对象:节点、线和多边形。节点是地理点,存储为纬度和经度对,表示兴趣点(例如,餐馆、学校)。线是节点的有序列表,表示线性要素,如街道或铁路。多边形是形成封闭区域的闭合环的线,可以表示土地利用或建筑物等。我们使用OpenStreetMap (OSM)数据来计算出发地的18个地理特征和目的地的18个地理特征。关于人口,我们将每个位置的居民数量作为输入特征。
(4)Mobility flows:英国人口普查局收集了有关OAs之间通勤流量的信息。我们使用2011年英国人口普查收集的通勤交通流,并且只考虑出发地和目的地位于同一感兴趣区域的交通流。