Prophet时序模型在短期水质溶氧预测中的应用

2020-07-04 02:17沈时宇
渔业现代化 2020年3期
关键词:溶氧水质误差

沈时宇,陈 明

(上海海洋大学信息学院,农业农村部渔业信息重点实验室,上海 201306)

物联网技术在农业生产中的应用日渐普遍,其中感知技术是农业物联网的关键,传感器是感知技术的核心[1],目前,光、温、水、气、热等常规环境传感器已比较成熟[2]。水质传感器作为水产养殖生产获取各类数据的重要工具,按照时间不断采集水温、pH、溶氧、氨氮和盐度等水环境参数,并传输至数据处理系统。这些数据具有显著的周期性、实时性、无穷性等特征,对于水产品的存活率都有很大的影响,只有通过综合分析这些时间序列参数才能对水质状况作出合理判断。水产养殖大多处于室外,传感器的工作环境通常较不稳定,因而造成设备易受环境影响、测量数值变化较大的问题。除此之外,设备长期疏于维护也会因机械原因产生异常数据。为了保证设备的自动控制以及正常数据分析,进行水质参数预测来判断异常成为养殖过程中的重要部分。

近年来,国内外学者对时间序列的预测问题进行了许多研究[3],其中一些结果对于水质参数预测有一定的参考价值。现在常用的预测方法主要有灰色模型、ARIMA模型等传统预测方法[4-6]和神经网络(NN)、支持向量回归(SVR)等机器学习方法。相对于传统算法,机器学习算法学习能力更强,模拟效果更佳,成为许多时间序列分析人员的首选。神经网络(BP)[7]有很强的自学习能力,BP模型作为经典的神经网络模型,可通过调整权重、激活函数等来增强解决复杂非线性问题的能力,其权值的调整采用反向传播算法,在环境预测等方面已有不少应用[8-12]。SVR算法以其训练样本小、泛化能力强的特点在数据分析领域有较多应用[13-14],并被成功应用在时间序列预测等研究中[15-18]。除上面这些方法之外,目前出现了一些新的预测模型。其中Facebook开源了基于时间序列分解和机器学习拟合的Prophet时间序列预测算法[19-20]。Prophet可以处理具有大异常值和趋势变化的数据,并模拟具有周期性的数据[21],目前已有不错的应用[22]。

因为时间序列数据信息会随着时间变化,往往训练很长的历史数据后得到的是“过期”的信息,并不能反映当前阶段数据之间的相关性,所以提出了基于“短时期数据”进行分析。这里的“短时期数据”指的是数据量相对较小,但通过对其研究可以更敏锐地发现当前时间段数据变化倾向的数据集。但是使用“短时间数据”进行预测与以上提到的多数预测模型需要大量数据进行训练相矛盾。为解决这种情况下因训练不充分导致的预测精度较低的问题,提出了基于Prophet_SVR模型的短期时间序列预测方法,选择以溶氧时间序列参数为例进行预测分析,并可以推广到其他如水温、氨氮等参数值的分析上去。

1 数据处理

1.1 数据来源

样本数据来自江苏中洋河鲀庄园,位于江苏省海安市滨海新区南通龙洋水产有限公司内,属亚热带季风气候,全年温暖湿润,比较适合水产养殖,溶氧数据见表1。基于对“短时期数据”进行分析,但是这里的“短”只是相对而言,一般情况下这段数据也应当有包含至少2~3个稳定周期的长度。因此,溶氧样本数据采集时间为2018年12月29日10:56至2019年1月2日23:41,共计6 017条,其中在1月2日13:50前每隔1 min采集一次数据,共采集5 905条数据;13:50后的数据为每5 min采集一次,共采集112条,由于时间间隔不同,根据模型需求选择舍去。

表1 溶氧数据

1.2 缺失数据处理

传感器在采集数据的过程中会有值缺失和出现过于偏离实际情况的数值,影响预测的精度。通过观察,溶氧数据集中的值缺失属于随机缺失,故而采用可能值插补缺失值。由于数据集的采集间隔为1 min,属于定距型,且数据发生剧烈变化的可能性较小,因而使用均值插补,具体方法是使用前后各2位共4个数值的平均数对缺失值进行补充。总计溶氧数据有缺失值30条,采用均值插补法进行填充整理,预处理后共计溶氧有效数据5 935条,溶氧变化曲线图如图1所示。

图1 水质溶氧参数变化曲线图

