APP下载

淄博市霾预报方法研究

2017-07-12包浩

现代农业科技 2017年10期
关键词:R语言人工神经网络

包浩

摘要 本文使用2015年4月至2016年9月NCEP再分析资料(1°×1°)、淄博地区气象观测资料及淄博市环境监测中心提供的污染物浓度资料,采用BP神经网络建立预报模型,并利用欧洲细网格资料及CUACE模式资料对淄博地区进行了72 h站点霾预报试验。结果表明,BP神经网络模型对淄博地区霾预报的准确率达到74%以上,漏报率仅为5.37%,空报率略偏高,其中淄博站、沂源站、高青站的预报准确率达到82%以上,对实际业务中霾的预报有一定参考意义。

关键词 霾;人工神经网络;R语言;BP算法;预报方法;山东淄博

中图分类号 P457.7 文献标识码 A 文章编号 1007-5739(2017)10-0209-03

近年来,淄博地区空气中的细颗粒物和气体污染物明显增加,空气质量变差。这不仅对市民的健康构成了危胁,而且降低了大气的能见度,对交通出行造成影响,也通过远距离传输对周边地区带来一定的影响。

目前,国内外霾的预报主要有数值预报、模式输出统计预报等方法。数值预报方法在大气动力学模式的基础上耦合了化学模块,直接模拟大气污染与大气气象要素场的变化过程,具有良好的发展前景;但受到源排放清单不确定等因素影响,在日常预报业务中受到一定限制。模式输出统计预报方法首先依据污染物浓度数据集筛选出关联性强的气象因子,然后利用统计方法建立预报方程,最后利用模式输出量代入预报方程进行预报。陈亦君等应用基于系统辨识理论的实时迭代模式对WRF模式预报结果进行后处理,建立了上海地区霾天气的模式输出统计方法,结果表明霾日预报成功率为72.7%~73.7%[1]。毛宇清等使用SVM分类和回归方法分别建立了南京地区霾日分类预报模型和有霾日能见度预报模型,预报试验结果表明南京地区霾日的SVM分类预报结果TS评分均在0.4以上,有霾日14:00能见度的SVM回归预报结果准确率均达到86%以上[2]。以上研究主要是基于霾与气象条件之间的相关性,但是由于霾的严重程度受气溶胶浓度的影响很大,所以同时考虑气象条件、气溶胶浓度将很大程度上提高霾预报准确率。本研究尝试通过建立动态的预报模型,利用气象和大气化学模式输出的结果来实现霾等级预报。

1 人工神经网络和R语言

1.1 人工神经网络

神经网络是由简单处理单元构成的大规模并行分布式处理器,天然地具有存储经验知识和使之可用的特性。神经网络在2个方面与大脑相似:一是神经网络是通过学习过程从外界环境中获取知识;二是互联神经元的连接强度,即突触权值,用于存储获取的知识[3]。

根据网络结构的不同,可将神经网络分为3种,即前馈网络、竞争网络以及递归联想存储网络,本文采用基于误差反向传播算法的多层前馈神经网络,简称BP神经网络。BP网络是1986年由Rumelhart和McCelland为首的科学家小组提出的,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一。BP网络具有非线性映射、自适应、自学习和自组织能力,通过分布储存和并行处理的方式,使其具有很强的容错性和很快的处理速度。BP算法本质是优化计算中的梯度下降法,利用误差对于权、阈值的一阶导数信息,应用误差反传原理不断调整网络的权值、阈值,使网络输出值与期望值之间的误差平方和达到最小或小于设定精度。BP网络模型由输入层、隐藏层和输出层构成,如图1所示。

1.2 R语言与神经网络

与起源于贝尔实验室的S语言类似,R是一种为统计计算和绘图而生的语言和环境,它是一套开源的数据分析解决方案,由一个庞大且活跃的全球性研究型社区维护。R语言提供了各式各样的数据分析技术,拥有顶尖水准的制图功能,可进行交互式数据分析和探索,易于扩展,并为快速编程实现新的统计方法提供了一套十分自然的语言[4]。

