写点什么

新冠肺炎实时动态时序图谱建模与分析

2020 年 2 月 18 日

新冠肺炎实时动态时序图谱建模与分析


一、背景介绍


新冠肺炎是一种具有最长达 24 天潜伏期的新型突发性传染疾病,这种特性给疫情防控带来了巨大的挑战,随着感染规模的不断扩增,简单的人为治理已不太奏效,使用“大数据”技术手段来辅助人为治理社会有助于快速准确的定位问题关键,帮助决策者及时作出下一步规划。


个人感受


这一个月来每天都会在各大站点查看感染人数的更新、病例的行程发布等等,然而互联信息更新总是不能赶上群众的急切小手手…



技术背景


知识图谱技术作为大数据走向人工智能的台阶,它以最契合社会行为的形式表达复杂的社会结构,非常适合分析具有关联关系的数据,使用知识图谱技术分析传染关系及社会动向非常有利于疫情的防控,对疫后的研究分析也有帮助。尽管当前大数据和人工智能的应用尚处于初级阶段,但以知识图谱为核心的研究成果正在带来一波新兴的科技潮流。


知识图谱背后的技术关键“图数据库”:


图形数据库是一种应用关系图理论存储复杂的实体之间的关系信息,即用“点”和“边”的形式来存储数据,最常见例子就是社会网络中人与人之间的关系,正是本次疫情中的关键线索。


使用技术


本文使用图特摩斯科技自研的国内首个时序图谱平台 AbutionGraph 作为技术支撑,主要技术突破点为:静态图+动态图+时序图+多维的存储形式。


解决问题


  • 疫情实时统计:实时统计医院/城市/省份的确诊/疑似/死亡/接触人数等;

  • 疫情实时分析:病例接触者人群溯源及时排查、高风险同行人群分析、城市区域风险等级计算等;

  • 疫情数据研究:病毒传播渠道及路径、寻找疾病候选药物,提供相应的药物作用机制等。


使用数据


本次演示共使用 5 类实体数据:包括正常人、病例、地址、交通工具、医院等数据信息,以及各类实体之间的关联关系,如“某患者曾出现于某超市”等关系。我们使用 AbutionGraph 依据真实场景建模,由于详细数据不公开,本文中均使用模拟数据进行分析。



二、与普通图存储的技术区别


在建模前,我们有必要先来理解一下多维、动态、时序这些在图谱存储中的新概念。


1)“一维”图谱和“多维”图谱的区别


一维图谱



(常见的图形存储结构,如:JanusGraph、Neo4J)


多维图谱



AbutionGraph 独有的存储形式(实体属性细分,任意维度的数据包含,如张某某具有 2 个维度的数据,而李某某不患有疾病,可不包含“维度 2”。)


2)“静态”、“动态”及“时序”图谱的区别


假定场景:实时统计每个人之间的交易总金额。


1.静态图谱



静态图谱统计历史账单总金额方法:10+5+5=20 元


(所有交易信息都查询出来,再逐个累加汇总)


2.动态图谱



动态图谱统计历史账单总金额方法:数据产生后发生存储即实时自动汇总,及时查询得出 20 元。


3.动静结合



AbutionGraph 特有形式,静态图谱+动态图谱,即可以保持历史数据不变,又可无需人为干预 实时根据历史数据统计出指标。


4.时序图谱



AbutionGraph 特有形式,即根据“事件”发生的时间线,使用划分的时间区间进行实时指标计算。


如场景~统计每个人之间每天的实时交易总金额、统计每周(统计区间)实时新增病患。


三、新冠肺炎数据建模


了解了图形的多种存储形式后,接下来我们使用模拟数据依次建模,并详细介绍每个实体与关系的数据映射关系。



当发生突发公共事件时,我们在“正常时期”的数据图谱之上进行多维扩展,以支持更多业务,灵活应对疫情。



一)节点“人”数据建模


正常人数据(2 维)



1.基本信息:性别、生日、籍贯等 (数据来自身份证采集等渠道)


2.曾患病信息:疾病名称、发病时间、就诊医院等 (数据来自医院联网数据等渠道)


患病人数据(3 维)



1.基本信息:性别、生日、籍贯等


2.曾患病信息:疾病名称、发病时间、就诊医院等


3.患新冠肺炎:感染程度、诊断时间、感染原因、症状等 (数据来自各地医院实时上报等)


二) “人”-(收治于)->“医院”


实体“医院”数据(2 维)


1.基本信息:病床数、医护数、病人数等 (实时动态数据 来自医院资源管理系统等渠道)


2.病例信息:收治数、确诊数、疑似数、病亡数、治愈数等 (实时动态数据 来自医院联网实时上报等渠道)


关系“收治于”数据(1 维)


1.收治信息:收治时间、收治原因等 (数据 来自医院实时上报等渠道)



三) “人”-(住在、出现于、感染于)->“地址”


关系数据(3 维边)


1.居住于:入住日期等 (历史数据 来自社区物业管理系统等渠道)


