社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

北航BIGSCity课题组提出LibCity工具库:城市时空预测深度学习开源平台

PaperWeekly • 3 年前 • 703 次点击  



目前越来越多深度学习算法被应用于城市计算领域,然而在欠缺一个统一的评估体系对模型性能进行测试的情况下,研究者很难去公平比较不同模型的性能优劣。为此北航计算机学院 BIGSCity 课题组提出 LibCity 工具库,一个全面、统一、可拓展的开源城市时空预测算法库,旨在为研究者提供一个可信的模型对比工具,并规范算法评估标准以及促进开源化进程。

LibCity 采用模块化框架结构,通过整合 30 多个时空数据集与 50 多个时空算法模型,覆盖了包括交通状态预测、路网匹配、轨迹位置预测等 9 类任务来支持城市场景演化规律挖掘,并向用户提供标准可信的算法评估功能。LibCity 的中文名为“阡陌”,取自陶渊明的《桃花源记》中的“阡陌交通,鸡犬相闻”。目前,LibCity 已经在 Github 开源,相关工作已经被收录入 ACM SIGSPATIAL 2021 会议中。



论文标题:

LibCity: An Open Library for Traffic Prediction

论文作者:

王静远(北航),姜佳伟(北航),蒋炆峻(北航),李超(北航),赵鑫(人大)

收录会议:

ACM SIGSPATIAL 2021

论文链接:

https://dl.acm.org/doi/10.1145/3474717.3483923

开源代码:

https://github.com/LibCity/Bigscity-LibCity



课题组介绍


BIGSCity 课题组是北京航空航天大学大学计算机学院下属的北航智慧城市兴趣组,其负责人为北京航空航天大学计算机学院王静远教授。BIGSCity 小组致力于研究机器学习与数据挖掘在城市科学、社会科学等领域的交叉应用技术,包括城市计算,时空数据挖掘,机器学习可解释性,以及 AI 在交通、健康、金融等领域的应用等。详细情况参见研究组主页:http://www.bigcity.ai。




交通预测问题介绍


1.1 背景与问题介绍


回顾我们的个人生活,你会发现我们每个人的日常生活都离不开交通大数据,下图中展示了一个人一天的生活的例子。这些生活中常用的 APP 的技术中,离不开的就是交通预测的相关任务,例如交通状况预测、POI 推荐、需求调度与预测、出行时间预测等等。


而交通预测,不仅仅在个人生活中存在应用。在城市治理上也有广泛的应用,例如拥堵治理、道路规划、重大活动管理、甚至于疫情防控。

交通预测问题的本质是一个带有时空附加信息的时间序列预测问题,设 代表 时刻的交通时空数据, 代表预测 时刻交通系统的某一状态, 为输入序列的长度,  为预测序列的长度,那么交通预测问题可以定义为用历史的 步数据对未来的 步数据进行预测,图示如下:


交通预测可以分为两个方面,一个是面向群体的预测,另一个是面向个体的预测。


1.2 群体交通预测


在交通状态建模时,从时间序列的角度,可以对时间序列的周期性、趋势性和邻近性进行建模,常用的方法有:

  • 早期神经网络:MLP 多层感知机、DBP 深度置信网络、AE 自编码器
  • RNN-based:LSTM、BiLSTM、GRU、Seq2Seq
  • CNN-based:1D-CNN
  • Attention:RNN 与 CNN 的基础上,强化周期性



从空间的角度建模交通状态,常有两种结构,一个是栅格结构,常常使用 CNN-based 的方法进行建模,另一个是网络结构,则常常使用 GNN-based 的方法进行建模。


最后,在进行时空融合的时候,一般需要将上述的模型进行结合形成 Hybrid Model,例如 CNN+RNN, GCN+RNN, GCN+CNN 等等。


1.3 个体交通预测


在面向个体的交通预测建模中,关键是如何将时空上下文信息融入到个体行为的建模之中,另外也可以融合用户偏好信息,像用户画像、出行偏好等。这里可以参考实验室在 KDD19 上发表的论文 Empowering A* search algorithms with neural networks for personalized route recommendation,其主要内容是基于深度 A* 算法的个体出行路径推荐。

另外一个关键点就是要融合空间位置信息,个体空间位置的表征方法有:

  • 传统经纬度映射嵌入法:划分区域并进行编码,再将经纬度映射到区域
  • 空间词嵌入法:将空间位置视作单词,轨迹视作句子,使用 Embedding 矩阵对空间位置进行编码
  • 预训练表征嵌入法:通过预训练获得位置的的表征向量,如 Node2Vec


路网表征学习的相关工作也可以参考实验室在 KDD20 上发表的论文 Learning Effective Road Network Representation with Hierarchical Graph Neural Networks,其主要工作是对城市路网进行表征学习,来支撑下游任务的应用。

 


