医疗大数据关键核心技术和算法

2016-07-01 09:56:01 阅读

众多海量医药医疗数据为大数据管理与处理平台提出了诸多技术挑战。第一,由于数据是不断累积的,平台需具备高可扩展性;第二,存储层应适应不同的存取访问需求. 实时应用如医院的挂号和收费系统等,主要涉及小量数据的读取与写入,要求后端存储能够快速读写; 复杂应用如医疗历史数据挖掘等,涉及大量数据的读取,要求后端存储实现高吞吐量读取;第三,由于医疗数据关乎人的生命,需要保证平台的高容错与高可用性,能够应对常态化的出错问题。

大数据分析能力

大数据分析能力体现在五个基本方面:

l  大数据可视化分析能力

大数据分析的使用者有大数据分析专家,同时还有普通用户,二者对于大数据分析最基本的要求就是可视化分析。

l  大数据挖掘发现能力

大数据分析的理论核心就是数据挖掘算法,被全世界统计学家所公认的各种统计方法才能深入数据内部,更快速的处理大数据,挖掘出公认的价值;如果一个算法得花上好几年才能得出结论,那大数据的价值就减弱了。

l  大数据预测趋势能力

大数据分析最重要的应用领域之一就是预测性分析,从大数据中挖掘出特点,通过科学的建立模型,之后便可以通过模型带入新的数据,从而预测未来的数据。    

   l 大数据语义引擎能力

大数据分析广泛应用于网络数据挖掘,可从用户的搜索关键词、标签关键词、或其他输入语义,分析,判断用户需求。

l  大数据质量和管理能力

大数据分析离不开数据质量和数据管理,高质量的数据和有效的数据管理,无论是在学术研究还是在商业应用领域,都能够保证分析结果的真实和有价值。

大数据分析技术

l  数据采集:ETL工具负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。

l  数据存取:关系数据库、NOSQLSQL等。

l  基础架构:云存储、分布式文件存储等。

l  数据处理:自然语言处理技术、人工智能等

l  统计分析:假设检验、显著性检验、差异分析、相关分析、T检验、方差分析、卡方分析、偏相关分析、距离分析、回归分析、简单回归分析、多元回归分析、逐步回归、回归预测与残差分析、logistic回归分析、曲线估计、因子分析、聚类分析、主成分分析、因子分析、快速聚类法与聚类法、判别分析、对应分析、多元对应分析(最优尺度分析)、bootstrap技术等。

l  数据挖掘:分类、估计、预测、相关性分组或关联规则、聚类、描述和可视化、复杂数据类型(TextWeb ,图形图像,视频,音频等)挖掘。

l  模型预测:预测模型、机器学习、建模仿真。

l  结果呈现:云计算、标签云、关系图等。

大数据存储技术和系统

在数据存储系统体系结构方面,以大量廉价服务器组成无共享(shared-nothing) 集群的方式逐渐成为主流。 这种体系结构易于实现高可用、高性能、渐进可扩展的存储系统,并且由于存储资源与计算资源紧密耦合,在扩充存储容量的同时,计算能力也能够同步增强,能够避免\存得下,算不出" 的问题。 在软件方面,文件存储是最基本的数据存储方式。 文件存储的优点是访问接口简单,文件格式可以由使用者灵活定义,因此文件存储往往作为更高级的数据管理系统的底层存储服务。 目前能够存储超大规模数据的文件存储系统包括Lustre、Google file system (GFS)、Hadoop distributed file system (HDFS)以及Amazon S3 等。 它们的共同特点是基于无共享架构、能够管理数百乃至数千存储节点、自动维护数据冗余或副本、高并发顺序访问吞吐率等。

大数据业务模型建模