2 时间序列预测方法介绍

2.1 Prophet时序模型

Prophet与传统的时间序列方法(ARIMA模型等)不同,前者是基于时间序列分解(DTS)和机器学习的拟合,来预测时间序列未来的走势。Prophet模型的公式定义:

y(t)=g(t)+s(t)+h(t)+εt

(1)

式中:t—当前时间;y(t)—当前值;g(t)—趋势项,是时间序列在非周期上的变化趋势;s(t)—周期项,反映序列的周期性变化;h(t)—节日-事件项,可理解为额外的影响项,在水质溶氧预测应用中这些项的单位为毫克每升(mg/L);εt—误差项,服从正态分布。

趋势项模型g(t)可基于逻辑回归函数或分段线性函数。常用的是逻辑回归函数,模型可简化为:

(2)

式中:t—当前时间;C—最大渐近值;k—曲线的增长率;m—曲线的中点值。当C=1,k=1,m=0时就是常见的sigmoid函数的形式。实际应用中这3个参数不可能都是常数,因此会被替换成了随着时间t变化的函数。

周期项模型s(t),用傅立叶级数模拟时间序列的周期性,模型为:

(3)

参数P、N可根据周期的长度进行调整。例如当以年为周期时P=365.25,N=10;当以周为周期时P=7,N=3。

节日-事件项模型h(t)为:

(4)

式中:Z(t)=(1{t∈D1},...,1{t∈DL}),k=(k1,...,kL)T;L表示节日-事件的个数,个;Di表示节日-事件所延续的时间范围,当时间t在某个节日-事件的范围内则Z(t)取1,否则为0;ki表示不同节日-事件对时间序列预测的影响系数,且k服从正态分布。

在对“短时期数据”分析时,Prophet模型能够在序列中分离出周期性的规律,并依此进行时间序列数据的拟合。

2.2 支持向量回归

支持向量回归(SVR)是由Suykens等[13]提出用于解决函数估计问题的机器学习方法,是支持向量机(SVM)的一种扩展算法,保留了结构风险最小化、小样本等特点,是支持向量机在回归领域的应用。

SVR回归的过程如下:

1)线性回归的基本形式为f(x)=ωT·x+b。对于给定样本集{(xi,yi),i=1,2,...,N},其中xi∈Rn为输入量,yi∈R为输出量。考虑用映射形式,令φ(x)为x映射到高维后的特征向量,从而得到的线性回归函数表示为:

f(x)=ωTφ(x)+b

(5)

式中:ω为系数,b∈R为偏差,ω和b学得后,模型也随之确定。

2)根据结构风险最小化准则,将问题转化为目标函数R最小化问题,可表示为:

(6)

式中:s.t.后的式子表示目标函数R在最小化时应满足的约束条件;ei∈R,为误差变量,有待模型训练确定;C为惩罚系数,且C>0。

3)为了求解上述目标函数R的最小化问题,构建拉格朗日函数L:

(7)

并代入f(x)=ωT·x+b,可得:

(8)

最后在SVR对偶问题里满足Karush-Kuhn-Tucker(KKT)条件,并代入f(x)=ωT·x+b,可以得到有SVR的解形如:

(9)

(10)

式中:k(xi,xj)=φ(xi)Tφ(xj)为核函数。常用的核函数有线性核函数及径向基核函数。

最后,支持向量回归需要考虑的参数主要有两个,分别为惩罚系数C和当选用核函数时对应的系数gama。结合文献[23],调整这两个参数的取值,以选择最优化的模型。

3 试验与结果分析

3.1 试验环境

试验所使用计算机配置为:处理器为Intel Core i5 2.6 GHz,内存为8 GB,操作系统为 Windows 10;程序设计语言为Python3.6;集成开发环境是Anaconda,使用的深度学习框架是Theano 1.0.3和Keras 2.2.4。

3.2 试验概况

数据来源:江苏中洋河鲀庄园溶氧参数监测值,共5 935条。输入数据:自2018年12月29日10:56至2019年1月2日11:50的养殖水质溶氧参数监测值。数据形式为长度为5 815的二元组,每个元组中分别是从“2018/12/29 10:56”开始的时间记录和这个时间对应的溶氧值。预测模型:Prophet模型,本文所提出的Prophet_SVR预测模型及其用于对比的Prophet_NN模型。预测目标:预测自2019年1月2日11:51至13:50这2 h内共计120条水质溶氧参数值。输出数据:长度为120的一段时间序列预测数值。

