陳娜, 郁曉晨
(上海市第六人民醫(yī)院,財務處, 上海 200233)
在醫(yī)院的日常管理中,門診量無疑是重要的影響要素之一,在一定程度上反映了醫(yī)院的規(guī)模、醫(yī)療水平。因此,若能正確的預測門診量,提前做好醫(yī)生、護士的調控分配,不僅可以很好的提高醫(yī)院的工作效率,也可以大幅度提升病人的醫(yī)療體驗感。
本文以給醫(yī)院管理者提供決策支持為目的,對醫(yī)院門診量進行預測,為醫(yī)療衛(wèi)生資源的合理配置提供依據。傳統(tǒng)的門診量預測通常使用灰色模型[1]、差分整合移動平均自回歸模型(ARIMA)[2]等算法,或者將ARIMA模型與其他模型進行簡單的組合[3-4],但是時間顆粒度較粗(通常為周、月、季度或年),預測效果仍有提升空間。本文考慮到醫(yī)院的門診量有著明顯的時間特征,首先將其時間特征納入考慮范疇,通過歷史門診量可以發(fā)現(xiàn)門診量數據并不平穩(wěn),尤其是以天為單位的門診量,波動尤為劇烈,因此我們利用EMD對門診量序列進行分解。以往結合EMD的組合算法[5]一般只考慮了時間序列的特征,并未考慮外部因素。一些外部特征與門診量可能存在一定程度的相關性,因此在本文中,我們同時考慮了門診量也受到天氣、溫度等外部特征的影響,提出了EMD分解[6]和XGBoost[7]的組合算法,利用上海某醫(yī)院門診情況來構建門診量預測模型,分別預測未來1天、7天、30天的門診量之和。
本文門診數據來源于上海某醫(yī)院2016年1月至2019年1月門診報表,部分數據見表1。

表1 上海某醫(yī)院部分門診量數據
本文天氣數據來源于互聯(lián)網,根據該醫(yī)院所在區(qū)域檢索歷史天氣情況,簡單處理后部分數據見表2。

表2 上海某地區(qū)部分天氣數據
1.2.1 經驗模態(tài)分解(EMD)
經驗模態(tài)分解(EMD)是由黃鍔等[8]提出的一種創(chuàng)造性的、新型自適應信號時頻處理方法。基于該方法來處理非平穩(wěn)非線性序列有著優(yōu)良的數值效果,目前已經在地球物理學領域、生物醫(yī)學領域、結構分析領域、設備診斷領域、成像領域等得到應用。
EMD分解方法基于以下假設條件:數據至少有兩個極值,一個最大值和一個最小值;數據局部時域特性由極值點間的時間尺度唯一確定;如果數據沒有極值點但有拐點,則可通過對數據微分一次或多次求得極值,然后再通過積分獲得分解結果。
設有時間序列,EMD分解可以將非線性、非平穩(wěn)的數據序列分解為多個平穩(wěn)單一的序列,即,其中為本征模函數。本征模函數必須滿足以下兩個條件:極值和過零點的數目必須相等,或者至多差一個;在任意數據點,局部最大值的包絡和局部最小值的包絡的平均必須為零。時間序列的分解過程如下。
設有時間序列X(t),EMD分解可以將非線性、非平穩(wěn)的數據序列X(t) 分解為多個平穩(wěn)單一的序列,即X(t)=∑imf(t)+bias,其中imf(t)為本征模函數。本征模函數必須滿足以下兩個條件:極值和過零點的數目必須相等,或者至多差一個;在任意數據點,局部最大值的包絡和局部最小值的包絡的平均必須為零。時間序列X(t)的分解過程如下:
(1) 確定時間序列X(t)的所有局部極值點,分別用曲線連接所有的極大值點和極小值點,如此得到時間序列的上下包絡線,令上下包絡線的平局值為m(t);
(2) 令h1(t)=X(t)-m(t),對h1(t)重復上述步驟,直至滿足本征模函數的條件,即h1(t)是一個基本模式分量,這時得到新的序列X1(t)=X(t)-h1(t);
(3) 對新的時間序列X1(t)重復上述步驟,分別提取出n個基本模式分量。此時,時間序列Xn(t)變?yōu)橐粋€單調序列,不包含任何模式的信息,即為原始序列的余項,bn=Xn(t)。至此,原始時間序列被分解為多個imf分量和一個殘差序列。
1.2.2 XGBoost算法
XGBoost是一種在Gradient Boosting框架下實現(xiàn)的的機器學習算法,由于其出色的效率,被數據科學家廣泛的使用。
對于給定有m個特征、大小為n的數據集D={(Xi,yi)}(|D|=n,Xi∈Rm,yi∈R),樹型集成模型(即第i個實例的預測值)可以表示為
(1)
其中,H={f(X)=ωq(X)},(q:Rm→T,ω∈RT),K表示樹的數量,q表示將實例映射到相應的葉子節(jié)點上的樹的結構,T表示樹的葉子數量,ω表示葉子節(jié)點的分數。我們最小化以下正則化目標函數來得到模型需要的函數:
(2)