现有研究存在的挑战


目前交通预测领域的研究成果已经非常丰富,我们总结了近 5 年 11 个顶级期刊会议(KDD, AAAI, ICLR, IEEE TKDE 等等)上交通预测领域的论文,得到一个 PaperList,包含 14 篇综述,351 篇论文,具体内容见地址:

https://www.github.com/LibCity/Bigscity-LibCity-PaperList


但是,近 5 年发表在 11 个顶会与期刊共 351 篇论文中, 仅有不到 3 成开源或部分开源代码与数据,这就导致了本领域中存在复现困难。其次,由于现有文献的实验数据不开源、不统一,缺乏公认的 SOTA 模型,实验设置不透明等等,目前还存在评价困难的问题,难以对比评价新的交通预测模型的性能。最后,这些问题最终导致的就是创新困难,可能我们正在“重复制造轮子”而不自知 !

在计算机视觉领域,有 IMAGENET、OPENCV,在NLP 领域,有 WordNet、CoreNLP 等等,那么在交通预测领域,目前来看,开源的算法库和标准的数据集还不存在,这也就是我们提出 LibCity 的原因。



LibCity开源平台


针对交通预测, 我们构建了统一、全面、可拓展的全流程算法库和数据集库——LibCity。目前,LibCity 已经在 Github 开源,开源代码仓库地址为:https://www.github.com/LibCity。项目主页地址为:https://libcity.ai

3.1 支撑9类交通预测相关任务


  • 交通速度预测(Traffic Speed Prediction):预测道路上车辆的平均速度。

  • 交通流量预测(Traffic Flow Prediction):预测流入或流出某道路或区域的车辆数量。
  • 乘车需求预测(On-demand Service Prediction):预测某区域的乘车(出租车、共享单车等)需求。
  • OD 矩阵预测(Origin-destination Matrix Prediction):预测区域之间或者道路之间的车流量或乘车需求。
  • 交通事故预测(Traffic Accidents Prediction):预测道路上出现交通事故的数量或风险。
  • 未来位置预测(Future Location Prediction):预测行人下一步前往的位置,包含进行 POI 推荐。
  • 到达时间预测(Estimated Time of Arrival):预测两地之间的到达时间。
  • 路网匹配(Map Matching):匹配 GPS 轨迹点对应的路段以用于下游任务。
  • 路网表征学习(Road Network Representation Learning):学习路网结构的低维嵌入表示以用于下游任务。


3.2 统一的数据输入


为了统一表示不同种类的交通数据,LibCity 定义了五种原子文件,即交通数据中的五种最小信息单元:


目前,LibCity 已经将 32 个开源数据集转换为标准的原子格式数据集。这 32 个数据集分布于 11 个国家的 22 座城市,覆盖了 LibCity 中 79% 的模型。并且,项目组开源了原子数据转换脚本,供用户在转换自有数据集时进行参考,链接:

https://github.com/LibCity/Bigscity-LibCity-Datasets


▲ 部分数据集统计信息表


▲ 数据集空间分布图

基于原子文件,LibCity 进一步构建了数据预处理和 Batch 提取工具,形成统一的数据处理流程,来将原始数据转换为标准化的模型输入——Batch。


▲ 数据处理流程图

3.3 统一的评测标准


LibCity 为每一个交通任务定制了标准评测标准。其中,评估指标包括两类:

(1)Value-based 指标:用于回归任务的评估,如交通速度预测等。

(2)Rank-based 指标:用于分类任务的评估,如轨迹位置预测等。

这是常用评测指标表格:


LibCity 也支持常用的评估策略,其中最常用的就是数据集切分设置和数据窗口设置:

  • 输入窗口:决定模型所基于的历史交通状态序列的长度。
  • 预测窗口:决定模型所预测的未来交通状态序列的长度。
  • 数据集划分:决定训练集、测试集、验证集的比例等。


3.4 统一的模型接口


项目组对 2016-2020 期间在 11 个会议和期刊(SIGSPATIAL, KDD, ICDM, AAAI, IJCAI, CIKM, WWW, NIPS, ICLR, IEEE TKDE, IEEE TITS)上发表的研究论文及综述进行调研,得到相关领域的研究论文共计 365 篇,并选择了其中 56 个代表性模型,进行标准化复现,形成开源算法库。这是 4 个最常见任务的模型的分类图:


LibCity 为交通预测模型定义了统一的实现接口:

  • predict() 接口:计算模型的预测结果。
  • calculate_loss() 接口:计算模型训练时的损失 Loss 值。


有了统一模型的接口,就可以简化新模型的实现流程,便于用于在 LibCity 现有代码的基础上,进一步实现新的模型。

