前途科技前途科技
  • 洞察
  • 服务
  • 关于
  • AI 资讯
    • 快讯
    • 产品
    • 技术
    • 商业
    • 政策
    • 初创
  • 洞察
  • 资源中心
    • 深度研究
      • AI 前沿
      • 案例研究
      • AI 知识库
    • 行业报告
      • 白皮书
      • 行业报告
      • 研究报告
      • 技术分享
      • 专题报告
    • 精选案例
      • 金融行业
      • 医疗行业
      • 教育行业
      • 零售行业
      • 制造行业
  • 服务
  • 关于
联系我们

XGBoost预测急诊量:数据驱动的排班决策

技术2026年5月13日· 原作者:profile· 12 分钟阅读1 阅读

通过合成数据构建XGBoost模型,预测墨尔本急诊诊所每日患者量,辅助排班。文章涵盖特征工程(天气、节假日、流感季)、模型对比(XGBoost胜出,MAPE 11.9%)、SHAP解释及预测区间,最终将预测结果转化为低中高三种人力配置等级。

背景:急诊排班的难题

墨尔本一家步行上门急诊诊所,每天要拍脑袋决定排几个医生。医生少了,候诊室爆满,患者跑去最近的三甲急诊;医生多了,钱烧得心疼。大多数诊所靠去年数据、直觉和运气来估计,尤其是流感季。

作者想解决的,正是这个“把急诊需求变成可预测数字”的问题。他构建了一套XGBoost预测管道,每天输出患者量预测和置信区间,排班经理可以据此安排医生。

本文是系列第一篇,覆盖数据生成、特征工程、模型训练与评估。第二篇将部署FastAPI后端、React + Tailwind仪表盘以及Supabase日志系统。全部代码已开源在GitHub。

问题本质:急诊预测不同于商场人流

预测急诊量与预测商场客流不一样。商场周二少50个顾客,大不了快餐店多开两个服务员。但急诊排班不足,患者可能等出问题;排班过多,本来就薄的利润更扛不住。这不是单纯的预测练习,而是有真实后果的运营问题。

数据集设计与模拟

由于没有真实数据(即使有也不能公开),作者用合成数据模拟了2023年1月到2025年12月共1096天的日度记录。合成数据的好处是可控信号噪声比,且能清晰展示方法。

Daily Patient Volume over Time

上图为日度患者量(浅线)和30天移动平均(红线)。冬季流感推高、春季花粉过敏轻微上扬、夏季平淡,偶尔雷暴哮喘或热浪导致尖刺。

每条记录包含:

  • 时间特征:星期几、月份、季度、年周
  • 天气:温度、降雨、湿度、天气类型(晴/多云/阴/雨)
  • 日历事件:维多利亚州公共假日、学校假期、假日次日
  • 特别标记:冬季流感季(7月峰值)、花粉季(10-11月)、雷暴哮喘、极端高温(>35℃)或低温(<5℃)

值得注意的是,一些特征在不同场景下作用相反。例如下雨可能减少娱乐场所客流,但轻微增加急诊需求(滑倒、无法拖延的感染)。作者花时间调整这些方向,否则看似合理的合成数据会导致模型学到错误关系。

患者量生成使用了乘积因子(基准100人/日):

day_multiplier = {0: 1.15, 1: 1.00, 2: 0.95, 3: 0.95, 4: 1.00, 5: 0.85, 6: 0.75}
df['patients'] *= df['day_of_week'].map(day_multiplier)

season_multiplier = {
    1: 0.85, 2: 0.90, 3: 0.95, 4: 1.00, 5: 1.10, 6: 1.30,
    7: 1.45, 8: 1.35, 9: 1.15, 10: 1.10, 11: 1.05, 12: 0.90
}
df['patients'] *= df['month'].map(season_multiplier)

再加高斯噪声(标准差12%)、2%异常点(1.5-2.5倍)、每日0.01%增长趋势,最终值限制在30-500人/日。

Right-skewed distribution of raw patient counts

分布右偏(偏度1.14),大多数天集中在100-150人,但流感季长假可出现250+。

特征工程:从31列到87个特征

作者强调:原始数据得到基线预测,特征工程才得到好预测。从31个原始列,通过以下8类生成了87个特征:

  • 时间周期性编码(sin/cos处理星期、月份等,避免0和6被误认为距离远)
  • 滞后特征(1/2/3/7/14/21/28/60/90天,捕捉短期动量、周周期、季节)
  • 滚动统计(3/7/14/30/60/90天均值、标准差、最大、最小,以及指数加权移动平均)
  • 交互特征(如“雨天×流感季”、“假日×周一”等)
  • 等等

关键技巧:shift(1)防止数据泄露,确保只用预测日前信息。

Top 30 Features by Correlation with Patient Count

滚动7/14天均值与患者量的相关性最高(约0.61-0.69),说明近期趋势最重要。

模型训练与对比

采用时间序列切分:最后90天作为测试集(2025-10-03至2025-12-31),前面915天训练。使用TimeSeriesSplit交叉验证(5折,扩窗)。

