李 臻 陳若愚* 魯興華 劉秀磊
1(北京信息科技大學數據科學與情報分析實驗室 北京 100101) 2(北京信息科技大學網絡文化與數字傳播北京市重點實驗室 北京 100101) 3(匹茲堡大學生物醫學信息學系 賓夕法尼亞州 匹茲堡 15206)
目前國內外醫療機構對于前來就醫的患者建立了完善的數據錄入、采集和管理制度,大多數醫療機構都擁有各自的電子健康記錄系統(Electronic Health Record System, EHRS)。據美國國家協調衛生信息技術辦公室提供的數據,超過80%的醫院都至少采用了一種電子健康記錄系統,相比于2008年增加了9倍之多[1]。這些電子健康記錄系統中包含了大量患者的臨床數據,通常將這些數據稱為電子健康記錄(Electronic Health Records,EHR)。
電子健康記錄也被稱為電子醫療記錄(Electronic Medical Records, EMR), EHR包含的數據種類豐富,包含了病人從入院到出院期間的所有醫學檢查、用藥、生命體征等多種類型的數據記錄,是一種按照時間順序排列的數據集合。從數據格式來看,EHR包括但不限于診斷記錄、醫學影像檢查記錄(X光、CT、B超和核磁共振等)、實驗室檢查和藥物處方等[2]。EHR數據中潛在地蘊含了大量與患者身體狀況和病情發展相關的知識,在大數據和人工智能技術蓬勃發展的今天,通過對海量歷史數據進行挖掘構建相應的人工智能輔助決策系統已成為常態,也是人工智能技術的主要應用場景之一。在此背景下,采用人工智能技術對EHR數據進行建模和挖掘,嘗試學習與一些關鍵醫學指標相關的預測/分類模型,從而輔助醫生進行診斷與決策是當前醫學信息學與人工智能研究關注的重點和難點。
心力衰竭是指由于心臟的收縮功能和(或)舒張功能發生障礙,不能將靜脈回心血量充分排出心臟,導致靜脈系統血液淤積,動脈系統血液灌注不足,從而引起的心臟循環障礙癥候群[3]。心力衰竭可能的疾病發展過程通常是由穩定發展、心臟功能緩慢下降以及診斷后的突然崩潰和心臟功能快速下降組合而成的。每一個軌跡需要不同的治療方式,從藥物治療(穩定疾病)到心臟移植(快速衰退),從而對于長期存活最為有利。因此,盡早預測一個患者的疾病軌跡,對于優化疾病管理和患者存活是非常關鍵的。采用人工智能技術對心力衰竭患者進行建模、預測其疾病軌跡是目前的研究重點。
傳統上,針對EHR數據的挖掘、分析和建模研究主要采用SVM、邏輯回歸、決策樹和隨機森林等傳統機器學習算法。建模目標通常是對患者的關鍵醫學指標進行預測,從而輔助醫生對患者進行有效的觀察及治療。但是傳統的機器學習模型需要大量的人工進行特征選擇過程,較難挖掘EHR中的隱含特征,且無法對時序數據進行有效的建模,因此如何對EHR中時序數據進行有效的建模,挖掘其隱含特征是目前對EHR數據研究的重點。
本文針對上述問題,基于LSTM模型對EHR中時序數據進行建模,減少了人工特征選擇的工作量,構建了一個端到端的心力衰竭病人重入院預測模型,能夠有效預測心力衰竭病人在某次出院后的30天內再次入院的概率,為輔助醫生進行臨床決策、提前預警提供了強有力的支持。
EHR是由大量異構的結構化、半結構化和非結構化數據組成的。這些數據潛在地蘊含了醫學領域專家的專業知識和患者的狀態信息,如何自動化從EHR數據中分析、挖掘并利用這些知識來構建醫療決策系統是目前醫學及信息學科的一個研究重點,而對于EHR的應用研究目前主要著重于以下五個方面[4]:EHR信息抽取、EHR表示學習、患者的療效預測、計算表型及臨床數據隱私保護,其中與本文直接相關的是EHR表示學習和患者的療效預測。
1.1.1EHR表示學習
EHR中包含藥物(處方及用藥)、醫療服務(如醫學檢查、手術等)和疾病(包括患者自述及醫生診斷)等多種類型的數據。通常來說,每種類型的數據都存在相應的醫學代碼(如:ICD、ATC、CPT和LOINC等),這些醫學代碼是由醫學領域專家制定的,但是通常都是離散的且互相之間不存在交集,導致無法直接將這些醫學代碼應用于EHR數據的挖掘研究中。如何將醫學代碼以及由醫學代碼數據組成的患者信息投影至連續向量空間,從而使它們擁有潛在的語義特性是EHR表示的研究重點。目前,EHR表示學習研究較多,具體信息見表1。