2.出现于:出现日期等 (历史数据 来自社区街道管理系统等渠道)


3.感染于:感染日期等 (实时数据 来自医院联网实时上报等渠道)


实体“地址”数据(1 维)


1.地址:(无属性信息)



四) “人”-(乘坐)->“交通工具”


关系数据(1 维)


1.乘坐:上车时间、上车地点、下车时间、下车地点、座位号等 (数据 来自交管部门管理系统等渠道)


实体“交通工具”数据(多维)


1.车基本信息:编号、座位数、交管局、投入时间、维修信息、描述信息 (数据 来自交管部门管理系统等)


2.高铁:司机、乘车人数、发车时间、始发站、终点站、途径站点等 (数据 来自交管部门管理系统等)


3.飞机:司机、登机人数、出发城市、到达城市、起飞时间等 (数据 来自航空公司管理系统等)


4.地铁:司机、车辆型号、发车时间、始发站、终点站、途径站点等 (数据 来自城市轨道管理系统等)


Ps:交通数据种类丰富, 有公交站点、地铁站点等静态数据,还有基于事件流的动态数据,例如,公交车进出站、地铁刷卡出行、出租车到达某一地理点等。



五) “人”-(接触、传染)->“人”


关系数据(1-2 维)


1.接触:接触时间等 (数据 来自临时背调等渠道)


2.传染:无属性


实体“人”维度(多维可变)


健康人(未得过病)1 个维度:“基本信息” 维度


亚健康(得过疾病)2 个维度:“基本信息”、“曾患病信息” 维度


患病人(患新肺炎)3 个维度:“基本信息”、“曾患病信息” 、“患新冠肺炎” 维度


(各维度的属性信息前章节已给出)


未确诊前样例数据



确诊后样例数据



感染人群数据时间线


2020-02-07:“赵六”(未发病)–探亲->“赵七”(健康)


2020-02-10:“赵六”(发病),确诊患新冠肺炎


2020-02-11:“赵七”(未发病),但为确诊病例“赵六”密切接触者,随后查出感染


“赵七”的密切接触者“张女士”即应进入医学观察期


六) “医院”-(归属于、院上报)->“城市”


关系数据(2 维)


1.院上报:患者姓名、患者年龄、患者病情(危重/严重/轻症)、诊断情况(确诊/疑似)、上报时间、上报人员等 (数据 来自医院病患数据采集等)


2.归属于: (无属性信息)


实体“城市”数据(2 维)


1.市患者实时统计(动态):确诊总数、疑似总数、严重患者总数、轻症患者总数、时间区间-按天分区等 (数据 来自市医院医护实时汇报等)


2.市患者每日新增趋势统计(时序):确诊总数、疑似总数、严重患者总数、轻症患者总数、统计开始时间、结束时间等



七) “城市”-(归属于、市上报)->“省份”


关系数据(2 维)


1.市上报(按天):确诊总数、疑似总数、严重患者总数、轻症患者总数等 (数据 来自市级数据实时自动获取)


2.归属于: (无属性信息)


实体“省份”数据(2 维)


1.省总患者统计(动态):确诊总数、疑似总数、严重患者总数、轻症患者总数等 (数据 来自市医院医护实时汇报等)


2.省每日新增患者统计(时序):确诊总数、疑似总数、严重患者总数、轻症患者总数、统计开始时间、结束时间等



至此,数据建模介绍完毕。如上,数据统计部分已经实现自动化,即查即用。接下来基于此设定数据集进行一些更上层的分析场景演示。


四、场景分析演示


Ps:AbutionGraph 查询方式偏 API,暂未实现 GSQL,,为了方便理解,查询语句均使用相应查询逻辑的伪代码方式演示。


场景 1、城市病例每日新增趋势查询(每日汇总)


查询:


vertex ["北京市","深圳市"]use "市患者每日新增趋势统计" select "开始时间" execute ">2019.01.20"  //<<--按天分区汇总(预聚合-即图库自动计算的)select "结束时间" execute "<2020.01.24" 
复制代码


结果:


北京市(2020.01.20):2例北京市(2020.01.21):6例北京市(2020.01.22):13例北京市(2020.01.23):8例深圳市(2020.01.20):4例深圳市(2020.01.21):6例深圳市(2020.01.22):18例深圳市(2020.01.23):19例
复制代码


场景 2、城市病例分布情况查询(指定区间全量汇总)


查询:


use "市患者实时统计维度" select "开始时间" execute ">2019.01.20"  //<<--按天分区汇总(后聚合)select "结束时间" execute "<2020.02.24"  //<<--不指定区间即所有天数据汇总groupBy [] ;
复制代码


结果:


北京市(2020.01.20-2020.01.24):29例深圳市(2020.01.20-2020.01.24):47例
复制代码


场景 3、省份病例每日新增趋势查询(每日汇总)


查询:


vertex ["广西省"] use "省每日新增患者统计维度" select "开始时间" execute ">2019.02.10" select "结束时间" execute "<2020.02.11" count "确诊总数,疑似总数" ;
复制代码


