- 健康医疗大数据安全与管理
- 陈敏 周彬 肖树发主编
- 11908字
- 2025-03-14 19:13:22
第四节 健康医疗大数据平台关键技术
从数据在信息系统中的生命周期看,大数据从数据源经过分析到最终获得价值一般需要经过5个主要环节:数据采集、数据存储与管理、计算处理、数据分析和可视化。大数据对知识展现环节来说只是量的变化,并不需要根本性的变革;但对数据采集、存储、计算、分析4个环节影响较大,需要对技术架构和算法进行重构。本节简要分析上述4个环节的主要技术。
一、大数据采集技术
(1)Sqoop:
Sqoop是一款开源的数据迁移工具,主要用于在Hadoop与传统关系型数据库间进行数据的传递,可以将MySQL、Oracle、PostgreSQL等关系型数据库中的数据导入到Hadoop的HDFS、Hive、Hbase中,也可以将HDFS、Hive、Hbase的数据导入到关系型数据库中。Sqoop结构如图2-6所示。

图2-6 Sqoop结构
(2)Flume:
Flume是由Cloudera软件公司开发的分布式日志收集系统,可采集日志数据,后于2009年捐赠给Apache软件基金会,为Hadoop相关组件之一。尤其近几年随着Flume不断改进和完善,用户在开发的过程中使用的便利性得到很大的改善,现已成为Apache顶级项目之一。
Flume是一个高可用的、高可靠的、分布式的海量日志采集、聚合和传输的系统,支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理并写到各种数据接受方的能力。Flume结构如图2-7所示。

