[Notes] 2019 Machine Learning for Clinical Predictive Analytics

[Paper][Code]

 

爲什麼是機器學習?

機器學習是由計算機科學、數學、統計學組成的跨學科領域,也是建立智能機器、實現人工智能的途徑。機器學習的思路是利用數據(實例與經驗)進行學習,將數據餵給模型,算法會基於數據和特定任務學習到優化函數。這種數據驅動的方法目前在許多研究領域都是最先進的方法,例如計算機視覺(Krizhevsky et al.,2012)、NLP(Yala et al., 2017)、語音文本翻譯(Wu et al., 2016; Chung et al., 2018; 2019)。與傳統需要專家的臨牀數據分析不同,機器學習的方法能夠幫助我們識別數據內部的模式,使用可生成的預測模型作出個性化的臨牀預測。

臨牀預測的學習方案

在臨牀預測的場景下進行機器學習,可按照以下步驟進行:

  • 定義任務的輸出
  • 諮詢領域專家,確定重要的特徵/變量
  • 選擇合適的參數和恰當的算法(或設計一個新的機器學習算法)
  • 根據訓練集找到優化模型
  • 選擇合適的評價指標,使用測試集評估模型
  • 在真實數據中應用該預測模型

機器學習方案

機器學習有許多學習方案,例如監督學習、無監督學習、半監督學習、強化學習,和遷移學習。我們只關注前兩種類型,監督學習和無監督學習,這兩種方案的目標都是學習數據的潛在分佈,尋找數據的潛在模式。兩者的區別是,監督學習擁有標籤數據,而無監督學習沒有標籤數據。

監督學習

如果輸出定義得好,監督學習是機器學習任務中最常見的學習策略,例如預測病人死亡率、住院時間、藥物反應等。監督學習可以根據預測類型或模型類型分爲兩類:迴歸問題和分類問題。對於預測連續輸出,使用諸如線性迴歸的迴歸模型是合適的;但對於分類問題,應該使用邏輯迴歸、樸素貝葉斯、決策樹、支持向量機一類的迴歸算法。

例如,對於兒童的身高預測,應該使用線性迴歸;而對於二值的死亡率,使用SVM更加。無論學習目標是什麼,判別模型(迴歸、決策樹、SVM)都是使用數據學習判別邊界;而諸如樸素貝葉斯的生成模型則是學習數據的概率分佈。

無監督學習

由於缺乏相應的輸出變量,無監督學習算法直接從給定的無標籤數據中發現潛在結構和模式,機器只能發現數據內部的聯繫和區別(簇),例如我們可以使用無監督學習發現某種疾病的潛在子類型(Ghassemi et al., 2014)。

其他策略

強化學習:交互。例如通過交互地仿真病人狀況和動作,改善模型參數,獲得反饋獎勵,最終模型收斂。

尋找最佳函數

爲了評價預測任務的模型,我們需要定義一些標準,因此我們需要一個損失函數和一個代價函數(目標函數)。損失函數定義的是模型預測值與真值之間的距離,不同的機器學習算法需要使用不同的損失函數;代價函數是每個訓練集所有損失之和的平均值,我們可以通過定義代價函數來評價模型表現。

在無監督學習中,沒有真實數據去計算損失函數,因此我們直接使用輸入數據計算輸入與輸出的距離。例如,對於自動編碼器使用重建損失來評價模型是否能夠很好地重建輸入數據。

評價指標

選擇恰當的評價指標對於優化來說至關重要。

監督學習

在分類任務中,經常使用的評價指標是:

  • 準確率 accuracy
  • 精確度 precision/ posictive predictive value (PPV)
  • 召回率/敏感度 recall/ sensitivity
  • 特異性 specificity
  • F1分數

我們使用混淆矩陣來展示。

受試者工作特性曲線下的面積(AUROC)也是常用的評價指標,x軸爲FPR,y軸爲TPR。根據主觀選擇的閾值不同,FPR和TPR的值可能會改變。

 在迴歸任務中,常用的評價指標是校正決定係數。

  • R-square value
  • adjusted R-square value(多元)

此外,還有其他用於不同研究目的的迴歸評價指標,如AIC、BIC信息準則等。

無監督學習

由於缺乏真實標籤,無監督學習的評價指標相對而言難以定義,取決於要求的算法模型。例如,K-means聚類算法使用CH指標(數值越大模型越優)和輪廓係數來評價,而自動編碼器使用重構誤差來評價。

模型驗證

下一步是準備好訓練模型需要的數據,在實踐中,我們把整個數據機分爲三個部分:

  • 訓練集,僅用於模型訓練
  • 開發集(也就是dev偏差集,驗證集,留出集hold-out),用於模型優化和驗證
  • 用於模型性能測試的測試集,僅在預測時應用

需要注意的問題是:

  • 訓練集、開發集、測試集需要儘量符合同一分佈,否則易出現過擬合。
  • 避免在模型訓練中使用開發集或測試集的數據。
  • 三個子集在全部數據集中所佔的比例是不一致的。

