分布式計算、云計算與大數(shù)據(jù) 第2版 課件 第10章 實時醫(yī)療大數(shù)據(jù)分析案例_第1頁
分布式計算、云計算與大數(shù)據(jù) 第2版 課件 第10章 實時醫(yī)療大數(shù)據(jù)分析案例_第2頁
分布式計算、云計算與大數(shù)據(jù) 第2版 課件 第10章 實時醫(yī)療大數(shù)據(jù)分析案例_第3頁
分布式計算、云計算與大數(shù)據(jù) 第2版 課件 第10章 實時醫(yī)療大數(shù)據(jù)分析案例_第4頁
分布式計算、云計算與大數(shù)據(jù) 第2版 課件 第10章 實時醫(yī)療大數(shù)據(jù)分析案例_第5頁
已閱讀5頁,還剩56頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

第10章實時醫(yī)療大數(shù)據(jù)分析案例提綱案例背景與需求概述設(shè)計方案環(huán)境準備實現(xiàn)方法不足與擴展習題與參考文獻案例背景與需求概述目前我國的醫(yī)療行業(yè)現(xiàn)狀是,優(yōu)質(zhì)醫(yī)療資源集中在大城市,地方以及偏遠地區(qū)醫(yī)療條件較差,醫(yī)療資源的配置不合理,導致了大量的長尾需求,催生了廣闊的互聯(lián)網(wǎng)醫(yī)療市場。在此背景下,互聯(lián)網(wǎng)的“連接”屬性得以發(fā)揮,有效提高了長尾市場的信息流通,降低了產(chǎn)品擴大受眾群的成本,而大數(shù)據(jù)技術(shù)的應(yīng)用能夠使得醫(yī)療服務(wù)更加完善和精準。醫(yī)療大數(shù)據(jù)的應(yīng)用主要指的是將各個層次的醫(yī)療信息和數(shù)據(jù),利用互聯(lián)網(wǎng)以及大數(shù)據(jù)技術(shù)進行挖掘和分析,為醫(yī)療服務(wù)的提升提供有價值的依據(jù),使醫(yī)療行業(yè)運營更高效,服務(wù)更精準,最終降低患者的醫(yī)療支出。本案例將先介紹某中醫(yī)院的醫(yī)療大數(shù)據(jù)分析需求,然后采用多種大數(shù)據(jù)技術(shù)組件,形成一套從ETL、非格式化存儲、大數(shù)據(jù)挖掘分析以及可視化等一系列數(shù)據(jù)解決方案。

案例背景與需求概述以心臟病臨床診斷數(shù)據(jù)為處理對象通過對以往的病例進行歸類打標簽,預先評估出一些用以模型訓練的病理數(shù)據(jù)利用大數(shù)據(jù)分析引擎(Hadoop、Spark等)計算出病理分類決策模型,再利用實時大數(shù)據(jù)平臺建立實時大數(shù)據(jù)處理原型,對前端數(shù)據(jù)源傳送過來的新病例,加以預測評估,演示包括平臺建立、模型訓練及評估等多項內(nèi)容分類模型選擇隨機森林算法,心臟病臨床診斷數(shù)據(jù)包括十三個醫(yī)療診斷屬性案例背景與需求概述數(shù)據(jù)來源:/ml/machine-learning-databases/heart-disease/本實例使用的是processed.cleveland.data文檔中的數(shù)據(jù),先將數(shù)據(jù)保存到本地桌面data.txt文件以待后用,數(shù)據(jù)的部分截圖如下:案例背景與需求概述案例背景與需求概述案例目標需要實現(xiàn)如下幾個功能:(1)使用ETL工具將病理數(shù)據(jù)導入HDFS,作為訓練數(shù)據(jù);(2)基于SparkMLlib的RandomForests算法從病理數(shù)據(jù)中訓練分類模型;(3)模擬數(shù)據(jù)源向Kafka傳送測試實例;(4)通過SparkStreaming從Kafka中接收該實例,并交給分類模型做出決策,預測結(jié)果。整個流程以HDFS為中心存儲、中間結(jié)果存儲,中間輸出結(jié)果以及最終結(jié)果都存儲在HDFS,由ETL工具轉(zhuǎn)存到其他存儲系統(tǒng)中。提綱案例背景與需求概述設(shè)計方案環(huán)境準備實現(xiàn)方法不足與擴展習題與參考文獻實時醫(yī)療大數(shù)據(jù)分析方案設(shè)計案例流程圖設(shè)計方案實時醫(yī)療大數(shù)據(jù)分析方案設(shè)計ETL流程圖ETL實時醫(yī)療大數(shù)據(jù)分析方案設(shè)計非格式化存儲以HDFS、HBase等分布式存儲系統(tǒng)為核心存儲,通過ETL傳輸工具,例如Sqoop、Kettle等將非格式化數(shù)據(jù),如網(wǎng)站日志、服務(wù)器日志等從磁盤存儲直接導入到HDFS,并通過Hive等查詢工具建立基本的格式化結(jié)構(gòu);也能將原關(guān)系數(shù)據(jù)庫中存儲的格式化數(shù)據(jù),以文本形式或以Sequence結(jié)構(gòu)的二進制數(shù)據(jù)存儲在HDFS中。實時醫(yī)療大數(shù)據(jù)分析方案設(shè)計流處理流處理流程圖實時醫(yī)療大數(shù)據(jù)分析方案設(shè)計訓練模型與結(jié)果預測基于心臟病臨床數(shù)據(jù)的檢測模型,以RandomForests為分類模型,從病例數(shù)據(jù)中訓練出病理預估模型,并通過錯誤率,MSE等指標量化模型評估。然后根據(jù)訓練好的模型對測試數(shù)據(jù)進行分析與評估,并給出預測的結(jié)果。提綱案例背景與需求概述設(shè)計方案環(huán)境準備實現(xiàn)方法不足與擴展習題與參考文獻實時醫(yī)療大數(shù)據(jù)分析環(huán)境準備