结果:


广西省(2020.02.10):确诊总数:11疑似总数:29广西省(2020.02.11):确诊总数:18疑似总数:30
复制代码


场景 4、城市病例的年龄段分布情况(3 跳查询)


查询:


vertex ["北京市"] toEdge [“院归属于”] toEntity ["市患者实时统计"] toEdge [“院上报”]use ["院上报维度"] select [“患者年龄”] mean() ;
复制代码


结果:


70~79岁:1人60~69岁:4人50~59岁:3人40~49岁:8人30~39岁:5人20~29岁:1人10~19岁:0人0~9岁:0人
复制代码


Ps:如上查询为 3-跳查询,如需求固定可在建模时为此逻辑创建一个动态维度,实现自动化计算。


场景 5、查出某病例确诊前 3 天接触过的人群


查询:


Vertex [“梁某某”,“陈某”] toEntity [“患新冠肺炎”] select [“确诊时间”] toEdge [“接触”] by [“接触时间”>“确诊时间”-3天]use "基本信息维度" ;
复制代码


结果:


梁某妹梁某兄陈某夫
复制代码



场景 6、找出所有超级传播者


Ps:假定传染人数超过 4 个即为超级传播者。


查询:


use ["患新冠肺炎"] toEdge [“传染”] count >= 5 ;
复制代码


结果:



场景 6、查找患者传播链


Ps:假定传染人数超过 4 个即为超级传播者。


查询:


 //<<--按患者传染的路径逐步遍历,直到终点实体无“患新冠肺炎”维度use ["患新冠肺炎"] for ( toEdge [“传染”] ) until ( toEdge [] Dimension !=“患新冠肺炎”) ;
复制代码


结果:



总结


AbutionGraph 是个年轻的图数据库系统,它可以满足永不掉线的实时指标计算任务以及历史数据分析,多维度的存储模式除文中介绍的场景外,我们也可以在实体上动态存储关系上的属性,反之亦然,比如:在实体“张三”的某个维度上实时统计它最近联系过的 10 个朋友的名字并不断更新与保存。


更多应用场景或者任何问题请反馈至邮箱: biyuzhe@thutmose.cn


作者简介


闭雨哲,北京图特摩斯科技有限公司创始人 & CEO。


2020 年 2 月 18 日 16:081516
用户头像
陈思 InfoQ编辑

发布了 567 篇内容, 共 192.9 次阅读, 收获喜欢 1120 次。

关注

评论

发布
暂无评论
发现更多内容

大型互联网应用建设常用技术方案与手段,主要解决哪些问题?

睁眼看世界

极客大学架构师训练营

我理解的技术战略

异想的芦苇

战略管理

第四周作业

fmouse

极客大学架构师训练营

week04_系统架构

……

架构师训练营 -week04-作业

大刘

极客大学架构师训练营

大型网站架构总结

黄立

区块链思维是赋能未来经济的关键思维

CECBC区块链专委会

区块链 经济 技术创新

MySQL-技术专题-MySQL索引面试题

李浩宇/Alex

区块链数字钱包技术开发,数字货币钱包源码搭建

135深圳3055源中瑞8032

承兑商USDT支付系统平台,区块链支付软件开发

135深圳3055源中瑞8032

第四周作业

alpha

极客大学架构师训练营

第四周课后练习

饭桶

配置Ubuntu工作环境

Rayjun

随记-- 一件事要不要做,值不值得做?

wyzwlj

数字货币交易所定制开发,区块链交易系统搭建

135深圳3055源中瑞8032

第四周课后练习

大大猫

极客大学架构师训练营

技术创新+产业升级,区块链为白酒行业带来更多机遇

CECBC区块链专委会

区块链技术 防伪溯源

架構師訓練營第 1 期 - 第 04 周總結

Panda

架構師訓練營第 1 期

Week 4 总结

黄立

第四周总结

饭桶

区块链挖矿系统开发,云算力矿机平台

135深圳3055源中瑞8032

架构师训练营 -week04-总结

大刘

极客大学架构师训练营

训练营第四周 学习总结

Yangjing

极客大学架构师训练营

架构师训练营第 4 周作业

netspecial

极客大学架构师训练营

训练营第四周 作业1

Yangjing

极客大学架构师训练营

第四周总结

睁眼看世界

极客大学架构师训练营

数字人民币真的来了 六年历程全回顾

CECBC区块链专委会

数字货币 DCEP

浅析 Java 内存模型 二

朱华

Java JMM

架構師訓練營第 1 期 - 第 04 周作業

Panda

架構師訓練營第 1 期

架构师训练营第 4 周学习总结

netspecial

极客大学架构师训练营

ARTS 打卡 (20.09.21-20.09.27)

小王同学

NLP领域的2020年大事记及2021展望

NLP领域的2020年大事记及2021展望

新冠肺炎实时动态时序图谱建模与分析-InfoQ