1. 项目概述:当深度学习遇上疫情预测
去年用LSTM预测股票被市场打脸后,我转向了更具社会价值的疫情预测领域。这个项目使用PyTorch搭建了包含注意力机制的时序预测模型,通过公开的疫情数据预测未来30天确诊趋势。不同于学术论文里的理想化demo,这次我要分享的是真实场景下从数据清洗到模型部署的全流程实战经验,包含那些教科书不会告诉你的"脏活累活"。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 核心需求与技术选型
2.1 为什么选择回归任务
疫情预测本质是时序回归问题:输入历史14天的确诊数、死亡数、疫苗接种率等20维特征,输出未来N天的预测值。相比分类问题,回归任务需要更精细的损失函数设计和数据标准化处理。
关键认知:确诊数的指数增长特性决定了必须对数据取对数处理,否则模型会完全被近期暴涨的数据主导
2.2 模型架构的进化路线
最初尝试了三种主流架构:
- 基础LSTM:参数量小但容易欠拟合
- Seq2Seq:预测步长固定不够灵活
- Transformer+CNN混合架构(最终方案):
- 用CNN提取局部波动特征
- Transformer捕捉长期依赖
- 注意力机制动态加权关键时间点
python复制class HybridModel(nn.Module):
def __init__(self):
self.conv = nn.Conv1d(in_channels=20, out_channels=64, kernel_size=3)
self.transformer = nn.Transformer(d_model=64, nhead=8)
self.regressor = nn.Linear(64, 1)
3. 数据工程的魔鬼细节
3.1 疫情数据特有的预处理技巧
从WHO获取的原始数据存在三个致命问题:
- 周末报告延迟导致的周期性缺失值
- 不同国家/地区的统计口径差异
- 异常突变数据(如某日突然新增10万例)
我的解决方案:
- 缺失值处理:采用三重滑动窗口(3天/7天/14天)的中位数填充
- 数据对齐:以当地时间零点为统计截止点
- 异常过滤:使用改进的Z-Score算法(MAD代替标准差)
p复制
