计算机系统应用  2019, Vol. 28 Issue (9): 102-109   PDF    
食源性疾病事件智能探测与预警平台
王德强1,2, 郭旦怀1,2, 张舒1,2, 曹荣强1, 王彦棡1,2     
1. 中国科学院 计算机网络信息中心,北京 100190;
2. 中国科学院大学,北京 100049
摘要:食源性疾病由来已久, 每年都会造成巨大的社会经济损失. 人工智能技术给食源性疾病事件的探测和预警带来了新的方法. 该文基于互联网大数据开发了食源性疾病事件智能探测与预警平台, 该平台面向食源性疾病事件的数据获取、数据分析以及可视化展示的全过程, 通过D-M-V分层模型以及模块化开发集成了多种模块. 该平台主要解决了食源性疾病事件的数据获取、数据融合、事件探测、风险预测和可视化等问题, 该平台能够自动从互联网中采集社交媒体、社会经济等数据; 根据数据的时空坐标对多源异构数据进行高效融合; 从社交媒体数据中探测出食源性疾病事件并推断其关键信息; 利用多源数据对食源性疾病风险进行预测; 提供高效的可视化方法和交互手段. 该文通过2018年北京市食源性疾病数据作为示例验证平台功能.
关键词: 食源性疾病    大数据    事件探测    风险预测    可视化    
Intelligent Detection and Risk Prediction Platform for Foodborne Disease Events
WANG De-Qiang1,2, GUO Dan-Huai1,2, ZHANG Shu1,2, CAO Rong-Qiang1, WANG Yan-Gang1,2     
1. Computer Network Information Center, Chinese Academy of Sciences, Beijing 100190, China;
2. University of Chinese Academy of Sciences, Beijing 100049, China
Foundation item: General Program of Natural Science Foundation of Beijing Municipality (9172023); National Key Research and Development Program of China (2018YFC0809700); National Natural Science Foundation of China (61702476, 91646101)
Abstract: Foodborne diseases have a long history and cause huge social and economic losses every year. Artificial intelligence technology has brought new approaches to the detection and warning of foodborne disease events. Based on Internet big data, this study develops an intelligent detection and risk prediction platform for foodborne disease events. The platform is oriented to the data automatic acquisition, data analysis and visual display of foodborne disease events in the Internet, through D-M-V layered models and modules. The platform solves the problems of data acquisition, data fusion, event detection, risk prediction and visualization of foodborne disease events. The platform can automatically collect social media data, social economy data and other data from the Internet, make heterogeneous data efficient fusion according to the spatio-temporal coordinates of the data, detect foodborne disease events from social media data and infer their key information; use multi-source data to predict foodborne disease risks, and provide efficient visualization methods and interactive means. In this study, we use the 2018 Beijing foodborne disease data as an example to verify the platform function.
Key words: foodborne desease     big data     event detection     risk prediction     visualization    

食源性疾病是当今世界普遍存在的问题, 过去的几十年里世界各大洲均有食源性疾病的暴发. 由于食源性疾病本身的特点(就医比例低), 其漏报率相当高, 目前的监测系统监测到的病例仅仅是实际发病病例的冰山一角. 随着大数据时代的到来[1], 给食源性疾病的探测和预警带来了新的思路. 基于用户行为对疾病的区域风险进行预测成为了可能. 基于用户行为的疾病预测主要分为使用搜索数据和社交媒体数据. 在搜索数据方面, 2008年Google提出Google Flu平台对全球的流感疫情进行估测[2], 2014年百度上线百度预测平台, 其中也包括疾病预测[3]. 使用搜索数据进行公共卫生事件的探测, 由于其定位依据是用户使用的IP地址, 其空间精度较低. 比较适合于对空间精度要求不高的群体性分析[4]. 基于社交媒体方面的研究较少, 芝加哥政府利用监督学习算法监测识别twitter中关于可能的食源性疾病的内容, 并通过twitter做出相应的响应[5]. 郭旦怀等人通过社交媒体数据对食源性疾病事件进行聚类分析和风险评估[6]. 如何从社交媒体中快速识别出由于食源性疾病事件, 并且推测出事件的关键信息, 如地理坐标等, 成为一个非常关键的问题. Chandra等人利用概率模型等利用Twitter用户常用的关键词构建了city级别的twitter用户的位置推测模型[7]. 祝天刚等使用TextRank以及动态上下文推断算法对社交媒体中的食源性疾病事件进行探测[8]. 在食源性疾病风险预测方面, 郭旦怀[6]等使用多源大数据对食源性疾病风险进行预测, 但并未构建一个完整的系统平台. 蔡皎洁等[9]基于语义挖掘构建了食源性疾病安全预警系统, 但只使用了食品检测数据, 未能使用多源大数据. 本文基于多源大数据, 面向食源性疾病事件的数据获取、数据分析、数据可视化整个过程, 构建了一个完整的大数据系统.