图2-7 Flume结构
(3)ETL抽取与Kettle:
ETL用于描述将数据从来源端经过抽取、转换、加载至目的端。ETL过程保证来自不同系统、不同格式的数据和信息模型具有一致性和完整性,并按要求装入数据集市。ETL的过程就是数据流动的过程,从不同异构数据源流向统一的目标数据。其间数据的抽取、清洗、转换和加载形成串行或并行的过程。ETL的核心还是转换过程,而抽取和加载一般可以作为转换的输入和输出,或者将抽取和加载作为一个单独部件,其复杂度比转换部件低。
ETL常有3种实现方法:①借助ETL工具,例如Oracle的OWB、SQL Server 2000的DTS、SQL Server 2005的SSIS服务、Informatic等,该种方法可以快速地建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性;②使用SQL,该种方法的优点是使用灵活,可以提高ETL运行效率,但是编码复杂,对技术要求比较高;③ETL工具和SQL相结合,该种方法综合了ETL工具和SQL的优点,可以提高ETL的开发速度和效率。
Kettle是一个由纯Java开发的ETL工具,是开源智能商务软件Pentaho的重要组成部分。Kettle提供了一系列的组件:Spoon、Pan、Kitchen、Carte、Encr等,用于完成数据抽取、转换、加载工作。正如Kettle的中文名“水壶”一样,使用Kettle处理数据就像从水壶中倒水一样,先把各种数据放到一个壶里,再以指定格式流出。
(4)集成平台数据提取:
当健康医疗大数据平台的数据来源于集成平台时,需要从集成平台采集数据,使用集成平台获取数据主要经过适配器、数据转换、消息订阅/事件驱动的过程。①适配器:由于各个业务系统从设计到实现技术的差异性,集成平台需要具备连接不同技术接口的能力,通过适配器可以适配不同业务系统的连接口,从而将这些业务系统对外接口封装成相应的业务事件;②数据转换:平台通过适配器获取数据后,需要对数据进行标准化处理,包括数据过滤、数据格式标准化、语义/术语标准化以及数据有效性校验4个步骤,通过这4个步骤的处理保证进入到健康医疗大数据平台的数据完整性和有效性;③消息订阅/事件驱动:一旦数据接入完成,并进行了标准化处理后,这些服务就形成了标准化的事件。通过消息订阅机制,针对大数据平台关注的所有业务事件相对应的数据进行订阅,一旦业务系统产生了一条新的数据,集成平台就能捕获到该事件,进而实时将事件对应的数据发送给订阅方健康医疗大数据平台,最后通过大数据平台提供的接口发送到大数据平台。
(5)备份恢复:
备份恢复不需要生产系统做大调整,只需要将生产系统日常备份数据库提供给平台即可。备份数据库在提交给平台前要做好数据脱敏、加密处理,考虑到无法在生产系统脱敏、加密后导出备份数据,所以先备份生产库,然后对生产库进行异地恢复,执行脱敏、加密算法,二次备份后提交给平台。备份恢复适用于不要求秒/分钟级时效性的场景。
(6)数据同步:
数据同步利用数据库或第三方提供的数据同步工具实现生产库到平台的实时同步模式。此方案同样考虑到数据安全,需要在生产库和平台之前增加前置机,实现数据先从生产库到前置机,前置机完成数据脱敏、加密之后再同步到平台。数据同步一般采用OGG,OGG是一种基于日志的结构化数据复制软件,该软件能够实现大量交易数据的实时捕捉、变换和投递,实现源数据库与目标数据库的数据同步,保持亚秒级的数据延迟。OGG能够支持多种拓扑结构,包括一对一、一对多、多对一、层叠和双向复制等。数据同步适用于医院生产库与前置机之间的网络带宽有限,但是要求秒/分钟级时效性的场景。
(7)物化视图:
物化视图是包括一个查询结果的数据库对象,它是远程数据的本地副本。物化视图存储基于远程表的数据,也称为快照。允许数据中心通过DBLINK链接到业务系统,增加一些之前是全量采集的大数据表的物化视图,方便数据中心增量采集这些表数据。
(8)数据增量抽取:
增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。在ETL使用过程中,增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:①准确性:能够将业务系统中的变化数据按一定的频率准确地捕获到;②性能:不能对业务系统造成太大的压力,影响现有业务。目前增量数据抽取中常用的捕获变化数据的方法有:触发器方式、时间戳方式、全表删除插入方式、全表比对方式和日志表方式等。
(9)网络爬虫:
网络爬虫可用于采集互联网健康医疗大数据。网络爬虫,又称为网页蜘蛛、网络机器人,是按照一定规则自动抓取万维网信息的程序或者脚本。网络爬虫按照系统结构和实现技术可以分为以下几类:通用网络爬虫(general purpose web crawler)、聚焦网络爬虫(focused web crawler)、增量式网络爬虫(incremental web crawler)、深层网络爬虫(deep web crawler)。实际的网络爬虫系统通常是几种爬虫技术的结合。
二、大数据存储技术
1.关系型数据库
关系型数据库指采用了关系模型来组织数据的数据库,其以行和列的形式存储数据,以便于用户理解,关系型数据库这一系列的行和列被称为表,一组表组成了数据库。用户通过查询来检索数据库中的数据,而查询是一个用于限定数据库中某些区域的执行代码。关系模型可以简单理解为二维表格模型,而一个关系型数据库就是由二维表及其之间的关系组成的一个数据组织。
关系型数据库强调ACID规则:原子性(atomicity)、一致性(consistency)、隔离性(isolation)、持久性(durability)。ACID可以满足对事务性要求较高或者需要进行复杂数据查询的数据操作,而且可以充分满足数据库操作的高性能和操作稳定性的要求。并且关系型数据库十分强调数据的强一致性,对于事务的操作有很好的支持。关系型数据库可以控制事务原子性细粒度,一旦操作有误或者有需要,可以马上回滚事务。
主流的关系型数据库有Oracle、MySQL、Microsoft SQL Server、Microsoft Access等,每种数据库的语法、功能和特性也各具特色。
2.分布式文件系统
(1)Google分布式文件系统:
健康医疗大数据平台中的数据除了传统的结构化数据以外,还包括海量半结构化和非结构化数据。面对海量半结构化和非结构化数据存储,传统集中式、阵列式存储模式扩展性不强、可靠性不高、可用性不佳等缺点使其无法满足海量规模数据的存储需求,分布式文件系统的出现解决了这一问题。2003年Google发表的《The Google File System》阐述了大规模分布式文件系统的原理,极大地促进了分布式文件系统的发展。
Google分布式文件系统(Google File System,GFS)是一个构建在廉价服务器上的可扩展的大型分布式文件系统,在普通商用计算机上提供了良好的容错性,可对大量客户端提供高可用的服务。GFS体系结构如图2-8所示。GFS包括一个主节点(元数据服务器)、多个快服务器(数据服务器)以及多个客户端。每一个节点都是普通的Linux服务器,GFS的工作就是协调成百上千的服务器为各种应用提供存储服务。

