基於自動機器學習的心臟病預測模型

前言

Technology developed using artificial intelligence (AI) could identify people at high risk of a fatal heart attack at least 5 years before it strikes.

–the British Heart Foundation (BHF)

作爲一位老年病醫生的家屬,我對於醫學與科學技術的結合是較爲敏感的。人工智能的興起,讓我有機會看到一些人工智能與醫學結合的方案,例如美國5大頂尖醫院的機器學習項目,包括了預測性分析、聊天機器人、預測性健康追蹤器等等領域。這些新事物促成了我動手學習AI技術,希望將AI技術與醫學知識結合在一起的想法。因此,有了這一系列文章。我希望能夠針對醫學的不同業務場景,結合AI技術訓練出一些可用的模型,通過文章幫助醫務人員瞭解AI技術,幫助他們瞭解如何使用公有云的計算資源和AI資源,訓練自己的醫學模型。開始今天的話題,談談我如何訓練心臟病(冠心病)預測模型。

早在2016年,美國麻省總醫院宣佈與英偉達公司合作成立醫療數據科學中心,該中心希望成爲人工智能醫療應用領域的中心,對疾病進行探測、診斷、治療和管理。英偉達公司贈送了當時最新的DGX-1(深度學習超級計算機),麻省總醫院提供100億張醫學影像,用於放射學和病理學方面的訓練,後續又逐漸擴大到電子病歷和基因學領域。

本文我們主要介紹的是根據病例數據進行冠心病可能性的預測。心臟病是心臟疾病的總稱,包括冠心病、風溼性心臟病、心肌炎、先天性心臟病、肺心病等多種類型。根據國家衛計委的統計數據,改革開放之後,心臟病發病率在中國一直呈現上升趨勢,2013年城市居民死亡原因心臟病位列第三,佔比21.45%。結合一些論文和期刊,我們知道人工智能技術已經可以通過信息處理、算法輔助燈方式,輔助醫生進行心臟病的預測、輔助醫生進行高難度的心臟手術。

2018年,微軟推出了一種由人工智能技術支持的冠心病風險評分模型,模型基於印度一家醫院提供的40萬印度人的健康數據,考慮了21種風險因素,包括飲食、吸菸、呼吸率、高血壓、血壓等因素,準確識別每位患者的風險水平。這個評分模型將風險分爲高、中、低三檔,並能提供可以干預的最大風險因素。

心臟病

從醫學科普材料瞭解到,當前冠心病常用的檢測方法共有四種,包括心電圖檢測、多排 CT檢查、ECT檢測、超聲心動圖。

  • 心電圖(ECG)時一種經過胸腔的,以時間爲單位記錄心臟生理活動的一項技術.它的原理是通過記錄心肌細胞去極化後在皮膚表面記錄小的電變化.然後被記錄成心電圖,心電圖檢測能檢測心律失常,是診斷冠心病的主要方法.他的優點在於簡單經濟,但這也導致了他的檢測得不精準性.比如檢測結果正常的患者卻在臨牀時發生了猝死現象常常發生。
  • 多排CT檢查主要用於先天性心臟病的檢測,是無創性檢查.它的優點在於能清晰地顯示冠脈血管病的情況.並且還有着掃描速度優勢,完成整個心臟僅需5~10s.更高的圖像分辨率(0.3MM),但同樣,此方法也有着缺點,對細微的血管並不敏感,並且對病人的心率要求高。
  • ECT檢測,及放射性核素檢查,其原理是把放射性藥物注射入人體,在代謝之後,探測臟器內,病變組織和正常組織之間的濃度差異,然後通過計算機在成像.優點爲可以瞭解到心肌梗塞的範圍以及是否具有可逆性.缺點爲費用昂貴,不能早期發現病變。
  • 超聲心動圖是利用物理學上的超聲測距原理檢查心臟和大血管的解剖結構和狀態的一種技術.顯示的是狀態和時間的曲線,這個曲線即爲超聲心動圖.超聲心動圖主要用於瞭解心室壁的動作心臟瓣膜活動情況等,費用較低.缺點爲,對冠脈準確性較低,也不能早期發現病變。

機器學習

本文通過現有的數據構建一個模型,使用機器學習技術訓練模型,然後利用這個模型預測病人將來患有冠心病的機率。

機器學習主要分爲兩個步驟:

  • 訓練:通過各種現有的“學習資料”使它產生經驗,生成模型。比如圍棋比賽中,Alphago就是事先通過各種棋譜和對手的數據信息進行學習訓練。根據訓練所需要學習資料數量的不同,會導致後來的決策準確率不同;
  • 決策:決策是利用“訓練”已經構建好的模型進行實時計算,如果說訓練是長期的學習過程,那麼決策就是考場上的現場發揮。比如 Alphago已經訓練完成,在和人類比賽時,就是把實時獲得的數據通過模型決策出對應的數據,例如該走哪一步之類的結論。

