本文接上篇淺談醫(yī)學(xué)大數(shù)據(jù)(上)。
數(shù)據(jù)分析框架(傳統(tǒng)數(shù)據(jù)分析框架,大數(shù)據(jù)分析框架)
醫(yī)療大數(shù)據(jù)有著前面第一節(jié)提到的所有特征。在醫(yī)療大數(shù)據(jù)帶來各種優(yōu)勢的同時,大數(shù)據(jù)隨之帶來的各種特性使得傳統(tǒng)的數(shù)據(jù)處理和數(shù)據(jù)分析方法及軟件捉襟見肘,問題多多。在大數(shù)據(jù)時代出現(xiàn)之前,受限于數(shù)據(jù)量的可獲得性和計算能力的有限性,傳統(tǒng)的數(shù)據(jù)管理和分析采用著不同的思路和流程。傳統(tǒng)上,對于問題的研究建立在假設(shè)的基礎(chǔ)上進行驗證,進而研究事物的相關(guān)因果性,希望能回答“為什么”。
而在大數(shù)據(jù)時代,海量數(shù)據(jù)的涌現(xiàn)提供了從不同角度更細致更全面觀察研究數(shù)據(jù)的可能,從而打開了人們的好奇心,探索欲望,人們想知道到數(shù)據(jù)告訴了我什么,而不僅僅是我的猜想是否被數(shù)據(jù)驗證了。人們越來越多地用大數(shù)據(jù)挖掘各種感興趣的關(guān)聯(lián),非關(guān)聯(lián)等相關(guān)性,然后再進一步比較,分析,歸納,研究(“為什么”變成一個選項而不是唯一終極目標)。大數(shù)據(jù)與傳統(tǒng)數(shù)據(jù)思路上的不同導(dǎo)致了分析流程的不同,如圖一所示:
圖一
面對海量的數(shù)據(jù)和不同的分析思路,大數(shù)據(jù)的管理和分析與傳統(tǒng)數(shù)據(jù)分析的差異日益加大。回答特定問題的單一預(yù)設(shè)結(jié)構(gòu)化數(shù)據(jù)庫明顯不能完全勝任處理大數(shù)據(jù)的海量及混雜等問題。數(shù)據(jù)的混雜多樣性具體可以從一些調(diào)查數(shù)據(jù)中表現(xiàn)出來。SAS的一份調(diào)查報告顯示機構(gòu)內(nèi)的非結(jié)構(gòu)化數(shù)據(jù)最多可以占到總數(shù)據(jù)量的85%,而這些非數(shù)字,非結(jié)構(gòu)化的數(shù)據(jù)卻必須被量化分析和用到?jīng)Q策分析中 (Troester, 2012)。
另一份2013年進行的SAS調(diào)查報告顯示在461個提供完整反饋信息的機構(gòu)中只有26%的機構(gòu)表示他們所擁有的大數(shù)據(jù)是結(jié)構(gòu)化的 (Russom, 2013)。 此外,在機構(gòu)中,分析的數(shù)據(jù)一般不會只有一個單一的來源。Alteryx的調(diào)查報告顯示在200家被調(diào)查的機構(gòu)中只有6%的機構(gòu)表示他們的數(shù)據(jù)是只有一個來源,最為普遍的情況是5-10個來源,具體分布如圖二 (Alteryx, 2014)。
調(diào)查中還顯示90%的被調(diào)查樣本表示有數(shù)據(jù)整合問題,37%表示需要等其他小組提供數(shù)據(jù),30%表示不能得到他們想要的數(shù)據(jù),一般估計是一個數(shù)據(jù)分析師的60%到80%的時間是花在數(shù)據(jù)處理準備階段上的 (Alteryx, 2014)。
圖二
由此可見有效的數(shù)據(jù)管理,數(shù)據(jù)庫建立及數(shù)據(jù)分析流程的重要性。傳統(tǒng)的數(shù)據(jù)管理的過程包括抽取(Extraction),轉(zhuǎn)換(Transformation)和載入(load)。通過ETL,可以賦予數(shù)據(jù)一種合適恰當(dāng)?shù)慕Y(jié)構(gòu)用于特定的分析發(fā)現(xiàn)。具體數(shù)據(jù)準備分析流程如圖三所示:1)抽取單個或多個來源的數(shù)據(jù) 。2)凈化,格式化,標準化,聚合,添加,或遵循其他特定的數(shù)據(jù)處理規(guī)則。3)載入處理完的數(shù)據(jù)到特定的數(shù)據(jù)庫或儲存為特定的文件格式。4)采用各種方法進行數(shù)據(jù)分析。
圖三
ETL的中心內(nèi)容仍舊適用于大數(shù)據(jù),但由于大數(shù)據(jù)的大量性和多樣性對數(shù)據(jù)庫和數(shù)據(jù)管理及處理方法的要求越來越高,也越來越復(fù)雜,這樣線性處理整個數(shù)據(jù)變得相當(dāng)耗費人力,物力,和時間。
此外,大數(shù)據(jù)的快速性,易變性也使得把數(shù)據(jù)儲存在單一的中央數(shù)據(jù)庫變的不太可行。 在這種情況下,最流行的思路是把數(shù)據(jù)分割處理,也就是把數(shù)據(jù)儲存到多個儲存節(jié)點(比如網(wǎng)絡(luò)數(shù)據(jù)庫),在每個節(jié)點單獨處理數(shù)據(jù)(甚至處理完就接著進行初步分析,但處理的程度依客戶具體問題而調(diào)整),然后再匯總整合到一起,提供給單個或多個數(shù)據(jù)庫,接著根據(jù)需要選擇合適的分析方法獲取有用結(jié)果。ETL貫穿于整個大數(shù)據(jù)管理分析的流程中。圖四演示了大致的大數(shù)據(jù)管理分析流程及一些大數(shù)據(jù)處理分析平臺工具的名字。
圖四
SAS的數(shù)據(jù)倉庫研究院(TDWI)針對現(xiàn)今存在的大數(shù)據(jù)處理分析平臺工具進行了一項調(diào)查以幫助人們在選擇軟硬件進行大數(shù)據(jù)分析時能做出更好的決策。針對大數(shù)據(jù)技術(shù),特點,和使用者操作,調(diào)查提供了三個選擇:1)現(xiàn)在使用中,并且會繼續(xù)使用。2)會在三年中開始使用。3)沒有計劃使用。圖五左側(cè)顯示了對于各種大數(shù)據(jù)分析平臺工具,被調(diào)查人員的回復(fù)比例。圖五的右側(cè)顯示了平臺工具可能的潛在成長和對采用此工具做出承諾的被調(diào)查人員比例。
圖五
根據(jù)潛在成長和承諾的綜合考量,此調(diào)查還進一步把大數(shù)據(jù)分析平臺,工具分成4組:第一組為適度的承諾,中度到強的成長潛力;第二組為中度至強有力的承諾,適度增長潛力;第三組為弱到中度的承諾,適度增長潛力;第四組為中度至強有力的承諾,弱增長潛力。圖六顯示了這些組別的內(nèi)容分布。限于篇幅,本文不詳細介紹所列的每一平臺工具的具體內(nèi)容,感興趣的讀者可以參考文獻獲取更詳細的介紹。
圖六
圖五和圖六都顯示了最流行的平臺和數(shù)據(jù)處理方式為開源免費的Hadoop和MapReduce。伴隨著他們的潛在成長和承諾程度,可以預(yù)見,Hadoop和MapReduce正在并會繼續(xù)推動和促進大數(shù)據(jù)的處理和應(yīng)用。
在此,我們簡單介紹一下Hadoop和MapReduce的概念。Hadoop是一種基于Java的分散式數(shù)據(jù)處理框架。它可以提供對儲存在多個硬件設(shè)備上的數(shù)據(jù)進行高吞吐率的讀寫。更重要的是,它對大數(shù)據(jù)具有高容錯性 和對并行應(yīng)用程序的高可用性。Hadoop框架結(jié)構(gòu)由若干名字節(jié)點(NameNode)和數(shù)據(jù)節(jié)點(DataNode)組成。一份數(shù)以萬計,百萬計的大數(shù)據(jù)文件會被分割成更小的文件信息塊儲存在多個數(shù)據(jù)節(jié)點里,可以是任何計算機硬件設(shè)備。
有關(guān)這些文件的數(shù)據(jù)屬性資料信息稱作metadata則被存儲在名字節(jié)點里(NameNode). NameNode主要管理文件系統(tǒng)的命名空間和客戶端對文件的訪問操作記錄。Hadoop的框架結(jié)構(gòu)如圖七:
圖七
當(dāng)訪問和操作數(shù)據(jù)文件時,客戶端會聯(lián)系名字節(jié)點提取文件信息塊的屬性信息比如位置,文件名等。然后根據(jù)這些屬性信息,客戶端直接從相應(yīng)的數(shù)據(jù)節(jié)點同時讀取數(shù)據(jù)塊。Hadoop本身具有冗余和復(fù)制功能,保證在單個硬件儲存設(shè)備出現(xiàn)故障時數(shù)據(jù)仍舊能被恢復(fù)而沒有任何損失,比如每個數(shù)據(jù)節(jié)點默認擁有3個備份之類。
此外,在有新數(shù)據(jù)節(jié)點添加到框架中時,Hadoop還可以自動平衡每個數(shù)據(jù)節(jié)點的數(shù)據(jù)載有量。同樣,名字節(jié)點也可以擁有冗余和復(fù)制功能,用于在單個儲存數(shù)據(jù)屬性信息的名字節(jié)點出現(xiàn)故障時可以恢復(fù)相應(yīng)的數(shù)據(jù)屬性信息。
MapReduce則是一種可以用來并行處理大數(shù)據(jù)的編程模型。同一程序在Hadoop的框架下可以用各種不同的語言(Java,Ruby,Python等)按MapReduce的編程模型進行編寫和運行。其關(guān)鍵就在于三個詞: map,reduce, 和并行處理。我們通過一個例子來理解MapReduce的大致工作原理。比如我們有一30個字的字符串“開落花纏落花繞纏開繞笑瓜夜村村舍舍瓜夜藤繞下下藤繞嬉嬉笑娃娃”,任務(wù)是計算每個字出現(xiàn)的次數(shù)。
最簡單的方法是按序讀取每一個字建立標識索引并計算出現(xiàn)的次數(shù)值存入內(nèi)存,如果是新字,值為1,如果是出現(xiàn)過的字則次數(shù)值累加上去。此種方式是按串行的方式進行的,所花的時間會隨著字符串的長度和復(fù)雜度程線性增長。當(dāng)字符串是以萬計百萬計時,比如基因組數(shù)據(jù),所花的時間將是相當(dāng)驚人的。 并行處理則能節(jié)約相當(dāng)多的時間。
我們先把原文件分割到幾個小文件塊,然后對每個小文件塊進行字的標識索引和附加數(shù)值(這兒不進行累計,只是簡單的單次點數(shù)),然后再排序重組把相同字放在一起,然后我們再用縮減法計算出字及其相應(yīng)的出現(xiàn)次數(shù)值。圖八顯示了具體的例子步驟:
圖八