图2-8 GFS体系结构
(2)Hadoop分布式文件系统:
Hadoop分布式文件系统(Hadoop Distributed File System,HDFS)是Google分布式文件系统的开源实现,是Hadoop生态系统的核心部分。HDFS作为分布式计算中数据存储管理的基础,可以运行于廉价的商用服务器上,已成为目前主流的支持大数据的分布式文件系统。
HDFS是一个典型的主从(Master/Slave)架构,由名称节点(NameNode)、第二名称节点(Secondary NameNode)及多个数据节点(DataNode)组成,可以通过目录路径对文件执行CRUD操作,为整个Hadoop生态系统提供高可靠性的底层存储支持,HDFS体系结构如图2-9所示。NameNode作为全部文件系统的核心,它是系统的管理节点,存储文件的元数据信息包括文件名、文件的目录结构、文件的属性(生成时间、副本数、文件权限等)以及每一个文件的块列表和块所在DataNode等信息。此外,还负责接收用户的操作请求。Secondary NameNode是用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS的元数据快照,用来合并Fsimage和Edits文件来更新NameNode的元数据信息。DataNode在本地文件系统存储文件块数据以及块数据的校验,文件块(block)是HDFS文件系统最基本的数据存储单位,Hadoop1.X中一个block大小为64M,而Hadoop2.X中一个block默认大小为128MB。与其他文件系统的不同之处在于HDFS中一个文件数据量不足一个数据块的大小,它便不会占用该数据块的整个存储空间。

