資料分析框架(傳統資料分析框架,大資料分析框架)

醫療大資料有著前面第一節提到的所有特徵。在醫療大資料帶來各種優勢的同時,大資料隨之帶來的各種特性使得傳統的資料處理和資料分析方法及軟體捉襟見肘,問題多多。在大資料時代出現之前,受限於資料量的可獲得性和計算能力的有限性,傳統的資料管理和分析採用著不同的思路和流程。傳統上,對於問題的研究建立在假設的基礎上進行驗證,進而研究事物的相關因果性,希望能回答“為什麼”。

而在大資料時代,海量資料的湧現提供了從不同角度更細緻更全面觀察研究資料的可能,從而開啟了人們的好奇心,探索慾望,人們想知道到資料告訴了我什麼,而不僅僅是我的猜想是否被資料驗證了。人們越來越多地用大資料探勘各種感興趣的關聯,非關聯等相關性,然後再進一步比較,分析,歸納,研究(“為什麼”變成一個選項而不是唯一終極目標)。大資料與傳統資料思路上的不同導致了分析流程的不同,如圖一所示:

圖一

1e4a22a96aa4e3e8895da90b2205245a

面對海量的資料和不同的分析思路,大資料的管理和分析與傳統資料分析的差異日益加大。回答特定問題的單一預設結構化資料庫明顯不能完全勝任處理大資料的海量及混雜等問題。資料的混雜多樣性具體可以從一些調查資料中表現出來。SAS 的一份調查報告顯示機構內的非結構化資料最多可以佔到總資料量的 85%,而這些非數字,非結構化的資料卻必須被量化分析和用到決策分析中 (Troester, 2012)。

另一份 2013 年進行的 SAS 調查報告顯示在 461 個提供完整反饋資訊的機構中只有 26% 的機構表示他們所擁有的大資料是結構化的 (Russom, 2013)。 此外,在機構中,分析的資料一般不會只有一個單一的來源。Alteryx 的調查報告顯示在 200 家被調查的機構中只有 6% 的機構表示他們的資料是隻有一個來源,最為普遍的情況是 5-10 個來源, 具體分佈如圖二 (Alteryx, 2014)。

調查中還顯示 90% 的被調查樣本表示有資料整合問題,37% 表示需要等其他小組提供資料,30% 表示不能得到他們想要的資料,一般估計是一個資料分析師的 60% 到 80% 的時間是花在資料處理準備階段上的 (Alteryx, 2014)。

圖二

38a80e3776e4e9974dd798eeceac7d41

由此可見有效的資料管理,資料庫建立及資料分析流程的重要性。傳統的資料管理的過程包括抽取(Extraction),轉換(Transformation)和載入(load)。通過 ETL,可以賦予資料一種合適恰當的結構用於特定的分析發現。具體資料準備分析流程如圖三所示:1)抽取單個或多個來源的資料 。2)淨化,格式化,標準化,聚合,新增,或遵循其他特定的資料處理規則。3)載入處理完的資料到特定的資料庫或儲存為特定的檔案格式。4)採用各種方法進行資料分析。

圖三

e7c7aace3e9270bb8ef069e83514fa04

ETL 的中心內容仍舊適用於大資料,但由於大資料的大量性和多樣性對資料庫和資料管理及處理方法的要求越來越高,也越來越複雜,這樣線性處理整個資料變得相當耗費人力,物力,和時間。

此外,大資料的快速性,易變性也使得把資料儲存在單一的中央資料庫變的不太可行。 在這種情況下,最流行的思路是把資料分割處理,也就是把資料儲存到多個儲存節點(比如網路資料庫),在每個節點單獨處理資料(甚至處理完就接著進行初步分析, 但處理的程度依客戶具體問題而調整),然後再彙總整合到一起,提供給單個或多個資料庫,接著根據需要選擇合適的分析方法獲取有用結果。ETL 貫穿於整個大資料管理分析的流程中。圖四演示了大致的大資料管理分析流程及一些大資料處理分析平臺工具的名字。

圖四

14f9484f139df78c9ae14579919756de

SAS的資料倉儲研究院(TDWI)針對現今存在的大資料處理分析平臺工具進行了一項調查以幫助人們在選擇軟硬體進行大資料分析時能做出更好的決策。針對大資料技術,特點,和使用者操作,調查提供了三個選擇:1)現在使用中,並且會繼續使用。2)會在三年中開始使用。3)沒有計劃使用。圖五左側顯示了對於各種大資料分析平臺工具,被調查人員的回覆比例。圖五的右側顯示了平臺工具可能的潛在成長和對採用此工具做出承諾的被調查人員比例。

