张志强,杨和平,杨 笛,姜筱玮,陈 楠
国家气象信息中心,北京 100081
经过多年发展,我国气象信息化能力不断提高,建成了“天地一体化”的通信网络系统。目前,国家气象信息中心收集的气象及相关资料日均数据量约2.9 TB,年均数据量约1.0 PB,数据资源总量持续增长,截止2017年,累积数据总量超过4.3 PB[1]。除了气象行业内部的气候变化、天气预报、气象灾害等方向的气象数据融合与分析,气象与各行业结合的数据融合分析也成为新时代下气象大数据平台建设的重要方向之一,结合电力、农业、交通、保险、旅游等行业数据为其发展决策提供指导性依据[2]。数据融合分析即数据挖掘分析,即通过数据的获取、加工、关键因子筛选,最终确定最相关的关键因子,并利用统计分析及机器学习发现因子之间的关联关系,实现对行业内及行业间的趋势进行预测预报,更好地发挥气象因子广泛的潜在价值[3-4]。此外程序化业务运行后,如需对该流程中模型进行因子数据补充或模型优化等调整,则需进行重新编程开发、封装等非气象领域的专业工作,对及时、有效地开展相关工作造成了一定难度。
传统数据融合分析,一般是在统计学的基础上利用统计软件进行数据挖掘分析,如利用SPSS、SAS等软件,采用逐步回归等方法建立MOS回归方程[5],借助贝叶斯、费歇尔判别等多级和逐级判别建立大降水预报方程[6],基于典型相关(CCA)分析和奇异值分解(SVD)等方法做汛期降水趋势预报等[7],以上数据分析工作要求分析者熟练掌握统计分析软件的使用。随着机器学习算法的兴起,支持向量机、神经网络等模式识别方法逐渐应用于天气预报、气候预测、气象灾害预测等气象领域,同时也应用到其他行业,实现了气象与多行业的融合,如农业病虫害预警[8]、电力气象预警[9]、交通路线规划[10]以及天气指数保险[11-12]等。此类流程的构建需要分析者熟悉主流编程软件工具的使用方法,如Matlab、Python、Java等,以及算法包的接口调用如libSVM、javaml等。此类技术虽然已经成熟,但涉及到的流程及相关软件的应用相对繁杂,分析者除了熟悉本专业知识外,还需熟悉统计算法等数据知识。某个行业的工作者很难根据自己的工作经验,通过行业数据融合,构建相对成熟的预测预报模型或产品等。因此急需一套集成气象数据、模型及综合实现的平台,供各行业工作者仅依靠自身行业经验即可进行数据的融合分析,实现模型产品的发布,为大数据背景下的众创提供有效的数据融合分析工具。
该系统基于国家气象信息中心气象数据环境,集成了气象数据CIMISS数据环境[13]的统一服务接口(Meteorological Unified Service Interface Community,MUSIC)[14]、WEKA数据挖掘模型[15-16]、ECharts可视化[17]接口等功能模块,并利用Java动态算法包加载运行技术,实现了从数据采集、算法实现以及最终应用的集成化操作流程,构建了在线交互式数据接入(录入或导入)、处理、分析,以及算法的选择、导入、构建及运行的一站式气象数据在线融合分析平台。该系统设计开发结构明确,为其他行业的专业数据分析平台提供了快速搭建及实现的思路。
本系统主要包括三方面:数据管理、算法管理、综合运算。通过数据管理在线导入或录入数据,实现在线存储;同时通过在线的算法选择及导入功能,实现算法的在线管理及后期选择应用;利用综合运算功能,对数据及算法进行组织,实现模型的构建及结果的输出,见图1。
图1 系统流程设计图
本系统核心是集成,在设计过程中充分考虑了各部分(图1)的对接关系,主要包括综合运算分别与数据及算法管理之间的对接关系,涉及到用户数据、算法以及结果的存储及展示,即用户数据加工库、算法库以及场景应用库等。
综合运算与数据管理:综合运算通过MUSIC中的API接口以restful方式获取数据;同时综合运算可调用数据标准化算法对数据加工处理,并将处理后的数据存储在用户数据加工库内,便于用户调用。
综合运算与算法管理:综合运算在算法调用过程中,内部算法通过内部的WEKA包直接调用;外部算法通过Java动态Jar包等脚本加载实现;此外,在算法模型构建过程中,综合运算利用API调用气象数据或直接调用用户数据加工库的数据,同时利用通用模型构建模型参数,存储至算法库,供后期调用。
综合运算场景管理:通过之前决策场景模型应用的准备工作,对数据及成熟模型算法进行选择,计算出相关结果,存储至场景应用库。其中除了决策结果数据外,还包括可视化模块等标识内容,便于决策场景的直接预览等。
数据管理的主要功能是实现数据的在线独立存储管理,包括气象数据的在线获取,即接口的嵌入式页面集成及数据在线获取,以及外部数据的录入导入等。
气象数据接口嵌入:
气象数据统一服务接口(MUSIC),是基于国省统一的数据环境(CIMISS),面向气象业务和科研,提供全国统一、标准、丰富的数据访问服务和应用编程接口(API),为国、省、地、县各级应用系统提供唯一权威的数据接入服务。用户在使用过程中,通过MUSIC提供web可视化服务,直接生成接口访问的脚本,用户直接拷贝脚本并在接口客户端运行,实现文件的下载。
本系统通过iframe嵌入式页面设计,通过主页面获取iframe中的脚本生成的内容,并直接生成WEKA中支持的arff文件,供用户使用。具体实现步骤如下:
步骤1获取iframe内接口页面中textarea的脚本内容,该内容是ini格式的文本。
步骤2对ini文件进行解析,去掉无关的脚本参数,如结果记录限制、保存路径等。
步骤3通过Java脚本客户端进行数据提取,并按照arff格式进行数据格式的标准化处理。
外部数据录入及导入:
通过Java中文件保存的Servlet类,对提交的数据进行固定目录的保存,便于综合运算功能进行数据的选择。
算法管理主要功能是对自定义算法的导入,其中包括数据处理、模型构建、决策处理三类算法。数据处理算法,主要用于对数据的标准化处理,如气象要素数据的距平算法等;模型构建主要用于支持向量机(Surport Vector Machine,SVM)、神经网络等通过训练数据对模型的参数模拟,构建定制的预测模型;决策处理主要用于选定数据及定制的预测模型,得出决策或预测的结果。
通过数据源(数据管理)以及分析算法(算法管理)的准备,利用综合运算功能模块实现选择算法,并对数据进行处理、建模、分析等操作。主要包括以下三个流程(如图2)。
(1)数据标准化处理
数据的标准化处理是对选择的数据进行清洗和转换工作,通过数据处理类算法的选择,可按照特定的算法进行数据处理,并将处理后的数据存入数据源中,供后续操作。
(2)模型参数模拟
模型参数拟合是利用数据源中的数据(这里作为训练数据Train Data),对通用模型算法中如SVM等的模型参数进行拟合,构建最终的决策模型,并存入算法管理中,供后续使用。
(3)决策测报输出
决策预报输出是利用之前的数据及现有模型(如聚类等)构建的决策模型,实现最终的分析结果或数据预测结果的输出及可视化等功能。
图2 算法流程结构图
根据系统流程的设计,技术实现过程中主要包括两部分内容,即前台的页面功能及后台功能模块实现。前台主要基于B/S架构,以及iframe嵌入式父、子页面jscript函数调用等网页编程技术,实现页面展示及MUSIC接口的脚本调用;后台功能方面利用MUSIC中Java客户端的二次开发、动态加载外部导入算法以及基于WEKA源码的二次开发,实现相关功能的开发。
该平台前端开发的重要部分是通过iframe框架实现MUSIC接口定制页面的嵌入,实现子页面与父页面通信,自动获取MUSIC定制的脚本,供MUSIC的Java客户端进行气象数据的自动获取。其中iframe父、子页面的通讯包括同域传输及跨域传输,其中跨域传输需要对父、子页面采用location对象的Hash值等方法实现,即需要对MUSIC定制页面进行代码的重新添加,该方法会影响MUSIC页面对自身其他功能的支持。因此本系统中采用同域传输,利用Nginx进行统一域名代理,实现MUSIC定制页面的脚本获取及传输。
该系统支持三类算法(见2.2节)的外部导入,系统基于Java,通过org.python以及JNA(Java Native Access)、JNI(Java Native Interface)技术的运用,分别对Python、Fortran、C++等语言的外部导入算法进行动态加载运行,同时利用URLClassLoader类实现对外部导入jar包算法的动态加载运行等。目前可支持常用气象及其与行业数据融合分析算法包的动态加载运行。
WEKA(WaikatoEnvironmentforKnowledge Analysis)是Waikato大学研究的开放源码的数据挖掘平台,其中集成了大量的机器学习算法,包括对数据进行预处理、关联规则挖掘、分类、聚类等,其对外服务方式包括成型的可视化使用工具及基于WEKA源码包的二次开发。
该系统将气象数据中常用气象要素特征表达算法集成到WEKA源码包中,作为气象数据在线融合分析的内部算法,发布到该平台下,供用户使用。以最常用的温度距平要素及降雨距平要素的百分率[18-19]为例,其算法公式如式(1)~(3):
其中xˉ表示平均温度,xdt表示距平值,Pt表示距平百分率,n表示样本数。
按照以上的算法流程,在eclipse开发平台下,将主类TAnomaly类(距平)、PAnomaly类(距平百分率)与WEKA自身的SimpleFilter等类封装在weka.filters包中。TAnomaly类及PAnomaly类分别主要完成距平及距平百分率的计算及输出。
除此之外,对于WEKA通用的机器学习模型如KMean聚类、支持向量机、神经网络等,从界面上实现了初始参数的输入。
可视化是在数据分析中,直观展示数据关系的重要方式。该平台采用百度ECharts2.0可视化接口(http://echarts.baidu.com)、three.js接口技术等将servlet算法处理或分析的结果,通过post传递给展示页面,页面中利用jscript将变量赋值到相关模块中,最终实现数据的展示。
针对气象相关数据的特征,本系统中可视化分为以下几类:模型评估可视化、聚类可视化、WebGIS可视化等。
模型评估可视化:用于在模型构建过程中,模型检验时,直观展现预测数据与观测数据之间的关系。主要表现形式为散点图(echarts/chart/scatter)、柱状图(echarts/chart/bar)、曲线图(echarts/chart/line)等(图3)。
聚类可视化:对一些聚类分析的结果,通过树状关系图等对聚类结果进行展示。主要表现为力导向布局图(echarts/chart/force)及和弦图(echarts/chart/chord)(图4)。
WebGIS可视化:针对气象数据的区域特性,集成了基于WebGis的经纬度地图展示。在二维展示中,除了Echart中的百度地图扩展BMap,还基于天地图的地理信息数据,结合D3及leaflet技术,利用SVG进行可视化展示,提高了可视化的交互体验(图5);在三维展示中,以webgl为基础的Three.js库实现,使用Three.js创建一个SphereGeometry对象,Three.js纹理贴图的方式为UV映射,需要给创建的球体对象设置一个等经纬的地图作为纹理[20](图6)。
图3 “曲线图”展示模型检验结果
图4 “树状关系网络图”展示聚类结果
图5 “WebGIS”二维展示数据区域分布结果
图6 “WebGIS”三维展示数据区域分布结果
可视化功能开发实现过程以SOA开发架构[21],将多样可视化进行接口封装,使用过程中仅需提供对应的数据即可。如WebGIS可视化中,仅需提供经纬度及对应的值,即可实现二维及三维的展示。
本文实验场景是预测太阳辐射数据,光伏电站的规划设计的前提是能够准确预测太阳辐射值,该项工作对系统的经济运行起着至关重要的作用。该实验以中国内蒙古自治区呼伦贝尔市海拉尔站(站号:50527)2017年6月份每日平均温度、平均湿度、最小能见度、日照时长为自变量关键因子,利用SVR模型对日总辐射(曝辐量单位:兆焦每平米(MJ m2),构建总辐射的预测模型。以2017年7月份海拉尔站的数据作为测试数据,对模型进行检验。
通过数据管理栏目界面,首先分别选择2017年6、7月份的每日平均温度、平均湿度、最小能见度、日照时长以及总辐射(曝辐量)数据,分别存为raditraindata.arff、raditestdata.arff。通过综合运算中的“处理数据”算法对能见度进行了标准化处理,将单位从“米”转换成“千米”,便于后期的训练及测试准备。
该样例采用的是支持向量回归模型(Support Vector Regression,SVR)[22-23],该模型是libSVM包中一类回归算法,是支持向量机(SVM)[24]重要的应用分支类似。利用raditraindata.arff构建模型参数,初始参数为options=("-S 4-K 0-D 3-P 0.1-C 1.0-E 0.001-N 0.5"),训练后新的决策模型保存为“LibSVM-SVR.model”便于最后决策应用过程中调用。
该实验中的辐射数据为非分类数据,因此采用支持向量回归(SVR)模型,平台中主要基于libSVM中的“nu-SVR”模型,该模型可自动拟合参数,利用测试数据raditraindata.arff构建模型,通过简单选取“构建模型”功能,提交后自动生成新的决策应用模型“nu-SVR”。其结果评估中,相关系数(Correlation coefficient)为0.94,相关绝对误差为0.34。利用7月份数据进行预测得到的结果,预测结果与实际值进行回归分析,相关系数R2=0.933 6,如图7。整个流程操作简便,具有实际可行性。
图7 2017年7月海拉尔站日总辐射观测值与预测值相关分析
气象数据在线融合分析原型系统的构建,为行业专家快速进行数据分析及场景应用提供了交互、便捷、高效的在线工具,实现了从数据到产品的一站式集约化平台,具体从以下3个方面进行总结。
(1)简化了气象数据使用流程
系统集成了气象数据统一服务接口,简化了气象数据的下载、解压、处理等传统工作流程,直接实现了在线定制、存储、处理及使用。便捷的数据使用流程,提升了用户对气象要素使用的积极性,极大发挥了数据的价值。
(2)丰富并拓展了气象相关分析算法
系统收集针对气象数据分析的常用算法,并开发集成部署到系统中,便于用户使用;同时支持外部算法的加载,可扩充系统服务支撑能力。系统的算法模型服务能力得到了较大提升。
(3)整合并构建了气象融合分析平台
系统整合了通用气象数据分析流程,实现了从气象数据到场景应用的一体化在线融合分析功能。降低了气象数据分析的门槛,对气象数据的众创提供了一个灵活高效的平台。
随着各行业大数据时代的到来,除了应用场景作为分析的前提条件外,在线分析技术还需对以下几个主要方面进行深入研究:第一,针对海量数据,结合关系型及非关系型数据库,提高长序列、多要素气象数据的快速读取及调度;第二,针对算法效率,利用分布式大数据算法工具(MahOut、TensorFlow等),优化算法的计算效率,丰富算法内涵及外延[25];第三,为进一步提升整个流程的产品级开发,从数据获取、模型运行、决策服务等分析流水线进行脚本化输出,即对决策服务流程进行脚本化封装,简化服务部署,实现产品的实时输出。