周彤彤,俞 凱,袁貞明,盧 莎,胡文勝
1(杭州師范大學 信息科學與工程學院,杭州 311121)
2(移動健康管理教育部工程研究中心,杭州 311121)
3(杭州市婦產科醫院,杭州 310008)
聯合國千年發展目標中,第五個議題是關于改善孕產婦的健康問題.報告顯示,過去25 年期間,孕產婦死亡率仍高達約十萬分之四十五[1],孕婦產后大出血是造成全球孕婦死亡的重要因素之一,在我國居首位.研究顯示,在經濟發達的國家和地區,產婦產后出血的概率會顯著提升.隨著經濟與社會的發展,孕產婦健康問題成為人們關心的熱點問題.據調研,某東部醫院一年中39.09%的孕婦有產后出血的情況,4.13%的產婦出現產后大出血情況.產后出血一旦發生,預后嚴重,若持續時間較長、休克較重,即便獲救,仍有可能發生嚴重并發后遺癥,因此產后出血的防治工作意義重大[2].
然而,現有醫學手段難以直接對孕婦產后大出血進行精準的預測.目前,醫學上無法準確判定產后大出血的成因,臨床上醫生只能根據某些癥狀如胎盤前置、妊高癥等經驗判斷產婦大出血的可能性.隨著醫療信息化的發展,孕產婦的基本生理特征、歷次孕檢信息都被記錄在電子病歷中,這為醫生全面掌握孕婦身體狀況,預判產后出血風險提供了便利.然而,由于產后出血相關因素眾多且聯系復雜,即使是經驗豐富的醫生,面對這些體量巨大、類型異構、內部關聯復雜的臨床大數據,都難以全面客觀地進行分析[3],對缺乏經驗的年輕醫生更是一個巨大的挑戰.隨著機器學習、深度學習的發展,借助計算機手段挖掘電子病歷數據之間的隱藏關系[4],建立疾病風險預測模型,為復雜的疾病診斷提供支持,成為近年來計算機與醫學領域研究的熱點.本文嘗試利用醫院電子病歷中孕婦基本數據以及歷次孕檢數據結合機器學習方法,實現對孕婦產后大出血的預測.
目前,醫學上常利用傳統機器學習或深度神經網絡構建疾病預測模型.深度模型對于時間序列數據有良好的處理能力,然而深度模型難以解釋,醫學上對于模型的可解釋性有較高的要求,傳統樹模型具有良好的可解釋性[5],通過回溯樹的結構能夠探究出決策形成的原因,為醫生診斷提供參考.
孕檢的電子病歷數據中包含產后大出血相關的特征,孕檢數據中孕周的變化間是有關聯的時間序列數據.傳統樹模型難以挖掘時間序列中隱含的信息,LSTM(長短期記憶網絡)模型[6]是一種時間遞歸神經網絡,適合處理和預測時間序列中間隔和延遲相對較長的重要事件.XGBoost 模型是一種優秀的集成樹模型,具有高效,靈活,魯棒的特點.為結合兩者優點,本文利用LSTM 和XGBoost 構建產后大出血混合預測模型.
模型用到的孕婦數據分為孕婦基礎信息和孕檢信息兩部分,孕婦基礎信息包含孕婦自身基本信息,如孕婦的身高、體重、年齡、過往孕史、家庭遺傳病史等.孕檢信息分為首次孕檢和歷次孕檢,首次孕檢信息存儲孕婦進行第一次孕檢的結果,歷次孕檢包含孕婦在孕期內每次孕檢的結果,主要包含胎兒的生長情況、孕婦的體征指標,如血壓、血糖、腹圍等.
數據預處理是提高數據質量,避免數據缺失、錯誤對模型性能影響的重要步驟.本文中,數據預處理主要分3 部分:缺失值處理、歸一化處理以及孕檢數據的標準化.
孕檢數據中存在各孕婦孕檢項目不同或未記錄檢查結果的情況,需進行缺失值處理.根據實際情況,孕檢結果中未記錄數據為該項目正常值,另外孕檢結果的眾數或平均值也為該項目的正常值.因此,在實驗中缺失的離散值、連續值分別采用其他孕婦同一孕檢項目的眾數與平均值填充.
通過數據預處理的數據中存在不同的孕檢項目具有不同的單位和量綱的情況,實驗通過歸一化處理得到統一量綱的數據,消除不同的量綱對于模型帶來的影響[7].歸一化采用式(1)所示的計算方法,其中x表示當前特征值,xmax、xmin表示當前特征值的最大值和最小值.為標準化后的特征值,標準化后的數據范圍為[-1,1].