決策的正確率由訓練得到的模型決定。比如已有數據 X1和對應的一個數據 Y1,經過訓練後可以得到一個函數模型,然後再導入模擬的數據X2,即可通過該模型進行決策得到對應數據 Y2。交叉驗證是用來判斷分類器性能的一種統計學方法,原理是將已有的一批數據集分爲兩個子集,分別是訓練集、測試集。訓練集用來建立模型,測試集用來測試該模型的精 準度。訓練集元素的數量一般多於測試集的元素,較爲常見的是7:3、8:2等。要求訓練集和測試集要做到均勻分配,但一般很難做到徹底均勻,所以經常採用的是隨機分配方案。在學習各種複雜度不同的模型時,選擇測試集具有最小誤差、最大正確率的模型,即分類正確的 樣本在測試集中所佔比例。

決策樹模型

決策樹是人工智能中用來分類的常用方法,包括了幾個重要的關鍵詞:根節點、父節點、子節點和葉子節點等。決策樹在多分類和二分類問題中有很好的應用,可以用多種標準評價 和優選方案,給出最優結果。該方法的特點,一方面,由於要解決的問題的目標和標準的不同,比較方案的好壞比較難,因此找不到問題解決的最佳方案;另一方面,解決問題的決策過程是隨機的,根據問題的滿意度作爲標準。決策樹常常採用貪婪思想的方法對各個因子進行分裂,也就是說,可以尋找最優分裂結果,進行決策樹的分裂。

評價最優的分裂結果可能有多種方法,最理想的情況是能找到一個屬性剛好能夠將不同類別分開,但是實際情況下,只通過一次分裂很難一步到位,但是我們希望每一次分裂之後剩下的節點的數據儘可能清晰,決策樹使用信息增益或者基尼值,作爲選擇屬性的依據。

隨機森林

決策樹具有泛化能力弱的缺點,即使採用了剪枝等方法,有時候預測結果也不是非常精確。一棵樹做決策顯然比不上多棵樹同時做決策,這種方法就是隨機森林模型。對於同一批數據,用相同的算法只能產生一棵樹,但是Bagging策略可以產生不同的數據集,包含的數據是隨機的。

Bagging策略全程叫bootstrap aggregation,假設樣本集中含有N個數據點,通過重採樣的方法選出N個樣本。在抽樣的過程中,採用的是有放回的採樣的方法,所以總體的樣本數據的個數一直是N個。基於所有樣本,對這N個樣本建立隨機樹分類器,重複上述採樣和構建決策樹方法M次,獲得M個分類器。最後根據這M個分類器的投票結果,按照少數服從多數的原則,最終能決定數據的分類情況。

隨機森林的常見步驟分爲以下三步:

  1. 對樣本進行隨機抽樣,隨機 選取 N 個樣本;
  2. 從所有屬性中隨機選取F個屬性,選擇最佳分割屬性作爲節點建立決策樹;
  3. 重複以上M次,即建立了M棵決策樹分類器。第四步,這M個形成隨機森林,通過每棵樹的結果分析,投票表決決定數據分類情況。

訓練模型實驗

數據集來源及解釋

我們已經瞭解了機器學習預測模型的實現原理,本文我們並不會自己動手從頭實現,因爲當前預測算法已經非常成熟,我們完全可以利用一些公有云大廠提供的自動學習技術,實現模型的快速訓練及預測。本案例我們採用的是某花廠的公有云AI平臺,數據來源Kaggle網站。

Kaggle是一家在線AI競賽網站,開源提供了針對各個行業的脫敏數據,用於支持學生訓練對應的AI模型。

首先需要下載開源數據集,原始數據(已開源的脫敏數據)下載地址如下:

https://www.kaggle.com/johnsmith88/heart-disease-dataset

打開csv文件,你可以看到如下圖所示:

上圖中的數據集截圖中包括了14個字段,對這14個字段的含義做逐一解釋:

  1. Age:年齡;
  2. Sex:性別;
  3. chest pain type (4 values):胸部疼痛類型;
  4. resting blood pressure:靜息血壓;
  5. serum cholestoral in mg/dl:血漿膽固醇水平;
  6. fasting blood sugar > 120 mg/dl:空腹血糖>120 mg/dl;
  7. resting electrocardiographic results (values 0,1,2):靜息心電圖結果;
  8. maximum heart rate achieved:最大心率;
  9. exercise induced angina:與運動相關的心絞痛;
  10. oldpeak = ST depression induced by exercise relative to rest:與靜息時比較,運動導致的ST段下移;
  11. the slope of the peak exercise ST segment:心電圖ST segment的傾斜度;
  12. number of major vessels (0-3) colored by flourosopy:透視檢查看到的血管數;
  13. thal: 1 = normal; 2 = fixed defect; 3 = reversable defect:檢測方式;
  14. target:0和1。

