交通知识图谱应用 —— 公交出行场景挖掘

引言
 

知识图谱(Knowledge Graph)以结构化的形式描述客观世界中概念、实体及其关系,将海量复杂的信息表达成更接近人类认知世界的形式,提供了一种更好地组织、管理和理解互联网海量信息的能力。知识图谱以图(Graph)的方式来展现实体、事件及其之间的关系。知识图谱存储和查询研究如何设计有效的存储模式支持对大规模图数据的有效管理,实现对知识图谱中知识高效查询。

 

交通作为海量个体在时间与空间维度上的移动现象,本质上是复杂的知识图谱,深度交叉挖掘每个交通个体在城市空间下的完整出行链路与人车路环境及事件建的交叉关系,是精细化开展城市交通治理的前提。人-车-路-空间单元之的关系从一阶向多阶转变,关系规模超过百万亿级别,检索、计算的时空复杂度超过关系数据库的应对极限。以建立大规模城市交通知识图谱为例,针对城市人口规模在千万级别的城市,人与人之间、人与车之间、人与空间单元之间、车与路之间的将超过百万亿级别。

 

 
图1 交通知识图谱示意

 

 

当前阶段知识图谱技术已经在社交网络、人力资源与招聘、金融、保险、零售、广告、物流、通信、IT、制造业、传媒、医疗、电子商务和物流等各领域广泛应用。知识图谱在交通领域的应用也在同步开展,本文利用图数据库Neo4j对深圳市约1000条公交线路,一天工作日的公交刷卡数据进行建模分析,建模规模达到500万节点,1000万条边。研究了交通知识图谱的建立、挖掘分析、性能参数对比等多方面应用,分析了同乘人员、站点最大客流提取、关联查询识别、站点群公交出行量识别等公交出行行为。并在不同的公交出行行为场景分析中对比分析了ORACLE数据库与Neo4j的查询分析性能,探索交通知识图谱的应用。

 

 

01 知识图谱概述

 
1.1 知识图谱载体图数据库概述
 

知识图谱是以图数据库为载体进行数据模型建立与提取分析,图数据库是基于图形理论实现的一种非关系型数据库,它的底层数据存储和与查询方式都是以图论为基础,其中图论中的基础元素为节点和节点之间的边,在图数据库中对应的就是节点和关系。图形数据库作为一种非关系型数据库,将结构化数据存储在网络(图)上而不是关系型数据库中的表,常见的有Neo4j、FlockDB、AllegroGraph、GraphDB、InfiniteGraph、TigerGraph、腾讯星图等。Neo4j是由Java实现的开源图数据库,实现了专业数据库界别的图数据模型存储,并提供完整的数据库特性,是目前是生产环境中主流的图数据库引擎。Neo4j作为高性能的图引擎,该引擎具有成熟和健壮的数据库的所有特性。由于开源特性及其丰富的文档,本文将使用Neo4j构建公交出行图数据库场景。

 

 

图2 Neo4j图数据库

 

 
1.2 图数据库与关系型数据库

 

关系型数据库通过外键记录两个表或者多个表之间的引用关系,在进行关联查询时通过外键在主表中寻找对应的主键记录进行数据搜索与匹配计算操作,关联查询时将会耗费大量系统计算资源,尤其是在多表关联查询场景下查询效率极低。关系型数据库中多对多关系需要使用中间表,查询效率进一步下降。图数据库使用图论存储节点和节点之间的关系,而每个节点的都包含对应的关系列表,用于存放该节点与其他节点的关系,节点之间的关联挖掘分析直接基于图论进行搜索分析,在复杂数据挖掘分析效率上远高于关系型数据库。

 

 
图3 关系型数据库与Neo4j建库示意

 

知识图谱的构建过程就是从不同来源、不同结构的数据中进行知识提取,形成知识存入到知识图谱,主要针对纯文本、结构化数据和半结构化数据进行信息抽取。

 

 
图4 知识图谱信息抽取

 

 

02 公交出行场景知识图谱建立

 
2.1 基础数据
 