1 系统概述

食源性疾病由于其成因的多样性以及不确定性, 每年都会造成巨大的社会经济损失. 由于其成因复杂, 需要使用多种数据进行分析, 因此需要平台能够快速的从互联网中获取到食源性疾病事件的相关信息, 并且准确的识别食源性疾病事件, 推断出其关键信息. 互联网中虽然包含着海量数据, 但是由于数据的来源不同, 结构也不尽相同, 需要对数据进行有效融合. 对于多源数据, 数据之间的关联变的不易被发现, 通过数据挖掘的方法能够有效找出数据之间潜在的关联, 对食源性疾病进行有效预测, 同时对于预测的结果, 以及获取的数据, 平台需要提供高效的可视化方法和交互方式. 基于以上需求, 本文开发了食源性疾病事件智能探测与预警平台.

1.1 系统结构

在本文中, 我们关注于搭建一整套面向食源性疾病事件探测与风险预警的原型系统. 系统整合针对食源性疾病的多源数据获取, 数据融合, 事件探测与关键信息推断, 风险预测与模型评价. 系统采用分层的方式进行开发, 主要分为数据(Data), 模型 (Model), 可视化(Visualization)三层, 系统结构如图1.

图 1 平台系统结构

1.2 系统主要模块

本文将系统划分大数据采集模块, 数据融合与存储模块, 事件探测与信息推断模块, 模型自适应选择模块以及可视化与交互模块.

大数据采集模块主要集成了分布式爬虫系统, 由于影响食源性疾病的因素众多且机理复杂, 所以需要多种数据进行分析, 互联网中包含官方统计数据、社交媒体数据等海量数据, 官方统计数据格式清晰, 可信度高. 社交媒体中包含大量信息, 其中也包括着食源性疾病事件的相关信息. 大数据采集模块能够快速地从互联网中获取环境数据、社会经济数据、基础地理数据、出行数据、社交媒体等数据, 并且将获取到的数据存储在分布式数据库中; 数据融合与存储模块主要包括多源异构的数据融合与时空数据的存储, 由于本文使用的数据来源很多, 面对多源异构数据, 本文开发了基于时空索引的数据融合算法, 并且根据时空索引建立时空数据库, 能够高效读取数据; 事件探测与信息推断模块主要针对社交媒体数据中的食源性疾病事件, 由于社交媒体中虽然富含大量信息, 但同时也包含着大量噪声. 以微博为例, 即便是微博中包含食源性疾病的关键字, 也未必是一个食源性疾病事件. 对于社交媒体中食源性疾病事件的识别, 本文开发了基于短文本分类的事件探测算法. 一条微博包含的信息十分有限, 很多关键信息, 如地理坐标信息, 并不能包含在单条微博当中, 本文采用动态上下文的推断策略推测食源性疾病事件的地理位置信息; 自适应模型选择模块中集成了多种风险预测模型, 由于不同地区爆发的食源性疾病可能表现出不同的特点, 需要使用多种模型进行预测. 预测结果通过统一的模型选择指标, 对模型进行自适应选择; 可视化与交互模块主要对多源数据以及风险预测结果进行可视化, 以及整合平台与用户之间的交互功能.

2 关键技术 2.1 基于D-M-V的分层结构

传统的的数据分析系统通常是集成数据处理、计算、可视化在一台服务器上或者一个计算节点上, 当数据量较小时, 这样的系统结构可以充分的胜任. 当数据规模逐渐增大, 尤其当数据源有多个时, 单机的性能往往不能同时胜任大规模、多源数据的计算和可视化任务. 通过将数据处理(Data)、模型计算(Model)、可视化计算(Visualization)分离的方式来解决性能瓶颈的问题[10], 本文系统也基于D-M-V分层架构进行开发, 系统结构如图2所示.

图 2 系统主要模块

2.2 基于SOA的开发方式