在訓練數據集中,孕婦孕檢次數范圍為1 至84,為方便模型處理,需要對孕檢數據進行標準化.標準化依據醫學上對孕期的劃分以及模型適合的數據格式進行處理.在醫學上將孕期劃分為孕前期、孕中期、孕后期3 個階段[8],通常情況下孕婦的孕檢頻率依次增加,同時孕檢結果的重要性也認為是依次增加.孕婦通常在孕早期內孕檢次數較少,故本文將孕早期即孕周1 至孕周12 內的孕檢記錄為一次;孕中期即孕13 周至孕28 周數量相對也較少,分為3 次,即[13-18]周,[19-23]周,[24-28]周;孕后期即孕29 周至孕40 周孕檢次數較多,每兩周作為一個周期.由于存在晚產的情況,40 周以后還會出現孕檢信息,本文將41 周之后作為一個新的孕檢周期.將同一孕檢周期內的多次孕檢結果的均值作為本次孕檢周期內的孕檢結果值,若孕婦在某周期內無孕檢數據,則將該周期的孕檢結果值均置為空值.孕檢數據的標準化如表1 所示.

表1 歷次孕檢數據劃分
電子病歷數據中不同的檢查項目反映了孕婦不同層面的情況.其中,年齡、血型、孕次、病史等孕婦的基本信息,不受本次懷孕的影響,反映出孕婦自身身體的基本素質,因此將孕婦基礎信息構建為孕婦基礎特征群;而首次孕檢時記錄的孕婦懷孕初始時的血壓、體重、高危因素等,反映出孕初期的基本情況,可以據此評估孕婦在孕程初期的基本狀態,因此將首次孕檢的數據構建為首次孕檢特征群;歷次孕檢結果記錄了整個孕期的動態發展過程,且具有時序的特點,將其構建為歷次孕檢特征群.而為了增加實驗中模型對時序數據變化關系的學習能力,本文將歷次孕檢的變化記錄提取為新的特征群,稱為歷次孕檢結果變化特征群.通過數據預處理及特征構建,本文共構建了如表2 所示的4 個特征群.其中,歷次孕檢結果變化特征群記錄處理后的不同孕檢周期的結果變化值,實驗中孕期分為11 段,因此孕檢結果變化共有10 次記錄,若孕婦在該孕檢周期內無孕檢結果則將該差值置為空值,若下一孕檢周期有記錄則下一周期差值為與最近的前次孕檢周期結果的差值,例如某孕婦僅進行兩次孕檢,在孕期1 內進行一次孕檢,孕期10 進行一次孕檢,則該孕婦僅有第9 次孕檢結果變化有記錄,其余置為空值.

表2 實驗特征說明
孕婦產后出血受到多方面因素的影響,實驗數據同時包含時序數據和非時序數據兩部分,如上一章所介紹,電子病歷中記錄的數據包括:孕婦的身高、血型、孕次等基礎信息,為非時序數據;孕婦歷次孕檢的數據,如體重、血糖、腹圍等,此為時序數據.模型需要具有處理時序數據之間的變化關系,同時,在醫療應用中模型應具有良好的可解釋性,從而幫助醫生根據經驗對預測結果進行判斷,另外,方便醫生了解疾病的影響因素.LSTM 模型在時間序列數據預測具有良好的效果,而XGBoost 模型作為傳統的集成模型在擁有良好性能的同時具有較強的可解釋性,在實際的疾病預測應用中,兩者都存在各自的缺陷,LSTM 模型作為深度模型在擁有較好性能但難以對模型的結果做出解釋,而XGBoost 作為傳統集成模型無法提取時序數據中的時序信息.本文利用LSTM 模型提取數據中的時序信息結合XGBoost 模型實現在模型擁有良好性能的同時對結果具有一定的可解釋性.混合模型能夠為醫生的診斷提供參考意見,獲取高危風險因素,方便針對性的對某些特征進行檢查.
混合模型的構建分成兩個部分.首先,構建LSTM模型數據集,利用LSTM 模型對數據中的時序特征進行處理,得到預測結果;然后,利用LSTM 模型結果構建新的特征,結合原有數據集組成新的數據集訓練XGBoost 模型,并利用訓練后的模型得到最終結果.LSTM 模型作為深度學習模型和集成模型的XGBoost在結構上有較大的差異,因此,混合模型能夠較好地降低模型過擬合的風險.構建混合模型的流程如圖1 所示.