图2-9 HDFS体系结构
HDFS具有以下特点:①处理超大文件。这里的超大文件通常是指数百MB、甚至数百TB大小的文件。目前在实际应用中HDFS已经能用来存储管理PB级的数据。②流式地访问数据。HDFS的设计建立在更多地响应“一次写入,多次读取”任务的基础之上。这意味着一个数据集一旦由数据源生成,就会被复制分发到不同的存储节点中,然后响应各种各样的数据分析任务请求。在多数情况下,分析任务都会涉及数据集中的大部分数据,即对HDFS来说,请求读取整个数据集要比读取一条记录更加高效。③可运行于廉价的商用机器集群上。Hadoop设计对硬件需求比较低,只须运行在廉价的商用硬件集群上,而无须昂贵的高可用性机器上。廉价的商用机也就意味着大型集群中出现节点故障情况的概率非常高。这就要求在设计HDFS时要充分考虑数据的可靠性、安全性及高可用性。
虽然HDFS具有诸多优点,已成为目前主流的大数据存储系统,但HDFS也存在一定的局限性:不适合低延迟数据访问、无法高效存储大量小文件以及不支持多用户写入和任意修改文件。
3.非关系型数据库
由于传统关系型数据库不具备高可扩展性,因此大数据给传统数据库带来了挑战。为了支持高扩展的数据库系统,先后产生了支持CAP理论的NoSQL数据库系统和满足ACID特性的NewSQL数据库系统。
(1)NoSQL数据库:
NoSQL数据库指非关系型的、分布式的、不保证遵循ACID原则的数据存储系统,根据存储模型和特点可分为列存储数据库、文档数据库、键值(key-value)存储数据库和图形数据库4类。典型的NoSQL产品有Google的BigTable、基于Hadoop HDFS的Hbase等。
NoSQL数据库目前在网站和项目上应用较广,因为它克服了关系型数据库无法存储非结构化和半结构化数据的缺点,具有易扩展、支持海量数据、接口定义简单、数据模型灵活、弱事务模型的优点。
1)列存储数据库:
Hbase和BigTable是列式存储数据库的典型代表。Hbase是构建在Hadoop上分布式、面向列的开源数据库,适合非结构化数据存储。Hbase利用HDFS作为其文件存储,利用Zookeeper作为其协调工具,适用于大数据的实时读写。Hbase是谷歌BigTable的开源版本,每张表可以存储几十亿的记录数(行数),每条记录可以拥有上百万字段。而这样的存储能力不需要特别的硬件,普通的PC服务器集群就可以胜任。Hbase具有高性能、高可靠、列存储、可伸缩的特点,是NoSQL数据库的代表。BigTable是谷歌设计的一个存储和处理海量数据的非关系型数据库。在表中数据以“列族”为单位组织,列族用一个单一的键值作为索引,通过这个键值,数据和对数据的操作都可以被分布到多个节点上进行。它不仅能够可靠的处理TB、PB级别的超大规模数据,而且部署在千台机器上也完全不是问题。
2)文档数据库:
文档数据库中数据存储的模式是文档,且对存储的文档数据无类型限制,可以对任意格式的字段进行存储。文档数据库较为常见的有CouchDB和MongoDB两种。CouchDB是面向文档的数据库管理系统,每一个文档都具有唯一的ID作为管理依据。CouchDB提供以JSON为数据格式的REST接口,允许应用程序读取和修改这些文档,并可以通过视图来操纵文档的组织和呈现,具有高度可扩展性、高可用性和高可靠性,就算是故障率较高的硬件也能正确、顺畅运行。MongoDB是一个文档型NoSQL产品,在非关系型数据库中它的功能最为丰富,与关系数据库最为接近,因此也最受欢迎。MongoDB主要解决的是海量数据的访问效率问题,当数据超过一定规模时,它的访问速度是关系型数据库MySQL的数十倍以上。MongoDB系统主要由Shard数据块、Mongos进程、Config服务器组成。
3)键值存储数据库:
键值存储数据库采用key-value存储模式,查询能力强大,并且可以满足大数据存储和高并发性的要求。近几年发展起来比较知名的键值存储数据库有Redis、Memcached、Voldemort等。
4)图形数据库:
图形数据库以图结构为基础,当前主要的数据库包括嵌入式图引擎Neo4j、Twitter的FlockDB和谷歌的Pregel等。其中采用Java语言开发的、开源的Neo4j是图形数据库的主要代表。与关系型数据库相比,Neo4j数据库支持并行运行、性能优越,但是也有一些缺点,例如检索算法较为复杂、对复杂的子图查询效率较低等。
(2)NewSQL数据库:
NewSQL既保留了SQL查询的方便性和传统事务操作的ACID特性,而且还可实现NoSQL系统的高吞吐率,具有高性能和高可扩展性的特点。常见的NewSQL数据库包括NuoDB、ClustrixDB、VoltDB等。NewSQL体系结构一般分为3层:管理层、事务层和存储层。管理层支持按需伸缩功能,事务层负责原子性、一致性和隔离性,存储层负责持久性。
三、大数据处理技术
1.批处理Hadoop
批处理在大数据世界有着悠久的历史,主要操作大容量静态数据集,并在计算过程完成后返回结果。由于批处理在应对大量持久数据方面的表现极为出色,因此经常被用于对历史性健康医疗大数据进行分析。大量数据的处理需要付出大量时间,所以批处理不适合对处理时间要求较高的场合。
Hadoop从出现到现在已经经历了0.X、1.X到2.X版本的迭代,其中2.X与之前所有版本最大的区别是引入了YARN资源管理模块。Hadoop2.X版本包括3个核心模块HDFS、YARN和MapReduce。其中HDFS分布式文件系统负责海量数据的存储,YARN管理系统相当于“云的操作系统”负责资源分配管理和调度,MapReduce是一个并行的离线计算框架,负责海量数据分析。Hadoop2.X核心模块如图2-10所示。
Apache Hadoop及其MapReduce处理引擎提供了一套久经考验的批处理模型,最适合处理对时间要求不高的非常大规模的数据集。通过非常低成本的组件即可搭建完整功能的Hadoop集群,使得这一廉价且高效的处理技术可以灵活应用在很多案例中。Hadoop框架的主要优势有:①扩容能力强,能够可靠存储和处理PB数据;②成本低,可以通过普通机器组成服务器集群来分发和处理数据,这些服务器集群可达数千个节点;③高效率,通过分发数据,Hadoop可以在数据所在的节点上进行并行处理,从而大幅度提高处理速度;④可靠性,分布式存储和冗余提高数据可靠性,保证数据长期可靠保存,并且在任务失败之后能够自动重新部署计算任务。

