何 濤 陳 劍
(1.東北大學東軟研究院 沈陽 110169)(2.遼寧省工業控制安全工程技術研究中心 沈陽 110169)
國務院印發的《新一代人工智能發展規劃》文件針對醫療領域,提出了“推廣應用人工智能治療新模式新手段,建立快速精準的智能醫療體系”的目標,任務就是推廣人工智能在診療過程應用新模式新手段,建立精準的智能醫療體系[1]。
臨床檢驗數據為臨床醫學提供了一系列檢測項目的結果,為醫生進行疾病診斷提供最有力的數據支撐,醫生會根據患者的每一項檢測指標的具體情況,判斷患者在該指標上具有哪些風險。臨床決策所需信息70%來自檢驗,包括樣本的檢測和結果的解讀[2]。
臨床檢驗是將患者的血液、體液、分泌物、排泄物和脫落物等標本,通過化學、儀器或分子生物學方法進行檢測的方法[3]。然而,并不是每一次的檢驗結果都是可信的,這其中可能有檢驗儀器的原因、試劑的原因、采集過程的原因、運輸存放的原因等。因此,檢驗科醫生有一項重要的工作就是對檢驗數據進行審核,篩選出有一定程度偏離的數據,將該部分樣本進行一次復查[4~5]。對于這些數據,醫生需要花大量的時間進行人為的審核,而且不同的醫生對于異常值的判斷方式是相對主觀的,不同醫生的判斷也會出現不一致的情況。另外,各個醫生的判斷方式也很難通過確定的規則來描述。在理想的狀況下,異常值的檢測應該融合多項相關因素得出綜合的判斷結果,而且判斷結果應該具有一致性和統一性,在這種前提下使用機器學習算法來取代人工就成了大勢所趨。因此,如何使用機器學習算法智能地從醫生判斷的歷史記錄中探索和發現統一的規則具有很重要的理論意義和現實意義[6~7]。
機器學習算法廣泛用于智能審核領域,典型應用包括決策樹、支持向量機、人工神經網絡、貝葉斯網絡等[8]。陸怡德等[9]提出構建臨床化學審核規則的方法,以及規則在計算機自動審核的應用。馬麗等[10]提出一種使用中間件實現生化檢驗報告高效審核的方法。鄭衛東[11]論述了隨著臨床實驗室信息化進展,計算機自動審核在提高檢驗報告核發過程中可以極大提高效率。蔣文海等[12]搭建起由LIS、中間體軟件、檢測儀器和數據審核人員四大部分組成的自動審核系統。何訸等[13]探討大量歷史數據在生化項目自動審核規則測試和自動審核系統驗證中的應用。溫冬梅等[14]制定自動審核規則,以自動化流水線中間體軟件為核心,搭建生化免疫檢驗結果自動審核系統。極端梯度提升(extreme gradient boost,XGBoost)是由Chen等[15]提出來的一種GBDT的高效實現,因其模型的計算復雜度低、運行速度快、準確度高等特點,XGBoost成為應用比較廣泛的集成學習模型之一。
雖然在臨床生化檢驗數據審核方面已有比較多的研究,然而大部分傳統方法都是基于設置固定的過濾規則,需要醫療領域的專家根據專業知識,通過不斷的調試來選擇各個檢驗項的閾值,這種方法忽略了檢驗項之間的相關性,不具備學習能力,更缺乏可擴展性。因此,本文提出一種通過XGBoost自動學習和調整判定參數的方法,實驗結果表明,該模型具有較高的訓練效率和審核準確率,可以替代絕大部分人工審核工作。
本文所用數據是從醫院HIS和LIS系統中提取出來的,時間跨度為2018年1月份~2019年10月份的檢驗數據。檢驗數據包含年齡、性別、看診科室等離散化因素,以及與納入檢測項目的各種檢驗指標值,每個指標一般同時包含檢測值、參考范圍值及歷史檢驗值等多種連續化因素。生化檢驗包含20多個項目,不失一般性,本文以鉀離子檢驗項目為例。數據預處理流程如圖1所示。

圖1 數據預處理流程
鉀離子是維持細胞生理活動的主要陽離子,鉀元素的測定在醫療檢驗領域具有重要的意義。首先根據檢驗科專家提出的與鉀離子審核相關的其他檢測項,使用機器學習算法計算各檢測項與鉀離子復查相關的皮爾遜系數,遴選出相關項目有鉀元素檢測值、鈉元素檢測值、氯元素檢測值、肌酐檢測值、尿素檢測值等項目,并自動生成鉀鈉氯的歷史檢測值,并計算鉀離子的DeltaCheck值,其公式為

其中Ci表示第i條記錄的當前檢驗值,Hi表示第i條記錄的歷史檢驗值,如果當前值與歷史值的時間間隔大于7天,或者不存在歷史值,則將Delta Ch ecki置為0,DeltaCheck值表示兩次檢測之間的波動性,波動越大越不正常。
2018年1月份~2019年10月份的檢驗數據共包含571032條鉀離子檢測記錄,其中需要復查的異常數據7393條,占樣本總數的1.3%。兩類樣本的分布極不平衡,故采用下采樣方法從正常樣本中選擇與異常數據相當數量的樣本。使用全部異常數據7393條,并使用K-Means聚類算法從正常樣本中取樣。其步驟如下:
1)首先,確定要聚類的數量為8000,并隨機初始化它們各自的中心點;
2)通過計算當前點與每個組中心之間的距離,對每個數據點進行分類,然后歸到與距離最近的中心的組中;
3)基于迭代后的結果,計算每一類內,所有點的平均值,作為新簇中心;
4)迭代重復第2)和第3)步驟,直到組中心在迭代之間變化不大。
分類完成以后從每個聚類中隨機選取兩個樣本,用于模型的訓練和測試。相比于隨機采樣,聚類采樣的優點是由于進行了預分類,使得抽取的樣本更具有代表性,可以覆蓋大部分正常樣本的特征。
目前針對缺失值填充可供選用的方法包括:默認值、均值、中位數、眾數、KNN、隨機森林等,本文提出一種基于深度神經網絡(Deep Neural Network,DNN)的填充方法。針對某一包含缺失值的列,以該列的值作為目標值,以其他列作為特征值,深度神經網絡的結構如表1所示。