在更高级的数据管理方面,最重要的数据管理系统是以关系数据模型为基础的关系数据库系统(RDBMS)。 关系数据模型最主要的优点之一是具有与一阶逻辑体系同等强大的知识表达能力,这意味着现实中的许多查询都可以用关系代数描述。 此外,使用关系数据模型,用户能够方便地为各种对象以及对象之间的联系设计逻辑模型而无需了解数据库的实现细节。 因此,在21 世纪之前,关系数据库被广泛应用于各类信息系统,如医院常用的电子病历系统、临床信息系统、用药管理系统、ICU监护系统等。关系数据模型虽然具有诸多优点,但要实现一个高效率的关系数据库系统却并不容易。 这主要是因为:

(1) 为保证关系数据模型功能的完整性,很多数据操作难以进行专门优化;

(2) 为保证事务处理的原子性、一致性、分离性和持久性,带来了大量的额外开销。

因此在管理大数据时,以Oracle database、SQL server、MySQL 为代表的传统关系数据库常常成为性能瓶颈。 这些系统的低效不仅表现为查询速度慢,而且数据加载与建立索引的过程也十分漫长。由于原始数据和数据处理的中间结果大部分是非结构化(unstructured) 数据或半结构化(semi-structured) 数据,如网页、日志、文档、图片、视频等,传统关系数据库被认为不适用于存储这类数据,因此需要使用其他类型的数据管理系统。 现有的针对此类数据的管理系统被笼统地称为NoSQL 数据库,按照数据模型分类,可以分为以下3种(按照数据模型由简单至复杂的顺序排列)。

 l -值存储系统: -(key-value) 数据模型将数据表示为键与值的映射关系。 所有的键|值存储系统都支持的基本操作是给定一个键,查找其对应的值。 当键上可以定义比较关系时,有些系统也支持键上的范围查询(range query) -值模型功能简单和易于实现,键-值存储系统一般具有极佳的可扩展能力和访问性能,因此多用于支持高并发的Web 服务查询或作为其他存储系统的高性能缓存。 目前主流的分布式键| 值存储系统包括Amazon dynamoRedisMemcacheDB 等。

l 列族存储系统: 列族(column-family) 数据模型是在键-值模型基础上,将值定义为列族的集合,每个列族可以包含多个相关属性列。 与键-值存储系统相比,列族存储系统支持的基本操作也是按值查找和范围查询,但允许用户指定返回的结果中所需包含的属性列,因此更加灵活易用,并且在仅用到小部分属性列的情况下查询性能更好。 10年来,最具代表性的大规模列族存储系统是Google bigtable,类似的系统包括HBaseHypertable等。

l 文档存储系统: 文档(document-oriented) 数据模型也可视为键-值模型的扩展,与列族模型不同的是它将值定义为类似广义表的数据结构。 从抽象的角度看,列族模型是一种特殊的文档模型。 文档存储系统除了支持基于键的查询,一般还允许用户指定值上的过滤条件(取决于具体系统实现),但更为灵活的数据结构需要更多空间存储以及更长时间解析,其查询速度通常比列族存储系统慢。目前主流的文档存储系统包括MongoDBCouchDBApache Cassandra等。

相比关系数据库,NoSQL数据库采用了较为简单的数据模型。 这样做的好处是能够为特定的查询(如按键检索) 进行优化,极大地提高查询性能,从而具备非常好的可扩展性,能够应用于超大规模的数据。 另一方面,NoSQL数据库仅能支持关系数据库能够支持的数据操作的一个很小的子集,例如大多数NoSQL数据库不支持关联查询(join)。 当进行NoSQL数据库不支持的查询时,用户只能自行编写代码以满足需要。

在医疗服务中产生的数据类型多样,既有适合关系数据模型描述的结构化数据,也有图片和文本等多种非结构化数据。 这种异构性为医疗大数据的管理带来了很大的挑战。 许多关键业务数据要求数据管理系统支持原子性(atomicity)、一致性(consistency)、完整性(isolation) 和隔离性(durability),而支持ACID 的关系数据库系统不适合存储非结构化数据。 一种解决方案是采用两套系统分别存储结构化与非结构化数据,但这为两种数据之间进行联接查询(join) 带来了困难。 例如,当要寻找某科室患者的所有CT 影像图片时,需要首先在业务数据库中查询到该科室所有患者的ID,然后再到非结构化数据库中查找图片。 这种跨数据库的联接查询的执行效率不高。 因此,就医疗大数据而言,需要研究一种基于混合数据模型的数据管理系统,能够高效管理结构化数据与非结构化数据,并支持异构数据之间的高效混合查询。

