桔妹导读:共享两轮车作为短途出行的重要工具,为用户的城市出行提供了极大便捷。由于用户的骑行会使得车辆在城市中的分布产生差异,所以为了更好地服务、满足用户的短途出行需求,需要一线运维同学对车辆进行调度,从而适应城市的供需状态变化。本篇文章将针对两轮车供需策略中的一个问题进行展开和探讨。
在短途出⾏场景中,共享两轮⻋是⼀种“所⻅即所得”的出⾏⽅式,⼀个地点是否有⻋,对于⽤户的使⽤体验和⽤户的需求满⾜来说尤其重要,但是我们并不能“饱和式”的进⾏⻋辆投放, 那么如何将可被调拨的有限⻋辆资源在时空内重新进⾏分配,从⽽带来更多的⻋辆价值,满⾜⽤户的短途出⾏需求是我们需要亟待解决的重要问题,本⽂将针对两轮⻋供需策略中点位上的⻋辆调度量预估问题进⾏展开和探讨。
在对城市点位上车辆的骑入、骑出及其需求缺口数进行预测时,最基本的想法是借助用户、车辆、路网、天气、时间、行为序列等平台上所有相关可知的数据特征,来进行特征工程的构建,进而在点位上对未来车辆的流转情况进行预测,从而得到该点位未来的需求缺口、骑入、骑出(不同时间颗粒度下的目标,由业务目标决定),那么根据目标的预测情况,我们就知道用户的骑入是否能够满足骑出的需求,如果车辆的自运转无法满足当前时间段的需求,那么需要线上生成“工单”进行指引调度车辆(最终调度不以单一此目标决定,下文同此)。
上述的时间序列建模中,我们对多个目标进行分拆建模,这样更灵活高效,但是只专注于单个模型可能会忽略一些相关任务中可能提升目标任务的潜在信息造成一定的偏差,同时骑入、骑出、及其需求缺口数等目标之间也存在前后&相关关系,多任务学习也能提升模型的泛化性与表现,至于多任务学习的优缺点这里就不再赘述了。
在两轮车的出行场景中,城市点位上的用户需求的表达主要由两个基本模块组成,即用户的骑入和用户的骑出,当用户的骑入大于用户的骑出时,点位的车辆可能存在“闲置”,反之,则存在需求缺口,潜在的用户需求并没有得到满足,只有准确的预估车辆的流转情况,才能发挥车辆的最大价值,满足用户的需求。
场景适用:骑入,骑出、缺口这几个具有较强的相关性,且的量纲相近;
提升泛化:通过学习不同任务的联系和差异,降低了单个模型过拟合的风险;
快速迭代:共享的层,维护模型时会方便很多,模型构造并不复杂,支持业务快速迭代。
在两轮车的供需预测中,点位上的车辆骑入、骑出和需求缺口数的相关性非常强,车辆的骑出和需求缺口受到车辆骑入的影响,我们将模型中各个指标的关系定义为:,多任务学习的网络结构可以替换为任意的算法模型,可以多方借鉴从而吸收其他学习算法的优势能力,进一步提升效果。
拉普拉斯矩阵是半正定的,对任意向量, 满足:
对称矩阵的特征向量相互正交,即所有特征向量构成的矩阵为正交矩阵;
对应的n个实数特征值都大于等于0,即,且最小的特征值为0。
由以上性质可知,拉普拉斯矩阵一定能进行特征值分解(谱分解),我们可以这样理解:拉普拉斯矩阵就是图上的拉普拉斯算子,也可以描述为离散的拉普拉斯算子:
上面的内容我们讲了卷积,那这个所谓的卷积后面会用到哪里,本节先搁置一下,而是理解一个变换—傅立叶变换,以及它和卷积的联系,连续域的傅立叶变换定义为:设函数周期为, 当趋近于时, 即为非周期函数时:
即函数与基函数的积分,接下来的卷积公式上面我已经介绍了:
将其代入傅立叶变换,那么易得它的傅里叶变化为:
两轮车骑行网络的图的表示主要分为两部分,如下:
点(停车点/网格)的特征向量的输入:特征矩阵 ,N 是图数据中的节点个数,d 表示每个节点的输入的特征个数;
网络结构的矩阵表征输入:图的邻接矩阵 A,维度大小为 N * N,构建邻接矩阵方式有很多种(具体需要看业务目标),例如:
停车点/网格之间的骑行记录:权重可以是彼此的骑行记录;
停车点/网格之间的骑行时长:权重可以是彼此的骑行时长;
停车点/网格之间的导航距离:权重可以是停车点/网格之间距离的倒数;
以下是一个基础的demo片段,主要是为了能够快速理 GCN 使用的基础构成,其中可以提前计算好
def call(self, layer_input):
layer_input_f, DAD = layer_input
output = tf.matmul(tf.matmul(DAD, layer_input_f), self.weight)
if self.use_bias:
output += self.bias
act = self.activation(output)
return act
综上,GCN能够提取复杂拓扑结构的空间性信息,同时其权值共享、参数共享,具有局部性,因为每次聚合的只是一阶邻居,而且随着卷积层的增加,从远处邻居的信息也能传递过来(不是层数越多越好,因为两轮车是短途出行场景,对于附近停车点的信息显然更为关注,当然也可以采取一些残差连接),当然GCN也存在许多需要改进解决的问题,例如:无法直接处理有向图,但是节点连接经过处理后也是可以表示有向图,其实我认为最关键的是对于同阶的邻域上分配给不同的邻居的权重是完全相同的,归其原因其实就是共享参数带来的,所以也有人在研究不共享参数形式的GCN网络,目前使用比较广泛的图神经网络还有GAT、GraphSAGE等。
本文对两轮车出行场景的供需算法方向之一(骑入、骑出、及其需求缺口数预测)的使用方法进行了简要的介绍,其实在算法工作中并不是算法模型越复杂越好,而是要适应当前的业务场景、业务阶段以及最终的业务效果,毕竟算法是为了更好的解决问题,欢迎大家随时跟我们互动交流,一起探讨各种各样的解决方案,更好地用技术驱动业务的发展。
团队内推
▬
滴滴数据平台与应用部(DT),致力于打造准确、稳定、高效、易用的数据中台体系,从而赋能业务发展。我们不仅拥有稳定优质的大数据算力,完善的数据产品矩阵和业界领先的算法策略。也同时深入业务,为业务的快速发展提供准确、敏捷的数据服务支撑。除了提供数据资产、数据产品、数据应用相结合的体系化解决方案之外,我们也勇往直前,持续探索数据智能应用场景!欢迎大家加入我们,一起创造数据价值!
团队正在热招高级/资深数据研发工程师岗位。欢迎有兴趣的小伙伴加入,可以投递简历至diditech@didiglobal.com,请将邮件主题命名为 姓名-投递岗位-投递团队。
内容编辑 | Teeo