本例使用Ambari進行整個大數(shù)據(jù)平臺的搭建。正如其官網(wǎng)介紹而言,ApacheAmbari項目旨在通過開發(fā)用于配置,管理和監(jiān)控ApacheHadoop集群的軟件,使管理Hadoop集群更方便簡單。Ambari供了一個直觀的,易于使用的Hadoop管理WebUI,在此之上,可以創(chuàng)建、管理、監(jiān)視Hadoop的集群,這里的Hadoop是廣義的,指的是Hadoop整個生態(tài)圈(例如Hive,Hbase,Sqoop,Zookeeper,Spark等),而并不僅是特指Hadoop。用一句話來說,Ambari就是為了讓Hadoop以及相關(guān)的大數(shù)據(jù)軟件更容易使用的一個工具。建議:安裝Ambari時建議自行搭建一個本地庫(localrepository)進行安裝,官方文檔中有介紹,這里就不再詳述。實時醫(yī)療大數(shù)據(jù)分析環(huán)境準備

集群架構(gòu)圖實時醫(yī)療大數(shù)據(jù)分析環(huán)境準備

節(jié)點規(guī)劃實時醫(yī)療大數(shù)據(jù)分析環(huán)境準備

節(jié)點規(guī)劃實時醫(yī)療大數(shù)據(jù)分析環(huán)境準備

軟件選型提綱案例背景與需求概述設(shè)計方案環(huán)境準備實現(xiàn)方法不足與擴展習題與參考文獻實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

經(jīng)過上面三個部分的說明,相信都已經(jīng)明白了本案例的基本設(shè)計方案以及完成了整體環(huán)境的搭建,那么這一節(jié)就將脫離“紙上談兵”,開始最關(guān)鍵的實踐部分。首先,我們將一開始下載并保存好的data.txt病理數(shù)據(jù)經(jīng)過ETL工具處理,最終將數(shù)據(jù)存儲到HDFS中,作為訓練數(shù)據(jù)集。接著,通過實現(xiàn)一個程序,模擬Kafka與SparkStreaming的交互,SparkStreaming將從Kafka處讀取數(shù)據(jù)并最終存儲到HDFS中,作為測試數(shù)據(jù)集。最后,通過使用SparkMLlib,根據(jù)訓練數(shù)據(jù)集進行模型訓練,然后利用訓練好的模型對測試數(shù)據(jù)集進行預測,并將最終預測結(jié)果存儲到HDFS中。這就是我們整個實現(xiàn)的流程,將分為3個環(huán)節(jié)進行,具體可見下文。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS本環(huán)節(jié)是ETL環(huán)節(jié),即使用ETL工具對原始數(shù)據(jù)(data.txt)進行清理并導入到HDFS中,所以這個環(huán)節(jié)的內(nèi)容可以概括為兩點:(1)清理:源病理數(shù)據(jù)中有些記錄的某個字段含有“?”,會對后面的模型訓練產(chǎn)生影響,因而需要把這部分數(shù)據(jù)清理掉;(2)導入:將清理后的數(shù)據(jù)導入到HDFS中,作為訓練數(shù)據(jù)集。流行的ETL工具有很多,這里我們將使用Kettle。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(1)新建“轉(zhuǎn)換”實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(2)配置Hadoop集群信息

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(3)配置“輸入”與“輸出”