(3)
即式(3)表示第i個實例在第t次迭代時的誤差函數。根據式(2),這就意味著需要增加最能改進模型的ft。將式(3)泰勒展開得到:

(4)

(5)
令Ij={i|q(Xi)=j},表示在葉子節(jié)點上的實例集合。因此式(5)可以變換為

(6)
(7)
帶入目標函數可以得到最優(yōu)解:
(8)
式(8)可以用來衡量樹結構q好壞的指標。一般來說,枚舉所有的樹結構q是不可能的,因此這里用一個貪婪算法,它從一個葉子開始,迭代地向樹中添加分支。設IL和IR分別是分支后左節(jié)點和右節(jié)點的集合,且I=IL∪IR,則一次分支后誤差函數為

(9)
根據式(8),利用上式作為分支的評價指標,不斷重復分支,即得到最終的樹。
本文采用兩種不同的指標對預測模型進行評價,分別為均方根誤差(RMSE)以及平均絕對百分比誤差(MAPE)。RMSE和MAPE越小,說明模型效果越好。
RMSE和MAPE的計算式如下:
(10)

本文的特征選擇從天氣特征以及時間特征兩個方面出發(fā),具體如下。
(1) 天氣特征:天氣的變化會影響身體狀況,因此可能對醫(yī)院門診量也有影響。若溫度驟降會引起感冒發(fā)燒的病人增多,或從冬天過渡到春天時,溫度上升,各種植物和粉塵增多,會引起過敏的病人增多,因此醫(yī)院的門診量也會相對應的有所上升。
(2) 時間特征:從已有的數據可以看出,門診量存在某些周期性,因此本文也相應的構建了時間特征,例如是一周內第幾天、前一天門診量等。
時間序列問題的預測,其主要思想是利用歷史時序數據進行統(tǒng)計分析,找到變化規(guī)律,通過建模將該規(guī)律應用到預測未來上。對于門診量的預測,不僅在一定程度上遵循時間變化規(guī)律,并且還受到天氣、溫度等因素的影響,因此,本文將預測門診量的特征分為兩個部分:一是將歷史時間特征進行EMD分解,得到包含各個時間尺度特征的基本模式分量;二是包含天氣等因素的非時間特征,然后對各分量結合非時間特征利用XGBoost算法進行建模,各分量預測結果加和得到最終門診量的預測值,如圖1所示。