3.3 试验步骤

3.3.1 Prophet时序模型预测及优化

首先将水质溶氧数据按照Prophet时序模型的输入要求整理。接着从后向前截取长度为120的数据为测试集,余下的5 815条数据为训练集T。将训练集T作为Prophet时序模型的输入进行预测,通过试验对比,选择在模型的趋势项g(t)部分使用逻辑回归函数,因而要确定的Capacity参数根据样本数据设置为溶氧数据的最大值(9.5),模型趋势项中变点数与光滑参数采用默认值。输出得到长度与训练集长度相同的训练预测集TP和与测试集长度相同的预测集P。

为了选择更适合溶氧预测研究的算法优化模型,使用支持向量回归以及应用较为广泛的神经网络分别对预测结果进行优化并进行对比:

1)支持向量回归的优化。将通过Prophet模型得到的训练预测集TP与原始数据的训练集T改写成[X(tpn-m,tpn-m+1,...,tpn-2,tpn-1),yn]的X→y对应形式,类似构建一个时间窗口。该目的在于使用Prophet模型训练预测集某时间点n前的m个时间点数据序列来对应原始数据训练集中第n个时间点的数值yn,这样可以通过构建有监督学习来提高预测精准度,结合试验与参考文献[12,25],根据溶氧数据的特征周期以及采样频率,计算得出合适的m值为21。将改写数据集中X和y分别作为输入和期望输出来训练SVR模型。最后将由Prophet模型得到的预测集P作为训练好的SVR模型的输入,得到长度为120的优化预测值集。

参数设置:结合文献[23],调整惩罚系数C,以及选用的核函数对应的系数gama这两个参数的取值,以求得模型的最优化。模型中选择RBF作为核函数,通过试验对比,当设置惩罚系数C为7.5,gama系数为1时得到的均方根误差最小为0.255 8,因此设定C为7.5,gama为1。Prophet_SVR模型的结构如图2所示。

图2 Prophet_SVR模型结构

2)神经网络的优化。将通过Prophet模型得到的训练预测集TP和原始数据的训练集T分别作为神经网络的输入与期望输出,通过进行反向传播训练模型。最后将由Prophet模型得到的预测集P作为训练好的NN模型的输入,得到长度为120的优化预测值集。

参数设置:模型中设置结构为1-K-1的BP神经网络。结合文献[24]确定隐藏层节点数K的范围在1~16之间。最后通过试验对比,当隐含层节点数为16、迭代次数为200时,预测结果的均方根误差最小为0.333 4,因此设定隐藏层节点数为16。

3.2.2 模型性能评价方法

使用均方根误差(ERMSE),平均绝对百分比误差(EMAPE)与允许误差内的预测值占比来评价预测性能。ERMSE是指参数估计值与参数真值之差的平方期望值的平方根,其值越小预测性能越稳定,计算公式如式11;EMAPE是一个百分比值,其值越小说明模型拥有更好的预测精度,公式如式12所示。允许误差内的预测值占比也是一个百分比值,先设定阈值,当参数估计与参数真值之差小于这个阈值时可看作近似预测正确,允许误差内的预测值占比则使用近似预测正确的样本数量占比来衡量模型的预测效果,本文简记为EPPVAE,计算公式如式13所示。

(11)

(12)

(13)

式中:ni—近似预测正确的样本数,个;N—预测集总数,个;试验中阈值设为0.2。

综上,基本流程如图3所示。

图3 水质溶氧预测试验流程图

3.3 结果分析

首先使用Prophet时序模型对2019年1月2日11:51开始至13:50,2 h内水质溶氧参数进行预测,预测结果如图4所示。在Prophet模型的输出图像中,黑色点表示原始的溶氧值时间序列离散点,深灰色的线条表示使用模型来拟合时间序列所得到的取值,两条浅灰色的线分别是合理上界和下界,两线之间的浅灰色区域则是时间序列的置信区间。图4中最后一段横坐标2 h长度的深灰色下降曲线表示使用该模型所得到的预测值。

图4 Prophet时序模型预测结果

接着使用Prophet_SVR与相应参数得到的未来2 h水质溶氧预测的结果,同时与Prophet和Prophet_NN模型的结果进行比较。各模型预测结果与实际测试集的对比如图5所示。Prophet时序模型的预测结果随着时间的推移与真实值之间的误差逐渐增大,而Prophet_SVR和Prophet_NN模型通过优化都可以在一定程度上减小误差,其中Prophet_SVR模型的预测曲线相比其他两个模型在更多的时间段内与实际值曲线更为接近,直观上看,Prophet_SVR模型对于水质溶氧的预测更为准确。