在核心對象-->輸入這個地方拖出一個“文本文件輸入”,在“BigData”目錄下拖出“HadoopFileOutput”,如圖:實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(3)配置“輸入”與“輸出”

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(3)配置“輸入”與“輸出”

(3)配置“輸入”與“輸出”

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(3)配置“輸入”與“輸出”

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(3)配置“輸入”與“輸出”

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(3)配置“輸入”與“輸出”

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(4)執(zhí)行“轉(zhuǎn)換”

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

使用Kettle/Sqoop等ETL工具,將數(shù)據(jù)導入HDFS(5)查看導入后的結(jié)果

前面我們把數(shù)據(jù)導入到了路徑/data/test/data.txt中,現(xiàn)在來看一下HDFS中的這個文件是否存在,如下:可見確實有一個data.txt文件,繼續(xù)看一下文件的內(nèi)容:實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件本環(huán)節(jié)是Kafka與SparkStreaming交互的環(huán)節(jié),我們將實現(xiàn)一個程序,實現(xiàn)SparkStreaming從Kafka處讀取數(shù)據(jù)并最終存儲到HDFS中,作為測試數(shù)據(jù)集,以便最后的預測使用。在這個環(huán)節(jié)中,我們將會有兩大部分內(nèi)容:(1)測試前面到的環(huán)境搭建時安裝的Kafka集群是否能夠正常運作;(2)創(chuàng)建Kafkaproducer,輸入測試數(shù)據(jù),SparkStreaming從Kafka處讀取數(shù)據(jù)并最終存儲到HDFS,模擬讀取“醫(yī)療數(shù)據(jù)”的過程。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(1)下載用例程序相關(guān)jar包

本實例用到的jar包為:spark-streaming-kafka_2.10-1.5.2.jar,

kafka_2.10-.3.4.51-1.jar,metrics-core-2.2.0.jar,zkclient-0.7.jar實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(2)程序代碼解析

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(3)測試Kafka集群

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(3)測試Kafka集群

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(3)測試Kafka集群

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(3)測試Kafka集群

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(4)SparkStreaming從Kafka讀取數(shù)據(jù),并存儲到HDFS

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(4)SparkStreaming從Kafka讀取數(shù)據(jù),并存儲到HDFS

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(4)SparkStreaming從Kafka讀取數(shù)據(jù),并存儲到HDFS

Spark啟動好了之后,可以鍵入“:paste”命令,這樣就可以把我們寫好的程序直接復制粘貼上去,建議先在文檔編輯器或IDE上先寫好程序,再把代碼復制到Sparkshell上運行,鍵入Ctrl-D后程序開始運行(當然,也可以一步一步執(zhí)行代碼段):實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(4)SparkStreaming從Kafka讀取數(shù)據(jù),并存儲到HDFS

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(4)SparkStreaming從Kafka讀取數(shù)據(jù),并存儲到HDFS

切回到Sparkshell中,可以看到在時間戳為1482652780000ms時,讀到數(shù)據(jù)實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(4)SparkStreaming從Kafka讀取數(shù)據(jù),并存儲到HDFS

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkStreaming開發(fā)Kafka連接器組件(4)SparkStreaming從Kafka讀取數(shù)據(jù),并存儲到HDFS

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

完成了上面兩個環(huán)節(jié)的實踐后,此時HDFS中已經(jīng)有了兩種數(shù)據(jù)集:訓練數(shù)據(jù)集以及“實時醫(yī)療數(shù)據(jù)集”(即測試數(shù)據(jù)集),那么接下來就將圍繞這兩種數(shù)據(jù)集進行實現(xiàn)了。這個環(huán)節(jié)的主要內(nèi)容為:

