社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

Journal of Hydrology|利用机器学习算法优化融合多源产品以提高长序列降水精度

气象学家 • 3 年前 • 853 次点击  

请点击上方蓝色文字关注我们

文章信息

第一作者:赵胤懋 博士生

通讯作者:徐奎 副教授

通讯单位:天津大学

https://doi.org/10.1016/j.jhydrol.2022.127707


亮点

 引入地形因子和降水季节特征构建基于机器学习的多源降水融合模型MMPMLM。

• MMPMLM具有良好的鲁棒性,未将多源降水产品的偏差传递给最终结果。

• 基于MMPMLM可得长序列高精度降水并进行水文情景预报。

研究进展

降水是模型研究流域或区域水文循环系统的重要动态输入,是研究水资源最重要的基础数据之一。但降水的时空变化差异较大,且受部分地理环境的限制,难以全面推进全球降水监测,尤其是在高时空尺度的青藏高原地区。另外,我们发现目前的降水精度研究主要致力于方法的改进,这使得融合模型更加复杂。然而,基础数据的精度保持不变,即使采用更高维、更复杂的方法,结果精度的增加也是微乎其微。此外,大多数的研究仍然集中在雨量站密集且气候条件单一的平原地区,且大多数致力于精度提高的研究所输出的多源融合降水产品的时间序列均较短,其准确性和实用性尚未从一个完整的水文应用角度进行评估。

图1 研究区地理位置

本研究选择的研究区为青藏高原区域内缺资料的雅砻江流域,如图1所示。我们的主要目的如下:(1)在探索可解释环境因子与流域降水关系的基础上,采用主成分分析(PCA)法筛选并提取地形因子主成分,结合研究区降水规律探讨季节特征变量;(2)引入上述降水季节特征和地形因子,采用机器学习算法构建基于Stacking结构的多源、多时空尺度降水融合模型(MMPMLM);(3)从降水精度时空评估和水文循环效应适用性两方面探讨多源融合降水(MSMP)在青藏高原等资料不足地区的适用性。

图2 MMPMLM流程图
MMPMLM在采用机器学习模型作为特征构建最终模型的基础上,引入地形因子和降水的季节特征,其流程如图2所示,具体步骤如下:(1)多源降水数据的筛选和提取。本研究降水来源为基于实测站点的降水产品、再分析降水产品、卫星降水产品以及区域气候模式降水产品,具体分别采用Asian Precipitation-Highly Re-solved Observation Data Integration Towards Evaluation of Water Resources(APH)、European Centre for Medium-Range Weather Forecasts Re-Analysis(ERA)、Climate Hazards Center InfraRed Precipitation with Station data(CHI)和The High Asia Refined analysis(HAR);(2)多源降水产品和实测站点数据的预处理。主要对降水数据进行标准化,使其在0到1的范围内,以避免数据集过度波动导致模型不稳定。(3)地形因子的提取和预处理。本研究选择了22个地形因子,如表1所示,并使用PCA消除冗余信息。(4)降水季节特征属性的提取和预处理。为获得降水的季节特征属性,计算了19个实测站点在四个季节的平均日降水量,再根据步骤2对四个季节的降水量进行标准化。(5)无标签网格样本的特征处理。将四类降水产品的分辨率对齐为0.25°(研究区共划分为250个网格),并根据步骤2和3对每个网格相应数据执行相同的后处理。然后根据实测站点空间分布,采用泰森多边形法(图3)将雅砻江流域划分为若干子区域,在获得每个子区域的逐日面降水量后执行步骤4。(6)以模型作为特征进行Stacking建模。

表1 本研究所选地形因子

图3 泰森多边形及流域网格划分示意图

构建好MMPMLM后,对输出的多源降水融合产品(MSMP)和多源降水产品进行统计评估以验证MMPMLM的稳健性和泛化能力,结果如表2所示。四类产品的皮尔逊相关系数R在0.36-0.78之间,其中APH与实测降水的相关性最高,HAR与实测降水的相关性最低。从RMSE可以看出,四类降水产品与实测数据之间没有较大误差,整体与实测降水之间的离散度也较小。从MSMP的指标来看,MMPMLM在4类降水产品中表现出了较高的性能,总体精度有了很大提高,尤其是R从均值0.52提高到了0.84,RMSE从均值5.5 mm/d压缩到了1.99 mm/d。

表2 多源降水产品及MSMP的精度评估表