图5 实际溶氧时间序列及各模型预测序列对比图

以上3模型对2019年1月2日11:51开始至13:50的水质溶氧预测结果评估以及模型的预测用时如表2所示。

表2 3种模型预测性能评估结果

注:*号表示使用SVR和NN对Prophet模型得到的预测结果进行优化各自所使用的时间

结合图5与表2得知:Prophet_SVR模型的试验效果在均方根误差(ERMSE)与平均绝对百分比误差(EMAPE)上较Prophet模型分别下降0.197 1和3.890 4%,允许误差内的预测值占比(EPPVAE)提高42.5%,说明整体的预测误差降低且对单个数值的预测精度提高,模型预测性能更稳定。可见预测效果有了很大的提升。

对比Prophet_NN模型,Prophet_SVR模型在ERMSE和EMAPE上评估分别要低0.061 6和1.973 2%,允许误差内的预测值占比(EPPVAE)也要高得多。同时在模型训练时间方面有较大的优势,优化的效率更高,体现了SVR算法在处理小样本数据上的优势。

综上,使用Prophet_SVR模型在对Prophet模型的预测结果优化上有较好的效果。

4 讨论

4.1 算法优缺点对比

Prophet模型基于时间序列分解,优点是对具有趋势性、周期性等明显内在规律的数据敏感,这是相对于其他时间序列处理方法的优势。但其模型的表达能力还是较简单,导致模型训练时欠拟合,对于复杂的模式预测精度不高。

神经网络的优点在于学习能力和容错性较强。不足之处在于过分依赖学习样本的数量和质量,且参数较多,对小样本的学习过程也会比较长。而且神经网络优化目标是基于训练集的最优化进行,这样就会造成过拟合,导致泛化能力不佳。这应是试验中出现Prophet_NN允许误差内的预测值占比(EPPVAE)反而低于Prophet的原因。

支持向量回归优点在于能较好处理小样本数据,且相对于神经网络等算法没有局部极小值问题,保证了算法的全局最优性和解的唯一性。泛化能力比较强,可以防止欠学习和过学习现象,解释了试验使用SVR模型优化的预测效果要好于NN的现象。但是不易发现数据中隐含的周期性的因素,大多需要经过序列的分解后才能进行处理。

4.2 Prophet_SVR模型的优势

结合Prophet与SVR的优点,在使用Prophet处理具有周期性和趋势性的短期数据的基础上,针对其模型训练中易出现欠拟合的现象,利用支持向量回归提高训练拟合度,从而对预测效果进行优化。虽然使用Prophet_NN模型也可以对Prophet模型训练时的欠拟合问题进行处理,但由于试验样本较少,且使用NN进行处理容易出现过拟合的情况,反倒使得优化效果不佳。通过试验也证明了Prophet_SVR可以在明显减少整体预测误差的基础上,同时提升单个数值的预测精度,而且模型训练时间更短,整体的预测效率更高。

5 结论

针对Prophet时序模型在短期水质溶氧时间序列预测的应用中精度较低的实际情况,提出结合支持向量回归优化的Prophet_SVR模型。结果显示,对于样本较少的数据,相较于Prophet模型,Prophet_SVR模型预测精度、稳定性以及单个数据预测精度都有所提高。这为基于短期的时间序列预测提供了一个新的思路,也可以扩展到其他水质因子如pH、氨氮等的预测应用中去。本研究不足之处在于,通过观察模型预测序列对比图,发现所预测的溶氧数值在60~80 min这段时间与真实值偏差较大。根据资料判断,此处时间序列数值可能出现了概念漂移,导致模型的预测精度随时间推进而降低。后期将实时处理方法运用到模型中,从而进一步提高模型的预测精度。

猜你喜欢
溶氧水质误差
悬浮物对水质氨氮测定的影响
关于如何做好水质环境监测的质量保证研究
关于水质监测对环境保护的意义
隧道横向贯通误差估算与应用
隧道横向贯通误差估算与应用
浅谈制药企业中的发酵工艺优化
溶氧对氨基酸发酵的影响分析
精确与误差
九十亿分之一的“生死”误差
溶氧对氨基酸发酵的影响及其控制