王曉勇
(首都經濟貿易大學,北京 100071)
計算機與信息技術的快速發展,使得當今社會的信息呈指數級增長,而如何從這些海量信息中挖掘有價值的信息服務于醫療系統,成為現階段各界科研人員的焦點。流程挖掘(Process Mining),作為一種從事件日志(Event Log)中提取有價值信息的技術,是業務流程管理(BPM)領域方法的補充。流程挖掘利用現有的數據挖掘技術,對事件日志進行提取處理,建立相關流程模型加以分析,旨在獲取流程中有價值的信息,從而改進優化業務流程。這對企業提高效率、降低成本、優化路徑,進而擴大經濟效益有很大的意義。
近些年來,在眾多流程挖掘領域的研究方向中,預測業務流程活動的研究逐漸成為應用比較廣泛的方向。其主要原因在于:流程挖掘、深度學習和自然語言處理技術等多個領域研究的快速發展和學科交叉,帶動了業務流程活動預測方向的研究。醫療過程日志中包含著豐富的患者信息、檢查檢驗信息、醫囑信息、住院信息等有價值的數據。醫生對于病人的診療決策是基于自己的知識、經驗做出的。但一些基層醫療單位的醫生沒有三甲醫院的醫生那么豐富的經驗或者先進的醫療條件,從而限制了醫生診斷的準確度。
本文的方法是通過構建一個基于改進的LSTM 結構神經網絡的預測模型,去預測某一病種臨床路徑的下一個診療活動。而對臨床診療中下一個診療活動的預測,更具體地說,等同于在整個文本內對一句話中下一個單詞的預測,通過將流程事件日志解釋為文本,痕跡處理解釋為句子,事件處理解釋為單詞,來一步一步預測未來的流程活動事件。因此,本文預測研究基于深度學習和自然語言處理技術,進而構建改進的LSTM 的預測模型,來實現對單病種臨床路徑中的下一個診療活動的預測。
本研究所需的初始數據是從某三甲醫院的信息管理系統中采集的腦卒中患者的單病種真實數據。取得數據后將進行數據清洗操作,主要包括數據拼接組合、合并相近醫學術語、去除停用詞三方面內容。采集到的數據在眾多醫療日志中,主要選取入院初步診斷、醫囑項目、檢驗項目作為過程日志。將每名患者入院后所做的醫囑項目、檢驗項目按時間序列順序組成一條數據,一名患者入院后的所有信息即可視為一個完整的句子,其中每個項目視為句子中的單詞。由于整理好的醫療過程日志已經由空格分開,所以可以省略自然語言處理中的“中文文本分詞”步驟。
由于醫療數據的復雜性,直接對數據進行預測的效果并不理想,本文提出了一個三步框架:①先按照醫囑信息進行聚類,將原始數據采用無監督學習方法劃分為更加相似的組,而后在組內進行進一步預測;②將分組后的醫療日志視為文本,將日志中每個病人的記錄視為句子,將記錄中的每個診療活動類似于句子中的單詞,運用自然語言處理模型進行向量化編碼;③構建了LSTM 的臨床路徑預測模型,最后使用Dropout 方法來防止神經網絡模型過擬合問題的影響,最終達到預測出后續診療活動的目的。
本文主要用K-Means 算法對數據進行預處理,首先先利用手肘法和輪廓系數法來選取合適的k值。
手肘法的關鍵指標是誤差平方和(sum of the squared errors,SSE),其主要理念是算法隨著k值增大,每個簇的聚合度會越來越高,這時SSE 就會逐漸變小。k小于實際聚類數時,k值增加會使每個簇的聚合度迅猛增加,這時誤差平方和的下降速度會較快,由于k的增大會大幅增加每個簇的聚合程度,因此SSE 的降低速度會很快,當k等于真實聚類數時,增加k值就不會使得SSE 快速降低,最后隨著k值的增大逐漸平緩。也就是SSE 降低速率減緩的地方就是k值的最佳取值點,其圖像為手肘形狀,因此被稱為手肘法。
輪廓系數法的關鍵指標為輪廓系數(Silhouette Coefficient)。簇內樣本的距離越近,簇與簇之間的距離就越遠,輪廓系數就越大,最后的聚類效果就越好。實驗證明k取2、3 時輪廓系數最大,與手肘法綜合后,本文中k值取2,也就是把原始醫療數據分為兩組,這樣減少了樣本間差異。
在進行聚類之前,本文需要把每條日志之間的相似度問題轉化為向量矩陣的問題,創建出格式為(輸入詞,輸出詞)的數據元祖,其中每個詞都來源于初始文本數據,同時表示成一個one-hot 向量。定義一個模型,將one-hot 向量作為輸入和輸出進行訓練。定義損失函數,用于預測正確的詞,這些詞來自于輸入詞的上下文,從而優化模型。通過相似詞具有相似的詞向量來評估模型。
本文構建了基于改進的LSTM 的臨床路徑預測模型,最后使用Dropout 方法來防止神經網絡模型過擬合問題的影響。該模型LSTM 中,以詞語的多尺度的特征組合,進行預測。例如,醫療日志中的一條事件軌跡為{u,v,w,},它的連續子序列的集合也就是前文所說的輸入數據為{u,uv,uvw},輸出數據則為{v,w,x,end},其中,end 為代表事件結束的符號。在預測臨床路徑下一個活動之后,可以多次循環使用網絡來預測后續。該模型主要包括聚類分析、詞向量、LSTM 層輸出層3 個部分。主要的算法流程如下:①初始化神經網絡超參數。句子最大長度1 m,每個訓練數據批次的大小bs,詞嵌入處理的維度d,過濾器大小fs,過濾器的數量fn,LSTM 隱含層節點數目hs,最大迭代次數n,全局學習率lr,學習衰退率ld。②在詞向量處理層,將每個病人的診療過程作為文本數據,通過詞頻排序進行編碼,將編碼好的文本數據通過one-hot 模型中形成詞向量,構建詞向量矩陣。用詞向量的維數來表示寬,每個樣本的事件數量來表示長。③將聚類的結果作為輸入,降低維度后輸入到LSTM 層,把LSTM 層輸出的結果作為文本的結果向量,連接全連接層使用Softmax 進行分類,并進行Dropout 操作。④計算交準確率、復雜度和交叉熵損失函數。使用Adam 算法優化損失函數,并基于反向傳播不斷調整參數。當達到模型設置的最大迭代輪數,或者滿足其提前設置的終止要求時,模型結束訓練。
本文所使用的業務流程數據源自于某三甲醫院的醫院信息系統(HIS),HIS 是覆蓋醫院的所有部門,提供患者診斷信息和內部管理信息的信息管理系統。業務流程事件日志的數據集來自于該醫院腦卒中患者的用戶臨床路徑數據。
由于可訓練參數是隨機初始化的,不同的初始值會導致不同的訓練結果,其次每一條數據的醫療日志都是按特定順序排列的,但每條數據之間順序是任意的,這兩個原因會影響神經網絡的性能。所以為了解決這些隨機的影響,使用十倍交叉驗證,即將數據分成10 份,每次用9 份訓練,用1份做驗證,取最后精度的平均值作為驗證結果。
由上述實驗結果可知,經過K-Means 聚類后,1、2 數據都較原數據的精確度有了明顯提升,可以說明對原始數據進行分類可以提高數據的聚合度,同一組的數據更具有醫學相似性。LSTM 預測模型可提高數據準確率,并且在一定程度上可以降低復雜度和交叉熵損失。
未來可以考慮一些其他的神經網絡模型,例如GRU 循環網絡、雙向循環網絡、注意力機制等,來進一步提高模型預測的準確率。對于數據向量編碼分布式表示方法,本文只選用了Word2Vec 的基本方法。本文還可以通過選擇更多的語言模型,例如LBL、NNLM、C&W、GloVe 等,進一步豐富文本的語義信息。此外還可以在進行神經網絡提取特征信息進行訓練前先自行人工提取一部分特征信息,再與后續特征進行融合,以提高預測模型的性能。擴充實驗數據集,筆者們將進一步收集近幾年的腦卒中診療數據,使得模型中參數能夠得到充分地訓練優化,提升預測效果。