基础数据为公交线路信息表和公交刷卡记录表,其中公交线路信息表包含了深圳市约1000条公交线路对应站点数据,字段包括了线路编号、线路方向、线路名称和站点序号等信息,公交刷卡记录表记录了深圳市某个工作日约300万条刷卡记录,其中刷卡记录已经匹配下车站点信息。详细字段包括了IC卡编号、车辆编号、公交线路编号、上车站点序号、上车站点序号等信息。

 

2.2 建模框架

 

根据公交人、车、站点之间的关联关系,建立如下的公交知识图谱的框架。

 

 
图5 公交出行行为场景建模框架

 

其中实体包含:公交车辆、公交站点、公交线路、IC卡(公交出行者)、刷卡记录;关系包含:公交车辆—公交线路(属于)、公交线路-公交站点(经过)、IC卡-刷卡出行(出行)、公交站点-刷卡出行(上车)、公交站点-公交站点(相邻)、刷卡出行-公交站点(下车),场景建模规模达到500万节点,1000万条边

 

2.3 节点建模

 

将原始数据两张表转为图数据库对应的节点,其中数据表中的一条记录对应图数据库中的一个节点,整个数据表对应图数据库中某一节点集合(标签)。

 

公交车辆实体:从刷卡记录表中提取vehicle标签(去重),单个节点仅包含车辆编号属性。

 

公交线路实体:从公交线路信息表中提取车辆线路标签,单个节点包含线路编号、线路名称、线路方向等属性。

 

公交站点实体:从公交线路信息表中提取站点标签,单个节点包含站点编号、站点名称、站点经纬度等属性。

 

刷卡记录实体:从刷卡记录表中提取刷卡标签,单个节点包含:刷卡记录编号、公交IC卡编号两个属性。

 

IC卡标签实体:从公交刷卡记录表中提取IC卡标签(去重),单个节点仅包含IC卡编号属性。

 

2.4 关系建模

 

根据基础数据中的两张表处理节点之间的对应关系。

 

公交车辆—>公交线路(属于关系):从刷卡记录表中提取公交车辆与公交线路的属于关系(去重),关系匹配字段为车辆编号—>线路。

 

公交线路—>公交站点(经过关系):从公交线路信息表中描述了每条公交线路经过公交站点的关系,关系匹配字段为线路编号—>站点编号,关系属性包含站点序号。

 

公交站点—>刷卡记录(上车关系):从刷卡记录表中提取公交站点与刷卡记录的上车关系,匹配字段为站点编号—>乘车记录编号,关系属性包含线路编号,上车站点编号,上车时间。

 

刷卡记录—>公交站点(下车关系):从刷卡记录表中提取刷卡记录与公交站点的下车关系,匹配字段为乘车记录编号—> 站点编号,关系属性包含线路编号、下车站点序号、下车站点时间。

 

IC卡—>刷卡记录(出行关系):从刷卡记录表中提取IC卡与刷卡记录出行关系,匹配字段为IC卡编号—>IC卡编号。

 

公交站点-公交站点(相邻):从公交线路信息表中根据经纬度坐标记录公交站点的之间的相邻关系,匹配字段为公交站点编号—公交站点编号。

 

 

图6 公交出行场景知识图谱搭建

 

 

03 公交出行场景挖掘

 

公交出行场景挖掘涵盖了同乘人员识别提取、最大公交客流提取识别、线路站点上下车客流提取、公交站点群公交运力挖掘、公交站点群客流挖掘。其中同乘人员识别提取、最大公交客流提取识别、线路站点上下车客流提取为基础统计挖掘分析,介绍Neo4j图数据库在一维数据挖掘分析。公交站点群公交运力挖掘、公交站点群客流挖掘为多维关联挖掘。

 

 
图7 公交出行场景挖掘

 

 

3.1 同乘人员识别提取
 

高峰期间的长距离同乘人员识别是常规公交线路优化、定制公交线路开通的重要参考依据。在Neo4j中提取早高峰(7:30-9:00)、长距离(大于10个站)的同乘人员(同一站点上车、同一站点下车)情况,挖掘分析结果如下:

 

 
图8 同乘人员识别分析结果

 