交叉驗證

一般使用k折交叉驗證來減少過擬合。在實際應用中k一般爲5或10。測試集不包含在內。

診斷分析

偏差與方差

  • 偏差是算法在訓練集上的誤差,是欠擬合問題,表示模型由於過於簡單,不能很好地捕捉到數據的分佈。解決方法有:增加模型複雜度,減少正則,增加輸入特徵。
  • 方差是訓練集和開發集之間的誤差,是過擬合問題,表示模型對新數據難以泛化。解決方案是:簡化模型,使用正則相,減少特徵數量,或者增加訓練數據。

高偏差和高方差有可能因爲模型過差同時出現,爲了得到最優結果,我們可以重複做實驗,找到偏差與方差的平衡點。

畫出訓練集和驗證誤差的學習曲線是探究偏差與方差的好方法。

正則化

正則的目的是防止模型過擬合,避免高方差。常用的正則技術有:LASSO迴歸(L1正則化)、嶺迴歸(L2正則化)、彈性網絡迴歸(L1、L2結合)。在實踐中,我們一般給代價函數增加一個懲罰項來作爲正則項,L1正則加絕對值,L2加平方項。

誤差分析

誤差分析是檢測模型性能至關重要的一步。爲了進行誤差分析,需要人工地仔細檢查那些開發集中被錯誤預測地數據,它能讓你理解現有算法設定中存在的潛在問題,例如,錯誤分類的病例通常來自於特殊類別(有心血管疾病的病人常與腎臟病例混淆,由於二者在兩個組織系統中有相同的病理學特徵),這種錯誤分類情況可以通過改變模型結構,使其更加複雜,或者增加更多特徵來避免。

燒燭分析

燒燭分析是識別模型中重要因素的關鍵步驟。當你得到了一個理想模型,將它與簡單但魯棒的其他模型進行對比是非常必要的(例如線性迴歸、邏輯迴歸模型),這也是研究中十分必要的。

 

學習算法

(不涉及神經網絡算法)

監督學習

線性模型

線性模型常被作爲臨牀機器學習任務的基本模型,在這類算法中,我們一般對迴歸問題使用線性迴歸,對分類問題使用邏輯迴歸。線性模型的優點是它們的解釋能力、計算量小、複雜度低;缺點是性能較差。

樹狀模型

  • 樹狀模型可同時用於迴歸和分類任務。
  • 決策樹(CART)是其中最常用的模型,它最大的優點是模型可解釋性和行動決定性。
  • 隨機森林結合了袋裝法的概念和下采樣特徵,在大部分監督學習問題中都有良好表現,是魯棒的分類器,但主要問題是模型的可解釋性。
  • Adaboost
  • 梯度提升算法

支持向量機(SVM)

支持向量機的目標是找到可以將分離數據劃分到兩側的超平面,且使其在特徵空間上的間隔最大。

SVM也可使用核技巧,用於非線性可分數據。

常用的核函數有線性核、徑向基函數、多項式核函數。我們使用和頁損失訓練SVM。SVM的優點是表現能力好,但模型的可解釋能力差,限制了其在健康領域的應用。

無監督學習

我們可以使用聚類方法把相近的數據點聚集在一起,研究每一簇的特點。也可以使用降維算法將高維數據轉換到低維向量空間中。

聚類算法

K均值聚類、EM、分級聚類都是常用的聚類算法。在這裏我們只介紹K均值聚類,其目標是找到數據中的潛在羣體。

K均值聚類的收斂狀態可能是局部最優的,因此需要多次實驗來探索不同的結果。用於k值驗證的常用方法包括:肘部法則、輪廓係數、CH指標。

降維算法

處理臨牀數據時,經常需要面對一些高維但稀少的數據集,解決方案是將數據機轉到低維的向量空間中。

PCA是線性算法,因此難以解釋複雜的多項式關係。

當我們希望探索或可視化高維數據時可以使用t-SNE算法,找到數據的潛在模式。

自動編碼器是另外一種基於神經網絡結構的降維算法,通過最小化網絡輸入與輸出之間的距離學習數據的表達。

 

缺陷與限制 

從技術層面來看,我們還存在很多有待提高的方向,比如普遍性、更少監督、多模式和多任務訓練、學習暫時性和不規則性等等。然而,在發展模型的同時,在將機器學習運用於醫療保健中也存在許多缺陷與限制,比如,當我們使用噪聲多的數據時,模型偏置就存在問題。雖然在大部分機器學習臨牀研究中,因果關係不會直接展示,但它仍然是臨牀決策的關鍵。

如何利用機器學習提高工作流,整合人類與機器獲取的所有信息,將其轉化爲臨牀作用,提高醫療支出,都是未來需要考慮的問題。

 

練習

[Code]

兩個數據集:

  • Breast Cancer Wisconsin(Diagnostic) Database
  • Preprocessed ICU data from PhysioNet Challenge 2012 Database

 

 

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