表1 EHR表示學習方法
1.1.2 患者的療效預測
大多數研究者對EHR進行利用、分析和挖掘的目的都是為了對相關疾病的患者狀態進行預測,通過預測結果為臨床醫生提供決策支持。患者的療效預測通常分為靜態預測和動態預測兩種,其中靜態預測是根據患者的某一次診斷數據進行預測,動態預測是根據患者的當前及歷史診斷數據對患者進行預測。
Choi等[6]采用患者信息的分布式表示及人工神經網絡心力衰竭進行預測,發現效果比使用醫學代碼做的特征效果更好。Tran等[9]采用受限玻爾茲曼機結構對患者表示進行微調并使用邏輯回歸算法進行自殺風險評級,發現采用全部EHR數據效果優于只采用診斷數據。Li等[15]采用兩層深度信念網絡對骨質增生階段進行預測,其結果超過了所有的基線模型。Lipton等[16]采用LSTM模型對128個診斷結果進行預測,實驗表明LSTM模型效果比采用傳統手工特征訓練的多層感知機更加出色。 DeepCare框架[5]通過Skip-gram嵌入方法來得到臨床概念向量,并對每一個入院患者創建一個診斷代碼和一個干預代碼,并將兩個代碼鏈接起來送入LSTM網絡中,從而預測糖尿病病人及精神病患者下一次診斷和下一次藥物干預時間。文獻[17]發現數據中缺失值和結果之間存在一定的相關性,他們基于GRU開發了一種基于GRU的變體,在ICD-9分類及死亡率預測上獲得了較好的AUC曲線。文獻[18]基于RNN使用了多層Recurrent Highway Network建立了一個端到端的神經網絡模型,對預測時間窗口為48小時中的急性腎損傷病人病情惡化風險持續預測。
患者出院后,是否會在30天內再入院,對醫院會產生較大的負面影響,而精準地對患者再入院概率進行預測也是自動化醫療決策系統所面臨的挑戰之一。精準地預測患者是否會再次入院不僅能降低患者治療費用,還能減少患者因意外而導致病死的機率。據不完全統計,在美國和歐洲有5%的緊急入院治療是由心力衰竭引起的,在這之中又有10%的患者會因此而死亡。所以對心衰病人再入院概率進行預測是目前計算機科學與醫學的一個研究重點。
2010年,Amarasingham等[19]提出了一個自動化的數據驅動預測模型,該模型可對心力衰竭患者未來30天內再住院和死亡的概率進行預測,這是較早采用機器學習技術對心力衰竭重入院預測的方法。Natale等[20]采用了決策樹算法對心力衰竭病人進行再入院預測。Meadem等[21]的研究工作專注于數據平衡、數據填充及特征選擇方法,采用邏輯回歸、樸素貝葉斯和SVM對心力衰竭病人短時間內再入院進行預測。Zolfaghar等[22]針對心力衰竭病人是否會再入院分為患者是否會再入院、患者是否會在30天內再入院、患者是否會在90天內再入院三個層次進行研究。Shammer等[23]采用PCA作為特征選擇方法,并采用樸素貝葉斯作為預測模型,獲得了較好的結果。Leong等[24]采用邏輯回歸方法來預測患者30天內再入院概率。Sohrabi等[25]在醫學專家的指導下采用SVM、人工神經網絡和邏輯回歸等方法對心力衰竭患者進行再入院預測,分析了每個特征的重要性及其在模型中的效果。
本文的研究工作所使用的數據來源于匹茲堡大學醫學中心(UPMC),數據中不包含患者的任何隱私信息,所有數據預處理工作均由通信作者于匹茲堡大學訪學期間完成,數據集中共包含60 863名患者的數據,時間跨度從2004年1月2日至2018年12月31日。本文的研究主要基于該數據集中結構化數據部分,在實驗中并未使用非結構化文本數據。
本文的原始數據格式為數據庫導出的csv文件,其中結構化數據共分為10個表,數據總規模約為1.8億行。在這些數據中患者的數據都是雜糅在一起的,為了開展后續工作,首先需要將患者的各類數據從原始數據中提取并集中,再對數據格式進行轉換及相應的歸一化,最后針對心衰患者重入院訓練任務提取相應的預測目標標注值。本文的數據預處理流程如圖1所示。

