上海新冠疫情预测与趋势分析项目背景简述目标收益评估指标项目节奏项目准备阶段(约1-2周)数据探索和预处理阶段(约2-3周)数据挖掘和特征工程(约1-2周)模型选择和开发阶段(约2-4周)模型评估和优化阶段(约2-4周)部署和上线阶段(约1-2周)复盘总结(约1周)项目难点&挑战从JHU CSSE获取数据并自动更新,同时融合上海卫健委数据的爬虫和数据清洗时间序列的缺失值填充处理时间序列数据中的时间特征加工难度大,提取周期因子比较困难时间序列训练集测试集分割时间序列数据中存在非线性关系、非平稳性转化单、多变量模型基于4种评估指标的模型比对和筛选未来动作
上海市于2022年3月爆发了严重的2019冠状病毒病(COVID-19)聚集性疫情,由奥密克戎变异株引发。该疫情导致了上海市范围内的大规模封锁和防控措施的实施,对社会经济和居民生活造成了巨大影响。此次疫情在全国范围内也引起了广泛关注,并对其他地区产生了外溢影响。为了更好地应对类似的疫情,需要建立预测模型来预测短期内上海市新冠确诊数和无症状感染数的趋势,以帮助决策者制定科学有效的防控策略和资源调配方案。
构建准确的预测模型:利用上海市历史疫情数据,建立可靠的预测模型,能够在一定程度上预测短期内的新冠确诊数和无症状感染数趋势。
分析疫情趋势:通过对预测结果和历史数据的比较和分析,揭示上海市新冠疫情的趋势变化,洞察疫情发展的关键因素和周期性变化。
提供决策支持:将预测结果和趋势分析提供给政府、卫生部门和公众,以帮助决策者制定更科学、有效的疫情防控策略和资源调配方案。
预警和响应能力提升:准确的新冠疫情预测可以帮助政府和卫生部门提前预警,并及时采取措施应对疫情的发展,最大限度地减少疫情对公众的影响。
资源优化:通过预测模型,可以更好地规划和分配防控资源,确保资源的合理利用和高效配置,提高抗疫工作的效率。
公众参与和安全感:向公众提供疫情预测结果和趋势分析,增加公众对疫情的了解和参与度,同时提供科学依据,增强公众对防控措施的接受度
预警和响应能力提升:
及时发现和预警疫情:通过建立预测模型,可以对上海市新冠疫情进行监测和分析,及早发现潜在的疫情爆发趋势。预警系统能够通过监测数据的变化和模型的预测结果,发出及时警报,使决策者能够更早地意识到疫情的可能发展方向。
快速采取防控措施:准确的预测结果可以为政府和卫生部门提供决策依据,使其能够更加及时和有针对性地采取防控措施。例如,当预测模型显示疫情可能迅速扩散时,可以立即加强人员的流行病学调查和疫情监测,加强社区封控和隔离措施,以控制疫情蔓延的速度和范围。
高效资源调配:准确的预测结果还可以帮助决策者合理规划和调配防控资源。根据疫情的发展趋势和预测结果,可以提前准备医疗物资、人力资源和设备设施,确保在疫情爆发时能够迅速投入适当的资源,提高防控工作的效率和效果。
提升公众安全感:预警和响应能力的提升可以增加公众对疫情防控工作的信心和安全感。通过向公众提供准确的预测信息和及时的应对措施,可以增强公众对政府和卫生部门的信任,提高公众的配合度和参与度,共同应对疫情的挑战。
资源优化:
通过准确预测车险索赔的发生概率和成本,保险公司可以更好地为客户提供精确的理赔服务。例如,如果预测模型能够预测到某位驾驶员的索赔风险较高,保险公司可以提前做好准备并更迅速地响应索赔请求,提供更及时和准确的理赔服务,增强客户的满意度和忠诚度。
缺乏准确量化驾驶员风险的情况下,保险公司可能会面临潜在的亏损风险。如果高风险驾驶员被错误地定价为低风险,他们可能购买保险产品并引发频繁的索赔。这将对保险公司的经济状况产生不利影响。例如,一个高风险驾驶员如果被错误地定价为低风险并购买了保险,保险公司可能需要支付高额索
优化风险管理:
医疗资源优化:准确的预测可以帮助医疗机构更好地规划和调配医疗资源。根据预测结果,可以提前预留足够的床位、医护人员和医疗设备,以满足潜在的疫情患者需求。同时,可以避免资源的过度投入或浪费,使医疗资源得到更加合理的利用,提高医疗服务的效率和质量。
物资供应链优化:预测模型可以帮助政府和相关机构更好地管理物资供应链。根据疫情的预测结果,可以提前预订和储备必要的医疗物资,如口罩、防护服、试剂等,以保障物资的及时供应。同时,可以根据需求的变化调整物资的分配和调拨,确保各个地区和医疗机构都能够得到合理的物资支持,避免出现短缺或浪费的情况。
人员调配优化:基于预测模型的结果,可以更加精确地进行人员调配。根据疫情的发展趋势和预测结果,可以合理安排医护人员、社区工作人员和疫情防控人员的工作任务和轮班安排,确保人力资源的合理利用和充分发挥,提高防控工作的效率。
社会资源调配优化:通过预测疫情的趋势,可以引导和优化社会资源的调配。例如,根据预测结果可以提前做出决策,调整学校的开学时间,合理安排企业的复工复产计划,以减少人员流动和交叉感染的风险。同时,还可以根据疫情的预测结果,有针对性地推动社区防控工作,加强高风险区域的管控和资源支持,以实现资源的优化配置。
公众参与和安全感:
公众参与:预测模型可以将疫情数据和趋势以易于理解的方式呈现给公众,使他们更加了解疫情的发展情况。公众可以通过了解疫情的预测结果,认识到疫情的严重性和紧迫性,从而主动参与到疫情防控措施中。他们可以采取个人防护措施,如佩戴口罩、勤洗手、保持社交距离等,以减少感染的风险。同时,公众也可以提供相关信息和反馈,协助相关部门进行疫情监测和调查工作,增强疫情防控的全民参与度和效果。
安全感提升:及时准确的疫情预测信息可以增强公众的安全感。当公众了解到政府和相关机构对疫情进行科学预测和有效应对的能力时,他们会感到更加安心和信任。公众会意识到他们生活的城市有着明确的防控计划和措施,能够及时应对潜在的风险和挑战。这种安全感可以减少公众的恐慌和焦虑情绪,稳定社会秩序,为疫情防控工作提供更好的社会环境和支持。
信息透明和沟通效果:通过预测模型,政府和相关机构可以及时向公众传达疫情预测结果和相应的防控措施。公众可以了解到疫情的发展趋势、重点区域和人群的风险等信息,从而更好地做出个人决策和行动。透明的信息传播和有效的沟通可以建立政府与公众之间的信任和合作关系,加强疫情防控工作的协同效应。
明确项目目标、收益和范围:与项目团队和利益相关者明确讨论项目的整体目标和期望收益,确定项目的范围和可行性。确保对项目的目标和利益有清晰的共识。
收集和整理相关数据集:确定需要使用的数据来源,如上海市卫生健康委员会、疾病控制中心等官方机构的数据发布平台。收集相关的上海新冠疫情数据,包括确诊数、无症状感染数、康复数等指标,以及对应的时间和地理位置信息。
确定数据清洗和预处理的需求:分析收集到的数据,识别数据中的缺失值、异常值和重复值等问题,并确定适当的数据清洗和预处理方法。例如,对于缺失值,可以选择填充或删除;对于异常值,可以选择修正或删除;对于重复值,可以选择去重操作。
分析业务需求和问题定义:与利益相关者和项目团队共同讨论和分析业务需求,明确需要解决的问题和目标。例如,预测上海新冠疫情的确诊趋势、无症状感染数的变化等。确保对项目的需求和问题有清晰的理解和定义。
确定数据来源:确定可靠的数据来源,例如上海市卫生健康委员会、JHU CSSE等官方机构的数据发布平台,确保数据的准确性和可信度。
收集数据:从确定的数据来源获取上海新冠疫情相关的数据。这些数据可能包括每日的确诊数、无症状感染数、死亡数、康复数等指标,以及对应的日期和地理位置信息。
数据质量检查:对收集到的数据进行质量检查,包括以下方面:
缺失值处理:检查数据中是否存在缺失值,如果有,需要确定处理缺失值的方法,例如填充缺失值或删除缺失值所在的行/列。
异常值处理:检查数据中是否存在异常值,如极端值或不合理的值,需要进行异常值处理,可以通过统计方法或领域知识进行判断和处理。
数据类型转换:检查数据类型是否正确,例如确保日期数据以正确的格式存储,确保数值数据以数值类型存储等。
数据清洗与整理:根据项目的需求和分析目标,进行数据清洗和整理的操作,包括以下方面:
数据去重:如果存在重复的数据记录,需要进行去重操作,确保每条数据的唯一性。
数据格式调整:调整数据的格式和结构,以便于后续的特征工程和模型训练。可能需要进行数据重塑、转置、合并等操作。
特征提取:根据需要,从原始数据中提取相关特征,例如提取日期相关的特征(年、月、季度等)、构建滞后特征等,以便于后续的建模和预测分析。
特征编码和转换:对收集到的原始数据进行编码和转换,将其转化为机器学习算法可以处理的格式。例如,将日期和时间转换为数值型特征,对分类变量进行独热编码或标签编码等。
特征构建和衍生:基于现有的数据特征,构建新的特征以提供更多的信息。这可能涉及到特征组合、特征交互或通过数学运算等方式进行特征衍生。例如,从日期中提取季节特征或工作日/非工作日特征。
特征选择和降维:通过分析特征与目标变量之间的相关性,选择对目标变量有显著影响的特征。可以使用统计方法(如方差分析)或机器学习算法(如决策树、随机森林)来进行特征选择。如果数据维度较高,还可以考虑使用降维技术(如主成分分析)来减少特征的数量。
特征重要性评估:对选择的特征进行重要性评估,以确定它们在预测模型中的贡献程度。可以使用各种方法,如基于树的算法(如随机森林)或基于模型的方法(如LASSO回归)来评估特征的重要性。
特征离散化:对连续型特征进行离散化处理,将其划分为不同的区间或使用自定义的阈值。这有助于处理非线性关系、减少异常值的影响,并且在某些情况下可以提高模型的解释性。
数据集划分:将可用数据集划分为训练集、验证集和测试集。训练集用于模型的训练和参数调优,验证集用于模型选择和超参数调优,测试集用于最终评估模型的性能。
模型选择:根据问题的特点和数据集的特征,选择适合时序预测的机器学习或统计模型。常见的模型包括线性回归、ARIMA、SARIMA、LSTM等。根据模型的假设、可解释性、计算效率等因素进行选择。
模型训练和调优:使用训练集和验证集进行模型的训练和调优。根据选定的模型,设置合适的超参数,并通过反复实验和交叉验证等方法来调整模型,以提高其性能和泛化能力。
模型评估:使用验证集评估模型的性能,比较不同模型的预测结果。常用的评估指标包括均方根误差(RMSE)、平均绝对误差(MAE)、平均绝对百分比误差(MAPE)等。根据评估结果选择表现最佳的模型。
模型解释性和计算效率:考虑模型的解释性和计算效率。某些模型可能具有较好的解释性,能够解释预测结果的原因和影响因素。同时,考虑模型的计算效率,尤其是在实时预测或大规模数据集上的应用。
尝试不同的算法和模型组合:除了单一模型,可以尝试使用集成方法(如随机森林、梯度提升树等)或模型组合的方法来进一步提高预测准确度。通过组合多个模型的预测结果,可以获得更准确和鲁棒的预测结果。
分析模型的误差和不确定性:通过比较模型的预测结果与实际观测值,分析模型的误差和不确定性。这可以包括计算预测误差的平均值、标准差或其他统计指标,以及绘制误差分布图或残差图。通过分析模型的误差,你可以确定哪些方面需要改进和优化,以提高模型的性能。
模型优化和改进:根据模型评估的结果和误差分析的发现,进行模型的优化和改进。这可能涉及调整模型的超参数,改进特征工程的方法,或尝试其他算法或模型结构。通过不断迭代和改进,你可以逐步提升模型的性能,并使其更加符合实际预测需求。
特征选择:考虑对特征进行选择,以提高模型的预测性能和解释能力。使用特征选择技术,如相关性分析、特征重要性评估或基于模型的特征选择方法,来确定哪些特征对于预测任务最为关键。通过选择最相关或最重要的特征,可以降低维度、减少噪声,并改善模型的泛化能力。
模型融合和集成学习:考虑将多个模型进行融合,以提升预测性能和稳定性。通过集成学习技术,如投票法、堆叠法或加权平均,将多个模型的预测结果进行组合,以得到更准确和鲁棒的预测。这可以减少个别模型的偏差和方差,并提高整体预测的稳定性和准确性。
部署模型到生产环境:将训练好的模型部署到实际的生产环境中,以进行实时的预测和风险评估。这可能涉及将模型集成到现有的系统或应用程序中,确保模型能够正确运行并处理实时数据。
监控模型性能和稳定性:建立监控机制,定期检查模型的性能和稳定性。监测模型在实际应用中的表现,并及时发现和解决任何性能问题。这可以包括监控模型的预测准确度、处理时间、资源利用率等指标。
模型调整和更新:根据实际应用情况和用户反馈,对模型进行调整和更新。这可能包括针对特定场景或问题领域的调优,优化模型的参数或特征,或者引入新的训练数据以改善模型的性能。
分享项目经验教训:回顾项目过程中的经验教训和挑战,与团队成员分享所学到的经验和可借鉴的最佳实践。这有助于提高团队的工作效率和质量,并为未来类似项目的开展提供指导。
展望未来工作和改进方向:讨论项目的成果和结果,并展望未来的工作和改进方向。根据项目的实际效果和反馈,提出进一步的研究和发展建议,以进一步提升模型的性能和应用效果。
数据源的获取和更新:JHU CSSE网站上的数据可能以不同的格式和结构进行发布,数据需要进行定期更新,以保持与最新的疫情情况一致。
数据清洗和整合:从不同数据源获取的数据可能存在格式差异、缺失值、异常值等问题。因此,在将数据与上海卫健委的数据进行融合之前,需要进行数据清洗和预处理,包括处理缺失值、处理异常值、统一日期格式等。
爬虫的稳定性和可靠性:由于数据源的更新频率和网站的变化,爬虫程序需要具备稳定性和可靠性,能够适应网站结构的变化,并能够在长期运行的情况下持续获取数据。
我们尝试加工并构造下列时间特征
季节性特征:提取每周的星期几作为季节性特征。例如,将日期转换为星期一、星期二等,以便模型能够捕捉到每周不同天的确诊数变化。
日期和时间特征:提取年份、月份、季度等特征。这些特征可以帮助模型捕捉到年度、月度或季度的趋势和周期性。
时间差特征:计算当前时间点与前一个时间点之间的时间差。例如,计算相邻两天之间的天数差或相邻两周之间的周数差。这些特征可以反映出新冠确诊数的增长速度或变化趋势。
滞后特征:引入过去几天或几周的确诊数作为滞后特征。例如,引入过去3天或过去7天的确诊数作为特征,以便模型能够考虑到过去一段时间内的确诊情况对未来的影响。
移动平均特征:计算过去一周或一月的确诊数的平均值作为特征。这可以平滑数据,减少噪声的影响,并帮助模型捕捉到长期趋势。
在时间序列的数据之中,进行train、val、test划分时需要注意的问题是:
不要将val中的数据出现在train中
准确的说,是选取的val数据的时间节点不能与train中数据时间节点有任何交集。否则,你会发现训练时,val的loss会与train的loss几乎一样,即失去其作用,会引入未来数据。例如,告诉你5日到10日的收盘价,让你预测第11日收盘价(验证阶段);同时,给你11日到16日的收盘价,让你记忆第17日的收盘价(训练阶段)。这11日的价格你记忆过,在验证时无法做到客观。
所以在做时序预测时,一定要注意数据的先后次序,不可以随便选一部分数据(随机抽样)去train,另一部分val等等,所以k-fold显然不适用了,可以改为下面这2种方法
嵌套交叉验证
包含一个用于估计误差的外循环,一个用于调参的内循环。
训练集被分割成一个训练子集和一个验证集,模型在训练子集上训练,然后选择在验证集上能够使误差最小化的参数。但是,现在我们增加了一个外循环,它将数据集分割成多个不同的训练集和测试集,为了计算模型误差的鲁棒估计,对每一次分割的误差求平均值。
优点:嵌套交叉验证过程可以提供一个几近无偏的真实误差估计
缺点:数据量级不定,对于结果无法排除数据量级的影响
定量移动交叉验证
一般适用于大型数据集,不断舍弃前面数据,使量级在window移动时是统一的。
mae | rmse | mape | r2 | |
---|---|---|---|---|
Naive mean | 12100.090490 | 25061.990568 | 8.675757e+11 | -0.171814 |
Yesterdays value | 4953.734513 | 13558.736582 | 8.233628e+11 | 0.657022 |
SES | 4724.025576 | 10724.455429 | 8.633496e+11 | 0.785425 |
HWES | 4724.025576 | 10724.455429 | 8.633496e+11 | 0.785425 |
AR | 8407.739339 | 19448.537633 | 8.243584e+11 | 0.294330 |
MA | 8757.279544 | 18672.747056 | 9.969011e+11 | 0.349505 |
ARMA | 13627.563814 | 27839.187800 | 1.103581e+11 | -0.445909 |
ARIMA | 5185.765565 | 13534.852385 | 8.673517e+11 | 0.658229 |
AutoARIMA (2, 2, 3) | 16162.704981 | 32259.598317 | 3.576454e+11 | -0.941537 |
SARIMAX | 5051.966837 | 13589.460089 | 7.234183e+11 | 0.655466 |
AutoSARIMAX (2, 2, 2) | 5404.924573 | 11595.420636 | 9.036212e+11 | 0.749158 |
BayesianRidge | 6181.001328 | 11662.429564 | 6.763388e+11 | 0.746250 |
LassoLars | 6736.912601 | 12594.020130 | 6.872141e+11 | 0.704092 |
ARDRegression | 5909.168128 | 11547.695052 | 7.459070e+11 | 0.751218 |
DecisionTree | 6439.944150 | 12783.166526 | 3.905066e+11 | 0.695137 |
Randomforest | 4460.337036 | 10032.253553 | 4.017273e+11 | 0.812231 |
AdaBoost | 6650.062766 | 14746.718025 | 6.760435e+11 | 0.594287 |
XGBoost | 6877.176122 | 12745.476082 | 1.326902e+12 | 0.696932 |
Lightgbm | 6959.791241 | 14497.070928 | 9.820705e+11 | 0.607908 |
SVM RBF | 12270.453819 | 25743.212523 | 5.596598e+11 | -0.236384 |
KNN | 6319.911504 | 12861.180642 | 1.298525e+11 | 0.691405 |
Tensorflow simple LSTM | 6334.214497 | 11791.231820 | 3.526280e+11 | 0.740614 |
数据质量改进:优化数据采集和清洗过程,减少新冠确诊数据的缺失和异常,提高数据质量。改进数据收集方法,加强数据验证和清洗流程,减少数据质量问题对预测模型的影响。
特征扩展和更新:引入更多相关特征、衍生特征和外部数据,提高预测模型的表达能力和准确度。整合与新冠疫情相关的外部数据,如人口流动指数、气象数据等,构建更丰富的特征集。
特征选择和筛选:通过选择与新冠确诊数目标变量具有强相关性的特征,简化模型输入,减少冗余和噪声特征的影响。使用特征选择方法,如相关系数分析或基于模型的特征选择,识别并保留与确诊数最相关的特征。
模型集成和优化:尝试不同的模型集成方法,如集成多个预测模型、堆叠模型等,以提高预测性能和稳定性。训练和集成多个预测模型,如ARIMA、长短期记忆网络(LSTM)等,通过加权平均或投票机制获得最终预测结果。
实时预测和决策:建立实时预测和决策系统,及时更新模型预测结果,支持实时风险评估和决策制定。开发实时监测系统,定期更新预测模型,提供实时新冠确诊数的风险评估和决策支持。
模型解释和可解释性提升:通过解释性技术和方法,提高模型的可解释性,增加业务用户对预测结果的理解和信任。应用解释性技术,如SHAP值、特征重要性分析等,解释模型的预测过程和关键影响因素,使预测结果更具可解释性。