摘 要: 針對我國社會老齡化進(jìn)程加快背景下老年病風(fēng)險(xiǎn)預(yù)測的需求,設(shè)計(jì)基于數(shù)據(jù)挖掘思想的患病風(fēng)險(xiǎn)預(yù)警模型。采用決策樹模型,根據(jù)居民的年齡、性別、BMI指數(shù)、家族病史等多項(xiàng)數(shù)據(jù)進(jìn)行樹結(jié)構(gòu)的構(gòu)建與修剪,同時(shí)引入Bagging、Boosting和Rotation Forest等方法進(jìn)行樹的訓(xùn)練。最后,使用Spark中的SQL和MLlib實(shí)現(xiàn)并行化的決策模型。仿真結(jié)果表明,風(fēng)險(xiǎn)預(yù)警的準(zhǔn)確率可以達(dá)到98.07%。此外,集成學(xué)習(xí)規(guī)模對于模型預(yù)測的精度影響較小,決策樹的剪枝可在不損失預(yù)測精度的前提下降低模型的復(fù)雜度。
關(guān)鍵詞: 決策樹; 集成學(xué)習(xí); Spark; 疾病預(yù)測
中圖分類號: TP311 ? ? ?文獻(xiàn)標(biāo)志碼: A
Risk Early Warning Model of Geriatric Disease Based on
Spark Big Data Platform
TAN Xiao
(School of Economics and Management, Shanxi Institute of Technology, Xi'an 710300)
Abstract: Aiming at the demand of risk prediction of geriatric diseases, this paper proposes a disease risk early warning model based on data mining. Firstly, a decision tree model is used to construct and prune tree structure based on age, gender, BMI index, family history and other data of residents. At the same time, some methods such as Bagging, Boosting and Rotation Forest are used to train the tree. Finally, the parallel decision model is realized by using SQL and MLlib in Spark. The simulation results show that the accuracy of risk early warning can reach 98.07%. In addition, the scale of ensemble learning has little influence on the accuracy of model prediction. The pruning of decision tree can reduce the complexity of model without loss of prediction accuracy.
Key words: Decision tree; Ensemble learning; Spark; Disease prediction
0 引言
隨著我國老齡化速度的加快,老年人的健康狀況得到了更多的關(guān)注。心血管疾病、糖尿病等老年病,成為危害老年人身體健康的主要?dú)⑹帧R蕴悄虿槔?,最新研究表明,我國的糖尿病患者人?shù)已超過1億人。對于老年病,及早的預(yù)警可幫助老年人及時(shí)改善生活、作息習(xí)慣,避免病情的產(chǎn)生和惡化。近年來,由于醫(yī)療信息化程度的加深,積累了大量的臨床醫(yī)療診斷、身體指標(biāo)等醫(yī)學(xué)數(shù)據(jù),醫(yī)學(xué)的發(fā)展也進(jìn)入大數(shù)據(jù)時(shí)代。在此背景下,如何挖掘醫(yī)療數(shù)據(jù)中的有用價(jià)值成為了重要的研究課題之一[1-3]。
針對老年病的預(yù)警,本文結(jié)合機(jī)器學(xué)習(xí)領(lǐng)域的決策樹算法,根據(jù)居民的年齡、性別、BMI指數(shù)、家族病史等多項(xiàng)數(shù)據(jù)進(jìn)行老年人糖尿病發(fā)病概率的預(yù)測,使用Spark大數(shù)據(jù)處理平臺構(gòu)建了老年病風(fēng)險(xiǎn)預(yù)警模型[4-5]。該模型中,引入集成學(xué)習(xí)的Bagging、Boosting和Rotation Forest等方法,提高了模型訓(xùn)練的效率、模型預(yù)測的準(zhǔn)確度,證實(shí)數(shù)據(jù)挖掘在醫(yī)療大數(shù)據(jù)背景下的可行性。
1 模型概述
1.1 模型結(jié)構(gòu)
本文使用的模型結(jié)構(gòu)流程圖如圖1所示。
從圖1中可看出,模型包括數(shù)據(jù)采集、數(shù)據(jù)預(yù)處理、建立決策樹模型、集成學(xué)習(xí)等幾個(gè)步驟[6-7]。
在數(shù)據(jù)處理部分,需要對獲取的數(shù)據(jù)進(jìn)行清洗和數(shù)據(jù)格式的轉(zhuǎn)換,同時(shí),設(shè)計(jì)一定的規(guī)范進(jìn)行數(shù)據(jù)表達(dá)和存儲。本文重點(diǎn)介紹的是系統(tǒng)使用的決策樹模型,并在簡單的決策樹模型上引入時(shí)下流行的Bagging、Boosting和Rotation Forest等集成學(xué)習(xí)方法,提升決策樹的分類性能,增加老年病風(fēng)險(xiǎn)識別的能力。
在傳統(tǒng)機(jī)器學(xué)習(xí)領(lǐng)域,通常采用單一模型進(jìn)行分類[8]。隨著計(jì)算機(jī)的計(jì)算能力快速增長和數(shù)據(jù)量集日趨復(fù)雜,集成學(xué)習(xí)成為提升單一模型性能的重要手段之一,其思路在于使用多個(gè)分類器來判斷同一個(gè)問題[9-13]。在醫(yī)療診斷和預(yù)測中,使用集成學(xué)習(xí)方法,可綜合多個(gè)分類器的預(yù)測結(jié)果,得到更可靠的判斷[12-14]。
1.2 決策樹模型
決策樹模型是數(shù)據(jù)挖掘和機(jī)器學(xué)習(xí)領(lǐng)域中常用的算法之一,具有結(jié)構(gòu)簡單、易于解釋的優(yōu)點(diǎn)[15-16]。本文在進(jìn)行老年病風(fēng)險(xiǎn)發(fā)現(xiàn)時(shí),將其視作一個(gè)分類問題。應(yīng)用決策樹模型,作為基礎(chǔ)算法進(jìn)行分類。在決策樹模型中,樹結(jié)構(gòu)的建立與樹的修剪是最核心的兩個(gè)流程。
本文使用的算法在決策樹結(jié)構(gòu)建立時(shí),基于信息增益率作為分組變量。對于信息源的信息量U,信宿接收到的信息量為V。此時(shí),有條件概率P(U|V)矩陣表示信息傳輸?shù)母怕剩篜(U|V)=P(u1|v1)P(u2|v1)LP(ur|v1)
P(u1|v2)P(u2|v2)LP(ur|v2)
P(u1|vq)P(u2|vq)LP(ur|vq)
(1) ?此時(shí),根據(jù)概率學(xué)理論,可得到ui的信息量I(ui)信源的信息熵Ent(U)I(ui)=log21P(ui)=-log2P(ui)
Ent(U)=-∑iP(ui)log2P(ui)
(2) ?根據(jù)信息熵的計(jì)算方法,可得到信宿接收信息后的信息熵Ent(U|V)=∑jP(vj)(-∑iP(ui|vj)log2P(uivj))
(3) ?信源和信宿之間信息熵的差異稱為信息增益GainsGains(U,V)=Ent(U)-Ent(U|V)
(4) ?在決策樹中,使用式(4)的信息增益進(jìn)行篩選。當(dāng)信息增益率最大時(shí),選作最佳的分組變量。
使用式(4)作為標(biāo)準(zhǔn)可得到完整的決策樹,但會造成過擬合現(xiàn)象。因此,還需要基于一定的原則對決策樹進(jìn)行剪枝。剪枝的方法為ei=h+zα/2hi(1-hi)Mi
∑ki=1piei>e
(5)1.3 Bagging
Bagging方法的流程圖,如圖2所示。
其思想在于,首先將整個(gè)訓(xùn)練集分為D1,D2,…Dt個(gè)子集和弱分類器。然后使用t個(gè)訓(xùn)練集分別進(jìn)行訓(xùn)練弱分類器,獲得分類器M1,M2,…Mt。當(dāng)對x進(jìn)行分類時(shí),使用類器M1,M2,…Mt共同決策,得到分類結(jié)果。
1.4 Boosting
Boosting方法進(jìn)行訓(xùn)練和表決的流程圖,如圖3所示。
首選創(chuàng)建k個(gè)弱分類器和k個(gè)訓(xùn)練子集,然后用第一個(gè)弱分類器與對應(yīng)的分類子集進(jìn)行訓(xùn)練;在訓(xùn)練第二個(gè)弱分類器時(shí),除了其本身對應(yīng)的訓(xùn)練子集外,加入第一個(gè)分類器分類錯(cuò)誤影響的相關(guān)子集;依次按照此方法,訓(xùn)練所有弱分類器,最終結(jié)果由所有分類器投票得到。
1.5 Rotation Forest
Rotation Forest的方法流程圖,如圖4所示。
在Rotation Forest中,需要借助PCA(主成分分析)算法去除原始數(shù)據(jù)中的關(guān)聯(lián)項(xiàng),獲得新的訓(xùn)練集,進(jìn)而可得到更高精度的模型。
2 系統(tǒng)實(shí)現(xiàn)
2.1 數(shù)據(jù)概述
本文設(shè)計(jì)的模型主要用于老年病風(fēng)險(xiǎn)的預(yù)測,因此選取陜西省西安市某三級甲等醫(yī)院的糖尿病患者的健康檔案,同時(shí)加入部分健康人群的病患檔案。模型使用的訓(xùn)練樣本和測試樣本的具體情況,如表1所示。
數(shù)據(jù)項(xiàng)的結(jié)構(gòu),如圖5所示。
2.2 Sprark生態(tài)系統(tǒng)
Spark是由Scala語言開發(fā)的分布式并行處理框架,整個(gè)Spark生態(tài)的相關(guān)組件。系統(tǒng)中涉及的主要組件是Spark SQL DataFrame和MLlib。如圖6所示。
Spark SQL支持標(biāo)準(zhǔn)數(shù)據(jù)庫查詢語言和Hive,DataFrame結(jié)構(gòu)更適用于結(jié)構(gòu)化的數(shù)據(jù)計(jì)算;MLlib中包含了大量的機(jī)器學(xué)習(xí)算法,本文使用的決策樹算法也包含在MLlib庫中。Spark的運(yùn)行機(jī)理,如圖7所示。
對于一個(gè)Spark應(yīng)用程序,其至少包含兩個(gè)部分:SprakContext和Excutor。其中,SparkContext負(fù)責(zé)程序的驅(qū)動,Excutor負(fù)責(zé)程序的運(yùn)行。從圖7可以看出,首先SprakContext進(jìn)行初始化,創(chuàng)建一個(gè)任務(wù)調(diào)度模塊和作業(yè)調(diào)度模塊。通過集群管理服務(wù)Cluster Magnage調(diào)度代碼運(yùn)行節(jié)點(diǎn)Worker Node,每個(gè)運(yùn)行節(jié)點(diǎn)上均有自己的進(jìn)行Excutor來執(zhí)行具體的Task。
在進(jìn)行具體的Spark API調(diào)用時(shí),本文使用的是Java語音。
2.3 模型效果仿真
使用Sprak的MLlib庫搭建決策樹模型,使用Sprak SQL進(jìn)行數(shù)據(jù)的讀取和存儲操作[16]。在評估模型效果時(shí),為衡量集成學(xué)習(xí)規(guī)模對模型的影響,設(shè)置不同的集成學(xué)習(xí)規(guī)模:10,20,30,40;為衡量決策樹剪枝前后的預(yù)測準(zhǔn)確率,在決策樹剪枝前和剪枝后分別進(jìn)行模型訓(xùn)練與精度計(jì)算;為評估不同集成學(xué)習(xí)方法對結(jié)果的影響,本文選擇了AdaBoosst、Bagging、MultiBoost和Rotation Forest這4種方法。剪枝前后每個(gè)方法在不同的學(xué)習(xí)規(guī)模下具體結(jié)果,如圖8(a)、(b)和表2及表3所示。
從模型的仿真結(jié)果可看出不同規(guī)模下,模型精度變化不明顯,集成學(xué)習(xí)的規(guī)模對于模型精度影響較小,這可能是由于模型訓(xùn)練集所使用數(shù)據(jù)量不夠大造成的;修剪后決策樹在準(zhǔn)確率從98.02%變?yōu)?7.81%,從數(shù)值上看并未降低,精度損失極小,但模型的復(fù)雜度有較大的改善;在引入集成學(xué)習(xí)方法后,決策樹修剪前后模型訓(xùn)練的效率和精度均有一定程度的改善。
3 總結(jié)
本文對機(jī)器學(xué)習(xí)領(lǐng)域決策樹模型在老年病發(fā)病率預(yù)測上的可行性進(jìn)行驗(yàn)證,設(shè)計(jì)針對糖尿病的風(fēng)險(xiǎn)預(yù)警模型。模型部署在Spark大數(shù)據(jù)平臺,借助Spark SQL和MLlib庫,同時(shí)引入集成學(xué)習(xí)Bagging、Boosting和Rotation Forest等方法。仿真結(jié)果表明,預(yù)測精度可達(dá)到98.07%以上。充分證明,決策樹模型和集成學(xué)習(xí)方法在老年病風(fēng)險(xiǎn)預(yù)測上具有可行性。
參考文獻(xiàn)
[1] 李季,丁鳳一,李翔宇.基于電子病歷數(shù)據(jù)挖掘的疾病危重度動態(tài)預(yù)測研究[J].信息資源管理學(xué)報(bào),2017(4):40-45.
[2] 費(fèi)海波,童玲,李智.關(guān)聯(lián)規(guī)則及關(guān)鍵特征挖掘在臨床透析時(shí)機(jī)選擇中的應(yīng)用[J].軟件導(dǎo)刊,2017,16(3):118-121.
[3] 霍東雪,劉輝,尚振宏,等.一種異構(gòu)集成學(xué)習(xí)的兒科疾病診斷方法研究[J].計(jì)算機(jī)應(yīng)用與軟件,2018,35(6):60-63.
[4] 陳霆,蔣伏松,朱興敏,等.基于隨機(jī)森林法的2型糖尿病合并非酒精性脂肪肝預(yù)測模型[J].中國數(shù)字醫(yī)學(xué),2018,13(11):66-68.
[5] 簡藝恒,余嘯.基于數(shù)據(jù)過采樣和集成學(xué)習(xí)的軟件缺陷數(shù)目預(yù)測方法[J].計(jì)算機(jī)應(yīng)用,2018(9):2637-2643.
[6] 房樂楠,何騰鵬,劉宇紅.一種改進(jìn)型PSO算法在SVM參數(shù)尋優(yōu)中的應(yīng)用[J].電子科技,2018,31(6):21-23.
[7] 李娜,侯義斌,黃樟欽,等.基于三軸加速度信號的實(shí)時(shí)人體狀態(tài)識別算法[J].北京工業(yè)大學(xué)學(xué)報(bào),2012,38(11):1689-1693.
[8] 林海波,李揚(yáng),張毅,等.基于時(shí)序分析的人體運(yùn)動模式的識別及應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2014(12):225-228.
[9] 梅雪,胡石,許松松,等.基于多尺度特征的雙層隱馬爾可夫模型及其在行為識別中的應(yīng)用[J].智能系統(tǒng)學(xué)報(bào),2012,7(6):512-517.
[10] 朱紅蕾,朱昶勝,徐志剛.人體行為識別數(shù)據(jù)集研究進(jìn)展[J].自動化學(xué)報(bào),2018,44(6):20-46.
[11] 趙仲愷.基于組合分類器的神經(jīng)網(wǎng)絡(luò)算法[J].電子科技,2017(12):43-46,51.
[12] 艾新龑,毛文濤,田梅.基于機(jī)器學(xué)習(xí)技術(shù)的在線疾病診療方案傾向性識別研究[J].中華醫(yī)學(xué)圖書情報(bào)雜志,2018,27(7):1-5.
[13] 趙家英.面向健康評估的機(jī)器學(xué)習(xí)方法研究與應(yīng)用[D].成都:電子科技大學(xué),2016.
[14] 劉宇晨.基于多尺度ICA方法與多模態(tài)皮層結(jié)構(gòu)特征的無先兆偏頭痛患者的腦機(jī)制研究[D].西安:西安電子科技大學(xué),2018.
[15] 徐旭冉,涂娟娟.基于決策樹算法的空氣質(zhì)量預(yù)測系統(tǒng)[J].電子設(shè)計(jì)工程,2019, 27(9):39-42.
[16] 黃成兵.一種多層次分布式數(shù)據(jù)挖掘方法的改進(jìn)研究[J].現(xiàn)代電子技術(shù),2017, 40(9):78-80.
(收稿日期: 2019.08.06)
基金項(xiàng)目:陜西省職業(yè)技術(shù)教育學(xué)會項(xiàng)目(SZJZX-1821)
作者簡介:談笑(1988-),女,天津人,碩士,講師。研究方向:老年服務(wù)與管理,醫(yī)院信息管理。文章編號:1007-757X(2020)02-0071-04