大数据的实时查询

医疗服务对时效性的要求很高,很多查询都要求得到实时响应。 智慧医疗中涉及实时查询的可大致分为:

(1) 与时间有关的查询,如检索监护对象某一时间段内的全部信息;

(2) 与空间有关的查询,例如检索监护对象在某个区域(如某个医院) 内的全部信息;

(3) 与特定属性有关的查询,例如检索监护对象的血压变化历史和用药记录等;

(4) 综合查询,例如检索监护对象在某段时间和某个区域内的某项生命体征数据。

高效实时查询的关键是必须预先了解查询类型并建立所需的索引。 当数据规模非常大时,现有数据库采用的索引技术基本能够满足数据检索的实时性需要,但在索引的创建与更新的性能方面有较大不足。 例如,我们的测试结果表明,用一台运行PostgreSQL的服务器为200万条数据(约1GB)在一个空间属性上创建R-tree索引,用时约为20分钟; 在此基础上再次插入40万条数据(约0.2GB),用时约为60 分钟。 根据这个结果,当数据产生的速度大于960万条/天时,即使服务器的全部计算资源都用于维护索引,索引的更新速度仍将落后于数据产生的速度。 而如果1个医疗传感器每15秒产生1条测量数据,1万个这样的传感器每天将产生超过5000万条数据。 这意味着现有的索引更新方法无法胜任医疗大数据处理的需求。 此外,是一种常用的避免更新索引的方法是在插入新数据之前删除索引并在之后重新创建索引,但这种方法不能从根本上解决问题,因为随着数据不断累积,重新创建索引所用的时间越来越长,最终会比更新索引的速度更慢。

为满足大数据实时查询的需要,必须对现有的索引技术必须加以改进,将索引的创建与更新速度提高至少一个数量级。 索引更新速度慢的一个重要原因是数据逐条添加时引发了多次随机小量写操作,因此首先需要重新设计索引结构,使其能够批量添加数据(bulk-insertion),尽量用顺序写入大块数据取代随机写入小块数据。 另外,需要设计索引的并行创建与更新算法,使索引的创建与更新能够在无共享架构中水平扩展。

大数据的复杂分析

在智慧医疗中,有很多复杂的数据分析查询,以下仅举几例:

(1) 医疗数据统计,如统计历年慢性病比例变化和各地区心脑血管疾病分布等;

(2) 相似联接查询(similarity join),如根据CT 成像图片,寻找相似的病例与诊断,寻找骨髓移植匹配等;

(3) 医疗数据挖掘与预测,如寻找亚健康状况与职业、性别、年龄等因素的联系和预测下一个月各类药品的需求等。 这些复杂分析查询的主要特点有:

l  需要读取大量数据,所需计算时间长;

l  查询灵活多变,难以预测;

l  涉及多学科交叉,需要医疗、统计、计算机等各领域的专业人士协作完成。

传统关系数据库与NoSQL数据库难以胜任复杂的数据分析,其原因主要有两个。 首先,它们在维护数据库的原子性、一致性、分离性和持久性方面花费了巨大的开销,而在进行复杂的数据分析时,数据往往是静态的,因此这些开销是不必要的。 第二,它们的存储与索引结构是为数据的随机读写与频繁更新而设计,没有为大量数据的读取进行专门优化。

目前,对大数据进行复杂分析的工具主要有两大类。 一类是并行分析型数据库,另一类是基于MapReduce的数据分析工具。