圖五

9a32dc0384221dd4b3eb638af41e32ee

根據潛在成長和承諾的綜合考量,此調查還進一步把大資料分析平臺, 工具分成 4 組:第一組為適度的承諾,中度到強的成長潛力;第二組為中度至強有力的承諾,適度增長潛力;第三組為弱到中度的承諾,適度增長潛力;第四組為中度至強有力的承諾,弱增長潛力。圖六顯示了這些組別的內容分佈。限於篇幅,本文不詳細介紹所列的每一平臺工具的具體內容,感興趣的讀者可以參考文獻獲取更詳細的介紹。

圖六

1c50623e44695d8788b19ce1123364ce

圖五和圖六都顯示了最流行的平臺和資料處理方式為開源免費的 Hadoop 和 MapReduce。伴隨著他們的潛在成長和承諾程度,可以預見,Hadoop 和 MapReduce 正在並會繼續推動和促進大資料的處理和應用。

在此,我們簡單介紹一下 Hadoop 和 MapReduce 的概念。Hadoop 是一種基於 Java 的分散式資料處理框架。它可以提供對儲存在多個硬體裝置上的資料進行高吞吐率的讀寫。更重要的是,它對大資料具有高容錯性 和對並行應用程式的高可用性。Hadoop 框架結構由若干名位元組點(NameNode)和資料節點(DataNode)組成。一份數以萬計,百萬計的大資料檔案會被分割成更小的檔案資訊塊儲存在多個資料節點裡,可以是任何計算機硬體裝置。

有關這些檔案的資料屬性資料資訊稱作 metadata 則被儲存在名位元組點裡(NameNode). NameNode 主要管理檔案系統的名稱空間和客戶端對檔案的訪問操作記錄。Hadoop 的框架結構如圖七:

圖七

eacba18caf988119d9fb869f6762f7c4

當訪問和運算元據檔案時,客戶端會聯絡名位元組點提取檔案資訊塊的屬性資訊比如位置,檔名等。然後根據這些屬性資訊,客戶端直接從相應的資料節點同時讀取資料塊。Hadoop 本身具有冗餘和複製功能,保證在單個硬體儲存裝置出現故障時資料仍舊能被恢復而沒有任何損失,比如每個資料節點預設擁有 3 個備份之類。

此外,在有新資料節點新增到框架中時,Hadoop 還可以自動平衡每個資料節點的資料載有量。同樣,名位元組點也可以擁有冗餘和複製功能,用於在單個儲存資料屬性資訊的名位元組點出現故障時可以恢復相應的資料屬性資訊。

MapReduce 則是一種可以用來並行處理大資料的程式設計模型。同一程式在 Hadoop 的框架下可以用各種不同的語言(Java,Ruby,Python 等)按 MapReduce 的程式設計模型進行編寫和執行。其關鍵就在於三個詞: map,reduce, 和並行處理。我們通過一個例子來理解 MapReduce 的大致工作原理。比如我們有一 30 個字的字串“開落花纏落花繞纏開繞笑瓜夜村村舍舍瓜夜藤繞下下藤繞嬉嬉笑娃娃”,任務是計算每個字出現的次數。

最簡單的方法是按序讀取每一個字建立標識索引並計算出現的次數值存入記憶體,如果是新字,值為 1,如果是出現過的字則次數值累加上去。此種方式是按序列的方式進行的,所花的時間會隨著字串的長度和複雜度程線性增長。當字串是以萬計百萬計時,比如基因組資料,所花的時間將是相當驚人的。 並行處理則能節約相當多的時間。

我們先把原檔案分割到幾個小檔案塊,然後對每個小檔案塊進行字的標識索引和附加數值(這兒不進行累計,只是簡單的單次點數),然後再排序重組把相同字放在一起,然後我們再用縮減法計算出字及其相應的出現次數值。圖八顯示了具體的例子步驟:

圖八

77dcafb08d73076061670127bdd42da7

本文作者陳遵秋,美國俄勒岡州,健康科技大學,公共衛生預防系,美國統計協會認證統計分析師;陳漪伊,美國俄勒岡州,健康科技大學,公共衛生預防系,生物統計助理教授(交流微訊號:2823095726)

via:36kr