圖1 數據預處理流程
本文的數據預處理流程分為四個部分:
(1) 原始數據預處理:對原始數據進行過濾,僅保留心衰相關列值,清除部分垃圾數據,對數據進行歸一化。
(2) 患者數據聚集:將每一個患者的數據從原始數據中抽取、聚集,并寫入患者對應的目錄。
(3) 數據向量化及預測目標數據提取:對患者進行過濾,根據預定義的規則,提取、封裝特征數據和預測任務目標數據,并將數據進行向量化。
(4) tfrecords格式數據導出:將向量化的特征和預測目標數據進行二進制格式轉換與壓縮,轉換為Tensorflow框架能夠讀取的二進制文件。
在10類結構化數據中分別包含不同類型的醫學專有名詞(本文將ICD編碼、ATC編碼、醫學檢查等都統一看作醫學專有名詞),在數據處理的過程中根據醫學專有名詞在數據中出現的總頻次是否超過閾值K進行篩選得到特征詞表,在此基礎上將患者從出院之日起回溯45天的數據建模為45×N維的時間序列,N的大小的取決于閾值K的選擇。根據上述規則,將閾值K設置為1 000和10 000分別生成了HF-RA-5K、HF-RA-3K兩個數據集。
兩個數據集的規模、特征維度和序列長度等基本信息如表2所示。

表2 數據集信息
數據集中的正負樣例數分布如表3所示。

表3 數據集正負樣例數
數據集中的特征詞表分布情況如表4所示。

表4 特征詞分布情況表
本文已經論述了機器學習模型及深度學習模型在本領域研究中的應用,但是由于醫療數據的敏感性,目前臨床研究中應用最為廣泛的公開數據集只有MIMIC-III[26]。而MIMIC-III數據來自于ICU,與本文研究的心力衰竭這一慢性病并不相符,因此本文中的實驗并沒有采用MIMIC-III進行比較。此外,文獻[17-18]同樣采用深度學習技術開展研究工作,但是文獻[18]并未公開數據和源代碼,從模型架構的角度,本文和其相似,都采用了循環神經網絡對時序數據進行建模。文獻[17]采用深度學習技術對數據中的缺失值進行補充,在本文中并未對缺失值進行補充,而是采用了文獻[18]的方法,以全0填充。
本文分別基于傳統機器學習模型及深度學習模型開展了兩類心衰病人重入院預測實驗。同時,針對不同機器學習模型的特性,分別開展了時序長度為3天、7天和14天的傳統機器學習模型訓練和時序長度為7天、14天和45天的深度學習模型訓練。
HF-RA-5K和HF-RA-3K兩個數據集包含的時序數據特征向量的維度較大,且時序數據特征矩陣較為稀疏,這種訓練數據對于傳統的機器學習模型并不友好,本文采用了主成分分析(PCA)方法對原始數據進行降維,并將降維后的數據輸入至傳統機器學習模型進行預測?;趥鹘y機器學習模型的心衰病人重入院預測框架如圖2所示。

圖2 基于傳統機器學習模型預測框架
針對基于深度學習的心衰病人重入院預測,為驗證深度學習模型對深層特征提取的有效性,本文采用了以LSTM主體的深度學習模型對時間序列數據進行建模?;谏疃葘W習模型的心衰病人重入院預測框架如圖3所示。

圖3 基于LSTM模型預測框架
在本文中共使用4種神經網絡模型進行建模,分別是單向LSTM模型、雙向LSTM模型、基于注意力機制的單向LSTM模型和基于注意力機制的雙向LSTM模型。圖3中實線部分為基本單向LSTM模型的架構。實線部分+虛線框1中的部分為基于注意力機制的單向LSTM模型。實線部分+虛線框2中的部分為雙向LSTM模型架構。實線部分+虛線框1和2中的部分為基于注意力機制的雙向LSTM模型架構。
在本文中分別對上述4種模型進行實驗,研究不同LSTM模型在預測任務中的預測效果。
本文主要從準確率A、精確率P、召回率R、F1值和ROC-AUC值五個指標對實驗結果進行評估。在深度學習預測實驗中本文按照0.8、0.1和0.1的比例將數據集劃分為訓練集、驗證集和測試集,以ROC-AUC指標作為訓練目標進行訓練。
為驗證時序數據長度及數據特征維度大小對深度學習模型性能表現的影響,本實驗中各種超參數的具體信息如表5所示,實驗結果如表6所示。

表5 超參數列表

