时间:2024-05-04
张家艳, 郑建立
(上海理工大学, 上海 200093 )
门诊是医院对外服务的窗口。人口老龄化导致患者人数的增加以及人们越来越关注自身健康状况,每年的门诊压力越来越大。此外,门诊量与体检和住院服务的工作量直接相关[1]。对门诊病人数量进行准确和可靠的预测,有助于科学合理地分配医院的人力物力资源如医生坐诊人数、医疗设备等,从而能更好应对门诊压力。
在研究门诊量随时间变化过程中,影响其变化的因素太多,难以考虑全面。由于时间序列模型仅考虑日期因素,故常把门诊预测当作时间序列数据分析。在时间序列模型中,最常见的是差分整合移动自回归模型(ARIMA)[2-3]。ARIMA起初是出于经济学目的设计,现已广泛用于医学领域。如范晓欣等人[4]用ARIMA预测门急诊人次,mape为7.01%。近年来,人们采用深度学习等新技术预测,如Wang等人[5]将时间序列分解,再用广义回归神经网络模型预测; Huang等人[6]使用经验模式分解结合粒子群算法优化的反向传播人工神经网络预测;相比传统技术,均得到了更准确的预测结果。但深度学习技术在大数据量上效果较好,针对少数据量的情况,常采用机器学习方法。Islam等人[7]用支持向量回归预测社区医院的门诊人次。Yang等人[8]用多层感知器预测门诊就诊上呼吸道感染人数。2016年以来,xgboost[9]在Kaggle等各大数据科学比赛中都得到广泛应用,成为比赛中的高分模型。
空气污染是一个重大的全球性问题,空气里的污染物能够影响人体健康。同时,天气的变化也能给人带来不适,这些可能都影响门诊量的变化。Seo等人[10]采用环境监测数据与气象数据建立韩国结膜炎门诊量预测模型,发现门诊量O3浓度相关系数为0.49。经学者研究发现,台湾干眼病与环境监测因素如一氧化碳、二氧化氮等的含量正相关(P<0.05)[11]。因此,在对门诊量进行预测时,选择气象因素及环境监测因素作为门诊预测因素是必要的。
极端梯度提升(Extreme Gradient Boosting,xgboost)是在集成学习GBDT的基础上对目标函数进行了二阶泰勒展开,在陈刚等人[12]提出之后,就得到了广泛的应用,在许多问题上得到了优胜的解决方案。
xgboost是在GBDT上进行改进的算法,故也是由k个cart树集成学习而来。但不同的是GBDT的基函数为决策树,而xgboost的基函数为其他的机器学习器。在xgboost中,损失函数的计算公式在GBDT的损失函数的基础上加上了正则化项Ω(ht),即损失函数为:
(1)
其中,Ω(ht)计算公式为:
(2)
其中,γ,λ为正则化系数;J为叶子节点的个数;wt, j为对应叶子节点Rt, j的输出值。
在GBDT中,损失函数仅仅对误差部分做负梯度、即一阶泰勒展开,但在xgboost中对误差部分做二阶泰勒展开,从而使拟合结果更准确,即:
(3)
在最小化损失函数的过程中,由于L(yi,ft-1(xi))为常数,故不影响最小化的过程,可省略。同时,由上知wt, j的定义,而ht(xi)为xi经过第t个决策树处理后在子节点区域的输出值,故式(3)可改为:
(4)
其中,
机器学习技术广泛应用在机器翻译,语音识别等领域,而这些领域的数据有些是非数值数据,很少有数值不平稳的情况。但作为时间序列数据,门诊量经常会存在不平稳的情况。非平稳序列包含了季节、趋势等因素,这些不确定因素使预测结果的准确性降低[13]。故在数据预处理时,先对数据进行平稳性检测,如不平稳,常用的方法是进行差分化处理,即将数据的后一个数减去前一个数,依次相减得到数据集,重复检测直到数据转化成平稳序列,最后将预测结果进行反差分化得到最终预测结果。
本文数据采用ADF平稳性检测结果得到p-value值为0.874 3,即数据是不平稳的。将数据集进行一次差分后便发现p-value值变为0,数据已经变成平稳序列了。
本文采用kettle工具抽取了上海市某三甲医院2017/01~2019/05年的门诊日值数据。对假期和周末的门诊异常值,汇合气象环境数据后一起进行处理。
在中国气象数据网上,下载了对应2017/01~2019/05的气象数据。这些数据总共包括22个气象特征,对其中缺失值和异常值采用均值法进行处理。选取的主要气象数据特征及值见表1。
表1 部分气象数据特征及值
同期环境监测数据来自于pm2.5历史数据网站[13],其中的数据全部来自于国家环境保护部。对数据中的缺失数值采用均值处理。环境监测数据特征及值见表2。
表2 环境监测数据特征及值
整合上述三份数据,删除其中的周末以及假期数据,共得到565份数据。从这565份数据中选取508份作为训练集,将剩下的57份数据作为预测集。
2.2.1 超参数取值
本算法在调参时首先采用随机搜索调参法,确定大致的参数范围,然后采用网格搜索调参法获取最优的参数组合。
在本次随机搜索调参时,采用三折交叉验证,n_iters选择为10即搜索次数为10。在随机搜索调参的结果上,取每个超参数左邻和右邻几个数一起作为网格搜索参数的初始值,最终得到的网格搜索参数结果见表3。
表3 超参数取值
2.2.2 评价标准
对于门诊量预测的结果,采用平均百分比误差(mean absoulute percent error,mape)来衡量预测值与真实值之间的差距,采用模型拟合度R2来衡量模型的拟合程度,其计算公式具体如下:
(5)
(6)
其中,yreal表示实际的门诊量值;ypred表示门诊量预测值;yavg表示门诊量平均值。
mape越小说明预测的准确程度越高,R2越大说明模型选择越合理。
2.3.1 门诊量预测
在模型确定之后,便可以训练模型进行门诊量预测。未来50天日门诊量预测值与真实值的对比曲线如图1所示。其中,虚线即为未来50天的预测值,实线为未来50天的真实值,由图1可以看出除了在最高值或最低值处有部分偏差之外,预测走向基本一致。
图1 未来50天日门诊量预测值与真实值
Fig. 1 Forecast and actual values of daily outpatient visits in future 50 d
2.3.2 差分化处理对预测结果的影响
在数据预处理后,将数据进行差分化处理,转化为平稳序列,再进行预测,最终得到的预测结果是差分数据。在计算R2和mape时,需要将差分数据反差分化得到最终数据集。差分处理与未进行差分处理的R2和mape值见表4。可以看出,对于非稳定的时间序列数据,差分处理对预测结果的准确性影响明显,因此在预测之前进行差分处理是必要的。
表4 差分对模型结果的影响
2.3.3 气象及环境监测因素对预测结果的影响
对于门诊量的预测,传统的方法就是采用日期和门诊量数据当作时间序列数据进行预测。这种方法解决了门诊量影响因素太多无法选取全部因素的问题。在此方法中,只用时间变量来替代所有变化的因素,从而达到大致较好的预测结果。但时间因素是个笼统的特征,内在的变量太多,时间变量并不能完全替代这些变量。本文将对疾病影响较大的气象因素及环境监测数据再加上时间变量一起预测门诊量,比仅采用时间变量预测效果好。结果见表5。
表5 预测结果对比
门诊量数据为时间序列数据,由于数据随着时间变化存在波动现象,即数据是不稳定的,常见的机器学习和深度学习领域,很少需要时间序列处理,故该领域的常规化处理思路便没有差分化这一方法。为了改善预测效果,翻阅了大量统计学文献后,进行了差分化处理,结果显示采用差分化处理后的xgboost模型预测方法,得到的预测结果之平均绝对百分比误差低于原生数据的xgboost模型,展现了强大的预测能力。而且,相对于仅用时间来预测门诊量的方法,将气象、环境监测因素引入门诊量预测的方法,其平均绝对百分比误差及模型拟合度均获得更好的效果。与其他门诊量预测的研究相比[7-8],本文提出的模型的预测结果高于平均水平。由于数据集较小,深度学习方法效果不好,在后续的研究中,可以考虑抽取更多的临床数据以扩大数据量以及引入经济因素,并采用优化的深度学习模型,进一步增大预测的准确性。
我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自各大过期杂志,内容仅供学习参考,不准确地方联系删除处理!