此外,MSMP和实测站点降水以及各类降水产品的多年逐日空间分布如图4和图5所示。从图4可以看出,雅砻江流域实测最高降雨量为3.21 mm,出现在流域下游;最小值为1.19 mm,出现在上游。总体空间分布不均,由东南向西北内陆逐渐减少。融合后降水仍呈现由东南向西北递减的内陆趋势,但最大值略高于实测站点相应数据,为3.39 mm;最小值仍处于上游高海拔地区,为1.21 mm。

图4 实测站点降水和MSMP的多年日均空间分布图

四类降水产品的空间分布总体上与实测相似,均由东南向西北内陆递减,但局部差异较大。其中,APH的空间分布特征明显,连续性较好;但从数值上看,APH最大值为2.68 mm,最小值为1.11 mm,均小于实际测量值,差异较大。CHI的降水量在流域下游达到最大,为3.63 mm,并向上游逐渐均匀减少至1.01 mm,与实测降水量更为接近,且总体空间分布连续,无明显的坦化现象。ERA5的分辨率虽相对较高,但整体出现明显高估。最后,HAR在空间上未能捕捉到中游降水的连通域,且存在明显的区域降水计算误差,主要集中在下游东北部的几个网格。

图5 四类降水产品多年日均空间分布
从统计指标和空间分布来看,MMPMLM在预测雅砻江流域降水方面表现出较好的稳健性,且MMPMLM输出的MSM能够准确捕捉到该区域降水特征的分布,反映出空间纹理特征。
在验证MMPMLM具有良好的效果和鲁棒性后,我们对MSMP的水文效应准确性进行了评估,以期为缺资料的高山地区能够更好地进行水文预报提供方法和参考。基于MSMP采用Variable Infiltration Capacity水文模型对二滩水文站1981-2017年的逐日径流量进行率定和验证,其中率定期为1981-2001年,验证期为2002-2017年。最终模拟得到雅砻江流域日径流的变化趋势,如图6和表3所示。结合逐日径流评价结果和径流拟合图,可以得出MSMP在研究区具有良好的适用性,可用于水文预报研究。

表3 二滩水文站逐日径流率定和验证结果

图6 二滩水文站逐日径流拟合图

总的来说,我们研究所提出的MMPMLM具有较强的鲁棒性和适用性,可以优化整合不同分辨率、不同时间尺度的多精度多源降水产品以获得高精度的降水,同时MMPMLM输出的MSMP能够满足流域的长期水文预报,这表明相应的融合降水产品可以直接用于缺资料甚至无资料地区的水文情势勘探。

作者介绍

徐奎,博士,副教授,硕士生导师,天津大 学水利工程仿真与安全国家重点实验室。研究方向洪涝风险评估与调控、海绵城市与水系统韧性、多能互补等。主持国家级项目3项,省部级项目1项,以第一作者/通讯作者发表论文20余篇。

通讯邮箱kui.xu@tju.edu.cn

赵胤懋,博士生,天津大学建筑工程学院。研究方向为气候变化与人类活动影响下的水文物理规律与陆气双向耦合等,发表6篇SCI,其中JCR一区3篇,JCR二区1篇,JCR三区2篇。

通讯邮箱:scirencc@tju.edu.cn








声明:欢迎转载、转发本号原创内容,可留言区留言或者后台联系小编(微信:gavin7675)进行授权。气象学家公众号转载信息旨在传播交流,其内容由作者负责,不代表本号观点。文中部分图片来源于网络,如涉及作品内容、版权和其他问题,请后台联系小编处理。

   欢迎加入气象学家交流群   

请备注:姓名/昵称-单位/学校-研究方向



往期推荐

 ERA5-Land陆面高分辨率再分析数据(32TB)

★  NASA最新版本CMIP6降尺度数据集30TB

★ ERA5常用变量再分析数据(26TB)

 EC数据商店推出Python在线处理工具箱

★ EC打造实用气象Python工具Metview

 TRMM 3B42降水数据(Daily/3h)

 科研数据免费共享: GPM卫星降水数据

 气象圈子有人就有江湖,不要德不配位!

 请某气象公众号不要 “以小人之心,度君子之腹”!

★ 机器学习简介及在短临天气预警中的应用

★ AMS推荐|气象学家-海洋学家的Python教程

★ Nature-地球系统科学领域的深度学习及理解

★ 采用神经网络与深度学习来预报降水、温度


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/152456