R有大量的扩展包可以使用,目前有1万多个包可下载使用,这些包提供了横跨各种领域、数量惊人的新功能,包括分析地理数据、处理蛋白质质谱、心理测试分析、金融分析、数据挖掘、人工智能、数据可视化等功能,神经网络相关的包就有19个,常用的有nnet、AMORE、RSNNS等,其中AMORE包提供了豐富的控制参数,本研究采用了AMORE包进行霾预报方法研究。

2 神经网络预报模型的建立

分析资料采用淄博市8个地面气象观测站点的常规观测资料、NCEP再分析资料(1°×1°)及淄博市环境监测站提供的污染物浓度资料组建模型训练样本。构建样本时间段为2015年4月至2016年9月。

2.1 预报因子的选取

本研究针对预报因子的选取主要考虑影响霾天气形成的气象因子和主要污染物,包括地面气压、温度、露点温度、相对湿度、水平风速及其上空对流层中低层(500~850 hPa)的水平风垂直切变、对流层中低层的层结不稳定及近地面层的逆温,以及主要污染物PM2.5浓度等9个预报因子作为训练样本,此处通过计算850 hPa与1 000 hPa假相当位温垂直差代表对流层中低层的层结不稳定、925 hPa与1 000 hPa温度垂直差代表近地面层的逆温。

2.2 建模训练样本的处理

2015年4月1日至2016年9月30日,样本数据为1次/d,每个站的总样本数为549个。为提高霾天气预报准确率,在保证有霾和无霾样本的代表性情况下,本研究保留了有霾的样本,在无霾样本中随机剔除部分样本,提高了霾日样本所占比例,最终样本数见表1。

2.2.1 样本资料的归一化处理。为消除预报因子之间的量纲影响,提高训练样本的速度,首先要对网络输入数据进行归一化处理,使其值在0~1之间。为保证建立的模型具有一定的外推能力,最好使数据预处理后的值在0.2~0.9之间。本研究中因子的归一化处理方法如下: f(x)=(x-xmin)×0.7/(xmax-xmin)+0.2,式中xmax代表该组数据中的最大值,xmin代表最小值。对网络输出结果进行反算即可得到实际值。

2.2.2 样本资料的分层抽样。利用分层抽样技术对总体样本进行抽样,从无霾样本和不同等级的霾样本中抽样,将总体样本划分为训练样本和测试样本2个部分,训练样本占总样本的80%,测试样本占20%。分层抽样采用R语言的samping包中的strata函数来实现,抽样方法选用无放回的简单随机抽样法(srswor)。

2.3 神经网络模型的建立

神经网络模型由1个输入层、1个输出层和若干个隐藏层构成,输入层由9个节点组成,输出层由1个节点组成。输入层节点数和输出层节点数确定后,对隐藏层节点数和隐藏层数进行优化。如果隐藏层节点数过少,网络不具备必要的学习能力和信息处理能力;反之,如果过多,则会大大增加网络结构的复杂性,使网络在学习过程中更容易陷入局部极小点,而且会使网络的学习速度变得很慢。一般在确定隐藏层节点数时采用经验公式或逐步试验法。至于网络中的神经元层数,大多数实际的神经网络仅有2~3层神经元,很少有4层或以上[5]。因此,经过反复试验,最后确定采用含有2个隐藏层的神经网络拓扑结构。将样本资料输入网络进行循环运算,运算过程采用精度和循环次数双层控制,达到所需精度或一定循环次数后,利用得到确定的网络权、阈值即构建所需的神经网络预报模型(图2)。

构建神经网络预报模型时误差准则选用最小均方(LMS)算法,隐藏层的激活函数选用sigmoid函数,输出层的激活函数选用purelin函数,训练方法采用动量自适应梯度下降法(ADAPTgdwm)。

2.4 神经网络模型的测试

利用总样本中20%的数据作为测试样本集进行测试,神经网络模型输出的霾日预报准确率达到80%以上。神经网络训练和测试部分代码如下:

#进行训练

net <- newff(n.neurons = c(9,3,3,1),learning.rate.global = 1e-2,momentum.global = 0.5,error.criterium = "LMS",Stao = NA,hidden.layer = "tansig",output.layer = "purelin",method = "ADAPTgdwm");