图2-10 Hadoop2.X核心模块
2.流处理Storm
以Hadoop为代表的批处理系统主要对批量静态数据进行处理,适用于海量大规模历史性数据的分析。而随着智能健康监测设备、互联网医疗等的发展,每时每刻会产生大量健康医疗大数据,这些数据的时效性很强,处理算法需要很快执行,至少在秒级,此时批处理系统不再能满足需求,以Storm为代表的流处理系统应运而生。
流处理面对的是不停更新的动态数据,处理延时很低,常被应用于构建实时系统,例如针对高血压等慢性疾病患者的实时健康监测系统、健康网站的网站流量监控分析等。流处理将数据视为源源不断的小数据集组成的数据流,当数据流流过系统时,系统不断的处理流过来的数据。
Apache Storm是一个开源的分布式实时计算系统,可以简单、可靠地处理大量数据流,而且支持水平扩展,具有高容错性。Storm把实时计算任务打包成拓扑发布,和MapReduce有一定相似性,不同之处在于MapReduce任务在得到结果后总会结束,而拓扑会在集群中一直运行直到人为终止。Storm架构是主从架构,由一个控制节点和多个工作节点组成。控制节点运行Nimbus守护进程,该进程的主要作用是对集群中的节点进行响应并进行任务的划分和分配以及对任务进行监控。每一个工作节点运行Supervisor后台进程,该进程用于接收控制节点分发的任务并根据要求运行工作进程。每个工作节点可以运行多个Worker,每个Worker是运行具体处理组件逻辑的进程。一个Worker进程又可以产生一个或多个Executor线程,一个Executor可能运行着一个相同组件的一个或多个Task。Task代表任务,每个组件处理会被当作很多Task在整个集群中运行。Nimbus和Supervisor都是无状态和快速失败的,它们之间通过Zookeeper分布式协调服务进行协调通信。Storm集群架构如图2-11所示。

图2-11 Storm集群架构
3.混合处理Spark
混合处理技术框架可以同时处理批量数据和实时数据,主要通过Spark实现。
大数据环境传统单机模式已不能处理海量数据。Hadoop虽然能处理大规模数据,但它更加擅长离线的批量数据,且耗时长。Storm主要适用于流式数据的分析,对批量数据的性能较差。Spark综合了两者的优点,既能处理流式数据又能处理批量数据,是一个新兴的针对超大数据集合的低延迟的集群分布式计算系统,比MapReduce快40倍左右,是Hadoop的升级版本。
Spark是一个快速的、通用的进行大规模数据处理的执行引擎。最初是由加州柏克莱分校Amplab所开发,相对于Hadoop的MapReduce会在运行完工作后将中间数据存放到磁盘上,Spark使用了内存运算技术。自开源以来,Spark社区极其活跃,它能够快速迭代开发,并逐渐成为自己的生态系统,该系统以Spark引擎为基础,兼容Hadoop生态系统的部分组件,支持用SQL查询Spark的工具SparkSQL、流式计算的SparkStreaming、专门针对图数据处理的GraphX和专门针对机器学习的Mlib的上层基础应用。Spark生态系统相关组件如图2-12所示。