圖1 模型流程圖
長短期記憶網絡(Long Short Term Memory),簡稱LSTM,是循環神經網絡(RNN)[9]的優秀改進,屬于反饋神經網絡.相對于傳統RNN 網絡,LSTM 能夠改善“梯度消失”的問題[10],同時,LSTM 在學習長期依賴的[11]問題上有更加優秀的表現.LSTM 模型的結構如圖2所示.
LSTM 在RNN 結構的基礎上增加每層結構的控制門,控制門分3 類:Forget Gate(遺忘門)、Input Gate(輸入門)、Output Gate(輸出門)[12].通過控制門的開關判斷網絡的狀態在該層的輸出是否達到設定的閾值,從而選擇是否將其加入本層的計算中.

圖2 LSTM 結構
遺忘門在LSTM 中控制神經元以一定的概率丟棄信息,根據上一序列隱藏狀態h(t-1)及本次序列的輸入,利用激活函數得到門的輸出ft,如式(2)所示:

其中,σ為激活函數,Wf為隱藏層到門的權重,Uf為輸入層到門的權重,bf為偏執向量.
輸入門負責處理輸入信息,輸入門利用Sigmoid和tanh 兩個激活函數的輸出的乘積更新神經元的信息,如式(3)、式(4)所示:

更新神經元的信息來自兩個部分,一是Ct-1與遺忘門的乘積,二是it和at的乘積,如式(5)所示:

在更新神經元后通過輸出門控制得到t時刻神經元的輸出ht,如式(6)所示:

XGBoost 是2014 年被提出的分布式梯度提升算法(Boosting)工具庫,其具有高效、靈活、魯棒的特點,相對于其他Boosting 方法[13],XGBoost 增加正則化項,能夠防止模型過擬合.XGBoost 目標函數如式(7)所示:

包含正則化項,為模型的輸出,yi為真實標簽,fk為表示第k個基分類器,T表示葉子數,ω表示葉子節點的權重,γ為懲罰項.
利用泰勒公式[14]將式(7)展開得到式(9):

式中,gi與hi以及 Ω(ft)表達公式分別如式(10)~式(12)如下:

將式(10)~式(12)代入式(9)得到葉子節點權重公式如式(13)所示:

式中,Gj、Hj分別表示一階梯度和二階梯度在葉子節點i的值.將式(13)帶入式(9)得到目標函數的最優解如式(14)所示:

本文在我國東部某醫院2018 年間產科所接診的所有孕產婦的電子病歷中,選取了包含產后出血記錄的14 409 條樣本構建數據集.根據醫學標準將胎兒娩出后24 小時內產婦出血量超過500 ml 的樣本作為產后大出血的正樣本.其中正樣本701 條,負樣本13 708條.隨機抽取70%的正樣本和70%的負樣本組成訓練集,剩余30%的正樣本和30%的負樣本組成測試集.在實驗中采用10 折交叉驗證的方式尋找模型最優參數.
將LSTM 模型應用于產后大出血的預測,神經元節點和網絡層數直接影響最終效果[15].實驗中采用輸入數據特征維度作為輸入層的神經元數量;輸出層對應一個神經元表示是否會發生產后大出血.LSTM 隱藏層[16]的節點數通常利用式(15)確定.