(1)利用訓練數(shù)據(jù)集訓練模型;(2)使用模型對測試數(shù)據(jù)集進行結(jié)果預測,最終將結(jié)果保存至HDFS中。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(1)程序代碼解析

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(1)程序代碼解析

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(1)程序代碼解析

實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(2)隨機森林算法

在機器學習中,隨機森林是一個包含多個決策樹的分類器,并且其輸出的類別是由個別樹輸出的類別的眾數(shù)而定。隨機森林算法的基本原理:由多個決策樹構(gòu)成的森林,算法分類結(jié)果由這些決策樹投票得到,決策樹在生成的過程當中分別在行方向和列方向上添加隨機過程,行方向上構(gòu)建決策樹時采用放回抽樣(bootstraping)得到訓練數(shù)據(jù),列方向上采用無放回隨機抽樣得到特征子集,并據(jù)此得到其最優(yōu)切分點。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(3)模型訓練及預測結(jié)果

在master主機上啟動Spark主節(jié)點以及從節(jié)點,接著以hdfs身份啟動Spark,唯一不一樣的在于無需使用參數(shù)—jars。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(3)模型訓練及預測結(jié)果

那么現(xiàn)在就可以開始進行模型的訓練了,鍵入“:paste”命令后,輸入訓練模型代碼段。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(3)模型訓練及預測結(jié)果

可以看到,模型的錯誤率以及MSE值分別為:0.2與0.08551619373301012,這個訓練的結(jié)果的還是挺不錯的。注意:這里的模型其實是可以保存起來,以后可以進行加載使用的,所以當我們覺得某次訓練的模型很不錯時,可以選擇將其保存起來。給出參考指令:model.save(sc,"myModelPath")

valsameModel=RandomForestModel.load(sc,"myModelPath")實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(3)模型訓練及預測結(jié)果

那么接下來開始使用模型對測試數(shù)據(jù)進行預測評估,并保存到HDFS上。實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

基于SparkMLlib開發(fā)數(shù)據(jù)挖掘組件

(3)模型訓練及預測結(jié)果

那么接下來開始使用模型對測試數(shù)據(jù)進行預測評估,并保存到HDFS上。提綱案例背景與需求概述設(shè)計方案環(huán)境準備實現(xiàn)方法不足與擴展習題與參考文獻實時醫(yī)療大數(shù)據(jù)分析實現(xiàn)方法

不足與擴展

(1)本案例中的數(shù)據(jù)集的數(shù)據(jù)量相對較小,建議讀者可以嘗試使用數(shù)據(jù)量更大的數(shù)據(jù)集進行實踐,一般而言,訓練數(shù)據(jù)集越大,訓練后模型的可靠性越高。(2)讀者可以自行編寫程序,實現(xiàn)比如按時間間隔反復向Kafka“生產(chǎn)”數(shù)據(jù)的功能,模擬實際的生產(chǎn)環(huán)境,達到真正“實時”效果;(3)請嘗試使用其他應(yīng)用與Kafka進行交互;(4)除了隨機森林算法外,思考是否還有其它方法進行數(shù)據(jù)的預測與分析;(5)案例只演示了導入數(shù)據(jù)到HDFS,同樣的,可以嘗試從HDFS導出數(shù)據(jù),譬如將最后HDFS的預測結(jié)果利用ETL工具等導出到數(shù)據(jù)庫或者其它文件系統(tǒng)中,使用用戶友好的方式展示結(jié)果,比如網(wǎng)頁展示等。提綱案例背景與需求概述設(shè)計方案環(huán)境準備實現(xiàn)方法不足與擴展習題與參考文獻習題與參考文獻習題

1.實時醫(yī)療大數(shù)據(jù)分析的核心預測模型是什么?

2.請根據(jù)教材內(nèi)容重現(xiàn)思考實時醫(yī)療大數(shù)據(jù)分析的實現(xiàn)程序。3.請總結(jié)實時醫(yī)療大數(shù)據(jù)分析的現(xiàn)實過程。習題與參考文獻參考文獻

[1]李可,李昕.基于Hadoop生態(tài)集群管理系統(tǒng)Ambari的研究與分析[J].

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論