分析型数据库基于关系数据模型,与传统关系数据库相比,其存储结构与查询算法为数据读取进行了专门优化,如用列式存储(column-store)替代行式存储(row-store)。目前主流的并行分析型数据库的有Vertica和Greenplum等。 这些数据库提供的用户接口是与传统关系数据库相同的结构化查询语言(SQL)。 这种实现方式降低了用户的学习成本,但也带来了两个问题。 首先,虽然关系数据模型能够进行扩展以表示非结构化数据,但由于数据种类繁多,目前缺少足够有效的理论与工具将非结构化数据转化为结构化数据; 第二,一些复杂的数据分析难以直接用SQL 描述,即使能够用SQL 描述,其执行效率也比专门编写的过程化分析程序要低得多。

MapReduce是Google于2003年提出的一种新的基于无共享架构的并行计算范式。 与传统并行计算范式(如MPI) 相比,MapReduce简化了并行数据处理算法的设计与实现,使用者仅需根据查询需要定义map 和reduce 两个函数,无需关心并行执行过程中的任务调度、资源管理以及出错处理等问题。 MapReduce最初是为处理Google的海量文本数据的简单分析算法而设计。 随着Apache Hadoop项目提供的MapReduce开源实现在学术界与工业界广泛使用,MapReduce编程模型被证明十分灵活。我们不仅可以在其上构建分析型数据库(如Hadoop Hive),而且能够实现常用的数据挖掘与机器学习算法程序库(如Apache Mahout)。

从大数据分析性能的角度看,数据库专家们对并行分析型数据库与MapReduce的优劣曾经有过长达数年的争论。 随着对两者研究的深入,目前已取得的主要共识有:

l  对于简单的结构化查询,当计算节点较少时(100 台或以下),并行分析型数据库由于采取了更优化的存储结构与查询算法,性能明显优于MapReduce;

l  当计算节点较多时,此时计算节点出错的概率很高,并行分析型数据库在出错时往往需要重新执行整个查询,性能会受到较大影响,而MapReduce的设计从一开始就将常态化的出错问题纳入考虑,因此能够轻松扩展到数千台节点;

l  并行分析型数据库必须预先加载数据,而数据加载的时间通常十分漫长,因此对于日志分析等仅需读取一次数据的任务并不合适;

l  MapReduce比并行分析型数据库的应用更广泛,如能够处理非结构化查询,实现复杂的数据挖掘算法;

l  尽管编程模型简单,但MapReduce仍需要专业人员进行编程工作,并行分析型数据库的使用成本比MapReduce低。

从严格意义上看,并行分析型数据库与MapReduce并不具备直接可比性。 前者是包含查询语言、逻辑数据模型、并行执行引擎、物理存储结构等一整套机制的实现,而后者仅与前者中的并行执行引擎的角色类似。 整合二者的优点,可以构建出更为强大的数据分析工具,这也是数据库领域一个活跃的研究方向。 例如,为了保证高容错性,MapReduce将计算的中间结果保存在磁盘上,这样做带来了巨大的开销,影响了查询的执行效率。 并行分析型数据库为了保证高效,采用pipeline 机制,即上一步的结果在内存中产生后直接通过网络推送到下一步的计算单元。 由此可以得出一个构建高效可扩展的分析型数据库的思路,即在pipeline机制的基础上,同时将中间结果写入磁盘。 事实上,二者的融合已经在目前最新的数据分析工具(如Google Tenzing) 中得到体现。

无论是并行数据库还是MapReduce,都致力于解决机器的执行效率问题。 在对医疗大数据进行复杂分析时,医疗专家的知识与智能在整个分析过程中起着至关重要的作用。 但是,要求医疗专家同时精通分析型数据库的使用甚至编写MapReduce 程序,是不现实的。 因此,如何在这些复杂的数据分析系统之上,提供一个具备良好可视化与互动功能的交互界面,是帮助医疗专家发掘医疗大数据价值的关键。


标签:   医院信息化 医院信息化系统 医院信息化软件 医院信息化平台 HIS HIS系统 医院HIS系统 医疗卫生 医院大数据 医疗大数据 医疗服务