result <- train(net,train_set[1:9],train_set[10],error.criterium = "LMS",report = TRUE,show.step = 1000,n.shows=5);

#进行测试

y <- sim(result$net,test_set[1:9]);

y[which(y<0)] <- 0;

y[which(y>4)] <- 4;

y <- round(y);

precision <- sum(test_set$phenomenon==y)/length(y);

cat(′测试准确率为′,precision,′\n′);

3 预报结果的检验分析

本研究所用的神经网络模型由R语言进行建模并完成测试,基于神经网络算法搭建了淄博地区站点霾等级预报系统。系统中的气象因子使用欧洲细网格数值预报产品,环境因子使用CUACE雾霾数值模式产品,利用每天20:00的预报产品,预报未来72 h的霾等级,时间分辨率为3 h。利用该系统对2016年10月26日至11月27日期间淄博地区的霾进行了72 h预报试验,并把得到的预报结果与地面观测实况作对比分析(表2)。

对预报检验结果分析如下:

(1)从单站预报情况看,5个站点的预报准确率达到了75%以上,预报模型输出的预报结果可用性较高,而站点54824、54825的空报率和漏报率较高,这可能与EC模式、CUACE模式的预报误差有关。以淄博站(54830)为例,在2016年10月26日至11月27日期间输入3 h间隔预报产品,预报次数为768次,预报结果为无霾正确632次、无霾空报80次、有霾漏报45次、有霾正确11次,漏报率为5.86%,空报率为10.42%,准确达到83.72%。

(2)从总体情况来看,淄博8个站点的平均预报准确率为74.02%,平均漏报率為5.37%,平均空报率为20.61%,霾的漏报率较低,空报率略高。

(3)从霾日分级预报情况看(表3),除54824站预报偏轻外,霾等级预报整体偏重。

4 结论与讨论

(1)本研究采用BP算法的人工神经网络,利用NCEP再分析资料和实况观测资料建立了淄博地区8个站点的霾等级预报模型,经过测试样本测试,霾日预报准确率达到80%以上。

(2)本研究基于人工神经网络模型,利用欧洲细网格数值模式输出的气象预报产品及CUACE模式输出的污染物浓度预报产品搭建了淄博地区站点霾等级预报系统,并经过1个月的预报检验,平均预报准确率可达74%以上,对实际业务中霾的预报有一定参考意义。

(3)本研究训练样本数据由于受到PM2.5数据限制,样本偏小,有待进一步补充,以提高神经网络模型的稳定性和准确性。

(4)由于本研究中构建的霾等级预报系统是在利用数值预报产品解释应用的基础上进行的,准确率受到数值预报本身准确性的影响,所以检验系统预报准确率的同时对数值预报产品的检验和订正很有必要。

5 参考文献

[1] 陈亦君,尤佳红,束炯,等.基于WRF-RTIM的上海地区霾预报MOS方法研究[J].环境科学学报,2014,34(3):574-581.

[2] 毛宇清,孙燕,姜爱军,等.南京地区霾预报方法试验研究[J].气候与环境研究,2011,16(3):273-279.

[3] HAYKIN S.神经网络与机器学习[M].申富饶,译.北京:机械工业出版社,2011:1.

[4] KABACOFF R I.R语言实战[M].高涛,译.北京:人民邮电出版社,2013:4-5.

[5] HAGAN M T.神经网络设计[M].戴葵,译.北京:机械工业出版社,2002:15.

猜你喜欢

R语言人工神经网络
基于人工神经网络的故障诊断专利浅析
人工神经网络发展历史与训练算法概述
基于人工神经网络的优化配置研究
ANN、ANFIS和AR模型在日径流时间序列预测中的应用比较
基于GPS轨迹数据进行分析改善城市交通拥挤
基于R语言的Moodle平台数据挖掘技术的研究
基于R语言的湖南产业结构对其经济增长贡献分析
人工神经网络在旅游人数预测中的应用研究
注重统计思维培养与应用为主导的生物统计学课程建设
人民币汇率的均值回复检验及Hurst指数计算