表1 深度神經網絡參數
因為需要預測連續值,在隱藏層之后,使用均方誤差(MSE)作為損失函數,其公式為

在填充正常值時,使用正常值樣本訓練DNN模型,在填充異常值時,使用異常值樣本訓練模型,通過迭代補全所有的缺失值。
對于每一個檢測項,其數據包含檢驗值d、參考范圍上限Ud、參考范圍下限Ld、DeltaCheck值,為了將這些數據轉化為稀疏矩陣,需要做如下處理。

2)項獲取第i項檢驗信息的DeltaCheck,并計算:

其中ε是依據生物學要求制定的檢查界限,此處設置為0.058。經過這種處理之后,可以將參數矩陣中的大部分數據轉化為0。
XGBoost是基于Boosting梯度提升的一種集成學習方法,通過循環訓練預測器,使用后一個模型對前一個模型產生的誤差進行校正。XGBoost使用決策樹作為基礎預測器,通過不斷擬合殘差優化目標函數,從而達到準確的預測分類效果。XGBoost一個重要的特點是對稀疏數據處理更為高效。
對于一個給定的有n個樣本和m個特征的數據集D=(xi,yi)(|D|=n,xi∈Rm,yi∈R),使用K個累加的函數來預測輸出:

其中q代表每棵樹的結構,其可以將每個樣本映射到對應的葉節點中,T是樹中葉子節點的個數,fk對應于一個獨立的樹結構q和葉子權重w。為了訓練模型中的函數集合,使用的損失函數定義為

其中Ω是正則化項,T和w分別為CART樹葉子節點數目和葉子權重值,γ為葉子樹懲罰系數,λ為葉子權重懲罰系數,通過使用正則化項能夠避免過擬合。
根據梯度提升算法的特點,第t輪的模型預測等于前t-1輪的模型預測加上ft,公式為

對損失函數進行二階泰勒展開,移除常數項,簡化后得到:

其中gi是一階導數,hi是二階導數。
每個樣本都會落入一個葉子結點中,將同一個葉子結點樣本進行重組,可以把目標函數改寫成關于葉子結點分數的一個一元二次函數,可以直接使用頂點公式求解最優W值。

并且計算對應的損失函數最優值。

XGBoost則對代價函數進行了二階泰勒展開,同時用到了一階與二階導數,是它在代價函數中加入了正則化項,用于控制模型的復雜度,學習出來的模型更加簡單,防止過擬合。
本文實驗的硬件環境是Dell R740服務器,掛載兩塊NVIDIA Tesla P40的GPU卡;深度學習框架使用TensorFlow 1.12.0版本。
在機器學習中評估模型的性能通常使用精度P、召回率R、F1分數三個指標,計算公式分別為

其中TP表示真正類的數量,FP表示假正類的數量,FN表示假負類的數量。由公式可知,P表示正確識別的實體數量與識別出的實體總數的比率,R表示正確識別的實體數量與該實體的總數的比率,F1分數是精度和召回率的諧波平均值,只有當召回率和精度都很高時,才能獲得較高的F1分數。
為了驗證聚類采樣的有效性,本實驗與另外兩種常用的采樣方法進行性能上的比較。隨機欠采樣是指在正常樣本中隨機的抽取與異常樣本相當數量的樣本數。SMOTE算法是對少數類別樣本進行分析和模擬,使用KNN算法合成新的少數類樣本,并將人工模擬的新樣本添加到數據集中,在三類樣本上的性能表現如表2所示。

表2 不同采樣方法的性能比較
缺失值處理的方法主要有:1)默認值法,將所有的缺失值簡單地設置為一個默認值,通常為0;2)中位數法,某個屬性的所有值進行排序,用中位數填充缺失值;3)眾位數法,統計某個屬性的分布,使用分布最密的值填充缺失值;4)均值法,用某個屬性所有值的均值填充缺失值;5)隨機森林法,使用隨機森林算法填充缺失值。各種缺失值填充的性能比較如表3所示。

表3 不同缺失值填充的性能比較
為了證明本文提出的模型在性能方面的優越性,在相同數據集上,與支持向量機、樸素貝葉斯、決策樹、隨機森林等模型進行比較。支持向量機與樸素貝葉斯需對數據進行歸一化,各個模型在測試集上的表現如表4所示。

表4 不同模型的性能比較
從實驗結果可以看出,XGBoost在測試集上的F1分數達到了0.95以上,比隨機森林提高了3%,從另一個角度來看,XGBoost模型訓練需要的時間只有隨機森林的一半,與其他機器學習算法相比,XGBoost在生化檢驗智能審核領域的訓練效率和預測性能有了顯著的提升。
為解決目前生化檢驗數據智能審核存在的勞動強度大、效率低下的問題,本文提出一套完整的數據預處理流程,包括特征選擇、聚類采樣、缺失值填充、數據稀疏化的詳細方法,并將XGBoost算法應用在預處理數據上,訓練機器學習模型完成數據的智能審核。實驗表明,該方法達到較高的性能,優于目前使用的方法,并得到醫院方面的高度認可。
下一步的任務是如何將該模型應用到醫院的業務系統中,輔助檢驗科醫生高效完成檢驗數據的審核工作。