---
# System prepended metadata

title: 透過基於注意力的深度神經網路預測心血管疾病的高風險
tags: [論文研究]

---

# **透過基於注意力的深度神經網路預測心血管疾病的高風險**
[**IEEE/ACM Transactions on Computational Biology and Bioinformatics（卷：18 ，期：3）**](https://ieeexplore.ieee.org/document/8798764)
<font size="2">**DOI: 10.1109/TCBB.2019.2935059**</font>
<font size="1">*Ying An, Nengjun Huang, Xianlai Chen, Fangxiang Wu, Jianxin Wang*</font>
<style>.red {color: red;}</style>
<style>.blue {color: blue;}</style>
<style>.green {color: green;}</style>
<style>.orange {color: orange;}</style>

## **1. 引言(INTRODUCTION)
心血管疾病（CVD）是全世界死亡的主要原因[1]。 2015 年全球報告的死亡人數為 5,770 萬人，其中 1,790 萬人死於心血管疾病。 此外，CVD造成患者不可忽視的經濟負擔，並造成嚴重的終身殘疾。 然而，據估計，透過適當的預防措施，90% 的 CVD 是可以預防的 [2]。 因此，預測個體心血管疾病的發生在醫學領域具有重要意義。 已經有一些公認的病理學方法可以檢測CVD的生物標記物，例如心電圖（ECG）和血管攝影。 血管攝影是醫學領域權威的CVD診斷方法，通常具有較高的診斷和預測準確性。 然而，血管攝影通常昂貴且具侵入性。 心電圖是另一種常見的心血管疾病診斷和預測方法，其在醫學領域的準確性很大程度上依賴醫護人員或專家的經驗和知識。 因此，電腦輔助CVD高風險預測是一個有前途且重要的研究主題。 基於機器學習的高風險預測的傳統任務旨在獲得一個自動電腦系統，該系統應該包含從患者歷史電子健康中提取的潛在和關鍵特徵。

電子健康記錄（EHR）與傳統的病理測量相比，具有操作性強、非侵入性和低成本的優點。由EHR驅動的高風險預測任務的核心挑戰是如何獲得對患者的準確描述，這也被稱為患者表示學習或特徵工程。EHR包含了患者的各種信息，可以表示為一系列按時間順序排列的醫院訪問記錄，每次訪問都包含大量的醫學變量，如人口統計資料、診斷、藥物、手術、實驗室檢測結果和生命體征。EHR系統中唯一的醫學變量數量通常非常大，因此許多現有的預測模型試圖使用各種維度減少技術來處理它，從而得到稀疏的特徵表示。傳統的人工介入特徵工程手段往往具有較差的可擴展性和泛化性，因為它們高度依賴於研究者的經驗和特定的EHR系統。近年來，受到自動特徵表示啟發的一些簡單且可擴展的方法已被提出，如One Hot [4] 和 Bag-of-Words(BoW) [5]。然而，在這些方法中，每個特徵通常被視為一個離散且獨立的單詞，這使它們無法准確地捕捉特徵之間隱藏的語義信息和EHR數據中的時間動態。因此，如何設計一種有效的方法來處理順序的、高維的異質EHR數據的特徵表示已成為一個極其重要的問題。

儘管許多研究者已經利用循環神經網絡（RNN）和卷積神經網絡（CNN）[6], [7], [8], [9], [10], [11]為高維EHR數據實現了精確的表示學習，但要通過更全面地結合異質和時間性臨床數據來實現高性能仍然是一個挑戰。在這些之前的研究[6], [7], [8]中，他們在特徵表示學習的過程中經常忽略了不同類型的醫學數據之間的差異和關係。此外，基於CNN[7]的模型在處理時間性EHR數據時經常受到限制，因為它們需要假設在醫院訪問或事件中的醫學代碼是絕對按時間順序的。

為了應對前述的挑戰，我們提出了一種名為DeepRisk的新型基於注意力機制的RNN模型，用於預測患有糖尿病、高血壓或高血脂病史的患者的高風險心血管疾病的發病風險。當使用高維、異質和時間序列的EHR原始數據進行訓練時，DeepRisk能夠自動挖掘其中的潛在信息，並獲得更低維度的患者的精確特徵表示。為了更全面地使用順序EHR數據，我們在預測模型中使用了注意力機制和長短期記憶（LSTM）[12]。考慮到不同類型的醫學數據之間的差異，我們分別建立了獨立的模塊來捕捉它們的相應特點。同時，我們還將這些不同的數據的組合輸入到另一個模塊中，以獲得它們潛在關係的信息。最後，從這些模塊中學到的所有特徵將被整合，以實現我們的高風險預測任務。基於心血管疾病的真實臨床數據集的實驗結果表明，與EHR基礎預測任務中使用的最先進方法[6], [7], [8]相比，DeepRisk更為精確和穩健。總之，我們的主要貢獻可以概括如下：

**1. 我們提出了一個端到端且穩健的模型，稱為DeepRisk，用於準確預測患有糖尿病、高血壓或高血脂病史的患者的高風險心血管疾病的發病風險，而不需要任何醫學專家的幫助。**

**3. 我們將多種臨床數據整合為一個整體且關係緊密。DeepRisk不僅可以充分利用異質EHR數據之間的差異，而且還考慮了它們之間的關係。**

**4. 我們在一個真實的醫學數據集上評估了DeepRisk的性能。它證明了DeepRisk在時間順序、高維和異質EHR數據上，通過降維和模型整合，可以達到出色的性能。**

在接下來的部分，我們首先在第2節中介紹相關工作。然後，在第3節中，我們詳細說明了方法論。在第4節，我們介紹了實驗實施的細節並討論了實驗結果。最後，在第5節可以獲得一些結論。


## **2. 相關研究(RELATED WORKS)** 
在這一部分，我們主要回顧與我們研究密切相關的現有工作。具體來說，我們首先簡要介紹醫學預測的相關背景。然後，我們概述了一些用於輔助診斷和疾病風險預測的最新深度學習模型。

### **2.1 醫學預測(Medical Predictions)**
在現代醫學領域中，評估疾病未來風險並實現個體精準醫療預測是一個有前景的研究課題。醫學預測任務的主要目標包括未來診斷[13]、[14]、特定疾病的風險[15]、[16]、[17]、死亡率[18]、[19]、醫院再入院[20]、[21]、[22]、[23]、手術後併發症[24]以及存活時間[25]等。在本文中，我們主要關注心血管疾病的風險預測。

在早期研究中，心血管病風險預測的大多數方法都是基於相關的隊列研究。Everett等人[15]進行了一項包括1,821例心血管疾病(CVD)事件病例的隊列研究，以評估生物標誌物NT-proBNP（N端前B型利鈉肽）與CVD的關係。最終證明NT-proBNP可以提高CVD風險預測的表現。Welsh等人[17]利用兩項隊列研究評估了一些心臟生物標誌物對CVD風險的預測能力。這些基於隊列研究的模型不僅能夠達到高性能，而且由於數據的獲取是目標導向的，且使用的風險評分通常在臨床上是權威的，因此對結果具有良好的可解釋性。然而，隊列研究耗時、成本高，且難以實施。同時，對於發病率低的疾病來說，它不是一種適合的研究方法。相比之下，電子健康記錄（EHR）通常包含每個個體的各種信息，且可以從現有的醫院信息系統（HIS）中輕鬆獲取。因此，近年來基於臨床EHR的風險預測模型已經提出了許多。黃等人[16]提出了一種基於關聯規則化的新方法從EHR中提取特徵，並顯著提高了急性冠狀動脈綜合徵（ACS）風險預測的準確性。江等人[20]開發了一個基於EHR的醫院再入院風險預測的強大而準確的預測框架。然而，來自HIS的EHR通常是高維度和異質的，因此，特徵表示成為一個非常具有挑戰性的問題。許多現有的預測模型中的特徵表示通常是通過傳統的人工干預方法來實現的。Pike等人[26]根據一些專門的CVD風險評分從EHR中提取相關屬性，然後比較了這些風險評分的表現，如QRISK II評分和弗雷明漢風險評分（FRS）。Kennedy等人[27]根據FRS在預測模型中使用了傳統的風險因素。此外，他們還添加了一些通過統計分析從EHR中提取的特徵，以改善心血管風險預測。不幸的是，這些傳統的特徵工程高度依賴於專門的醫學經驗。為了減少對人工干預的依賴，一些最近的基於機器學習的方法[16]、[28]已被提出，以實現自動特徵學習。然而，EHR數據通常充滿了時間信息，傳統的機器學習方法通常無法處理序列性的EHR數據。

為了應對上述缺陷，許多研究人員提出了通過使用深度學習方法來提高模型學習時間序列和高維度醫療數據的能力，並在許多風險預測任務中取得了顯著成果。Ha等人[11]提出了一種基於RNN的模型，該模型能夠自動從診斷碼序列中學習，並實現對高風險疾病（例如心血管疾病）發生的預測。Nguyen等人[7]提出了一種基於CNN的叫做Deepr的模型來從時間性EHR中捕捉特徵，並成功地實現了出院後再入院風險的競爭性預測。在Deepr中，患者的EHR被表示為一個長度為100的序列，並且每次訪問中的醫療碼按隨機順序排列成一個短語，其中主要診斷後跟其他碼。然而，訪問中的醫療碼並不是嚴格按順序組織的。Ma等人[8]提出了一種基於具有不同類型注意力機制的RNN的模型叫做Dipole，用於診斷預測，該模型可以實現高性能並同時增強解釋性。Kim等人[6]提出了一種基於深度神經網絡的綜合框架叫做R-MeHPAN，可以顯著提高血管疾病風險預測的準確性。黃等人[29]基於正則化堆疊去噪自編碼器，實現了一個用於臨床EHR上急性冠狀動脈綜合徵（ACS）風險預測的高性能模型，該模型可以獲得帶有更多風險預測信息的重建特徵表示。儘管這些基於深度學習方法的模型在預測任務中已經實現了競爭性表現，但它們並沒有充分考慮到EHR中可用的異質醫療數據之間的差異和關係。具體來說，Dipole可以通過使用無序集來代表醫院訪問中作為一體的多個醫療碼，有效捕捉不同類型數據（診斷、藥物和程序）之間的關係。相比之下，R-MeHPAN為異質臨床數據分配了不同的表示學習模塊，如診斷模塊和藥物模塊，這些不同類型的數據專門用於它們各自的模塊。因此，R-MeHPAN可以通過不同的模塊區分它們，更好地分別獲得異質臨床數據中隱藏的特徵。在醫學領域，不同類型的數據都有它們自己的獨立特性。另一方面，不同類型數據之間也存在一定程度的潛在關係。我們相信，結合不同數據的獨立特性和不同類型數據之間的潛在關係，可以更全面地反映患者的健康狀態，從而提高模型的預測準確性。因此，通過結合Dipole和R-MeHPAN的優勢，我們建立了不同的獨立模塊來捕捉不同類型數據之間的特徵。同時，我們還將這些不同數據的組合輸入到另一個模塊中，以獲得不同類型數據之間的潛在關係。

我們提出的模型叫做DeepRisk，是一個基於真實HIS的臨床EHR的二元分類模型，用於預測患有糖尿病、高血壓或高脂血症史的患者心血管疾病高風險的發生，該模型通過基於注意力的神經網絡可以自動從時間性EHR數據中學習潛在特徵，具有長期依賴性，並提高預測性能。

### **2.2 深度神經網絡(Deep Neural Networks)**
深度神經網絡（DNN）是一種具有多層次的人工神經網絡，這些層次位於輸入層和輸出層之間。由於其在建模複雜非線性關係方面的卓越能力，DNN已廣泛應用於醫學領域，在近年來取得了一系列顯著成果[8]、[29]。DNN有兩種典型的變體：卷積神經網絡（CNN）和循環神經網絡（RNN）。CNN是一類深度且前饋的人工神經網絡，適合於圖像處理，廣泛用於醫學影像分割[30]、[31]和圖像分類[32]、[33]等。然而，CNN只能捕捉時間學習中的局部信息。相反，RNN是一類節點之間的連接形成沿著序列的有向圖的人工神經網絡，適合於捕捉長期信息。它可以從醫療保健中的序列數據提取潛在信息，在自然語言處理（NLP）方面表現良好[34]、[35]。為了增強RNN的能力，提出了雙向循環神經網絡（Bi-RNN），它由一個前向RNN和一個後向RNN同時組成，不僅可以捕捉過去狀態的信息，還可以捕捉未來狀態的信息，以便推斷當前狀態。最近，它在許多工作中被廣泛且成功地採用。

為了提高基於深度學習的這些模型的可解釋性，注意力機制已在許多任務中被成功證明是有效的[6]、[8]。它可以獲得包含更多潛在信息的上下文向量。重要的是，上下文向量不僅可以提高DNN的性能，還可以幫助研究人員解釋和理解實驗結果。特別是在時間學習任務[6]、[8]和機器翻譯任務[36]中，基於注意力機制的方法可以明顯地勝過其他以前的神經模型，因為它有效地克服了先前模型的一個重要瓶頸，即它們在從單個向量中捕捉足夠信息方面存在困難。

在我們的工作中，使用雙向長短期記憶（Bi-LSTM）[12]來學習時間排序的EHR數據中的隱藏信息。同時，設計了基於位置的注意力機制，以捕捉過去醫院訪問的不同權重，因為它已被證明是以前醫學預測任務中的更好選擇[8]。更重要的是，我們提出的模型DeepRisk可以更適當地整合多個EHR數據，並提高高風險預測的準確性。


## **3. 方法理論(METHODOLOGY)**
心血管疾病（CVDs）的高風險預測任務可以被解決為一個二元分類問題。在本文中，高風險心血管疾病的患者被標記為正樣本，而其他患者被標記為負樣本。我們首先使用深度學習方法來獲得嵌入式的醫學向量。然後，我們使用DeepRisk整合異質和時間有序的醫學數據的表示學習任務。在本節中，我們首先介紹本文使用的實驗數據集和基本符號。然後，我們說明並展示我們提出的心血管疾病高風險預測模型的詳細內容和框架。最後，我們描述醫學數據的表示以及我們模型中使用的基於注意力的神經網絡。

### **3.1 數據說明(Data Description)**
實驗數據取自於湘雅醫學數據集[37]，這些數據來自中南大學的湘雅醫學大數據項目。該項目是由中國政府資助的一個區域醫學IT項目，旨在實現各種類型的臨床醫學數據的安全共享和利用。目前，它主要涉及中南大學附屬的三家醫院，並包含過去十年的臨床數據。在湘雅醫學數據集中，每個診斷代碼都符合國際疾病分類的第10版（ICD10）[38]，每個實驗室指標都遵循湘雅醫院的規則，並具有相應的參考範圍的特定值。

我們利用與患有糖尿病、高血壓或高血脂病史的患者相對應的子數據集，也就是說，子數據集中的每位患者都曾被診斷為糖尿病（E10-E14）、高血壓（I10-I15）或高血脂（E78）的ICD10代碼。子數據集包含2010年至2017年322,900名患者（133,399名男性，172,642名女性和16,859名未知性別）的EHR信息，其中24,615名（9,997名男性，14,161名女性和457名未知性別）曾被診斷為至少一種類型的心血管疾病（CVDs）。我們的目標是使用患者的歷史訪問信息來預測未來一年內心血管疾病的風險。因此，我們使用患者的幾次先前訪問記錄（不包括任何心血管疾病的先前病史）來形成觀察窗口，並使用下一年的訪問記錄來形成預測窗口。觀察窗口中的數據被視為預測模型中要學習的時間特徵，而預測窗口中的數據被用來生成分類標籤（1表示高風險，0表示非風險）。

為了我們研究的目的，每次訪問或事件都按周進行匯總，並且過濾掉訪問次數少於6次的患者，以確保在觀察窗口（至少5次訪問）和預測窗口（至少1次訪問）中有足夠的訪問信息。具體的數據篩選過程如下：提取那些有心血管疾病診斷代碼且在第一次診斷心血管疾病之前至少有5次訪問的患者作為正樣本（高風險實例）。由於目前研究的目的是預測患者在下一年內心血管疾病的風險，我們只包括那些在觀察窗口的最後一次訪問後一年內被診斷為心血管疾病的患者。選擇那些在觀察窗口的最後一次訪問後至少一年沒有被診斷為心血管疾病的患者作為負樣本（非風險實例）。我們的模型中也考慮了實驗室指標。為了獲得高質量的變數，我們移除了在子數據集中出現次數少於100次的低頻實驗室指標。我們還排除了那些有很多缺失值的指標（缺失值比率超過0.9）。此外，我們還利用一些人口統計數據來提高高風險預測任務的準確性。本文中使用的人口統計特徵包括年齡、性別、患者類型（住院、門診和急診）、醫院訪問次數和手術史。

最後，我們獲得了總共146,296名患者（68,249名男性，73,079名女性和4,968名未知性別），其中包括20,450名患有心血管疾病的患者（8,152名男性，12,066名女性和232名未知性別）。表1對最終的數據集進行了簡單的描述，且心血管疾病患者的訪問分佈顯示在圖1中。在這最終的數據集中，總共有817個獨特的診斷代碼和687個獨特的實驗室指標。對於每個符合ICD10的診斷代碼，我們在最終的數據集中只保留它們的前三位。

![image.png](https://hackmd.io/_uploads/H1QlZokQa.png)
**圖1.** 2010-2017年心血管病患就診分佈

![image.png](https://hackmd.io/_uploads/BJBdWokQp.png)



### **3.2 基本符號(Basic Notations)**
為了更清晰地描述 $DeepRisk$，我們詳細說明了一些基本概念和表示方法。EHR資料中的醫療代碼集合（包括診斷代碼和實驗室指數）表示為:

**$D = \{ d_1, d_2, ... , d_L \}$**

其中 $L$ 是唯一醫療代碼的總數，每個元素 $d_j$ 代表一個特定的醫療代碼。 

**$P = \{p_1, p_2, ... , p_N \}$**

代表病人集合，其中 $N$ 是病人的總數，每個元素 $p_k$ 對應一個唯一的病人。從 HIS 提取的病人 $p_k$ 的 EHR 資料可以表示為具有時間信息的多變量觀察序列，稱為訪問序列，表示為 :

**$\langle V^{p_{k}}_1, V^{p_{k}}_2,..., V^{p_{k}}_{T(p_k)} \rangle$**

其中 $T(p_k)$ 是病人 $p_k$ 的總訪問次數。病人 $p_k$ 的每次訪問 $V^{p_{k}}_i$ 都包括多個醫療代碼的集合，其中每個代碼表示該病人在當前訪問中被診斷出某種疾病或進行了相應的實驗室指數檢查。為了將訪問轉化為深度學習模型的輸入向量，我們將每次訪問 $V^{p_{k}}_i$ 表示為一個一維的二進制向量 $x^{pk}_i$，其中 $x^{pk}_i$ 的長度等於 $L$，$x^{pk}_i$ 的每個元素對應一個唯一的醫療代碼。如果醫療代碼 $d_j$ 出現在訪問 $V^{p_{k}}_i$ 中，則相應的元素 $x^{pk}_i(j)$ 被指定為1，否則為0。此外，對於具有多個結果值的一些醫療代碼，例如某些實驗室指標，我們特別定義了以下不同的規則來完成它們的值賦值：
:::info
* **當實驗室指標的數值結果值為正常（在正常參考範圍內）時，分配為 1；**
* **當實驗室指標的數值結果值為異常（超出正常參考範圍）時，分配為 2；**
* **在其他情況下，分配為 0。**
:::
在沒有歧義的情況下，我們簡化了向量 $x^{pk}_i$ 的表示法，該向量對應於病人 $p_k$ 的第 $i$ 次訪問，在本文的其餘部分簡化為 $x^i$。圖2a 顯示了來自一位病人的時間有序序列數據的示例，其中每個事件包含不同的診斷代碼和實驗室指數。我們的目的是使用觀察窗口中的前 $t$ 次訪問記錄來產生病人的肖像，並使用預測窗口中的訪問記錄來獲得類別標籤。在這種情況下，因為預測窗口中有一個 CVD (I20，表示心絞痛) 的診斷代碼，所以我們可以為高風險實例獲得一個類別標籤。假設在一個 EHR 系統中總共有九個唯一的醫學代碼（不包括 CVDs 的診斷代碼）：I10、E78、H30、K81、WBC、PDW、FBG、HDL 和 BP，其中前四個屬於診斷代碼，其餘的是實驗室指數。那麼，如圖 2a 所示，病人的每次訪問記錄可以表示為一個九維向量，其中每個維度對應於上述醫學代碼的狀態，如圖2b 所示。
例如，在事件1中，如果患者被診斷為 I10 和 E78，同時 WBC 的值屬於正常範圍，
而 PDW 的值是異常的，我們可以得到訪問表示 : 

**$x_1 = [1,1,0,0,1,2,0,0,0]$** ， $x_1$ 也可以被分為兩部分 : 

**診斷表示 : $x_1^{'} = [1,1,0,0]$ ， 實驗室表示 : $x_1^{''} = [1,2,0,0,0]$**

分別用於訓練不同的模型。在最終的數據集中，總共有 1,504 個醫學代碼，其中包括 817 個診斷代碼和 687 個實驗室指數。



此外，本文中使用的人口統計特徵（年齡、性別、患者類型、醫院訪問次數、手術歷史）
通過One-Hot進行離散化為稀疏向量。例如，一位54歲的女性急診部患者，有10次醫院訪問和手術歷史，可以獲得一個人口統計表示向量。如圖3所示:
:::info
* **年齡分為七個階段（0-18、18-30、30-45、45-60、60-75和75+），**
* **性別包含兩個具體值（男和女），**
* **患者類型包括三個獨特的類別（住院、門診和急診），**
* **醫院訪問次數被分為6個部分（6-12、12-18、18-24、24-30、30-36 和 36+），**
* **手術歷史表示為一個二維向量（S和NS）。**
:::
此外，還分別為三個人口統計特徵（年齡、性別和患者類型）添加了一個更多的維度（未知，“UK”），表示特徵有缺失值。

![](https://hackmd.io/_uploads/rJb9dxBz6.png)
**圖2.** 一名患者的序列數據。診斷代碼I10、E78、H30、K81和I20分別表示高血壓、高血脂、脈絡膜視網膜炎、膽囊炎和心絞痛。實驗室指標WBC、PDW、TG、FBG、HDL和BP分別表示白血球、血小板分佈寬度、甘油三酯、空腹血糖、高密度脂蛋白和血壓。
![](https://hackmd.io/_uploads/HJbwseBGp.png)
**圖3.** 患者的離散化向量。
:::warning
* **在“年齡”部分，“45-60”意味著患者的年齡在45到60之間，“UK”表示未知。**
* **在“性別”部分，“F”和“M”分別代表女性和男性。**
* **在“患者類型”部分，“I”、“O”和“E”分別表示住院、門診和急診。**
* **在“歷史訪問次數”部分，“6-12”表示訪問次數大於或等於6且小於12。**
* **在“手術歷史”部分，“S”表示患者有手術歷史，而“NS”表示沒有。**
:::


### **3.3 模型概覽(Model Overview)**

圖 4 展示了我們所提議的 $DeepRisk$ 方法的一般框架。根據以下步驟從四種數據中獲得患者的表示：

* **診斷序列**
* **診斷和實驗室測試序列**
* **實驗室測試序列**
* **人口統計資料**

首先，這四種數據分別被嵌入為四個語義向量，$v1_t、v2_t、v3_t、v4_t$ 。並使用四個獨立的模塊，其中包括三個基於注意力的 $LSTM$ ($A$-$LSTM$) 和一個普通的 $DNN$，來獲得四個表示向量 $h1_t$、$h2_t$、$h3_t$、$h4_t$。最後將 $h1_t、h2_t、h3_t、h4_t$ 串聯作為最終的患者表示向量，以供 $softmax$ 層使用。

值得注意的是，所提議的模型建議充分利用三個模塊的診斷數據和實驗室測試數據。首先，我們將它們都輸入到一個 $A$-$LSTM$ 模塊中，因為我們相信診斷代碼和實驗室測試代碼之間存在潛在的關係。然後，我們分別將診斷數據和實驗室測試數據輸入到它們獨立的 $A$-$LSTM$ 模塊中，以防止忽略它們之間的差異。

![](https://hackmd.io/_uploads/ryH2WWrGp.png)
**圖4.** 提議的用於心血管疾病高風險預測的DeepRisk框架概述。有四個輸入（$(a)輸入數據$），包括“診斷序列”、“診斷和實驗室序列”、“實驗室序列”和“人口統計數據”。首先，將輸入分別載入到它們的嵌入部分( $(b) 嵌入$ )中，產生獨立的嵌入向量。然後，我們基於基於注意力的深度神經網絡或普通的DNN訓練四個模型( $(c) 表示學習$ )，為患者產生表示向量。最後，連接的表示被輸入到softmax層中以預測患者的高風險( $(d) 分類$ )。在圖中，$t$ 表示序列數據的長度；$m_1=256$、$m_2=512$、$m_3=256$ 和 $m_4=22$ 是嵌入向量的大小；$r_1=128$、$r_2=128$、$r_3=128$ 和 $r_4=8$ 是 $A-LSTM$ 的輸出的維度；$u = 2$ 是類別的數量。

### **3.4 醫療數據表示(Medical Data Representation)**

這四種來自每個個體的 EHR 的不同部分的數據分別如圖4 所示嵌入，並各自專用於它們各自的模塊。每種序列數據（如“診斷序列”、“診斷和實驗室測試序列”和“實驗室測試序列”）都由多個表示為 $x_i$ 的醫學代碼組成，並嵌入為與 $Med2Vec$ [39] 類似的低維度表示向量 $v_i \in\ R_m$。具體來說，使用修正線性單位 $(ReLU)$ 和線性映射函數來獲得訪問表示，這是神經網絡的常見激活函數，定義為 : 

* $v_i = \text{ReLU}(W_v x_i + b_c)$&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(1)$

其中 $W_v \in\ R^{m\times L}$ 是一個權重矩陣，可以為每次訪問的每個醫學代碼的重要性進行排序，而 $m$ 是嵌入向量 $v_t$ 的大小。

&ensp;&ensp;&ensp;&ensp;在原始的 $Med2Vec$ 中，它在每個訪問嵌入向量中添加人口統計資訊，所以還有一個額外的層（由 $ReLU$ 和線性映射函數計算）來合併數據資訊。而在 $DeepRisk$ 中，我們使用一個獨立的模塊來處理人口統計數據，而不是像 $Med2Vec$ 那樣在每次訪問中都考慮它，所以我們只需要 $Med2Vec$ 的第一層來進行我們的訪問嵌入。對於每個需要預測的患者，我們使用觀察窗口中的最新統計人口統計特徵以提高 $DeepRisk$ 的預測精度。如圖 3 所示，人口統計特徵被離散化並通過 One-Hot 表示為稀疏向量。


### **3.5 循環神經網絡(Recurrent Neural Networks)**
&ensp;&ensp;&ensp;&ensp;循環神經網絡（$RNNs$）因其在從序列數據中明確學習隱藏模式的出色性能而聞名。然而，在一個正序列中，前向 $RNNs$ 只考慮到前面的輸入信息，而忽略了後來的信息，當計算當前狀態時。但是，隨後的輸入信息通常也對其有用。因此，我們在建議的模型中採用雙向循環神經網絡（$Bi$-$RNNs$）來克服前向 $RNNs$ 的這一缺點。

&ensp;&ensp;&ensp;&ensp; $Bi-RNNs$ 由前向和後向 $RNNs$ 組成，可以充分利用當前狀態的過去和未來信息。前向RNN從起點到終點餵入訪問序列以計算一系列前向隱藏狀態，而後向RNN反向讀取訪問序列並計算一系列後向隱藏狀態。然後，我們的建議模型中使用元素逐點乘法操作來組合這兩個隱藏狀態，因為它在我們的相關實驗中的性能超越了其他方法，這在第$IV$部分的$C$節中有描述。

&ensp;&ensp;&ensp;&ensp;此外，為了處理當要處理的序列長度非常大時出現的梯度消失問題，我們在我們所提議的模型中使用了$Bi$-$LSTM$ [12]。以前向LSTM為例，每個前向 $LSTM$ 單元都擁有一個由三個 $sigmoid$ 閘控制的記憶單元狀態：遺忘閘 $F_i$ 、輸入閘 $I_i$ 和輸出閘 $O_i$ 。遺忘閘 $F_i$ 用於決定從單元狀態 $S_i$ 中應丟棄的信息，而輸入閘 $I_i$ 用於決定將存儲哪些信息。最後，輸出閘 $O_i$ 將確定單元狀態 $S_i$ 的哪些信息將被輸出。通過這三個閘，可以計算前向 $LSTM$ 單元的隱藏狀態 $\overrightarrow{h_i}$ ：

* $F_i = \sigma(W_f [h_{i-1}, v_i] + b_f)$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(2)$

* $I_i = \sigma(W_i [h_{i-1}, v_i] + b_i)$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(3)$

* $O_i = \sigma(W_o [h_{i-1}, v_i] + b_o)$&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(4)$

* $S_i = F_i \otimes S_{i-1} + I_i \otimes \tanh(W_s [h_{i-1}, v_i] + b_s)$&ensp;&ensp;&ensp;&ensp;$(5)$


* $\overrightarrow{h_i} = O_i \otimes \tanh(S_i)$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(6)$


&ensp;&ensp;&ensp;&ensp;其中， $[h_{i-1} : v_i] \in\ R^{q+m}$ 是前一個隱藏狀態 $h_{i-1}$ 和當前訪問嵌入向量 $v_i$ 的連接。 $q$ 表示每個隱藏狀態 $h_i$ 的維度。 $W_f$、$W_i$、$W_o$、$W_s$ $\in\ R^{q\times(q+m)}$ 是待學習的權重矩陣，而 $b_f$、$b_i$、$b_o$、$b_s$ $\in\ R^{q}$ 是偏置向量。 $σ$ 是邏輯 $sigmoid$ 函數，而 $\otimes$ 表示元素乘法運算。以類似的方式，還可以得到後向 $LSTM$ 單元的隱藏狀態 $\overleftarrow{h_i}$。然後，可以通過以下方式獲得 $Bi-LSTM$ 單元的隱藏狀態 $h_i$ ：

* $h_i = \overleftarrow{h_i} \otimes \overrightarrow{h_i}$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(7)$


### **3.6 注意力機制(Attention Mechanism)**

為了增強$Bi$-$LSTM$的能力，我們利用基於注意力的$Bi$-$LSTM$ ($A$-$LSTM$)，如圖5所示，進行表示學習。如上所述，如果我們只使用$RNNs$將輸入序列 $\langle x_1; x_2; ... ; x_t \rangle$ 轉化為隱藏輸出向量 $\langle  h_1; h_2; ... ; h_t \rangle$，則訪問之間的某些模式信息可能會消失並被忽略。因此，我們在所提出的模型中使用基於位置的注意機制來導出一個上下文向量 $c_t$，它可以幫助捕獲更多的高風險預測任務信息，並在處理順序EHR數據方面取得了更高的性能 [10]。我們所提出的模型中的上下文向量 $c_t$ 的計算方法如下：

* $ct = \sum_{i=1}^{t-1} \alpha_{ti} h_i$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(8)$

其中， $h_i$ 表示第 $i$ 個隱藏狀態，而 $a_{ti}$ 是一個向量，用於捕獲當前隱藏狀態 $h_i$ 的權重。 $a_{ti}$ 通過以下方式獲得：

* $\alpha_{ti} = W_{\alpha} h_{i} + b_{\alpha}$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(9)$

* $\alpha_t = softmax([\alpha_{t1}，\alpha_{t2}， ... ， \alpha_{t(t-1)}])$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(10)$

在此，$W_{\alpha} \in R^q$ 和 $b_{\alpha} \in R$ 分別表示權重矩陣和偏差項，這兩者都需要學習。根據公式 $(4)$ ，我們可以使用 $softmax$函數得到一個注意力權重向量 $\langle \alpha_{t1}，\alpha_{t2}， ... ， \alpha_{t(t-1)} \rangle$ ，其大小為 $t-1$ ，每個元素分別表示相對應隱藏狀態的重要性。注意，從 $softmax$ 中得到的向量 $\alpha_t$ 的元素用於計算 $c_t$。

基於當前的隱藏狀態 $h_t$ 和上述的上下文向量 $c_t$ ，我們可以通過簡單地將它們連接起來得到一個合併的向量 $\tilde h_t$ 來獲得一個注意力隱藏狀態，根據以下公式計算：

* $\tilde h_t = tanh(W_c [c_t ; h_t])$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(11)$


其中 $W_c \in R^{r \times 2q}$ 需要學習的權重矩陣，而 $r$ 是 $\tilde h_t$ 的維度。我們將 $\tilde h_t$ 視為觀察窗口中 $t$ 次訪問的最終表示。如圖4所示，我們使用了三個 $A$-$LSTM$ 模塊來捕獲不同種類的臨床數據的多個最終表示向量 $\tilde {h_t^1} \in R^{r_1}$ 、 $\tilde {h_t^2} \in R^{r_2}$ 、 $\tilde {h_t^3} \in R^{r_3}$ ， 同時，我們使用一個普通的DNN模塊為人口統計資料獲得一個低維向量 $\tilde {h_t^4} \in R^{r_4}$ 然後，基於公式(12)，我們將 $\tilde {h_t^1}$ 、 $\tilde {h_t^2}$ 、 $\tilde {h_t^3}$ 、 $\tilde {h_t^4}$ 的連接餵入 $softmax$ 層，以計算預測窗口期間的條件概率分佈，如下所示：

$\hat{y}=softmax(W_x([\tilde{h_t^1};\tilde{h_t^2};\tilde{h_t^3} ;\tilde{h_t^4}])+b_x)$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(12)$

其中 $W_x \in R^{u \times (r_1+r_2+r_3+r_4)}$ 和 $b_x$ 分別是需要學習的參數，代表權重矩陣和偏差項， $u$ 是類別的數量，在本文中 $u=2$ 。
![image](https://hackmd.io/_uploads/SJU0jEINT.png)




### **3.7 損失函數(Loss Function)**
為了獲得適當的模型參數，我們使用實際資訊 $y_i$ 和預測資訊 $\hat y_{i}$ 之間的交叉熵來計算，如下所示：


$Loss = -\frac{1}{N} \sum_{i=1}^{N} y_i^T \log \hat y_{i} + (1 - y_i)^T \log (1 - \hat y_{i})$ &ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(13)$

&ensp;&ensp;&ensp;&ensp;其中，$y_i$ 是第 $i$ 個患者的心血管疾病高風險指標。如果 $y_i$ 等於 $1$ ，則表示為高風險案例；而如果 $y_i$ 等於 $0$ ，則表示為正常案例。而 $\hat y_{i}$ 是由模型計算出的第 $i$ 個患者的風險分數。優化是基於反向傳播和小批量隨機梯度下降$（SGD）$執行的，這是由基於$Python$的$TensorFlow$深度學習框架$Keras 2.2.2$自動計算的。



## **4 實驗(EXPERIMENTS)**
### **4.1 基準模型(Baseline Models)**
我們首先使用幾種典型的機器學習方法作為基線，以驗證 $A$-$LSTM$ 對於高風險預測任務的效能:
* ***邏輯回歸(LR)***[28]。它是一個受歡迎且傳統的統計模型，通常用於處理二元分類任務。
* ***支持向量機與序列最小優化( $SVM_{smo}$ )*** [40]。$SMO$ 是一種受歡迎的分解方法，總是使用最小的可能工作集，該工作集包含兩個對偶變量，並在解決 $SVM$ 的訓練過程中可以非常有效地更新。因為我們的實驗數據集對於純 $SVM$ 來說非常巨大，所以我們使用 $SVM_{smo}$ 以有效地解決 $SVM$ 訓練過程中出現的二次規劃問題。
* ***隨機森林 (RF)*** [28]。它是基於 $Bagging$ 的集成學習方法，可以克服單一決策樹帶來的過度擬合問題，並提高模型的泛化能力。
* ***LightGBM***[41]。它是一個高效的梯度提升決策樹$(GBDT)$，不僅可以加快訓練過程，還可以實現高準確度。
* ***Bi-LSTM***[12]。由於它可以捕獲序列中重要事件之間的資訊，因此它在處理、分類和基於有序序列數據進行預測方面表現出色。

上述提到的所有算法都分別在三個子數據集上執行（只有診斷序列、只有實驗室測試序列和兩者都有）。需要注意的是， $Bi$-$LSTM$ 和 $A$-$LSTM$ 是時間學習算法，可以捕捉時間有序的信息，而$LR$, $SVMsmo$, $RF$ 和 $lightGBM$則不是。因此，在模型$（LR、SVMsmo、RF和lightGBM）$中，每個病人都被表示為一個 $BoW$ 向量，這忽略了時間信息以及診斷碼和實驗室指標之間的區別。因此，我們努力採取更有效的措施來組合這些數據。我們使用 $A$-$LSTM$ 建立我們提議的框架 $DeepRisk$ 來預測CVDs的高風險，這可以更恰當地組合不同的數據。為了證明 $DeepRisk$ 與其他深度學習模型相比的優越性，我們實施了三個基於深度學習的最先進的框架作為基線。

* **R-MeHPAN [6]。它是一個基於 $GRU$ 的組合模型，用於預測血管疾病的發病，而不考慮時間窗口。在原始的 $R$-$MeHPAN$ 中，訪問信息包括診斷序列和用藥序列。因此，該模型建立了兩個主要模塊，如診斷模塊和用藥模塊，以單獨學習不同的輸入數據序列。**
* **$Deepr$ [7]。它是一個基於一維卷積神經網絡 $（1D-CNN）$ 的醫療記錄端到端表示學習模型，該模型建議將患者的EHR表示為一系列時間有序的訪問事件。$Deepr$ 為患者的輸入表示使用一個100長度的序列，並要求序列的每一點只包含一個醫療碼，因此每次訪問都會按照隨機順序將主要診斷與其他碼序列化為一個短語。**
* **Dipolel [8]。它是一個基於帶注意機制的雙向 $RNN$ 的診斷預測任務模型，該模型將醫療記錄表示為一系列訪問。每次訪問都是一個無序集合，其中包含多個唯一的醫療碼。**

與 $DeepRisk$ 相比， $Deepr$ 具有基本相似的任務目標，而 $R$-$MeHPAN$ 和$Dipolel$ 的原始目標則有所不同。從本質上講， $Dipolel$ 和 $R$-$MeHPAN$ 都試圖使用先前的訪問信息來預測下一次訪問的診斷。相比之下， $DeepRisk$ 和 $Deepr$ 的目的是預測在一定時間間隔內的結果或發病，而不是某次訪問的結果或發病。在我們的工作中，我們的目的是使用患者的歷史訪問信息來預測未來一年內的CVDs風險。因此，如第三部分A和B節所述，我們使用患者的幾次先前訪問記錄來形成觀察窗口，並使用下一年的訪問記錄來形成預測窗口（產生標籤或結果信息）。此外， $Dipolel$ 中的類別級診斷碼預測任務被解決為多類分類問題，而在 $DeepRisk$ 中，CVDs的高風險預測任務是一個二元分類問題。因此，在我們的實驗中， $Dipolel$ 和 $R$-$MeHPAN$ 的任務被改變為與我們的任務保持一致，而 $Dipolel$ 中的最終 $softmax$ 函數也被修改為滿足二元預測。為了公正地比較這些模型在我們的心血管疾病風險預測任務上的性能，觀察窗口中的連續訪問中的患者歷史數據被用作輸入，而預測窗口中的訪問中獲得的結果（高風險或無風險）被用作預測標籤來訓練和驗證所有模型。


### **4.2 評估指標(Evaluation Metrics)**

&ensp;&ensp;&ensp;&ensp;對於高風險預測任務，特別是當它帶有不平衡分類問題時，使用適當的策略評估模型是至關重要的。在我們的工作中，我們使用了四種度量：精確度 $(precision)$、召回率 $(recall)$、$F1$-分數 $(F1-score)$ 和 $AUC$ 。精確度、召回率和 $F1$-分數的計算公式如下：

* $Recall = \frac{TP}{TP + FN}$&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(14)$

* $Precision = \frac{TP}{TP + FP}$&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;&ensp;$(15)$

* $F1 = 2 \times \frac{recall \times precision}{recall + precision}$ &ensp;&ensp;&ensp;&ensp;$(16)$

&ensp;&ensp;&ensp;&ensp;其中 $TP$, $FN$ 和 $FP$ 分別表示，真陽 $(True Positive)$ 、偽陰 $(False Negative)$ 和偽陽 $(False Positive)$ 。更具體地說，此任務中的 $TP$ 表示那些高風險標籤的病人被我們的模型正確地預測的數目， $FN$ 表示那些帶有高風險標籤但被我們的模型錯誤地預測的病人， $FP$ 表示那些沒有高風險標籤但被我們的模型錯誤地預測的病人。


### **4.3 實施細節(Implementation Details)**
我們基於湘雅醫學數據集中提取的數據，使用Keras 2.2.2 [42]實現了所有方法。我們隨機將數據集分為訓練、驗證和測試子集，比例分別為0.7:0.1:0.2，即訓練、驗證和測試子集的大小分別為102,407、14,630和29,259。對於每一個預測模型，我們以每次1,024個序列的方式進行小批量訓練，並進行100次迭代。為了提高模型的泛化性能，在我們的工作中，數據獨立劃分，每個模型被訓練和測試10次。最後，我們報告了10次測試結果的平均評估指標。

為了獲得最佳的超參數，我們在訓練和驗證數據上使用了基於python的開發套件hyperopt [43]的一種流行的自動化方法。在hyperopt中，使用了貝葉斯優化方法進行參數調整，這使我們能夠更有效地獲得給定模型的最佳超參數。對於SVMsmo，我們得到了最優超參數toler=0.001（容錯率）和gamma=0.001（RBF的核係數）。對於RF，我們得到了超參數n_estimators=55（森林中的樹的數量）和max_features=34（在尋找最佳分裂時考慮的特徵數量）的最優值。對於lightGBM，我們得到了最佳超參數n_estimators=51和learning_rate=0.01。此外，實際上，當合併來自前向和後向RNNs的兩個隱藏狀態時，可以採用幾種不同的向量處理技術，例如連接這兩個狀態或對它們進行元素級操作（乘法、加法和平均）。為了獲得我們模型的最合適的方法，我們進行了一些實驗，測試我們的模型在使用不同向量處理方法時的預測性能，部分結果顯示在表2中。從結果中我們可以看到，當使用元素級乘法操作時，A-LSTM和Bi-LSTM兩個模型都達到了最佳性能。因此，我們選擇使用元素級乘法操作來結合從前向和後向RNNs生成的隱藏狀態。

為了防止過度擬合，我們在所有方法中都採用正則化（L2範數，係數為0.001）和早停策略來提高泛化能力。在DeepRisk和所有基於RNN的基線方法（Dipolel和R-MeHPAN）中，每個RNN模組都包含三個隱藏層，並在每個時間步驟中將隱藏單元的數量設置為256、256和128。由於其他四個基線模型（LR、SVMsmo、RF、LightGBM）不能捕獲時間信息，所以我們使用BoW方法為它們提供一個無序集。此外，原始的三個基線深度模型在使用人口統計數據方面略有不同。原始的Deepr和Dipolel中使用的患者訪問信息不包括任何人口統計數據。而在原始的R-MeHPAN中，診斷類型序列和藥物類型序列被用作患者的人口統計特徵。然而，在我們的工作中，我們使用了幾個靜態的人口統計特徵，如性別和年齡，這些特徵不適合被表示為序列。因此，為了展示引入人口統計數據的重要性，同時確保性能比較的公平性，我們以DeepRisk中使用的相同方式將相關的人口統計數據添加到上述三個深度模型中。

![](https://hackmd.io/_uploads/B1BFfGrM6.png)

### **4.4 結果分析(Results Analysis)**
所有的實驗結果都顯示在表3和4中。在本文中，我們的目的是標記出有心血管疾病高風險的患者，所以我們更傾向於關注召回率。需要注意的是，F1分數是召回率和精確度的組合指標，可以更好地反映性能，所以F1分數可以避免在這項任務中忽略精確度的測量。此外，AUC也是一個對於不平衡問題的強健的評估策略。

![](https://hackmd.io/_uploads/B1FA7GBfa.png)
![](https://hackmd.io/_uploads/SyakNzSGT.png)

#### **4.4.1 時序學習的好處(Benefits of Temporal Learning)**
在此小節中，我們首先探討時序學習對預測性能的好處。如表3所示，兩種時序學習方法（Bi-LSTM 和 A-LSTM）顯著優於其他四種不支持時間序列數據分析的方法（LR、SVMsmo、RF 和 LightGBM）。例如，當僅使用診斷序列時，Bi-LSTM 達到了 0.7039 的召回率、0.6545 的 F1 分數和 0.7798 的 AUC。這顯然優於 LightGBM，後者是其他四個基線中的最佳選擇。這主要是因為 Bi-LSTM 將患者的訪問記錄表示為時間有序的序列，而不是靜態的無序的序列，這可以更有效地捕捉患者疾病發展的相關動態特徵，從而獲得更好的預測性能。

實驗結果顯示了使用不同類型的數據或它們的組合對預測性能的影響。診斷序列和實驗室序列的組合使模型的性能比僅使用其中一種數據類型要好得多。當僅使用實驗室序列時，從表3中我們可以看到 Bi-LSTM 僅獲得 0.6031 的 F1 分數和 0.7587 的 AUC。然而，加入診斷序列使模型性能大大提高（F1 分數和 AUC 分別增加到 0.6731 和 0.7954）。同時，可以觀察到，僅使用診斷序列的性能高於僅使用實驗室序列。其中一個原因是實驗室測試數據中有大量的缺失數據，且低質量的數據大大影響了模型的預測性能。這也激勵我們在所提議的模型中使用診斷序列的表示來增強實驗室序列的表示學習。

此外，我們也可以看到，在三個子數據集中，A-LSTM 的表現都優於 Bi-LSTM。與 Bi-LSTM 相比，當使用診斷序列和實驗室序列的組合時，A-LSTM 將預測性能從 0.7220 的召回率、0.6731 的 F1 分數和 0.7954 的 AUC 提高到 0.7333 的召回率、0.6818 的 F1 分數和 0.8032 的 AUC。這充分證明了注意力機制可以增強模型的預測能力，因為它能夠推導出包含隱藏狀態之間相關信息的上下文向量。

此外，RF 和 LightGBM 的性能明顯高於 LR 和 SVMsmo，甚至在精確度上超過了 Bi-LSTM 和 A-LSTM，這是因為 RF 和 LightGBM 分別基於 Bagging 和 Boosting 的集成模型，可以增強模型的泛化和擬合能力。

綜合比較，我們建議 A-LSTM 可以作為心血管疾病高風險預測的更好選擇，因為它可以捕捉時間有序的信息並利用注意力機制的優勢。同時，它可以在組合數據（診斷和實驗室序列）上實現更高的性能。




#### **4.4.2 整合表示學習框架的影響(Impact of Ensemble Representation Learning Frameworks)**
由於我們提出的模型採用了基於多種醫學數據的集成表示學習框架，因此在此小節，我們嘗試通過與其他類似的深度學習模型（Deepr、Dipolel 和 R-MeHPAN）進行比較，來分析不同集成表示學習框架的影響。如表4所示，我們提出的模型 DeepRisk 在召回、F1-分數和AUC上顯著優於所有基線模型。原因是 DeepRisk 旨在將多種臨床數據整合成一個具有密切關係的整體，這不僅可以充分利用診斷序列和實驗室序列之間的差異，還可以考慮它們之間的關係。

另外，R-MeHPAN 在所有指標上都顯著優於 Dipolel，這表明 R-MeHPAN 更適合湘雅醫學數據集。原因之一是 Dipolel 忽略了異質數據之間的差異。Dipolel 將每次訪問表示為唯一醫學代碼的無序集合（包括診斷代碼和實驗室指數），而 R-MeHPAN 為異質臨床數據分配不同的表示學習模塊，例如在我們的任務中的診斷模塊和實驗室模塊，這些模塊在本文中都專用於每一個基於注意力的Bi-LSTM。

總之，所提出的框架 DeepRisk 在湘雅醫學數據集上可以實現最佳性能。這證明了 DeepRisk 可以將多種臨床數據整合成一個具有密切關係的整體。DeepRisk 不僅可以從每條數據（診斷序列和實驗室序列）中獲取特徵，而且還可以在更高的層次上從它們的組合中學習潛在的和聚合的特徵。


#### **4.4.3 人口統計資料的影響(Effect of Demographic Data)**
此外，當增加了人口統計數據時，可以看到每個模型的性能都顯著提高。以 Dipolel 為例，人口統計數據將其預測性能提高到 0.7843 的召回率、0.6314 的精度、0.6996 的 F1 分數和 0.8011 的 AUC，這些數字分別比沒有人口統計數據時高出約 0.0522、0.0291、0.0387 和 0.0208。這充分證明了人口統計數據包含了一些有用的信息，這些信息對模型的預測性能有正面影響。再者，值得注意的是，無論在哪種情況下，我們的模型都在四者中實現了最佳的預測性能。


#### **4.4.4 透過注意力機制進行解釋(Interpretation via Attention Mechanism)**
為了尋求我們提出的用於預測心血管疾病高風險的DeepRisk模型的一些合理的醫學解釋，我們分析了DeepRisk從診斷序列中學到的注意權重。對於被DeepRisk預測為高風險的每個樣本，我們選擇注意權重最大的情節作為一個無序集。然後，我們從這些無序集中計算出10個最常見的診斷代碼。如表5所示，我們可以看到診斷代碼E14（糖尿病）和I10（高血壓）對心血管疾病的預測任務有顯著的貢獻，這與[44]報導的醫學知識是一致的。我們還可以觀察到，有五個診斷代碼與內分泌、營養和代謝疾病有關（E14、E05、E16、E03和E78，它們的開頭都是字母E）。已有報告表明，有代謝綜合症的人發展心血管疾病的可能性是沒有代謝綜合症的人的兩倍[45]。此外，兩個診斷代碼K29（胃炎和十二指腸炎）和K75（炎症性肝病）屬於消化系統疾病，也對最終的高風險預測任務有影響。Klimenko等人[46]已經證明，心血管系統和消化系統之間存在密切的互動，消化系統的狀態會影響心血管中的膽固醇水平。值得注意的是，診斷代碼G40（癲癇）也對我們的任務產生了影響。已有研究表明，癲癇與心血管疾病的風險因素有關，如高血壓、糖尿病和高膽固醇[47]。
![](https://hackmd.io/_uploads/BkO9EzHG6.png)


:::success

:mag_right: **分析注意力權重：**

DeepRisk模型利用注意力機制來決定不同診斷序列中哪些信息對於預測心血管疾病高風險最重要。
對於被預測為高風險的每個樣本，選擇具有最大注意力權重的訪問事件（episode），視為一個無序集合。

:mag_right: **頻繁診斷碼的統計：**

從這些無序集合中，計算出出現頻率最高的10個診斷碼。
例如，表5展示了診斷碼E14（糖尿病）和I10（高血壓）對於預測心血管疾病的貢獻，這與醫學文獻[44]報告的知識一致。

:mag_right: **醫學解釋：**

糖尿病和高血壓被識別為心血管疾病的重要風險因素。
此外，還發現與內分泌、營養和代謝疾病相關的診斷碼（以E開頭）在預測中也很重要。
根據文獻[45]，患有代謝綜合征的個體發展心血管疾病的風險是無代謝綜合征個體的兩倍。

:mag_right: **其他相關疾病：**

診斷碼K29（胃炎和十二指腸炎）和K75（炎症性肝病），屬於消化系統疾病，也影響最終的高風險預測任務。這與心血管系統和消化系統之間的密切相互作用相關，消化系統的狀態會影響心血管中的膽固醇水平。
診斷碼G40（癲癇）也對預測任務有所貢獻。據文獻[47]報告，癲癇與心血管疾病的風險因素（如高血壓、糖尿病和高膽固醇）有關。
:::


## **5. 結論(CONCLUSION)**
從電子健康記錄中進行高風險預測是一項重要且具有挑戰性的任務。面對有時間順序的電子健康記錄數據，A-LSTM是一種適合進行表示學習的模型，因為它可以捕捉時間信息。此外，我們提出的模型DeepRisk有三個主要優點。首先，DeepRisk是一個端到端的、易於操作的、強健的模型，可以自動提取特徵。其次，它可以通過整合多種臨床數據來從電子健康記錄中獲得更精確和強健的表示，因為它不僅可以充分利用異質電子健康記錄數據之間的差異，而且還考慮到它們之間的關係。第三，所提出的DeepRisk模型可以實現心血管疾病的高風險預測的高性能。

然而，DeepRisk也有一些限制。一方面，Deeprisk的性能依賴於高質量的時間數據。另一方面，其對其他疾病的預測任務的有效性還需要進一步驗證。在未來，我們將擴展我們的工作，通過利用更多的先進方法來進行表示學習，並結合更多類型的臨床數據，如筆記和藥物記錄，以提高高風險預測任務。我們還將進一步提高我們模型的可擴展性和泛化能力，使其可以應用於解決更多的臨床問題。此外，我們計劃研究注意機制如何提高模型的性能，並尋找預測結果的合理醫學解釋。