圖1 EMD+XGBoost組合算法示意圖
設門診量時間序列為X(t)={x1,x2,x3,x4,x5,…,xn},對序列X(t)進行EMD分解,共得到N個分量{imf1,imf2,imf3,imf4,imf5,…,imfN}和一個殘差序列bN,對N個分量和殘差序列分別建立XGBboost模型進行預測,即產生N+1個XGBboost模型,然后將預測結果相加,即為最終門診量的預測值。
在進行預測前,因為各個特征的量綱不同,因此需要先進行標準化,使模型預測更加合理、準確。預測時,將每一個分量imfi,i=1,…,N,作為一個特征,用前x天來預測x+1天(或x+7、x+30天);另外,由于門診量還受到天氣等非時間因素的影響,因此在建立模型時,也將這些作為特征考慮。
我們對門診量時間序列進行EMD分解,數據為從2016年每日門診量,分解結果如圖2所示。

圖2 部分門診量數據EMD分解示意圖
signal為原始門診量時間序列,imf1到imf6為原始序列被分為的6個分量,由上圖可以看出其波動性逐漸減弱,平穩(wěn)性逐漸增強,res為趨勢線。
本文預測了三種情形下的2018年門診量:未來1天門診量;未來7天門診量之和;未來30天門診量之和。從預測結果的RMSE來看,組合算法在第1種情況下效果最好,平均RMSE 為71.315,此時MAPE為6.691%,RMSE 和MAPE最小達到0.281和0.018%;從MAPE來看,組合算法在第2種情況下效果最好,平均MAPE為4.050%,此時RMSE為353.106,RMSE和MAPE最小達到9.214和0.110%;綜合來看,組合算法更適合在第1種情形下運行。
當然,若預測一周日平均和一月日平均門診量,可以看出RMSE有所下降,甚至比預測未來1天門診量表現(xiàn)的更好(RMSE分別下降了29.27%和31.02%)。這是因為日門診量受到外部因素的影響更大,因此波動性也大;而周門診量與月門診量從一定程度上削弱了外部因素的影響,它們更加穩(wěn)定(若因為某些原因前一天的病人比平日較少,但是這部分病人會在第二天或者后面幾天來醫(yī)院),所以平均到每日效果會更好。
為了進一步的體現(xiàn)EMD+XGBoost組合算法的性能,我們還對應的用單XGBoost算法作為對照。通過結果對比可以看出,加入了EMD分解后,模型的預測結果得到了顯著提高,在三種情形下RMSE分別提高了16.87%、20.34%和4.00%,MAPE分別提高了18.74%、18.35%和0.80%。這里可以看出,在情形3)下EMD+XGBoost組合算法與單XGBoost算法的差距很小,這也是因為上文所說,30天門診量的波動性較小,而EMD更善于處理平穩(wěn)性差的時間序列上。也從側面說明,組合算法更適合第1種情形。
綜上,EMD+XGBoost組合算法在處理日門診量預測和周門診量預測時,優(yōu)于單XGBoost算法。
EMD+XGBoost組合算法及單XGBoost算法在三種預測情形下的RMSE和MAPE如下圖3、圖4所示。

圖3 EMD+XGBoost組合算法與單XGBoost算法RMSE對比

圖4 EMD+XGBoost組合算法與單XGBoost算法預測MAPE對比
本文提出了一種EMD+XGBoost的組合預測算法。針對門診量時間序列,通過EMD對時間序列進行平穩(wěn)性處理,再結合XGBoost進行預測。相比較傳統(tǒng)的利用灰色模型、差分整合移動平均自回歸模型(ARIMA)等,組合預測算法更好的結合了EMD和XGBoost兩個算法的優(yōu)點,在預測時,不僅僅只依據時間特征,并且加入考慮了外部因素,在預測日門診量時表現(xiàn)的更好,細化了門診量預測的時間顆粒度,使得模型更加仿真,得到的預測值也更接近于真實值。
本文雖然考慮了天氣的外部因素,但是在真實情況下,影響門診量的因素更多,也更為復雜,比如醫(yī)院的地理位置,區(qū)域人口等。加入這些因素,將提高模型的泛化能力。但是,當外部因素增多時,其與時間因素在模型中的權重如何控制是一個難題,若某一方的權重過大,可能會適得其反,使模型結果變差。因此,在門診量預測的問題上,還有進一步研究的空間。