彭 俊 項 薇,2* 謝 勇,3 黃益槐 韓樂奇 吳成宇
1(寧波大學機械工程與力學學院 浙江 寧波 315211) 2(寧波大學先進儲能技術與裝備研究院 浙江 寧波 315211) 3(撫州幼兒師范高等??茖W校 江西 撫州 344099)
我國三甲醫(yī)院門診就診中普遍存在“三長一短”的問題,即“掛號排隊時間長、看病等候時間長、取藥排隊時間長、醫(yī)生問診時間短”。有學者統(tǒng)計研究表明門診患者的醫(yī)療診治時間僅占有門診總時間的10%~15%[1]。這其中的“三長”極大影響患者對醫(yī)院醫(yī)療服務滿意度,也直接造成患者就診過程排隊擁堵現(xiàn)象,影響醫(yī)療機構的正常運作管理。
基于不斷增長的醫(yī)療需求的影響,就診排隊等待現(xiàn)象似乎不可避免。目前,患者和醫(yī)院依然存在信息不對稱的情況,特別是當患者需要進行多項檢查及診治服務時,患者無法獲得各科室實時就診信息,僅依靠經(jīng)驗選擇就診項目進行排隊等待。應用預測分析技術可以為醫(yī)院過度擁擠提供一個解決方案[2-3],把預測出的等待時間等信息通過電子屏幕等移動設備發(fā)布給患者,增強患者就診體驗,緩解患者因為焦急產(chǎn)生等待的焦慮,從而提高其滿意度。
針對醫(yī)療服務等待時間預測問題,依據(jù)其復雜性,可提煉成單一服務階段等待時間預測與多階段服務等待時間預測這兩類問題。單階段等待時間預測是指這類患者需要知道當前所在科室的實時等待信息,該患者已經(jīng)在該科室的隊列中,我們需要預測該患者所在科室隊列的實時等待時間;多階段服務等待時間預測是指這類患者需要接受系列的就診服務,過程中有多重排隊隊列選擇,不僅需要知道當前所在科室的實時等待信息,還需要獲取下一流程所在科室的等待信息乃至在醫(yī)院的總逗留時長。通過文獻綜述發(fā)現(xiàn),現(xiàn)有的服務等待時間預測研究主要為單階段等待時間預測,少有針對多階段服務等待時間預測的相關文獻。
國內(nèi)學者朱啟東[4]基于科室、掛號時間、是否為工作日、月份、醫(yī)生、同科室候診人數(shù)、當天本科室掛號總人數(shù)和是否為節(jié)假日8個變量建立BP神經(jīng)網(wǎng)絡患者候診時間預測模型。張會會[5]基于醫(yī)療信息系統(tǒng)數(shù)據(jù)將星期、是否周末、科室、卡號類型、卡號類型、預約時段等變量提取出來,分別利用線性回歸、Lasso回歸、隨機森林回歸、K最近鄰回歸四種方法建立患者等待時間預測模型,隨機森林和K最近鄰回歸精度最高,平均絕對誤差低至13分鐘左右。何躍等[6]將患者掛號月份、時間段、科室隊列人數(shù)和科室隊列流速作為預測模型的自變量,建立基于BP神經(jīng)網(wǎng)絡急診科室患者等待時間預測模型,其研究顯示隊列流速對患者等待時間影響較小。
國外研究主要側重于急診科室患者等待時間的預測,與之相關的文獻采用了大量的統(tǒng)計方法。Austin等[7]基于患者年齡、性別、患者緊急情況、病情程度、是否為工作日等15個變量使用分位數(shù)回歸模型預測患者在請求急診服務科多久到達醫(yī)院。Poole等[8]使用正則化模型(Ridge and Lasso)和隨機森林回歸預測患者急診候診時間。Champion等[9]通過使用簡單的移動平均、滾動平均方法計算出等待時間的算術平均值來構建預測模型。Pianykh等[10]將科室隊列人數(shù)、最近的3位病人平均等待時間、隊列流速等作為輸入變量,建立線性回歸模型預測患者等待時間。Ang等[11]使用正則化回歸模型預測病情較輕患者等待時間。Arha[12]基于時間類變量(如這一天是星期幾、患者幾點到達等)、急診科室快速通道的狀態(tài)、患者類型、患者地點位置等變量,構建基于正則化回歸方法(Lasso、Ridge、Elastic Net、SCAD和MCP)和隨機森林的患者等待時間預測模型。
綜上所述,總結對患者等待時間統(tǒng)計建模輸入的變量:主要可分為時間類、患者類型、科室類型、掛號方式、地點位置5類變量,具體如表1所示?,F(xiàn)有的研究主要采用移動平均、回歸分析和神經(jīng)網(wǎng)絡三類算法,具體如圖1所示。移動平均模型僅利用本身的歷史數(shù)據(jù)進行預測,數(shù)據(jù)需求簡單,但也因此忽略了其他因素的影響;神經(jīng)網(wǎng)絡算法可解釋性較差同時需要大量的歷史數(shù)據(jù);而經(jīng)典的回歸分析方法如正則化方法、分位數(shù)回歸、K最近鄰、決策樹等預測技術由于欠擬合導致預測性能欠佳,同時也不適用在大數(shù)據(jù)樣本的預測。本文將選取醫(yī)療服務等待時間的預測問題為研究對象,引入基于LightGBM算法實現(xiàn)多階段服務等待時間的預測。
表1 統(tǒng)計預測建模輸入變量
圖1 統(tǒng)計學習預測方法
LightGBM算法屬于Boosting集成算法中的一種,Boosting是機器學習中集成學習算法的一個分支,是目前經(jīng)典的用于預測的機器學習算法,由Schapire[13]提出,其主要思想是將多個弱監(jiān)督學習模型進行有機組合得到一個性能更好更全面強監(jiān)督學習模型,即便是某一個弱學習器得到了錯誤的預測,其他的弱學習器也可以將錯誤糾正。常見的機器學習Boosting集成算法有Adaboost、GBDT、XGBoost和LightGBM。Adaboost和GBDT都是經(jīng)典的Boosting決策樹算法,XGBoost在GBDT基礎上進行了一定改進,使其性能得到提升。XGBoost算法雖然強大,但是由于XGBoost算法迭代次數(shù)和特征維度有很大關系,當樣本數(shù)據(jù)維度增加,每次迭代需要遍歷全部的數(shù)據(jù)樣本,在這種情況下XGBoost算法效率顯著降低。為了應對大數(shù)據(jù)樣本的挑戰(zhàn),還需要對XGBoost進行優(yōu)化。LightGBM是微軟2017年提出的新的Boosting框架模型[14],LightGBM算法在XGBoost基礎上進一步進行了以下改進:
(1) 梯度單邊采樣技術:梯度單邊采樣技術(Gradient-based One-Side Sampling,GOSS)可以剔除很大一部分梯度很小的數(shù)據(jù),只使用剩余的數(shù)據(jù)來估計信息增益,從而避免低梯度長尾部分的影響。由于梯度大的數(shù)據(jù)對信息增益更加重要,所以GOSS技術在較之傳統(tǒng)GBDT少很多的數(shù)據(jù)前提下仍然可以取得相當高的預測精度[15]。
(2) 獨立特征合并技術和直方圖算法:獨立特征合并技術(Exclusive Feature Bundling,EFB)實現(xiàn)互斥特征的捆綁,以減少特征的數(shù)量,因為在高維特征的數(shù)據(jù)樣本中,很多樣本的特征存在互斥的情況,EFB技術識別并對這些特征進行捆綁。另外,在GBDT和XGBoost算法中,最耗時的步驟是利用預排序(Pre-Sorted)的方式在排好序的特征值上枚舉所有可能的特征點,然后找到最優(yōu)劃分點,而LightGBM中使用直方圖算法替換了傳統(tǒng)的Pre-Sorted以減少對內(nèi)存的消耗,直方圖算法的思路是將連續(xù)的特征值進行裝箱處理,裝箱處理其實就是離散化連續(xù)的特征值,而對于類別特征,一種取值就是一個箱,這樣處理的好處是在節(jié)點分裂時,XGBoost和GBDT中需要遍歷所有離散化的值,而在LightGBM中只要遍歷箱。因此LightGBM更加高效,占用內(nèi)存更低。
(3) 不同于XGBoost和GBDT采用基于按層生長的決策樹成長方式,又叫做level-wise策略。LightGBM算法中單個決策樹的節(jié)點分離方法是基于葉子分裂的,又叫l(wèi)eaf-wise策略,這樣的好處是不會對許多分裂增益過低的節(jié)點進行遍歷搜索,降低了對計算資源的消耗。
本文預測分析過程如圖2所示,首先基于SIMIO獲取相關數(shù)據(jù),對數(shù)據(jù)進行獨熱編碼及標準化預處理后使用Lasso、Ridge、GBDT、XGBoost和LightGBM算法建立預測模型,使用隨機搜索選擇參數(shù),最后通過對比選出最佳模型。
圖2 預測分析過程
將患者服務等待時間定義為患者在醫(yī)院接受服務時間以及等待時間之和。醫(yī)院各科室隊列人數(shù)的實時狀態(tài)S、患者診療流程中的科室構成O是影響患者服務等待時間的主要因素。
(1)
所以,多階段患者服務等待時間可用式(2)表示,因為無法知道公式的具體形式,因此采用LightGBM算法建立回歸模型預測患者服務等待時間。
F=f(k1,k2,…,kn,p11,p12,…,p1n,…,pMnM)
(2)
對寧波某婦幼保健院以及寧波多家醫(yī)院的調(diào)研發(fā)現(xiàn),目前醫(yī)院的HIS系統(tǒng)與排隊系統(tǒng)獨立運作,無法直接獲取多階段的原始數(shù)據(jù),本文采用SIMIO軟件進行仿真,獲取模型訓練集和驗證集數(shù)據(jù)。
仿真首先需要仿真目標,本文基于文獻[16]建立仿真模型獲取相關實驗數(shù)據(jù)。論文中以大連某體檢中心實際工作流程為基礎,對于患者的就診流程、患者到達分布、人員設備配置、各科室服務時間、排隊過程均有詳細說明。
對于建模輸入變量,本文主要考慮患者和醫(yī)務人員兩方面的影響,主要包括時間類(患者到達時間)、科室類(各科室隊列人數(shù)類、患者檢查項目)這2大類變量對患者等待時間的影響,具體變量和變量類型如表2所示,通過SIMIO中添加觸發(fā)器并加入write step模塊將實驗相關數(shù)據(jù)輸出成.csv文件格式。對于上述共17類數(shù)據(jù),服務等待時間是我們的預測目標,進入隊列時間既可獲取進入隊列時刻,也可與完成時間計算得到患者的服務等待時間,其他14個變量為輸入模型中的因變量,將仿真模型運行60天后匯總得到樣本共計8 110條。
表2 變量類別及類型
(1) 標準化。對數(shù)據(jù)進行標準化處理可以排除不同變量值域量綱差異過大的影響,有利于算法模型的收斂。通過式(3)進行轉換,假設原始變量集合為X={X1,X2,…,Xn},標準化處理后的變量集合為Z={Z1,Z2,…,Zn},使用sklearn.preprocessing中StandardScaler模塊可以快速進行數(shù)據(jù)標準化處理。本文對檢查科室總數(shù)、采血科隊列人數(shù)、一般檢查科隊列人數(shù)、眼耳口鼻科隊列人數(shù)、內(nèi)科隊列人數(shù)、外科隊列人數(shù)和彩超科隊列人數(shù)進行標準化處理。
(3)
式中:μ是該變量的均值;s為該變量的標準差。
(2) 獨熱編碼。獨熱編碼即一位有效編碼,其方法是使用N位狀態(tài)寄存器來對N個狀態(tài)進行編碼,每個狀態(tài)都有它獨立的寄存器位,并且在任意時候,其中只有一位有效。如對0和1進行編碼,首先只有兩個狀態(tài)就是需要兩個狀態(tài)寄存器,將其編碼為00和01。獨熱編碼使得特征間的距離度量合理,不過會增加特征維度。本文使用Python的第三方庫pandas中get_dummies()方法對進入隊列時刻、采血科是否檢查、一般檢查科是否檢查、眼耳口鼻科是否檢查、內(nèi)科是否檢查、外科是否檢查和彩超科是否檢查共7個離散特征進行獨熱編碼。
為評估模型的泛化性能,將實驗源數(shù)據(jù)集,共計8 110條實驗源數(shù)據(jù),隨機選取80%的數(shù)據(jù)(6 488個樣本)作為訓練集,20%的數(shù)據(jù)(1 622個樣本)作為測試集。
表3 數(shù)據(jù)集大小
使用兩個指標MAE和MAPE度量Lasso、Ridge、GBDT、XGBoost、LightGBM模型的預測精度。
(1) 平均絕對誤差(MAE)。平均絕對誤差可以直接衡量預測值與真實值的差值大小,具體MAE計算方式見式(4)。
(4)
式中:n為樣本個數(shù);yobs,i為第i個實驗數(shù)據(jù)的真實值;ymodel,i為第i個實驗數(shù)據(jù)的預測值。MAE值越小說明算法預測精度越高。
(2) 平均絕對百分比誤差(MAPE)。平均絕對百分比誤差不僅僅考慮預測值與真實值的誤差,還考慮了誤差與真實值間的比例。MAPE計算方式見式(5),MAPE值越小說明算法預測精度越高,由式(5)可知當實際值為0時公式將不適用,因此在計算MAPE時將實際值為0的樣本刪除。
(5)
式中:n為樣本個數(shù);yobs,i為第i個觀測樣本的實際值;ymodel,i為第i個樣本的預測值。
模型驗證實驗電腦配置為64位Window 10操作系統(tǒng),8 GB運行內(nèi)存,Intel Core i5- 8250U處理器。使用Python3.5編程語言進行分析建模,建模過程主要使用到的包和機器學習庫有pandas、numpy、matplotlib、seaborn、sklearn。
使用機器學習算法構建預測模型時,參數(shù)對模型的預測結果影響較大。對于Lasso模型,選取alpha和max_iter進行尋優(yōu);對于Ridge模型,選取alpha進行尋優(yōu);對于GBDT模型,選取learning_rate、n_estimators、max_depth和subsample這4個主要參數(shù)進行調(diào)優(yōu);對于XGBoost模型,選取learning_rate、n_estimators和max_depth這3個參數(shù)進行尋優(yōu);對于LightGBM模型,選取learning_rate、n_estimators、max_depth、num_leaves、min_data_in_leaf、feature_fraction和bagging_fraction共7個主要參數(shù)進行調(diào)優(yōu)。使用隨機搜索自動選取參數(shù)。具體步驟如下:(1) 確定參數(shù)的尋優(yōu)區(qū)間;(2) 為每個超參數(shù)定義成均勻分布;(3) 根據(jù)給定的分布進行隨機采樣,然后根據(jù)得到的采樣結果進行遍歷。使用sklearn中RandomizedSearchCV模塊可快速進行隨機搜索。使用5折交叉驗證選擇參數(shù),超參數(shù)尋優(yōu)時采用MAE為評分函數(shù)。確定參數(shù)后分別評估各模型在測試集上的預測性能,并整理實驗結果如表4所示。
表4 不同模型尋優(yōu)耗時與MAE值對比
可以發(fā)現(xiàn)Ridge尋優(yōu)時間最短,預測性能較差,在測試集上MAE僅為9.140 8。GBDT、XGBoost、LightGBM都可以取得較好的預測精度,MAE約為3分鐘左右,但是LightGBM模型可大幅降低尋優(yōu)時間,其尋優(yōu)時長僅為GBDT模型的3.3%,XGBoost模型的22.4%。因此,綜合尋優(yōu)時間和預測精度來看,確定LightGBM為最佳模型。
使用MAPE評估各模型的預測精度在測試集上預測精度,通常我們認為模型MAPE小于10%說明預測模型精度較高。如表5為各個模型的MAPE值??梢园l(fā)現(xiàn)GBDT、XGBoost、LightGBM算法遠高于Lasso和Ridge模型預測精度,預測精度分別為8.62%和8.23%和8.52%,滿足實際應用需求。
表5 各算法MAPE值對比(%)
LightGBM建??墒褂媚P蛢?nèi)置函數(shù)plot_importance提取特征對于模型的重要度,表6為各特征對模型重要度所占百分比,可以看出各科室隊列人數(shù)和檢查科室總數(shù)占比最高,計算可得這些特征占比總計達84.77%。這些特征是影響患者等待時間的關鍵。
表6 LightGBM模型特征重要度(%)
結合醫(yī)療工作,根據(jù)預測分析結果給出如下應用討論:
(1) 體檢流程作為典型的多階段服務流程,患者往往處在焦急的等待之中,在我們的實際應用中,可在預測出的等待時間的基礎上加上一段時間,使得患者實際感知的等待時間減少,提高病人滿意度。
(2) 對于多階段服務等待時間預測來說,獲取各科室信息是預測的基礎,因此建立統(tǒng)一的醫(yī)療信息系統(tǒng)尤為關鍵,結合文獻調(diào)研分析和本文的研究,采集患者的掛號科室數(shù)、各科室的隊列人數(shù)等信息對預測等待時間尤為關鍵。
(3) 多階段服務等待時間預測有助于優(yōu)化序列預約,減少不必要的過號浪費現(xiàn)象發(fā)生,因為目前的情況是每個環(huán)節(jié)都需要排隊取號,存在大量過號,無法了解排隊情況,有了患者服務等待時間,可用于最優(yōu)化序列預約。
本文基于Lasso、Ridge、GBDT、XGBoost、LightGBM建立多階段服務等待時間預測模型,預測結果顯示LightGBM取得預測性能最好,平均絕對誤差分別為3.439 1,平均百分比誤差為8.52%。本文的不足之處在于LightGBM雖然可以提高預測精度,但與Ridge算法相比,其算法運行時間較長,特別是在醫(yī)療大數(shù)據(jù)的背景下如何在獲得較高預測精度的同時降低算法尋優(yōu)時長是以后研究主要內(nèi)容之一。