分析结果表明早高峰乘坐公交长距离出行到科技园站的人较多,同乘达到科技园公交站的公交客流来自西乡步行街、同仁妇科医院、龙辉花园、五和中路等公交站点。图数据库与传统关系型数据库最大差别在于,在同乘识别分析的出行量基础上可快速定位到每个IC卡出行链。

 

3.2 站点间最大公交客流提取

 

站点间最大公交客流提取识别对于挖掘全市公交站点与站点之间的公交客流,对于识别全市公交出行走廊,最大公交站点出行OD挖掘。在Neo4j查询分析如下。

 

 

 

表1 最大站点客流提取

 

分析结果表明全天大的公交站点间客流主要有上水径至茵悦之生公交站、东边至沙元埔公交站、福保派出所至益田村公交站、沙元埔至东边公交站

 

3.3 线路站点上下车客流提取

 

线路站点上下车客流提取用于提取分析单条公交线路在途径各公交站点处的上下车客流,可快速挖挖掘提取公交线路的断面客流与满载率识别。在Neo4j中统计单条公交线路沿线公交站点上下车客流分析结果如下。

 

 
图9 公交线路站点上下车客流提取
 

 

3.4 站点群出行量挖掘

 

面向公交优化分析,公交站点群之间的公交出行量是支撑预约巴士开通与线路优化的重要分析依据。其中公交站点群是指500米范围内的公交站点间的出行量,其中公交站点群A与B之间的公交线路关联示意如下,分析站点A与B互相邻近站点之间的公交出行量是片区公交优化的关键。

 

 
图10 公交站点群出行量分析

 

根据站点之间的邻近关系,识别提取公交站点群之间的公交出行量,在Neo4j中可直观快速得到分析结果,以最大公交站点间客流科技园公交站至同仁妇科医院公交站点分析为例,相互邻近站点间的公交出行量识别结果如下。

 

 
图11 公交站点群之间的出行量识别结论

 

3.5 站点群运力挖掘

公交站点群运力挖掘用于统计公交站周边邻近站点经过的各条公交线路拥有的车辆数。其中公交站的邻近是指500米范围内的公交站点,通过统计公交站点群经过的公交车辆,对于评估以目标公交站点为中心的500米范围公交站群的运力评估,是片区级公交运力匹配计算的核心。

 

 
图12 公交站点群公交运力挖掘框架

 

查询科技园公交站群的公交车辆运力如下。

 

 
图13 公交站点群公交运力挖掘

 

 

04 图数据库查询性能对比

 

在同样的计算机硬件环境下对Neo4j和ORACLE数据库对同样的数据查询性能进行对比分析。其中针对简单一维的数据统计分析,ORACLE查询性能明显高于Neo4j图数据库,如最大公交站点客流查询,ORACLE查询时间为3.21秒,Neo4j查询时间为25.64秒。针对二维关联的数据查询场景中,如站点群运力挖掘场景,其中ORACLE查询时间为2.41秒,Neo4j查询时间为0.14 秒,多维关联查询中Neo4j性能为ORACLE数据库的20倍。对Neo4j和ORACLE数据库在不同关联维度挖掘查询性能对比分析如下:

 

 
表2 Neo4j和ORACLE查询性能对比
 

 

05 结  语

 

本文利用Neo4j图数据库建立了公交出行场景的知识图谱,场景建模规模达到500万节点,1000万条边。在搭建的知识图谱上挖掘分析了公交典型出行场景中同乘人员识别提取、公交站点群出行量挖掘、公交站点运力挖掘等分析场景。横向对比了ORACLE数据库和Neo4j查询性能,表明Neo4j在多维关联查询中的性能要显著高于ORACLE。本文通过知识图谱的建立、场景挖掘、查询性能对比3个角度探索了知识图谱在交通数据挖掘应用,后续我们将建立更为复杂维度的交通场景,持续开展知识图谱分析应用。

 

 

撰写:刘雨婷、屈新明

审核:屈新明

审定:丘建栋

返回列表