短期降水量预测
一、小组成员及分工
- 1 李盛楠:2120161009 算法设计、数据分析、文档编写
- 2 洪辉婷:2120160997 算法设计、数据处理、文档编写与PPT制作
- 3 江明明:2120161000 算法设计、程序实现
二、问题描述
本项目提供不同时间段的雷达地图——主要包含目标站点和周边覆盖地区的雷达反射率信息——用以预测每个目标站点未来1小时至2小时之间的地面总降水量。该项目主要涉及以下信息分析任务:
-
- 当前降水量与雷达地图之间的关系。针对雷达地图的分析可以获得当前降水量的相关线索;
-
- 利用雷达地图中的当前目标站点及其周边地区的雷达反射率信息,可以分析目标地点与周边地区之间的降水关系;
-
- 根据历史上不同时间段的雷达地图数据,挖掘发现降雨量演变的模式。
三、数据集描述
本数据集由深圳气象局提供。数据集包含真实的雷达地图信息以及不同地点的降水量信息。数据集包含训练集及测试集:
1) 训练集:包含10000个数据实例(深圳前两年的气象数据,含有降雨量结果标签) 2) 测试集:包含2000个数据实例(深圳第三年的气象数据,不含有降雨量结果标签,只能通过天池平台测试RMSE)
数据集格式为“id,label,radar_map”,详细介绍如下:
- id:位于雷达地图中心的目标地点;
- label:雷达地图中目标地点在未来1小时~2小时之间的降水量标注(注意,若当前时间为12:00,则未来1小时~2小时之间为13:00~14:00之间,即,不考虑12:00~13:00之间的降水量);
- radar_map:15个时间段(间隔6分钟)在4个不同高度(0.5~3.5km,间隔1km)测量的雷达地图(如图1),每个雷达地图占地面积,目标位置位于中心,即(50,50)(如图2)。即radar_map共有154101*101个值,按照“THYX(时间、高度、Y轴、X轴)”排列,以空格分开,顺序为:T0H0Y0X0 T0H0Y0X1 … T0H0Y0X100 T0H0Y1X0 … T0H1Y0X0 … T1H0Y0X0 … T14H3Y100X100。
四、评价指标
我们使用均方根误差(Root Mean Square Error,RMSE)来评估性能:
五、模型描述
我们进行了多个模型及其组合的实验,主要的有4个模型:1)LSTM模型 2)CNN模型 3)MLP模型 4)PCA降维+MLP模型,以下进行详细的模型描述。
5.1 LSTM模型
为了降低模型复杂度,避免过拟合,我们在训练LSTM(Long Short-trem Memory)模型之前,先进行一个微小的数据处理:将每个目标地点的15个时间段对应的4个不同高度的map图累加求平均,使得每个目标地点的每个时间段只对应一个map图。
将预处理后的数据送入LSTM模型进行训练,其模型结构如下图:
5.2 CNN模型
- 数据预处理
进行了简单的数据预处理的LSTM模型仍然存在模型过于复杂,容易过拟合的问题。因此我们进一步对数据进行预处理,该处理过程是本模型以及后面所有模型的基础。
对于每个地点的15个时间段的4个不同高度测量map图,我们仍然将4个不同高度测量图进行求和平均,而对于15个时间段的map我们利用时间衰减因子gamma求加权和。具体预处理方案过程如下:
- CNN模型
尝试使用卷积神经网络进行预处理后的样本数据的特征提取,从而对降雨量进行预测。CNN模型各参数设置如下:
5.3 MLP模型
在进行与5.2节中相同的数据预处理后,训练多层感知机MLP模型。将预处理后大小为n101101的样本集(n为样本个数)向量化为n*10201,然后作为多层感知机的输入X。本模型的多层感知机只有一层20个神经元的隐藏层h,隐藏层的激活函数为sigmoid函数,最后输出层为一个神经元,为最终的降雨量预测结果,为保证数据结果为正数,输出层激活函数为softplus。隐藏层与输出层都有一个偏置b,在图中未画出。模型的各部分设置如下:
5.4 PCA+MLP模型
尽管已经将原样本的154101101压缩到101101规格,但101*101的维度对于只有10000条训练样本的神经网络模型来说仍然过高,因此我们试图利用主成分分析(PCA)对训练数据进行再次降维,我们保留95%的数据主成分,降维到65维的低维空间中(即保留特征值之和大于总特征值之和的百分之95的部分),再送到多层感知机中,并据此改变隐含层大小(h=10):
六、实验结果与分析
- 我们首先给出各模型在运行期间不同迭代次数后再训练集上的RMSE值。
- LSTM:该模型使用了训练集中的8000条数据来训练模型,并将剩余的2000条数据作为验证集。该模型在训练集上及验证集的RMSE值如下图:
可以看出在训练集上,RMSE值随着迭代次数的增加而减小并趋于收敛,这就表明随着迭代次数的增加,该模型再训练集上的预测性能确实有很大程度的提升。而在测试集上面的效果显然不是很优异,RMSE值随着迭代次数的增加并没有显著的持续减小。这就表明该模型存在过拟合的问题,虽然在训练集上表现很好,但是在测试集上的性能仍有待提高。
- CNN:该模型使用训练集中的所有10000条样本来训练 该模型在训练集上迅速收敛到最小值5.342。
- MLP:该模型使用训练集中的所有10000条样本来训练 在训练集上其RMSE值趋于收敛。RMSE值在迭代20000次后,值为215.589
- PCA+MLP:该模型使用训练集中的所有10000条样本来训练 在训练集上收敛较快,在收敛之后其RMSE值较为平滑,可见该模型较为稳定。RMSE值最后稳定在250左右。
- 我们将四个模型的预测结果提交到天池大赛平台,并得到在测试集上的RMSE值:
我们在模型上进行着不断的参数调整,但大体上参数的设置并不影响模型之间的优劣比较。虽然CNN模型在训练集上的RMSE最低,但与其他模型相比,CNN在测试集上有着较高的RMSE值。相反地,PCA+MLP模型在训练集上有着较高的RMSE值,但在测试集上却得到了最好的效果。可见我们的模型存在着较为严重的过拟合问题。
当前该比赛排名第一的队伍拥有着RMSE=10.70334的成绩,但对于降雨量预测来说,这个结果仍然不容乐观。在许多参赛队伍的质疑下,天池官方给出了一个关于为什么测试集与训练集差异如此之大的原因:训练集为前两年的降雨量数据,而测试集为第三年的降雨量数据,由于天气及环境多变的特性,严密的时间断层可能会使得训练集与测试集的数据差异较大。因此在这个比赛中,如何巧妙的避免数据过拟合似乎成为了重心。这个比赛共有1115个队伍,在经过我们尝试了各种模型以及参数的调整之后,最终以当前RMSE=14.5378,排名114的成绩收官。