3.5 支持多样的训练策略


LibCity 支持多种类型的深度学习模型训练策略:

  • 优化器(Optimizer)选择:SGD / RMSProp / Adam / AdaGrad / SparseAdam…
  • 学习率(Learning Rate)调整策略选择:StepLR / MultiStepLR / ExponentialLR / LambdaLR / ReduceLROnPlateau…
  • 损失函数(Loss Function)选择:L1 损失、L2 损失、Huber 损失、Log-Cosh 损失、Quantile 损失…
  • 早停机制(Early Stopping):处理过拟合问题。
  • 梯度裁剪(Gradient Clipping):处理梯度爆炸、梯度消失问题。


3.6 建立任务流水线机制


LibCity 将交通预测任务解构为一条模块化的流水线:

  • 实验参数配置:用户命令行设置参数,用户自定义参数配置文件
  • 加载数据集:加载原子文件,包括轨迹数据, 交通状态数据, 额外信息…
  • 数据预处理:数据归一化,数据过滤,特征提取,生成模型输入
  • 模型选择与训练:交通速度、交通流量…
  • 模型评估:根据任务需求建立评估指标和评估策略…


▲ 任务流程图



LibCity的应用工具


4.1 实验辅助工具


1)模型评估实验工具

用户仅需在命令行指定相应实验参数,即可完成模型的训练与评估。


▲ 模型训练Log输出

2)自动超参搜索工具

基于 Ray Tune 第三方库扩展实现。用户仅需在命令行指定需搜索的参数名及其搜索算法与范围。


▲ 自动调参工具Log输出

3)时空数据可视化工具

读取数据集原子文件,转为 GeoJSON 格式数据,并在 GIS 上可视化。支持 GIS 点图、线图、区域图。


▲ 纽约市流量数据分布

4)实验结果可视化工具
基于评估实验评估结果文件,自动绘制实验结果表格与曲线图。


▲ PEMS_BAY数据集模型性能折线图


4.2 项目网站建设


1)项目主页:

https://libcity.ai


2)项目文档:

https://bigscity-libcity-docs.readthedocs.io/en/latest/



3)模型性能排行榜:

https://libcity.ai/#/ranking



4)项目开源代码主页:

https://github.com/LibCity/Bigscity-LibCity



5)数据集转换工具仓库:

https://github.com/LibCity/Bigscity-LibCity-Datasets



6)论文列表仓库:

https://github.com/LibCity/Bigscity-LibCity-PaperList



4.3 LibCity的影响力


目前,受到了来自 20 个国家的访问,在 GitHub 上获得 152 星(前 3‰)。

▲  LibCity 主页访问分布



LibCity的贡献者们


包括实验室项目组成员在内,目前已有 40 余名用户向仓库做出贡献。


最后,如果您有任何关于 LibCity 的问题,都可以在我们的仓库提起 issue,或者通过邮件联系我们:jywang@buaa.edu.cn



特别鸣谢

感谢 TCCI 天桥脑科学研究院对于 PaperWeekly 的支持。TCCI 关注大脑探知、大脑功能和大脑健康。



更多阅读




#投 稿 通 道#

 让你的文字被更多人看到 



如何才能让更多的优质内容以更短路径到达读者群体,缩短读者寻找优质内容的成本呢?答案就是:你不认识的人。


总有一些你不认识的人,知道你想知道的东西。PaperWeekly 或许可以成为一座桥梁,促使不同背景、不同方向的学者和学术灵感相互碰撞,迸发出更多的可能性。 


PaperWeekly 鼓励高校实验室或个人,在我们的平台上分享各类优质内容,可以是最新论文解读,也可以是学术热点剖析科研心得竞赛经验讲解等。我们的目的只有一个,让知识真正流动起来。


📝 稿件基本要求:

• 文章确系个人原创作品,未曾在公开渠道发表,如为其他平台已发表或待发表的文章,请明确标注 

• 稿件建议以 markdown 格式撰写,文中配图以附件形式发送,要求图片清晰,无版权问题

• PaperWeekly 尊重原作者署名权,并将为每篇被采纳的原创首发稿件,提供业内具有竞争力稿酬,具体依据文章阅读量和文章质量阶梯制结算


📬 投稿通道:

• 投稿邮箱:hr@paperweekly.site 

• 来稿请备注即时联系方式(微信),以便我们在稿件选用的第一时间联系作者

• 您也可以直接添加小编微信(pwbot02)快速投稿,备注:姓名-投稿


△长按添加PaperWeekly小编




🔍


现在,在「知乎」也能找到我们了

进入知乎首页搜索「PaperWeekly」

点击「关注」订阅我们的专栏吧


·
·


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/123258
 
703 次点击