根據醫學雜誌上查到的信息,一般認爲,膽固醇介於200-300之間發病率高;心率異常易導致發病,最大心率在150到175間發病率高;最大心跳在150到175間發病率高;血壓在120到140時發病率高。

訓練集一共1025條脫敏後的患者信息,分佈大致如下(不逐一解釋):

  • 年齡:最大77,最小29,平均年齡54.4。

  • 性別:75%男性(數值1),25%女性(數值0)。

  • 空腹血糖>120 mg/dl的比例,85%低於,15%高於。

  • 與運動相關的心絞痛,數值1表示是,數值0表示否,66%爲否。

  • 與靜息時比較,運動導致的ST段下移:

實驗過程

下載數據之後,我們接下來做的是上傳數據到公有云。一般來說,公有云都提供了OBS桶用於存放文件,本文所涉及的csv文件可以作爲對象上傳。上傳文件截圖如下圖所示:

注意,上傳文件前請刪除表頭字段名,否則訓練過程中會報錯。此外,數據集不用自己劃分爲訓練集和測試集,AI平臺會自動按照7:3的比例進行切分。數據預覽如下圖所示:

接下來就可以進行模型訓練了。首先登陸網站https://console.huaweicloud.com/modelarts/,首頁如下圖所示:

有沒有看到屏幕中間的“自動學習”按鈕?後續我會寫一篇文章系統性介紹什麼是自動學習,這裏先略過。我們本案例要做的是預測,也就是“預測分析”按鈕,點擊該按鈕。

點擊“創建項目”按鈕:

接着選定數據集後,你會看到如下圖所示的步驟,分爲數據標註、魔性訓練,以及部署上線。

點擊訓練按鈕,開始模型訓練,由於是機器學習算法,只需要採用CPU資源即可。

訓練任務完成後,你可以點擊進去查看模型的準確度預測(默認7:3比例已經預留了測試集,可以用來生成測試報告),如下圖所示:

上面這張圖提到了評估結果,包括真陽性、僞陽性、僞陰性、真陰性。我們這個案例的準確率不高(46.2%),主要原因是樣本數據太少,並且閾值設爲1也起了較大作用。具體講講這類名詞定義,如下表所示:

預測結果
正(P) 負(N)
真實結果 正(P) TP FN
負(N) FP TN

TP(真正,True Positive,對應上面圖中的真陽性)表示真實結果爲正例,預測結果也是正例;FP(假正,False Positive,對應上面圖中的僞陽性)表示真實結果爲負例,預測結果卻是正例;

TN(真負,True Negative,對應上面圖中的真陰性)表示真實結果爲負例,預測結果是負例;

FN(假負,False Negative,對應上面圖中的僞陰性)表示真實結果爲正例,預測結果是負例。

顯然,TP+FP+FN+TN=樣本總數。

精確率P和召回率R的定義爲:精確率(P)= TP/(TP+FP),召回率(R)=TP/(TP+FN)

理想情況下,準確率和召回率兩者都越高越好。然後往往兩者是有矛盾的,準確率高時,召回率低;準確率低時,召回率高。比如在搜索網頁時,如果只返回最相關的那一個網頁,那準確率就是100%,而召回率就很低;如果返回全部網頁,那召回率爲100%,而準確率就很低。因此在不同場合需要根據實際需求判斷哪個指標更重要。

後記

機器學習、深度學習與醫學結合的應用,需要應對獨特的侷限。與電子商務、監管合規和股東關係相比,治療病人是一個更加細緻的過程。作爲一名AI工程師,我相信醫療領域數據和人工智能的結合,每一次的研究努力都是有意義的,畢竟人工智能的計算效率是人無法比擬的,醫療過程很多時候就是和死神賽跑,哪怕是一分一秒的進步都具有里程碑意義。公有云的計算資源和AI技術,將是推動科學向前方展的引擎。接下來,我會針對不同的業務場景訓練模型,可能是自己寫代碼,也可能基於自動學習技術。我們下一篇文章見。

作者簡介

周明耀,九三學社社員,2004年畢業於浙江大學,工學碩士。現任華爲雲AI產品研發總監,著有《大話Java性能優化》、《深入理解JVM&G1 GC》、《技術領導力-如何帶領一支軟件研發團隊》、《程序員煉成記》等。職業生涯從軟件工程師起步,後轉爲分佈式技術工程師、大數據技術工程師,2016年開始接觸AI技術。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章