图2-12 Spark生态系统相关组件
4.3种处理技术比较
Hadoop、Storm和Spark是目前主流的3大分布式大数据处理框架,Hadoop是由Yahoo的工程师Doug Cutting在2005年开发,后来成为Apache基金会的顶级项目,经过多年发展Hadoop及其生态圈已经日趋成熟。Hadoop分布式软件由Java开发编写,集群为典型的主从结构,擅长海量数据的存储和分析。本质上Hadoop是一个离线批处理系统,海量数据预先被持久化到它的分布式文件系统HDFS中,任务启动时,MapReduce程序会从文件系统中读取数据到集群中的各个计算节点处理,任务处理完成后,计算结果会再次返回到HDFS供用户使用,一个Job对应一个Map和Reduce操作。从计算过程来看,Hadoop是基于磁盘的操作,MapReduce的Map和Reduce操作之间的Shuffle操作需要频繁地访问磁盘,这是提高性能的瓶颈。这种离线的数据处理方式适用于对实时性和响应要求不高的应用场景,例如日志分析和机器学习等任务。
Spark起源于2009年,是AMP实验室的一个研究性项目,于2010年开源。与Hadoop的计算框架相同的是,Spark运行架构也采用典型的主从结构,都是迭代型计算和批量计算。不同的是,Spark框架是用Scala语言开发,它的核心抽象是分布式弹性数据集RDD。围绕RDD构建一系列的操作,各个操作都是基于内存的操作。与MapReduce的离线批量计算相比,Spark的计算性能比MapReduce性能提高近100倍。此外,Spark提供了多种算子操作,Transformation类型算子有Map、Filter、Flatmap等,Action类型的算子有Reduce、Collect、Count、Top等,而MapReduce只提供了Map和Reduce两个算子。Spark适用于迭代计算、交互式查询等场景。
虽然Hadoop从2.0开始支持基于Spark的内存计算,但究其本质来说仍然是基于多迭代的批量处理技术,仅仅是将处理的数据放置在内存中而已,也只能适用于秒级的准实时性场景,随着大数据处理在互联网中深入应用,对数据处理的实时性提出了更高的要求。于是出现了像Storm这样的实时流式处理系统,Storm是一个由Clojure和Java语言开发、支持多种编程语言的分布式大数据实时计算系统,它可以轻松可靠地处理数据流,2011年由Twitter开源,2014年6月成为Apache基金会的孵化项目。与Hadoop和Spark大数据解决方案相比,Storm有着不同的处理方式,本质上来看Hadoop和Spark都是批处理,当数据积攒到一定的量时进行处理,而Storm是实时处理,数据来一条就立即处理。Storm通过创建拓扑结构来处理没有终点的数据流,与Hadoop和Spark任务不同的是,这些转换工作会一直进行,持续处理数据流中新到达的数据。因此Storm系统具有高响应低延时的特点,适合实时数据分析、在线机器学习等应用场景。
从上面分析可以看出Hadoop框架适用于离线的复杂的大数据处理,Spark适用于离线的快速的大数据处理,而Storm适用在线的实时的大数据处理。Hadoop、Storm和Spark比较如表2-3所示。
表2-3 Hadoop、Storm和Spark比较

