本文作者陈遵秋,美国俄勒冈州,健康科技大学,公共卫生预防系,美国统计协会认证统计分析师;陈漪伊,美国俄勒冈州,健康科技大学,公共卫生预防系,生物统计助理教授(交流微信号:2823095726)

数据分析框架(传统数据分析框架,大数据分析框架)

医疗大数据有着前面第一节提到的所有特征。在医疗大数据带来各种优势的同时,大数据随之带来的各种特性使得传统的数据处理和数据分析方法及软件捉襟见肘,问题多多。在大数据时代出现之前,受限于数据量的可获得性和计算能力的有限性,传统的数据管理和分析采用着不同的思路和流程。传统上,对于问题的研究建立在假设的基础上进行验证,进而研究事物的相关因果性,希望能回答“为什么”。

而在大数据时代,海量数据的涌现提供了从不同角度更细致更全面观察研究数据的可能,从而打开了人们的好奇心,探索欲望,人们想知道到数据告诉了我什么,而不仅仅是我的猜想是否被数据验证了。人们越来越多地用大数据挖掘各种感兴趣的关联,非关联等相关性,然后再进一步比较,分析,归纳,研究(“为什么”变成一个选项而不是唯一终极目标)。大数据与传统数据思路上的不同导致了分析流程的不同,如图一所示:

面对海量的数据和不同的分析思路,大数据的管理和分析与传统数据分析的差异日益加大。回答特定问题的单一预设结构化数据库明显不能完全胜任处理大数据的海量及混杂等问题。数据的混杂多样性具体可以从一些调查数据中表现出来。SAS 的一份调查报告显示机构内的非结构化数据最多可以占到总数据量的 85%,而这些非数字,非结构化的数据却必须被量化分析和用到决策分析中 (Troester, 2012)。

另一份 2013 年进行的 SAS 调查报告显示在 461 个提供完整反馈信息的机构中只有 26% 的机构表示他们所拥有的大数据是结构化的 (Russom, 2013)。 此外,在机构中,分析的数据一般不会只有一个单一的来源。Alteryx 的调查报告显示在 200 家被调查的机构中只有 6% 的机构表示他们的数据是只有一个来源,最为普遍的情况是 5-10 个来源, 具体分布如图二 (Alteryx, 2014)。

调查中还显示 90% 的被调查样本表示有数据整合问题,37% 表示需要等其他小组提供数据,30% 表示不能得到他们想要的数据,一般估计是一个数据分析师的 60% 到 80% 的时间是花在数据处理准备阶段上的 (Alteryx, 2014)。

由此可见有效的数据管理,数据库建立及数据分析流程的重要性。传统的数据管理的过程包括抽取(Extraction),转换(Transformation)和载入(load)。通过 ETL,可以赋予数据一种合适恰当的结构用于特定的分析发现。具体数据准备分析流程如图三所示:1)抽取单个或多个来源的数据 。2)净化,格式化,标准化,聚合,添加,或遵循其他特定的数据处理规则。3)载入处理完的数据到特定的数据库或储存为特定的文件格式。4)采用各种方法进行数据分析。

ETL 的中心内容仍旧适用于大数据,但由于大数据的大量性和多样性对数据库和数据管理及处理方法的要求越来越高,也越来越复杂,这样线性处理整个数据变得相当耗费人力,物力,和时间。

此外,大数据的快速性,易变性也使得把数据储存在单一的中央数据库变的不太可行。 在这种情况下,最流行的思路是把数据分割处理,也就是把数据储存到多个储存节点(比如网络数据库),在每个节点单独处理数据(甚至处理完就接着进行初步分析, 但处理的程度依客户具体问题而调整),然后再汇总整合到一起,提供给单个或多个数据库,接着根据需要选择合适的分析方法获取有用结果。ETL 贯穿于整个大数据管理分析的流程中。图四演示了大致的大数据管理分析流程及一些大数据处理分析平台工具的名字。