表6 深度學習實驗對比
從上述實驗結果中可以看到:在數據特征維度上,以ROC-AUC為評價指標,HF-RA-3K數據集在不同長度的時序序列上訓練得到的模型都優于在HF-RA-5K數據集上訓練得到的模型的性能表現。究其原因,HF-RA-3K數據集本質上來說是HF-RA-5K數據集的一個子集,是將HF-RA-5K的特征做進一步的篩選,刪除了其中出現頻率較低的特征而得到的,因此降低了數據集的噪聲,從而使得模型性能得到提高。在時間序列長度上,在兩個數據集上,模型的性能隨著時間序列長度的增加而提升,一方面說明深度學習模型能夠有效捕捉較長的時序數據中的語義信息,另一方面也說明對于EHR數據的建模,較長的時間序列長度有助于提升模型的性能表現。
根據上述實驗結果表明,時序數據長度對于心衰患者的預測起一定程度上的正相關作用,而特征維度起負相關作用,因此在本文的后續實驗中,主要采用HF-RA-3K數據集對傳統機器學習模型和深度學習模型進行比較。
比較LSTM模型與傳統機器學習模型的預測效果。受到傳統機器學習模型自身性質的約束,本課題使用的原始數據的維度太高,傳統機器學習模型很難對多天的高維度時序數據進行學習,因此面對多天的時序數據將采用PCA方法對原始數據進行降維,本文降至170維,此時累計方差貢獻率(Cumulative Variance Contribution Rate)為90%,并將多天的數據通過向量聯接方式輸入傳統機器學習模型中進行實驗。同時,為了在同一組數據上進行橫向比較,雖然LSTM模型能夠處理高維時序數據,在本實驗中本文仍然將PCA降維后的時序數據作為LSTM模型的輸入進行訓練,實驗結果如表7所示。由于篇幅原因,在表7中只列出模型性能最好的結果進行展示。

表7 機器學習模型實驗結果
上述實驗結果表明,即使輸入數據的時序長度減為14天,基于LSTM的深度學習模型實驗效果仍比傳統機器學習模型的效果更好,更容易從原始特征中挖掘出特征之間的隱含信息并能對時序數據進行有效的利用與學習。當輸入數據的時序長度均為45天時,LSTM、基于注意力機制的LSTM、BiLSTM和基于注意力機制的BiLSTM實驗模型對比結果如表8所示。

表8 基于LSTM模型的神經網絡模型實驗結果
比較不同類型的LSTM模型架構對預測任務的效果的影響。
實驗三結果表明簡單地應用雙向LSTM模型和Attention機制對現有的模型進行優化并不能很好地增強現有模型的效果。雙向LSTM在自然語言處理領域獲得較好的效果,通常是因為雙向LSTM能夠較好地捕捉雙向的上下文語義信息。但在醫療領域,患者的生理狀態發展在時間上是單向的,其后續的生理狀態由醫生診斷治療而發生改變,因此采用雙向LSTM并不能很好地提高模型的效果。實驗三結果同時表明,Attention機制的引入并沒有增強模型的效果,可能的原因是在本文中采用Attention機制對原始數據進行處理再輸入至LSTM模型中,打亂了原始數據的數據特性及相應的語義關聯,因此起到了一定的反作用,使得模型的性能有所下降。
同時,上述實驗結果表明,時序數據中包含了更多的患者信息,更有利于對患者的重入院進行預測與分析。對于決策樹與隨機森林模型,最好的效果是在1天的時序數據上獲得的,筆者認為,這是由于其樹形的模型結構導致的,如果采用聯接的方式,決策樹及隨機森林無法有效區分時序數據序列,從而無法更好地學習更重要的特征。
本文采用深度學習技術對EHR數據中的結構化數據進行建模,對心力衰竭患者的重入院進行預測。結果顯示,LSTM模型能夠有效地學習患者的時序序列數據,并能夠有效地對心力衰竭患者的重入院進行預測。
本文主要采用患者的結構化數據進行建模和預測,其效果表現較好。而EHR數據中還包含大量的非結構化數據,如醫生撰寫的臨床注記(Clinical Notes)等。這些非結構化數據中同樣包含了大量的信息,未來的研究工作將結合NLP技術對非結構化數據進行建模,與結構化數據結合,提高現有模型的預測效果。此外在本文中雖然采用了注意力機制來解決LSTM中的長期依賴問題,但未取得較好的效果,未來將嘗試采用純注意力機制模型來對時間序列數據中不同時間位置的重要性進行研究。