四、大数据分析技术
(1)人工神经网络:
人工神经网络(artificial neural network,ANN)是一种运算模型,由大量的节点(或称神经元)之间相互连接构成。每个节点代表一种特定的输出函数,称为激励函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,称之为权重,这相当于人工神经网络的记忆。人工神经网络是一种先进的人工智能技术,具有自身自行处理、分布存储和高容错等特性,非常适合处理非线性的以及那些模糊、不完整、不严密的知识或数据,十分适合解决大数据分析问题。
典型的神经网络模型主要分为3类:①前馈式神经网络模型用于分类预测和模式识别,代表为函数型网络、感知机。前馈式神经网络模型中各个神经元接受前一级的输入,并输出到下一级,网络中没有反馈,可以用一个有向无环路图表示。这种网络实现信号从输入空间到输出空间的变换,它的信息处理能力来自简单非线性函数的多次复合。②反馈式神经网络模型用于联想记忆和优化算法,以Hopfield的离散模型和连续模型为代表。反馈式神经网络模型内神经元间有反馈,可以用一个无向的完备图表示。这种神经网络的信息处理是状态的变换,可以用动力学系统理论处理。③自组织映射方法用于聚类,以ART模型为代表。虽然神经网络有多种模型及算法,但在特定领域的数据分析中使用何种模型及算法并没有统一的规则,而且人们很难理解网络的学习及决策过程。
各类型的人工神经网络的共同特点是大规模并行处理、分布式存储、弹性拓扑、高度冗余和非线性运算,因而具有很高的运算速度,很强的联想能力、适应性、容错能力和自组织能力。这些特点和能力构成了人工神经网络模拟智能活动的技术基础,并在诸多领域获得了广泛应用。
深度学习(deep learning,DL)的概念源于人工神经网络,可看作神经网络的延伸,在计算机视觉、语音识别、生物信息学、自然语言处理等方面应用较广。深度学习所使用的阶层ANN具有多种形态,其阶层的复杂度被通称为“深度”。按构筑类型,深度学习的形式包括多层感知神经网络、卷积神经网络、循环神经网络、深度置信网络和其他混合构筑。
(2)随机森林:
集成学习思想是为了解决单个模型或者某一组参数的模型所固有的缺陷,从而整合起更多的模型,取长补短,避免局限性。随机森林是集成学习思想下的产物,是Bagging算法的代表,它将许多棵决策树整合成森林,并合起来用来预测最终结果。随机森林以随机方式建立一个森林,森林里面有很多的决策树组成,随机森林的每一棵决策树之间是没有关联的。在得到森林后,当一个新的输入样本进入时,该算法让森林中的每一棵决策树分别进行判断,判断这个样本应该属于哪一类(对于分类算法),最后根据哪一类被选择最多就预测这个样本为那一类。在回归问题中随机森林的输出是所有决策树输出的平均值。
随机森林是一种多功能算法,可以用于分类和回归,并且对有缺失值和异常值的数据比较稳健,而且在集成学习中随机森林可以将几个低效模型整合成为一个高效模型。
随机森林有以下优点:①在当前的很多数据集上,相对其他算法有着很大的优势,随机选择数据和待选特征使得随机森林具有很好的抗噪声能力;②它能够处理很高维度的数据,并且不用做特征选择,对数据集的适应能力强,既能处理离散型数据,也能处理连续型数据,数据集无需规范化;③在创建随机森林的时候使用的是无偏估计;④训练速度快;⑤因为树与树之间是相互独立的,所以容易做成并行化方法。但是随机森林也有一些缺点:①容易产生过拟合;②对于有不同属性取值的数据,取值划分比较多的属性会对随机森林产生更大的影响。
(3)关联规则算法:
关联规则是通过关联分析找出数据中隐藏的关联,利用关联根据已知情况对未知问题进行预测,它主要反映事件之间的依赖或关联,描述数据之间的密切程度。常用的关联规则算法有Apriori算法、FP-Growth算法、Elect算法等。
Apriori算法是一种最有影响力的挖掘布尔关联规则的频繁项集的算法,它由Rakesh Agrawal和Ramakrishnan Skrikant提出。其核心思想是通过连接产生候选项及其支持度,然后通过剪枝生成频繁项集。关联规则在分类上属于单维、单层、布尔关联规则。Apriori算法适合事务数据库的关联规则挖掘和稀疏数据集,这些优点使其广泛应用于关联规则挖掘中,但是它也存在一些难以克服的缺陷,例如对数据库扫描次数过多,可能产生大量的候选项集,采用唯一支持度,没有考虑各个属性重要程度不同。
为了避免Apriori算法会产生大量候选项集,有人提出了一种不产生候选项集的方法FP-Growth算法,也称为FP-增长算法,采用分而治之的策略,对不同长度的规则都有很好的适应性。但是FP-Growth算法的内存开销很大,只能用于单维布尔关联规则的挖掘。
(4)决策树:
决策树是用于分类和预测的主要技术之一,它是以实例为基础的归纳学习算法,着眼于从一组无次序、无规则的实例中推理出以决策树表示的分类规则。构造决策树的目的是找出属性和类别间的关系,用它来预测记录的类别。它采用自顶向下的递归方式,在决策树的内部节点进行属性的比较,并根据不同属性值判断从该节点向下的分支,在决策树的叶节点得到结论。
主要的决策树算法有ID3、C4.5(C5.0)、CART、PUBLIC、SLIQ和SPRINT算法等。它们在选择测试属性时采用的技术、生成的决策树的结构、剪枝的方法以及能否处理大数据集等方面都各不相同。
(5)线性回归:
回归是监督学习的一个重要问题,可以分为线性回归和非线性回归。线性回归是利用数理统计中的回归分析来确定两种或两种以上变量间相互依赖的定量关系的一种统计分析方法,其运用十分广泛。线性回归假设特征和结果满足线性关系。其线性关系的表达能力非常强大,每个特征对结果的影响强弱可以由前面的参数体现,而且每个特征变量可以首先映射到一个函数,然后再参与线性计算。这样就可以表达特征与结果之间的非线性关系。
(6)Logistic回归:
Logistic回归又称逻辑回归,是一种广义的线性回归模型,可用于疾病智能诊断、经济预测等领域,例如探讨引发疾病的危险因素,并根据危险因素预测疾病发生的概率等。Logistic回归中自变量既可以是连续变量,也可以是分类变量,它不要求自变量和因变量是线性关系,可以处理各种类型的关系,因为它对预测的相对风险指数OR使用了一个非线性的log转换。逻辑回归广泛用于分类问题,它需要大的样本量,因为在样本数量较少的情况下,极大似然估计的效果比普通的最小二乘法差。
(7)SVM:
支持向量机(support vector machine,SVM)是Vapnik根据统计学习理论提出的一种新的学习方法,它的最大特点是根据结构风险最小化准则,以最大化分类间隔构造最优分类超平面来提高学习机的泛化能力,较好地解决了非线性、高维数、局部极小点等问题。对于分类问题,支持向量机根据区域中的样本计算该区域的决策曲面,由此确定该区域中样本的类别。
(8)贝叶斯算法:
贝叶斯分类算法是一类利用概率统计知识进行分类的算法,例如朴素贝叶斯算法。这些算法主要利用Bayes定理来预测一个未知类别的样本属于各个类别的可能性,选择其中可能性最大的一个类别作为该样本的最终类别。在许多场合,朴素贝叶斯(Naïve Bayes,NB)分类算法可以与决策树和神经网络分类算法相媲美,该算法能运用到大型数据库中,而且方法简单、分类准确率高、速度快。由于贝叶斯定理的成立本身需要一个很强的条件独立性假设前提,而此假设在实际情况中经常是不成立的,因而其分类准确性就会下降。为此出现了许多降低独立性假设的贝叶斯分类算法,例如TAN算法,它是在贝叶斯网络结构的基础上增加属性对之间的关联来实现的。
(9)K-近邻算法:
K-近邻(K-nearest neighbors,KNN)算法是一种基于实例的分类方法。该方法就是找出与未知样本X距离最近的K个训练样本,看这K个样本中多数属于哪一类,就把X归为那一类。K-近邻方法是一种懒惰学习方法,它存放样本,直到需要分类时才进行分类,如果样本集比较复杂,可能会导致很大的计算开销,因此无法应用到实时性很强的场合。
(10)K-means算法:
K-means算法是一个基于原型的划分聚类算法,通过对象间的距离评价对象间的相似度,距离越近,对象间相似度越大,反之则越小。用户需要预先指定需要划分的簇数K和每簇质心的初值,其思想如下:先选取K个数据作为K个簇的质心,计算数据集中每个对象到质心的距离,按照距离将其归类,完成后重新计算每个簇的质心,直到聚类结果不再发生变化为止。K-means聚类算法的优点主要为算法运算快速且简单,对于数据较多的数据集有较高的聚类效率,具有可伸缩性。聚类结果对质心初值的选择敏感,选用不同质心初值可能得到不同的结果。数据集中的噪点和孤立点也会影响K-means算法的聚类结果。
(11)AdaBoost算法:
AdaBoost是一种迭代算法,其核心思想是针对同一个训练集训练不同的分类器(弱分类器),然后把这些弱分类器集合起来,构成一个更强的最终分类器(强分类器)。其算法本身是通过改变数据分布来实现的,它根据每次训练集之中每个样本的分类是否正确以及上次的总体分类的准确率来确定每个样本的取值,从而自适应地改变训练样本的分布。AdaBoost采用加权多数表决的方法,加大分类误差率小的弱分类器的权重,减小分类误差率大的弱分类器的权重。
AdaBoost算法利用弱分类器进行级联,可以将不同的分类算法作为弱分类器,具有很高的精度,且相对于Bagging算法和随机森林算法,AdaBoost充分考虑了每个分类器的权重,并且不会出现过拟合。但是AdaBoost算法也有一些缺点:迭代次数也就是弱分类器数目不太好设定,数据不平衡导致分类精度下降,训练时间长。
(12)异常检测:
一个数据集中有时包含一些特别的数据,其行为和模式与大部分数据不同,这些数据被称为“异常”,对异常数据的分析称为异常检测。异常分析在欺保骗保甄别、网络入侵监测等方面有着广泛应用。异常分析算法可分为基于统计的算法、基于距离的算法、基于密度的算法和基于偏差的算法。目前常用的异常分析算法包括基于距离的DB(pct,d)异常分析算法、DnK异常分析算法以及基于密度的异常分析算法。
除以上算法外,还有许多算法也常用于健康医疗大数据的分析,例如岭回归、Lasso回归、决策树回归、遗传算法等,本书不对其进行一一介绍。