SAS的数据仓库研究院(TDWI)针对现今存在的大数据处理分析平台工具进行了一项调查以帮助人们在选择软硬件进行大数据分析时能做出更好的决策。针对大数据技术,特点,和使用者操作,调查提供了三个选择:1)现在使用中,并且会继续使用。2)会在三年中开始使用。3)没有计划使用。图五左侧显示了对于各种大数据分析平台工具,被调查人员的回复比例。图五的右侧显示了平台工具可能的潜在成长和对采用此工具做出承诺的被调查人员比例。

根据潜在成长和承诺的综合考量,此调查还进一步把大数据分析平台, 工具分成 4 组:第一组为适度的承诺,中度到强的成长潜力;第二组为中度至强有力的承诺,适度增长潜力;第三组为弱到中度的承诺,适度增长潜力;第四组为中度至强有力的承诺,弱增长潜力。图六显示了这些组别的内容分布。限于篇幅,本文不详细介绍所列的每一平台工具的具体内容,感兴趣的读者可以参考文献获取更详细的介绍。

图五和图六都显示了最流行的平台和数据处理方式为开源免费的 Hadoop 和 MapReduce。伴随着他们的潜在成长和承诺程度,可以预见,Hadoop 和 MapReduce 正在并会继续推动和促进大数据的处理和应用。

在此,我们简单介绍一下 Hadoop 和 MapReduce 的概念。Hadoop 是一種基于 Java 的分散式数据处理框架。它可以提供对储存在多个硬件设备上的数据进行高吞吐率的读写。更重要的是,它对大数据具有高容错性 和对并行应用程序的高可用性。Hadoop 框架结构由若干名字节点(NameNode)和数据节点(DataNode)组成。一份数以万计,百万计的大数据文件会被分割成更小的文件信息块储存在多个数据节点里,可以是任何计算机硬件设备。

有关这些文件的数据属性资料信息称作 metadata 则被存储在名字节点里(NameNode). NameNode 主要管理文件系统的命名空间和客户端对文件的访问操作记录。Hadoop 的框架结构如图七:

当访问和操作数据文件时,客户端会联系名字节点提取文件信息块的属性信息比如位置,文件名等。然后根据这些属性信息,客户端直接从相应的数据节点同时读取数据块。Hadoop 本身具有冗余和复制功能,保证在单个硬件储存设备出现故障时数据仍旧能被恢复而没有任何损失,比如每个数据节点默认拥有 3 个备份之类。

此外,在有新数据节点添加到框架中时,Hadoop 还可以自动平衡每个数据节点的数据载有量。同样,名字节点也可以拥有冗余和复制功能,用于在单个储存数据属性信息的名字节点出现故障时可以恢复相应的数据属性信息。

MapReduce 则是一种可以用来并行处理大数据的编程模型。同一程序在 Hadoop 的框架下可以用各种不同的语言(Java,Ruby,Python 等)按 MapReduce 的编程模型进行编写和运行。其关键就在于三个词: map,reduce, 和并行处理。我们通过一个例子来理解 MapReduce 的大致工作原理。比如我们有一 30 个字的字符串“开落花缠落花绕缠开绕笑瓜夜村村舍舍瓜夜藤绕下下藤绕嬉嬉笑娃娃”,任务是计算每个字出现的次数。

最简单的方法是按序读取每一个字建立标识索引并计算出现的次数值存入内存,如果是新字,值为 1,如果是出现过的字则次数值累加上去。此种方式是按串行的方式进行的,所花的时间会随着字符串的长度和复杂度程线性增长。当字符串是以万计百万计时,比如基因组数据,所花的时间将是相当惊人的。 并行处理则能节约相当多的时间。

我们先把原文件分割到几个小文件块,然后对每个小文件块进行字的标识索引和附加数值(这儿不进行累计,只是简单的单次点数),然后再排序重组把相同字放在一起,然后我们再用缩减法计算出字及其相应的出现次数值。图八显示了具体的例子步骤:

发表/查看评论