Python 資料科學應用 — 血液透析之血壓預測模型

JiunYi Yang

JiunYi Yang

icon-location R1
icon-language 中文演講/中文投影片
icon-datetime 第一天 • 02:40-03:25
icon-level 中階
icon-category 機器學習
  • 介紹
  • 講者
  • Slido
  • 共筆

摘要

聽眾可以透過本講題更了解: 如何以 Python 套件進行資料前處理與轉換、特徵篩選、建構 GBDT分類器、長短期記憶模型(LSTM) 架構。過程中使用套件將在有限時間內聚焦介紹 pandas, multiprocessing, GBDT(xgboost/lightgbm), tensorflow.Keras,並比較兩種模型成效數據。 本講題分享應用案例:透析用低血壓預測模型研究。透析用低血壓是末期腎臟病病患在進行血液透析時,最常見的併發症問題;若不即時處理,嚴重將導致各種心血管、大腦的合併症狀。而現況限制是血壓儀器的測量頻率最高只能每 30 分鐘一次,存在量測前就發生低血壓的風險;『因此提前預測下一次量測時是否發生低血壓,將有助於醫護人員提前注意該病患狀況。』 本研究目標為預測該病患下次量測是/否會出現低血壓,為二元分類問題,搭配特徵篩選找出較佳模型:lightGBM (AUC: 0.954)、LSTM (AUC: 0.966),最終使用 Blending Ensemble 得到最佳模型 (AUC: 0.975, Sensitivity: 0.942, Specificity: 0.88)。

說明

為什麼選擇 Python 為開發語言

  • Python 做為物件導向語言設計上的簡短、簡潔、易讀性
  • Python 無需重新編譯程式即可偵錯
  • 內建資料處理函式庫,及大量的機器學習算法函式庫,從自然語言處理、影像處理、語音處理、深度學習/機器學習模型框架、科學運算、到視覺化
  • 根據 IEEE Spectrum (電機電子工程師學會) 調查,Python 是 2020 年度工程師使用的語言中排名第一,在 Stack Overflow 的語言使用趨勢也顯示 Python 是近五年來上升幅度最高,且在 2018 超過 JavaScript 成為第一。(*註1)

講題知識點

data preprocessing

pandas 在本研究中用於處理數值表格和時間序列資料結構。原始資料共 46 位病患,共 21,409 筆血壓量測紀錄、739,618 筆相關儀器量測數據,經過缺失值填補、異常值排除、以2分鐘為一筆資料的時間單位將多份資料集合併,最終剩餘 7,112 筆血壓量測紀錄、128,741 筆合併數據,維度共 179 項特徵欄位。接著,依據血壓量測點對標上一次量測的前 60 分鐘,為訓練資料範圍,序列過長則從時間較遠處截斷、時間長度不足則從時間較遠處補0 (padding)。最後,將要進行 GBDT 分類預測的資料集做聚合平均、要進行 LSTM 分類預測的資料集,shape: (7112, 179),根據每次血壓量測的對標點產生序列訓練資料,格式為 .npy,shape: (7112, 30, 179)。


multiprocessing

載入數據的過程使用 multiprocessing 進行多執行緒處理,所需時間從30分鐘減少至6分鐘。


GBDT

本研究的機器學習分類器中使用到數種 GBDT 算法。如 xgboost 基於 Gradient Boosted Decision Tree (GBDT) 的改良與延伸,透過貪婪演算法,在樹的每層建構過程中優化目標函式的最大增益;lightgbm 與 xgboost 不同的是對增益最大的節點進行深入分解,如此一來節省大量分裂節點產生的成本。


tensorflow.Keras

本研究為了測試深度學習中的 RNN 家族是否在時間序列上的預測更佳,選擇較經典的 LSTM 及 GRU,並以 tensorflow.Keras 架構神經網絡。tf.keras 是 TensorFlow 的高階 API,用於建構及訓練深度學習模型。


參數搜尋

使用 GridSearchCV 對機器學習模型進行參數搜尋;而神經網絡超參數搜尋則應用開源套件 Hyperas 實作


References

影片