面向服务的体系结构(Service-Oriented Architecture, SOA), 是一个组件模型, 它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来. 通过SOA的设计模式, 可以将D-M-V的三层结构中每层结构分离开来, 降低系统耦合程度, 将系统入口统一到Web页面进行管理. 使用这样的设计模式, 可以将系统的不同组件(例如数据存储, 数据建模和数据可视化)分发到不同的计算机中. 基于分布和松散耦合的特性, 分析任务可以利用并行计算资源统一的服务接口使得用户使用系统更加灵活, 基于Web的形式, 将复杂的原始数据、多样的模型和操作系统与用户隔离开来, 同时, 使用基于Web的形式更有利于集成其他基于Web的服务, 如风险地图等.

2.3 基于TextCNN的短文本分类算法

TextCNN是Yoon Kim在2014年提出的一种用于文本分类的算法[11], 主要思路是将CNN (Convolutional Neural Networks)的技术用于文本分类, 通过利用多个不同大小的卷积核(kernel)来提取相关句子里的关键信息(与多窗口大小的n-gram模型类似), 从而可以更好地捕捉文本的局部相关性. 网络结构主要包括输入层(input layer)、嵌入层(embedding layer)、卷基层(convolutional layer)、池化层(pooling layer)和输入层(output layer).

在本平台的实验数据集上, 使用TextCNN对含有食源性关键字的微博进行事件探测, 可以达到最好的分类效果.

2.4 模型自适应选择

模型的自适应选择主要包括两个部分, 包括对于特征的选择和对于预测模型的辅助选择, 本文通过对Xgboost对特征的贡献进行计算, 减去无效的特征, 对于模型的选择, 系统提供多种评价指标, 包括AUC(Area Under Curve), 即受试者工作特征曲线(ROC)下方的面积, 精准率(Precision), 召回率(Recall), F1值(F1 Score)等作为模型的评价指标, 辅助用户进行模型选择.

3 系统实现 3.1 分布式爬虫

面向多源网络数据, 平台集成了分布式爬虫系统, 并基于分布式爬虫系统开发了多种爬虫程序, 能够自动抓取社交媒体数据, 如微博、美团网评论数据, 出行数据如共享单车出行数据, 官方统计数据, 如国家统计局相关统计数据.

自动数据收集是整个系统的基础. 具体包括自动数据采集和原始数据的存储. 分析所需的数据可以分为静态数据和动态数据两类. 静态数据是主要在官方网站上发布的数据更新频率较低或经常更新的政府或机构. 静态数据提供基本信息, 包括数字地图和其他地理数据, 气候数据, 记录环境特征的遥感数据和社会经济统计数据. 动态数据是从动态更新的网络媒体和社交网络收集的数据. 微博、美团网评论数据被设置为自动爬虫的目标. 为此我们为不同的数据源部署自动爬虫, 完全不同的数据结构, 并保持最新信息被及时检测和存储.

静态数据源提供具有明确地理坐标或位置的结构良好的数据. 官方网站通常会定期发布数据. 为了接收这些具有可控开销的静态数据, 收集静态数据的搜索器被分配定时任务以检查网站的更新并请求最新发布的数据. 由于结构不变, 地理标签明确, 所收集的数据在存储之前不需要太复杂的处理. 对于动态数据, 自动收集更复杂. 为了获得实时的信息, 爬虫必须不断地监控新闻和社交媒体的网页, 寻找特殊的关键词, 包括突发事件的描述, 疾病的名称等, 这些都可以看作是突发事件的标志.

