【时间序列比赛】温度预测挑战赛初赛复盘

简单复盘一下这个比赛。

1.赛题概要

1.1 赛事背景

随着计算机技术的发展,我国逐渐实现了从传统农业到现代农业的转变,正逐步迈向智慧农业。温室是现代农业技术应用的典型场景,其内部环境具有可操作性,能人为形成适宜植物生长的小型封闭生态系统,提升农产品的产量和质量,因此被广泛应用于农业生产中。在温室的各项环境因子中,作物对温度最为敏感。温度的高低影响植株细胞的酶活性,从而影响作物的生长速度、产量和质量,因此温度对作物生长发育影响极大。为了保证农产品的产量和质量,应保证作物正常生长,需对温室温度进行精确的调控。

1.2 赛事任务

温室温度调控需要对温室温度进行精准的预测,本次大赛提供了中国农业大学涿州实验站的温室温度数据作为样本,参赛选手需基于提供的样本构建模型,预测温室温度变化情况。

1.3 评审规则

本次比赛为参赛选手提供了温室内外的部分传感器数据,包括温室内的温度、湿度、气压以及温室外的温度、湿度、气压。

本次比赛分为初赛和复赛两个阶段,初赛阶段提供约 30 天的传感器数据,其中前 20 天的数据作为训练数据,后 10 天的数据用于做温度预测;复赛阶段提供约 15 天的传感器数据,其中前 10 天的数据作为训练数据,后 5 天的数据用于做温度预测。

特别说明,温室内的湿度和气压以及温室外的温度、湿度和气压会对温室内的温度产生一定的影响。

采用 MSE 作为评估标准。

数据:

【时间序列比赛】温度预测挑战赛初赛复盘

2.赛题分析

主要是把时间序列问题通过构造历史特征转为回归问题,由于数据量不多,所以没有尝试使用深度学习模型。

3.比赛记录

3.1 记录

  1. 拿到鱼佬 baseline 并涂涂改改,分数为 0.11701;

  2. 特征工程:室内外湿度差,分数为 0.11346;

  3. 模型策略:将室内外温度取 log 作差作为 label,分数为 0.10254;

    「分析」:室内外温度变化方向类似,包括所有的突变异常,所以想到可以直接去预测室内外温度的差,然后利用室外温度来得到室内温度,取 log 是因为温度差的分布为偏态分布,而取完 log 后则为正态分布。

  4. 特征工程:对室内外气压差取 log,分数为 0.10224;

  5. 模型策略:修改 xgboost 的损失函数 mae -> rmse,分数为 0.1007;

    「分析」:原先损失函数设置为 mae,主要目的是减少异常值的干扰,而现在的目标为温度差,几乎不存在异常,且线上评价指标为 mse,所以我们将损失函数改为 rmse,保持与线上评估标准保持一致。

  6. 特征工程:修改划窗统计特征的 Bug,分数为 0.10022;

  7. 模型策略:修改 xgboost 的 tree_method 为 gpu_hist,分数为 0.09907;

  8. 数据清洗:修正气压异常值并使用插值填补缺失值,分数为 0.09823;

    「分析」:尝试的异常值的处理的效果,插值<向后填充<指数平滑;

  9. 特征工程:构造更长周期的开窗统计特征,分数为 0.0956;

  10. 数据清洗:气压缺失值采用向后填充,分数为 0.09366;

  11. 特征工程:(无记录),分数为 0.0935;

  12. 模型策略:将迭代次数降低到 20k,降低过拟和,分数为 0.09285;

    「分析」:线下测试时,使用线下构造的验证集作为早停的标准,但根据线上结果反馈得知过拟合。

  13. 数据清洗:修改异常值处理的 Bug,分数为 0.09088;

  14. 发现了严重的 bug,决定修复,分数为 0.09471;

  15. 数据清洗:取消室内气压异常的处理,并将迭代次数控制为 26 k,分数为 0.09378;

  16. 数据清洗:室外气压异常修改为指数平均,分数为 0.09213;

  17. 特征工程:添加湿度和温度的分类特征,迭代次数 40k,分数为 0.0916;

  18. 模型策略:学习 label 误差并调参,分数为 0.08379;

    「分析」:由于原本模型学习的室内外温度取 log 后的差,所以可以在模型还原后,可以继续学习残差。

  19. 特征工程:对 hour 和 day 构造分桶后,并在桶内构造统计特征,分数为 0.08357;

  20. 特征工程:修改统计值的 min 和 max 为 0.05 和 0.95 分位数,分数为 0.08207;

    「分析」:由于没有对温度进行异常值修复,直接用 max 和 min 对异常值敏感,会把异常值计算进去,所以采用了 0.05 和 0.95 分位数,增强模型泛化能力。

  21. 特征工程:去掉 range 特征,分数为 0.08205;

  22. 数据清洗:填补训练集部分缺失值,分数为 0.08125;

  23. 特征工程:为 test 拼接一部分 train 数据,填补完整统计特征,分数为 0.08062;

    「分析」:之前的开窗统计特征的是训练集和测试集分开构造的,将其拼接后再进行特征构造,相当于对 test 进行缺失值填补;

  24. 特征工程:对 test 拼接数据进行采样并统计中位数,分数为 0.08022;

  25. 数据清洗;对 test 的断层进行填充,分数为 0.0772;

    「分析」:手术刀操作,对 test 中 50 多处断层数据进行缺失值填补,需要非常大的耐心,但收益也非常大。

3.2 汇总

  • 数据清洗 0.01115;

  • 特征工程 0.01042;

  • 模型策略 0.02207;

4.比赛结果

初赛 A 榜第一,B 榜第五;

【时间序列比赛】温度预测挑战赛初赛复盘【时间序列比赛】温度预测挑战赛初赛复盘
  • 更多精彩内容(请点击图片进行阅读)

    【时间序列比赛】温度预测挑战赛初赛复盘

    【时间序列比赛】温度预测挑战赛初赛复盘

    【时间序列比赛】温度预测挑战赛初赛复盘

    公众号:AI蜗牛车

    保持谦逊、保持自律、保持进步

    【时间序列比赛】温度预测挑战赛初赛复盘

    个人微信

    备注:昵称+学校/公司+方向

    如果没有备注不拉群!

    拉你进AI蜗牛车交流群

    【时间序列比赛】温度预测挑战赛初赛复盘【时间序列比赛】温度预测挑战赛初赛复盘