機器學習能診斷病情,還能預測患者出院後的狀況?

摘要: 機器學習正逐漸改變着各行各業,醫療行業也處於變革之中。想不到機器學習不光能診斷患者病情,還能預測患者出院後的狀況呢,這個研究方向有點意思,感興趣的讀者快來瞅瞅吧!python

 

       隨着數據量以及計算機性能的不斷提高,機器學習技術正逐漸滲透於各行各業中。計算機視覺、天然語言處理、機器人等領域基本上已經被機器學習算法壟斷,正逐步向教育、銀行、醫療等傳統行業擴張。關於機器學習如何改變傳統教育模式,能夠參見博主的這篇文章《使用AR、AI以及大數據改革教育體系——爲每位學生打造本身的私人定製學習路線》。銀行業目前對人工智能炒做成分居多,大多數銀行持觀望態度,短期不會利用人工智能取代大部分銀行職員工做。醫療行業應用AI也比較火熱,好比利用AI檢測癌症驅動新葯發現引擎基因檢測等。而膿毒症(Sepsis)是一種醫療行業常見的併發症,本文將使用機器學習預測膿毒症患者的出院後狀況。算法

       膿毒症是指因感染因素引發的全身炎症反應綜合徵,嚴重時可致使器官功能障礙或循環障礙,是嚴重創傷、燒傷、休克、感染和外科大手術等常見的併發症,由於其症狀和發燒、低血壓等其它常見疾病很是相像,很難被早期發現,若是不及時治療,可進一步發展爲感染性休克,其住院死亡率超過40%,至關危險。編程

       瞭解膿毒症患者的最高死亡風險對臨牀醫生的優先護理是有幫助的。團隊與Geisinger健康護理系統的研究人員合做,使用歷史電子健康記錄數據(EHR)創建模型來預測膿毒症住院患者在住院期間或出院後90天的全因死亡率(all-cause mortality)。該模型能夠指導醫療團隊爲那些預測爲高几率死亡的患者進行仔細監測,並採起有效預防措施。bootstrap

數據科學環境併發

       使用IBM數據科學經驗爲數據科學家提供編程環境(三種流行編程語言:Python、Scala和R,兩種編程分析工具:Jupyter和Zeppelin),此外,IBM數據科學經驗經過業務應用程序實時或批量計分來操做模型,爲連續模型檢測和再訓練集成反饋迴路。app

收集和預處理數據機器學習

       Geisinger在2006年~2016年得到了超過10000名確診爲敗血症的患者數據,這些數據包含人口統計學、住院和門診、外科手術、醫療史、藥物、醫院單位之間轉移以及實驗室結果等記錄。編程語言

       對於每名患者,選擇最近的醫院和最相關的住院數據,包括住院期間具體的信息,好比手術類型、培養位置(細菌)等。此外,還導出了入院前的總結信息,好比住院前30天的外科手術次數等,沒有使用出院後的數據。圖1給出了這些基於時間數據的決策:ide

 

圖1 基於時間序列數據作預測工具

 

       合併所提供的數據集後,獲得的數據集包括10599行,其中每名患者有199個屬性(特徵)。

 

預測模型

 

       在數據清洗和特徵選擇完成後,將任務目標定義爲二分類問題:預測膿毒症患者出院後90天內是否死亡。

 

       選擇的算法爲梯度提高樹(Gradient boosted trees, GBT),並經過XGBoost數據包實現。因爲愛算法的良好的執行速度和魯棒性,一直是機器學習競賽中流行使用的算法。使用XGBoots另外一個動機是微調超參數以提高模型性能的能力。在訓練數據中,使用十折交叉驗證(ten-fold cross-validation)和網格搜索(GridSearchCV)以迭代的方式選擇參數,以最大化ROC曲線下的面積(AUC)。IBM數據科學經驗中的一個實例在此可見

 

       將數據集分爲訓練集和測試集,其中訓練集佔60%,測試集佔40%。使用訓練集訓練模型,將訓練好的模型參數應用於測試集上,模型性能如圖2所示:

 

圖2 XGBoost模型的性能

 

       圖2中的一些數據是性能評價指標,好比AUC得分,這個數字越接近於1,則表示模型的能力越能正確的分類正預測(TP),從而減小假陽性。測試結果AUC數據爲0.8561,代表模型可以識別出絕大多數膿毒症患者90天內是否死亡,若是預測爲死亡,則這些患者能夠進行適當的靶向治療。

 

       對於精確率(precision)和召回率(recall),數字越接近於1,代表模型越精確。圖2中顯示的數據爲接近於0.80,即同意高召回率——目的是儘可能減小該模型遺漏最終可能因膿毒症死亡的患者數量。

 

       對於另外的一個評價指標準確度(Accuracy),使用bootstrap對訓練和測試數據生成1000個變體,而後在這些數據上運行XGBoost模型,並得到每次運行的模型準確率,1000次運行結果的準確度分佈爲0.77~0.79之間的機率爲95%,這意味着創建的模型可以識別出超過四分之三的真實結果。

 

       除了以上評價指標外,模型的混淆矩陣(confusion matrix)如圖3所示。從圖中能夠看到,對於測試數據,模型肯定了1190例患者爲真陽性(預測爲死亡的膿毒症患者死亡)和2087例患者爲真陰性(預測爲生存的膿毒症患者存活)。

 

圖3 陰陽性預測

 

       XGBoost還具備肯定特徵的能力,這種能力並不告知選擇的特徵是否爲死亡或生存的預測因子,但XGBoost生成的信息仍然很是有用,由於能夠了解到哪些特徵是用於預測死亡的。如圖4所示,29.5%的患者都使用「入院年齡」特徵來預測死亡。

 

圖4 模型最重要的20個特徵

 

       對特徵進一步的探索分析,以測試特徵如何與死亡結果相對應。雖然上圖有助於可視化特徵與結果的關係,更重要的是要了解XGBoost訓練多個決策樹的機制。所以,在探索過程當中,XGBoost模型中的重要特徵可能與這些結果變量沒有明顯關係。

 

       如圖5所示,諸如「入院年齡」的特徵可能代表老年患者相較於年輕患者而言具備更高的死亡比例,另外一個例子「血管升壓藥使用時間」特徵可能代表服用升壓藥的患者死亡率較高,但這些死亡也多是因爲其很差的健康情況致使。

 

圖5 與患者死亡有關的一些重要特徵

 

       XGBoost輸出的決策樹規則能夠幫助醫生進一步瞭解如何針對患者制定治療方案。好比,因爲老年患者較高的死亡風險,醫療團隊能夠特別關注老年患者,檢測所服用的血管升壓藥的持續時間、儘可能減小患者在各科室之間轉移的次數以減小對易感染患者的影響等。

 

結論

 

       預測膿毒症患者的全因死亡可指導健康提供者主動監測並採起預防措施以提高患者的存活率。在本文模型中,選擇了那些被認爲與膿毒症患者死亡有關的重要特徵,即機器學習模型能夠幫助識別與膿毒症死亡相關聯的變量。後續隨着數據量的增長,將添加一些更關鍵特徵來改進模型,也能夠將該方法應用於其它病症的預測之中,但願產生一個更具可操做的模型,以改善醫療水平。

 

原文連接

閱讀更多幹貨好文,請關注掃描如下二維碼:

相關文章
相關標籤/搜索