本文开发的分布式爬虫系统采用Celery (http://www.celeryproject.org/)作为分布式任务队列, 使用Rides作为分布式后端, 使用MongoDB (https://www.mongodb.com/)作为分布式数据库, 基于Python requests (http://www.python-requests.org/)发送网络请求及下载页面, 使用beautiful soup4 (https://www.crummy.com/software/BeautifulSoup/)解析页面, 基于Flask (http://flask.pocoo.org/)开发web界面管理整个数据采集系统. 系统结构如图3所示.

社交媒体网站如微博、美团网等对于爬虫往往有着严格的限制. 为此, 爬虫系统建立了IP池、账号池解决限制访问的问题, 对于验证码则通过CNN进行验证码识别, 多次识别错误时接入人工打码平台进行验证码识别.

3.2 多源数据融合

由于影响食源性疾病的因素众多, 本文采用了多种数据, 数据格式与来源见表1. 面对多源异构数据, 首先要做的是对多源异构数据进行数据融合, 置于统一的时空坐标系中. 本文所用数据虽然来源众多, 但主要有四种格式, 栅格数据、矢量数据、表结构化数据以及文本数据. 对于栅格数据和矢量数据主要问题在于不同的数据采用的投影坐标系以及地理坐标系都不尽相同, 首先要将其置于统一的时空坐标系当中. 本文使用Proj4 (https://proj4.org/)进行投影坐标转换, GDAL库(https://www.gdal.org/)进行矢量、栅格数据的提取.

图 3 分布式爬虫系统

表 1 多源数据类型与来源

由于直接通过gdal对时空数据进行读取比较低效的, 为此, 在提取时空坐标上的不同属性信息后, 基于空间数据的最小粒度, 建立时空数据库, 以时空立方体的形式以进行高效索引.

本文采用的文本数据主要是微博语料数据、美团网评论语料数据, 对于事件时间, 可以抓取到微博发博时间, 评论发送时间来确定, 地理坐标则根据下文的地理坐标推断算法进行推断. 结构化数据本身已经包含了时空信息, 可以直接进行使用.

3.3 事件探测与关键信息推断 3.3.1 基于短文本分类的时间探测算法

微博等社交媒体数据蕴含了大量的信息, 然而由于其本身的特点, 其中的噪声也特别多. 为了充分利用微博数据进行食源性疾病的检测, 首先要对数据进行清洗. 为了去除干扰的僵尸微博账户, 本文目前利用用户的关注粉丝比、微博总量等作为筛选条件, 选出真正有价值的微博内容, 同时基于短文本分类算法开发了食源性疾病事件探测算法, 对微博语料中的食源性疾病进行探测.

常见的短文本分类算法流程如图4所示, 主要包括分词、去停用词、词向量的训练以及分类器的训练. 传统的短文本分类算法主要是根据分词后计算的词组TF-IDF权重, 然后使用朴素贝叶斯分类器进行分类. 本文开发的平台采用Jieba (https://github.com/fxsjy/jieba) 分词库进行分词, 基于sklearn (http://scikit-learn.org/)开发TF-IDF算法, 基于gensim (https://radimrehurek.com/gensim/)开发Word2vec[12]算法, 基于TensorFlow (https://tensorflow.google.cn/)开发Fasttext[13]和Textcnn算法, 平台集成多种分类算法, 并且展现分类效果, 供用户选择.

图 4 短文本分类流程

3.3.2 基于动态上下文的地理位置推断算法

由于新浪微博每条所含字数小于140个字, 平均微博长度为30个字左右, 一条微博很难全面准确的描述食品安全事件. 由于用户很有可能会有连续多条微博涉及食源性疾病问题, 而其中只有某一条直接含有食源性疾病关键词, 其他相关微博可能含有有关食源性疾病的其他重要信息, 如地理位置等. 那么, 简单地根据关键词筛选单条微博的方法会错过许多含有重要信息的微博. 本文目前研究采用动态上下文确定事件窗口, 根据事件窗口确定候选微博. 动态上下文窗口, 是依据微博之间的语义相似度来确定的, 分别向前、向后利用微博间的文本相似性来确定上下文窗口.

地理位置推断算法流程如图5所示, 对于美团网评论数据, 根据店铺名称获得地理位置坐标. 对于微博数据, 首先对微博文本检测是否包含地理位置名词, 若包含地理位置名字, 则根据地理名称的Geocoding获取地理坐标, 若单条微博文本中不包含地理位置信息, 则在候选微博集中寻找地理位置信息, 若微博上下文中也未包含地理位置信息, 则根据用户注册地址确定食源性疾病事件地理位置.

3.4 基于多源数据的风险预测算法

在多源数据的基础上, 经过丰富的特征工程, 开发了食源性疾病的风险预测算法, 使用多种机器学习算法, 开发了多种风险预测模型, 如逻辑回归、决策树、梯度提升树, 随机森林等, 并且提供多种的评测标准. 并将多种模型集成在大数据处理平台上, 使用并行化算法优化模型, 使得平台能够利用多源大数据快速计算食源性疾病爆发的区域风险.

3.5 可视化与交互系统

对于模型的结果的展示, 本文基于Echarts (https://echarts.baidu.com/)实现基于地图的风险可视化, 交互系统采用Web形式, 基于Flask开发Web后台, 前端采用bootstrap UI以JavaScript进行开发.

图 5 食源性疾病事件地理位置推断

4 平台验证与试验结果 4.1 系统界面及风险预测示意图

通过平台抓取北京市相关数据, 获取食源性疾病相关微博10万条, 美团网评论数据500万条, 结合环境数据、官方统计数据等多源数据, 数据来源与格式见表1, 系统界面及预测风险如图6所示.

图 6 2018年6月食源性疾病风险示意图

4.2 事件探测算法实验结果

本文通过人工标注了的3万条包含食源性疾病关键字的微博进行训练, 训练集和测试集的比例为8:2. 通过AUC对分类结果进行评价. 实验结果见表2.

表 2 事件探测算法实验结果

从实验结果可以看出, 使用TextCnn文本分类算法可以达到最高的分类准确度, 能够较好的识别出短文本中的食源性疾病事件.

4.3 风险预测算法实验结果

根据社交媒体中的病例信息, 通过上下文地理位置推断算法推断出地理位置后, 使用多种模型进行风险预测, 在小区域粒度下, 预测在给定时间条件下, 一个地点是否会发生食源性疾病, 通过AUC进行评价, 实验结果见表3.

表 3 风险预测算法实验结果

从实验结果可以看出, 使用XGBOOST[14]对北京食源性疾病发生的风险进行预测可以达到最好效果.

5 结论与展望

本文使用大数据与人工智能的方法对食源性疾病事件进行探测和风险预警. 面向食源性疾病的数据获取、数据分析和数据可视化的需求开发了食源性疾病事件智能探测与预警平台, 使用多源数据对食源性疾病事件的风险进行预测与评估, 为食源性疾病的管理与防治提供一定的指导作用.

参考文献
[1]
Manyika J, Chui M, Brown B, et al. Big data: The next frontier for innovation, competition, and productivity. 2011. http://www.mckinsey.com/insights/business_technology/big_data_the_next_frontier_for_innovation.
[2]
Carneiro HA, Mylonakis E. Google trends: A web-based tool for real-time surveillance of disease outbreaks. Clinical Infectious Diseases, 2009, 49(10): 1557-1564. DOI:10.1086/599193
[3]
Yuan QY, Nsoesie EO, Lv BF, et al. Monitoring influenza epidemics in china with search query from baidu. PLoS One, 2013, 8(5): e64323. DOI:10.1371/journal.pone.0064323
[4]
陈翔, 徐佳, 吴敏, 等. 基于社会行为分析的群智感知数据收集研究. 计算机应用研究, 2015, 32(12): 3534-3541. DOI:10.3969/j.issn.1001-3695.2015.12.003
[5]
Harris JK, Mansour R, Choucair B, et al. Health department use of social media to identify foodborne illness—chicago, illinois, 2013-2014. Morbidity and Mortality Weekly Report, 2014, 63(32): 681-685.
[6]
郭旦怀, 崔文娟, 郭云昌, 等. 基于大数据的食源性疾病事件探测与风险评估. 系统工程理论与实践, 2015, 35(10): 2523-2530. DOI:10.12011/1000-6788(2015)10-2523
[7]
Chandra S, Khan L, Muhaya FB. Estimating twitter user location using social interactions--a content based approach. Proceedings of 2011 IEEE 3rd International Conference on Privacy, Security, Risk and Trust and 2011 IEEE 3rd International Conference on Social Computing. Boston, MA, USA. 2011. 838–843
[8]
祝天刚, 郭旦怀, 王学志, 等. 基于短文本的食源性疾病事件探测技术. 大数据, 2016, 2(2): 2016022.
[9]
蔡皎洁, 张玉峰. 基于语义挖掘的食源性疾病安全预警系统构建. 情报杂志, 2014, 33(2): 18-22.
[10]
Guo D, Li J, Cao H, et al. A collaborative large spatio-temporal data visual analytics architecture for emergence response. IOP Conference Series: Earth and Environmental Science, 2014, 18(1): 012129.
[11]
Kim Y. Convolutional neural networks for sentence classification. Conference on Empirical Methods in Natural Language Processing. Doha, Qatar, 2014, 1746-1751.
[12]
Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space. arXiv preprint arXiv: 1301.3781, 2013.
[13]
Bojanowski P, Grave E, Joulin A, et al. Enriching word vectors with subword information. Transactions of the Association for Computational Linguistics, 2017, 5: 135-146. DOI:10.1162/tacl_a_00051
[14]
Chen TQ, Guestrin C. Xgboost: A scalable tree boosting system. Proceedings of the 22nd ACM Sigkdd International Conference on Knowledge Discovery and Data Mining. San Francisco, CA, USA. 2016. 785–794.