建立三个基线:

  • 全局均值(约130人)
  • 上周同日值(lag 7)
  • 7天移动平均

三个模型:随机森林(300棵树)、XGBoost(500棵树,学习率0.05,对log1p患者量训练)、Prophet(facebook时间序列模型,使用乘法季节性和外部回归因子)。

结果:

模型MAERMSER²MAPE
XGBoost17.0427.690.3011.89%
Prophet17.9828.980.2312.84%
随机森林18.3429.350.2112.91%
基线(7日MA)22.9332.360.0417.18%
基线(均值)24.0433.04-0.0018.06%
基线(上周同日)24.0935.87-0.1817.22%

XGBoost最优:MAPE 11.9%意味着平均每天预测误差约15人(基数为130)。相比最好的基线(7日移动平均),MAE从22.93降至17.04,误差降低26%。R²约0.30看似不高,但急诊日波动大,MAPE更能说明实用价值。

Actual vs Predicted Patient Counts

XGBoost最贴近真实值的周期性(红为预测,黑为实际)。

模型评估与可解释性(SHAP)

残差分析显示残差基本围绕0,无时间漂移,但模型对高峰日略低估(负偏差约6.5人/天)。因此生产中使用预测区间上界更安全。

使用SHAP解释特征重要性:

SHAP Values

is_flu_peak、illness_driver_count、patients_lag_7是驱动预测的主要因素,与临床直觉一致。

还演示了最差预测日的瀑布图,可逐特征查看贡献——这对向临床主任解释“为什么昨天预测偏差大”非常有用。

预测区间:给排班经理一个范围

用自助法(500次重采样)生成80%和95%预测区间。例如:“明天预测145人,80%区间为113-177人”。这比单个数字更有用,排班经理可根据区间上限安排人力(因为缺人风险高得多)。

Predictions with Bootstrap Intervals

实际值落在区间内的比例基本符合预期。

从预测到决策:用人梯队分类

将患者量转化为三个排班等级:

  • 低量(<80人):2医生+3护士,常规排班
  • 中量(80-150人):3医生+4护士+额外分诊护士
  • 高量(>150人):4+医生,启动应急方案

这样排班经理不用盯着“145人”这个数字,而是直接知道“今天需要中级梯队”。作者指出,模型正确识别梯队天数的比例约8成(结合80%区间),这比单纯看MAE更有操作意义。

总结

本文从业务问题出发,通过合成数据、特征工程、XGBoost建模、SHAP解释、预测区间和梯队分类,构建了一套可落地的急诊患者量预测系统。MAPE 11.9%意味着每天预测误差约15人,足以支撑“低-中-高”的排班决策。

所有代码已开源,读者可克隆后适配自己的诊所或场地。第二篇将介绍FastAPI部署、React仪表盘和实时监控。

如果你对“如何将预测数字转化为实际排班人数”感兴趣,欢迎留言,作者考虑单独写一篇。

标签:XGBoost预测排班优化

想了解 AI 如何助力您的企业?

免费获取企业 AI 成熟度诊断报告,发现转型机会

//

24小时热榜

AI 交互的范式转变:从"回合制"到"实时协作"
TOP1

AI 交互的范式转变:从"回合制"到"实时协作"

回敬 Codex,Claude Code 推出 /goal 功能,不干完不睡觉
TOP2

回敬 Codex,Claude Code 推出 /goal 功能,不干完不睡觉

3

Claude Opus 4.7刚刚曝光!Claude Code一夜重构,7x24小时替你打工

3小时前
Claude Opus 4.7刚刚曝光!Claude Code一夜重构,7x24小时替你打工
4

XGBoost预测急诊量:数据驱动的排班决策

2小时前
XGBoost预测急诊量:数据驱动的排班决策
5

再也不用盯着几十个终端窗口!Claude Code推出Agent视图,一屏管所有

3小时前
再也不用盯着几十个终端窗口!Claude Code推出Agent视图,一屏管所有
6

对话OpenClacky李亚飞:把Harness做透,Token账单就不是问题了

3小时前
对话OpenClacky李亚飞:把Harness做透,Token账单就不是问题了
7

到底是谁会相信RAG已死啊?

3小时前
到底是谁会相信RAG已死啊?
8

RAG又进化了!微软整了个企业级AgenticRAG

3小时前
RAG又进化了!微软整了个企业级AgenticRAG
热门标签
大模型AgentRAG微调私有化部署Prompt EngineeringChatGPTClaudeDeepSeek智能客服知识管理内容生成代码辅助数据分析金融零售制造医疗教育AI 战略数字化转型ROI 分析OpenAIAnthropicGoogle

关注公众号

前途科技微信公众号

扫码关注,获取最新 AI 资讯

免费获取 AI 落地指南

3 步完成企业诊断,获取专属转型建议

已有 200+ 企业完成诊断

前途科技前途科技
服务关于快讯技术商业报告
前途科技微信公众号

微信公众号

扫码关注

Copyright © 2026 AccessPath.com, 前途国际科技咨询(北京)有限公司,版权所有。|京ICP备17045010号-1|京公网安备 11010502033860号|隐私政策|服务条款