其中,N為隱藏節點數量,m、n為輸入、輸出節點數,a為區間[1,10]內的常數.實驗中輸入節點個數為59 個,輸出節點個數為1 個,根據式(11)得到隱藏節點數量為8~18 個.實驗中通過利用同一數據集選擇不同隱藏層節點的方法最終選擇隱藏層節點數為15 個.
將LSTM 模型得到的結果作為新的特征加入構建新的數據集,并利用該數據集訓練XGBoost 模型.
本文目標為分類,選取ROC 曲線[17]及曲線下面積AUC 作為模型性能的評價標準.ROC 曲線的橫坐標為假陽性率,表示被劃分為正類的結果中負實例占所有負實例的比例;縱坐標為真陽性率,表示被劃分為正類的結果中正實例占所有正實例的比例.根據選取的不同劃分正負類的閾值,形成ROC 曲線.AUC 是一個概率值,計算方法是ROC 曲線下的面積,取值范圍為區間[0.1,1],AUC 值越大表明該模型的分類性能越好.
XGBoost 模型在迭代650 輪時取得最優效果,AUC 值為0.70,ROC 曲線如圖3 所示.

圖3 預測產后出血的ROC 曲線
從圖3 中可知,基于LSTM 和XGBoost 的混合模型在利用孕婦數據和孕檢數據對產后大出血進行預測能夠在40%的假陽率下準確預測出77%的大出血數據,能夠為產前準備工作提供參考意見.同時,即使在本文中被誤判為會發生產后大出血的孕婦,相對于其他孕婦,依然面臨更高的產后大出血風險.因此,針對這些孕婦進行相關準備對進一步降低生產風險仍有重要意義.
XGBoost 模型給出的重要特征如圖4 所示.通過輸出特征重要程度,可以判斷哪些因素對產后大出血有更顯著的影響,從而輔助醫生分析孕婦的生產情況,是否要提前做好產后大出血的相關準備工作.LSTM 模型構建的新特征是最終模型結果中最重要的特征,可見LSTM 和XGBoost 的混合模型對于提高預測的準確率是有效的.模型給出的重要特征如圖4 所示,其中胎盤相關因素、血壓相關因素、年齡等在醫學實踐中都是經驗豐富的醫生預判孕婦產后大出血的重要依據,與醫學先驗知識相符.另外體重、貧血、肝功能、腎功能、畸形、流產次數等因素對產后出血的也有不可忽略的影響.由于因素較多且不夠直觀,即使是經驗豐富的醫生也難以直接從冗長的病歷中直接得出結論,對缺乏經驗的醫生而言難度更高,準確性也更難把握.因此,醫生可以結合本模型的預測結果,提前采取治療措施或分娩備血方案,降低產后大出血的發生概率.

圖4 特征重要性
表3 為各模型在同一測試集上的性能和運行時間,測試集包含4000 條數據.

表3 各模型AUC 值及運行時間
結合圖4 和表3 可看出LSTM 模型構造的特征能夠較大幅度提高模型的效果,而混合模型在三者中效果最好,同時運行時間也最長.而LSTM 模型在運行時間最長的前提下,單模型預測效果卻最差,可能的原因是數據中正負樣本偏差較大.
LSTM 與XGBoost 混合模型在構建數據集時應結合不同模型的特點.LSTM 模型對時間序列信息有較強的處理能力,在數據集中將每次孕檢數據的時間進行周期化處理,強化時間特征;針對XGBoost 模型無法提取時間信息,需要提取孕檢結果的變化,幫助模型獲取隱藏的時序信息.本文中,電子病歷數據包含著孕婦孕期內的多類信息,不同類型的信息有不同的特點,為適應不同模型對數據的要求,需要對數據做出不同的處理,如孕婦多次孕檢結果反映了孕期內孕婦身體狀況和胎兒生長的動態變化,屬于時間序列數據,LSTM模型對時間序列信息有較強的處理能力,在數據集中將每次孕檢數據的時間進行周期化處理,強化時間特征;針對XGBoost 模型無法提取時間信息,需要提取孕檢結果的變化,幫助模型獲取隱藏的時序信息.將LSTM 模型對時間序列的處理能力和XGBoost 模型的可解釋性結合,對孕婦產后大出血作出預測.實驗結果表明,利用LSTM 模型處理時間序列數據并將預測結果作為新特征訓練XGBoost 模型相對于原有單模型能夠有效提高模型的性能,因此利用混合模型對孕婦產后大出血進行預測是可行的.XGBoost 給出的重要特征能夠幫助醫生篩選高?;颊?通過提前備血等方式降低大出血可能帶來的風險.本文采用混合模型在性能提升的同時模型的運行時間長于單模型,如何降低模型的運行時間,滿足大數據條件下的預測是后期工作的重點.