4.2学习周报

Posted hehehe2022

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了4.2学习周报相关的知识,希望对你有一定的参考价值。

文章目录


前言

本周阅读文献《Forecast Methods for Time Series Data: A Survey》,本文主要对目前时间序列数据建模方法进行分类,主要分为了三类:经典的时序预测方法、机器学习的时序预测模型以及将经典方法和机器学习相结合的混合模型,对不同的方法进行比较;指出时间序列预测的潜在研究方向,主要是三个方面,在数据上可以进行数据预处理提高数据质量,在模型方面对模型进行修正以提高预测能力以及提高并行计算的效率。另外,在阅读文献时了解了一种预测模型叫高斯过程回归,对这个方法进行了初步的学习。

This week,I read an article which attempts to cover the existing modeling methods for time series data and classify them.The existing popular prediction methods of time series are classified into three categories: classical forecasting method of time series, prediction methods of machine learning and deep learning, and hybrid forecasting methods of time series.In addition, we make comparisons between different methods and summarize several potential research directions and unsolved problems, such as data preprocessing, incremental data model construction, and parallel computing.In addition, I learn about a prediction model called Gauss process regression .


文献阅读

题目:Forecast Methods for Time Series Data: A Survey
作者:Liu, ZY (Liu, Zhenyu) [1] ; Zhu, ZT (Zhu, Zhengtong) [1] ; Gao, J (Gao, Jing) [1] ; Xu, C (Xu, Cheng) [1]
文献链接

摘要

时间序列数据预测方法研究成为热点之一。越来越多的时间序列数据在各个领域产生。为时间序列分析方法的研究提供数据,促进时间序列研究的发展。由于时间序列数据的生成高度复杂、规模大,时间序列数据预测模型的构建带来了更大的挑战。时间序列建模面临的主要挑战是时间序列数据复杂度高、预测模型准确率低、泛化能力差。本文试图对现有的时间序列数据建模方法进行分类。此外,我们还对不同的方法进行了比较,并列出了一些时间序列预测的潜在方向。

介绍

时间序列数据是指在等间隔的时间段内,以给定的采样率观测某一过程的结果。时间序列分析的核心是从数据中发现规律,并根据历史观测预测未来值,可以为决策提供参考和依据。传统的基于概率和统计的时间序列预测方法在气象、金融、工业等领域取得了巨大的成果。然而,随着大数据时代的发展,海量的、服从多种分布模式的非线性时间序列数据正在不断产生,这也对时间序列预测方法提出了更高的挑战。因此,人们应用机器学习和深度学习对高度复杂的时间序列数据预测方法,并取得了很大的成果。

时间序列预测目前存在的问题

  • 数据方面:数据分析和建模的准确性受到数据质量的严重影响。因此,数据的质量在数据分析中起着决定性的作用。然而,在现实中,原始数据并不完美。一方面,时间序列数据由传感器、智能终端设备、采集系统等实验仪器等生成。由于客观条件和数据采集设备的稳定性等各种因素,数据往往含有噪声、缺失值等异常情况。如何基于样本数据的分布模式处理异常值和缺失值,这对大规模时间序列数据预处理方法提出了更高的挑战。
  • 模型方面:目前,研究人员通常根据历史数据构建预测模型,以对未来数据进行预测分析。然而,在实际应用中发现,随着时间的推移,预测模型的精度和性能逐渐下降。主要原因是历史数据和实时数据之间的差距。而且新的数据特征并没有被模型增量学习并应用到预测中。
    综上所述,基于在线增量数据的时间序列预测修正模型的研究已经成为一个亟待解决的问题。
  • 在实时计算方面:由于各领域时间序列数据的快速增长,在线时间序列实时分析已经成为发展需求。
    实时计算。由于各领域时间序列数据的快速增长和对数据时效性的需求,对时间序列数据进行在线实时分析成为发展需求。现在的时间序列分析模型通常采用单机模式。通过使用高性能的GPU服务器,提高了运行效率。一方面,GPU服务器价格昂贵,导致研发成本较高;另一方面,受计算资源和数据规模的影响,无法实现实时计算。

时间序列预测方法分类

根据时间序列预测方法的发展历程,我们将现有流行的时间序列预测方法分为三大类:经典的时间序列预测方法、机器学习和深度学习的预测方法以及时间序列的混合预测方法。
A. 时间序列的经典预测方法
时间序列的经典预测方法基于数学和统计建模,经典线性模型主要包括:自回归(AR)模型、移动平均(MA)模型、自回归移动平均(ARMA)模型和自回归积分移动平均(ARIMA)模型。而经典的非线性线性模型主要包括阈值自回归(TAR)模型,恒定条件相关(CCC)模型、条件异方差性模型。此外,还有一些基于指数平滑的重要经典预测方法,如:简单指数平滑(SES)、霍尔特线性趋势法、霍尔特-温特斯乘法、霍尔特-温特斯加法和霍尔特-温特斯阻尼法。
1)经典线性模型
a:针对平稳数据的预测模型
对于平稳时间序列的预测,Yule[4]首先将随机性的概念引入时间序列,将每个时间序列视为随机过程的实现,并提出了自回归(AR)模型,将每个时间序列视为随机过程的实现,并提出了AR模型。然后,研究人员提出了移动平均(MA)模型,并提出了著名的将分解定理[5]。为时间序列预测的研究奠定了基础。直到1970年,Box和JenKins提出了ARMA模型[6],其中包括三个基本模型:AR模型,MA模型和ARMA模型。它广泛用于平稳时间序列的建模。
ARMA 模型是预测稳态时间序列数据的最常见模型。它将时间序列数据视为一个随机序列,这些随机变量的依赖性反映了原始数据在时间上的连续性。

随着格兰杰因果关系[12]的提出,研究人员将单变量时间序列模型扩展到多变量时间序列分析。基于ARMA模型,提出了一种面向量自回归移动平均线(VARMA)的多元促进模型,可以灵活地表示向量自回归(VAR)和向量移动平均(VMA)模型。构建 VARMA 模型时,时间序列数据必须是平稳序列。如果数据是非平稳时间序列,则需要进行一阶差分处理才能获得平稳数据。但是,在差分处理中将忽略时间序列中存在的趋势信息。为了解决上述问题,恩格尔和格兰杰[13]提出了向量纠错模型(VECM),该模型可以很好地考虑时间序列之间的协整关系。

综上所述,ARMA时间序列预测模型在平稳时间序列预测方面取得了很大成就。但是,实时序列数据中几乎没有纯粹的平稳数据。因此,该模型的应用受到数据特性的限制,其通用性较差。
b:非平稳数据的预测模型
包含趋势、季节性或周期性等特征的序列称为非平稳序列。它可能只包含一个组件或多个组件。非平稳时间序列意味着在其局部水平或趋势消除后,它显示出同质性。此时,该系列的某些部分与其他部分非常相似。这种非平稳时间序列可以在差分处理后转换为平稳时间序列。
ARIMA(p, d, q)是一种众所周知的非平稳时间序列模型,可以反映不同数据模式的变化,并且模型需要较少的参数来估计。因此,ARIMA模型得到了广泛的应用。

ARIMA的模型结构简单。应用ARIMA模型时,要求时间序列数据是平稳的,或者经过微分后的稳定。因此,ARIMA 只能捕获线性关系,而不能捕获非线性关系。
2) 经典非线性模型
线性预测模型易于理解且易于实现。然而,线性模型需要线性假设下构建,这对于非线性时间序列数据效果较差。为此,提出了非线性时间序列预测模型。著名的经典非线性模型包括阈值自回归(TAR)模型、自回归条件异方差(ARCH)模型和恒定条件相关(CCC)模型等。

B.时间序列的机器学习预测模型
经典的时间序列预测模型可以很好地捕捉时间序列中的线性关系,并在数据集较小时取得良好的效果。然而,当应用于大规模复杂非线性时间序列时,效果较差。因此,研究人员更加关注机器学习或深度学习的时间序列预测方法。多层感知器(MLP)网络[36]和径向基函数(RBF)网络[37]等人工神经网络具有自适应和自组织学习机制。它们是不同领域最早用于非线性时间序列预测的神经网络模型,并且取得了良好的效果。此外,模糊理论、高斯过程回归、决策树、支持向量机、LSTM 等。也用于时间序列预测,对非线性时间序列也有很好的预测能力。
1)模糊时间序列预测方法
模糊时间序列预测可以解决非线性问题,是预测分析领域的研究热点之一。常用于小数据集或有缺失值的数据集的时间序列预测。
2) 人工神经网络
人工神经网络 (ANN) 是一种数据驱动的预测模型。具有较强的自组织、自学习和良好的非线性逼近能力。因此,它引起了时间序列预测领域研究人员的广泛关注。它已成为非线性建模的有效工具之一,并广泛用于各个领域。在ANN模型中,假设训练样本的数量趋于无限,但实际训练样本是有限的。因此,训练模型往往存在过拟合现象,特别是在小样本建模中,模型的性能劣化更为明显。虽然人工神经网络在时间序列预测方面取得了不错的效果。但是,在数据尺度的影响下,经常发生过拟合。因此,人工神经网络不适合小数据样本的时间序列预测。混合模型在预测方面优于单一模型。研究表明,混合模型在预测方面比单一模型表现更好。
3) 高斯过程回归
高斯过程(GP)[67]是一种基于贝叶斯神经网络的机器学习方法。它是一组随机变量。集合中任意数量的随机变量服从联合高斯分布,并由均值函数和协方差函数唯一确定。
高斯过程回归 (GPR) [68] 是一种非参数模型,它使用高斯过程 (GP) 先验对数据执行回归分析。GPR的模型假设包括噪声(回归残差)和高斯过程先验。它是根据贝叶斯推理[69]求解的。GPR是紧凑空间中任何连续函数的通用近似器。此外,GPR可以提供后验来预测结果。当可能性呈正态分布时,后验具有分析形式。因此,GPR是一种具有多功能性和可解析性的概率模型。
高斯过程回归(GPR)是一种贝叶斯机器学习方法。由于GPR的计算成本高,通常用于低维和小样本回归问题。同时,与ANN和SVM等方法相比,GPR需要更少的建模参数和更多的内核函数,因此GPR更加灵活。
4) 支持向量机
支持向量机(SVM)是Vapnik团队[83]首先提出的一种重要的分类算法,对于小样本和非线性问题具有独特的优势。它广泛用于分类、模式识别和时间序列预测的研究。支持向量机最初应用于二维线性可分情况。核心思想是在分类精度的基础上找到最优的超平面。支持向量机的主要优点是数据分类。在分类方面,适用于小样本数据集,简化了分类和回归问题。它的计算复杂度由支持向量的数量决定,从而避免了“维数的诅咒”。此外,其结果由几个支持向量决定。它对异常值不敏感,因此可以很好地捕获关键样本,具有良好的鲁棒性和泛化能力。但在预测方面,单一支持向量机模型效果不佳,通常采用混合模型进行预测,可以达到一定的效果。
5) 递归神经网络
递归神经网络(RNN)以序列数据为输入,递归地沿序列的进化方向,所有节点连接在链中。擅长处理序列和相关数据,广泛应用于模式识别和时间序列预测领域。RNN对时间序列更敏感,并且在数据传输中具有内存。
然而,输入序列越长,需要的时序参考就越多,从而导致网络更深。当序列较长时,梯度很难从后一个序列传播回前一个序列。结果,出现了梯度消失的问题,因此不可能处理长期依赖的问题。为了解决RNN梯度消失和爆炸的问题,提出了一种长短期记忆(LSTM)模型。它是一种特殊的RNN,通过在输入和反馈之间产生“保留效应”,有效地避免了梯度分散的现象。与 RNN 的叠加记忆相比,LSTM 可以记住需要长时间记忆的信息,忘记不重要的信息。因此,LSTM在长序列预测中具有更好的性能。
6) Transformer
Transformer 是 Google 团队在 2017 年提出的经典 NLP 模型。流行的伯特模型也是基于变形金刚的。Transformer 模型使用自我注意机制而不是 RNN 的顺序结构,因此可以并行训练模型并获取全局信息。它目前也用于时间序列预测。
Transformer用于时间序列预测,并取得了良好的效果。它可以很好地捕获时间序列之间的复杂依赖关系,并且可以并行计算。但是,该方法变换器无法捕获序列之间的远距离信息,并且计算量较大。
C.混合预测模型
在时间序列预测领域,经典和机器学习的预测方法各有优势。然而,实时时间序列数据具有以下特点:(1)难以判断时间序列数据是线性还是非线性,无法判断某一特定模型对数据的有效性;(2)现实中,纯线性或纯非线性的时间序列数据很少,时间序列数据通常是线性和非线性的结合;(3)在时间序列预测领域,没有任何模型适用于任何情况,单一模型无法同时捕捉不同的时间序列模式。
因此,为了捕捉数据中不同的分布模式,将经典和机器学习相结合的混合模型成为发展趋势。混合模型可以捕捉时间序列复杂的分布模式,提高模型的准确性和泛化能力。
1)基于ARMA和机器学习的混合模型
ARMA与机器学习相结合的混合算法已应用于不同领域,并取得了良好的效果。
2)基于ARIMA和机器学习的混合模型
3)基于机器学习的混合模型
比如有文献提出了一种混合时间预测模型,该模型结合了卷积神经网络(CNN)和支持向量机(SVM)。

未来方向

数据预处理
众所周知,数据的质量对数据建模有着重要的影响。但是,在生成海量时间序列数据的过程中,存在一些缺失的数据。目前,还没有找到一种高精度、高效率的填充时间序列缺失值的方法。然而,随着时间序列数据分析的需要,我们认为基于原始数据分布模式填充缺失值将成为时间序列分析研究领域非常有前途的方向。
模型构建
将实时增量数据的特点与模型相结合,提高模型的准确性和鲁棒性。目前,人们通常根据历史时间序列数据构建预测模型,并将其用于未来的数据预测。然而,随着时间的流逝和各种客观因素的影响,需要根据新数据的特点和数据分布模式对模型进行修正,以提高其准确性和鲁棒性。否则,随着时间的推移,模型的预测精度和性能将无法满足我们的需求。因此,基于增量数据的修正时间序列预测模型将成为潜在的研究方向。
并行计算
目前,时间序列分析模型是基于单机模式构建的。研究人员通常使用高性能GPU服务器来提高计算效率。一方面,GPU服务器设备昂贵,增加了研究成本。另一方面,受计算资源和数据规模的影响,无法实现实时预测分析。因此,基于大数据技术的时间序列数据并行计算将成为潜在的研究方向。

时间序列预测

上面的文献中提到了一种机器学习预测模型的方法是高斯过程回归,下面对高斯过程回归预测进行初步学习和了解。

时间序列的机器学习预测模型:高斯过程回归

高斯过程是一种常用的监督学习方法,可以用于解决回归和分类问题。高斯过程回归预测也就是我们要用高斯过程来进行回归并预测。高斯过程模型的优势主要体现在处理非线性和小数据问题上。
基础知识
一维高斯分布(也就是正态分布)的概率密度函数决定因素有两个:均值和方差 (标准差)。因此我们可以得到一个结论:一个均值和一个方差可以确定一个一维的高斯分布!

二维高斯分布的概率密度函数如下,我们将这幅图分别从XOZ和YOZ两个方向看,我们可以看到两个方向得到的截面完全遵循一维高斯分布,那么有两个一维高斯分布是不是需要两个均值和方差来确定,那么也就是说,两个均值和两个方差可以确定一个二维高斯分布,不妨把这个假设扩展到n维。

得出:n维高斯分布的表达式,对比一维高斯分布进行理解。

引入协方差的概念,在多维的高斯分布当中,两两分布之间肯定存在某种联系,这种关系是通过矩阵进行表达的。矩阵那么多元素,是可以将每个元素代表两个东西之间的某种关系,n维的高斯分布需要n个均值和n个方差来确定,通常情况下我们将均值定为一个均值向量,方差组用一个矩阵来表示——协方差矩阵,当两两分布之间相互独立,则这个协方差矩阵为对角矩阵,反之为非对角矩阵。一个均值和一个方差能确定一个一维的高斯分布,那么多维的高斯分布就可以通过一个均值向量和一个协方差矩阵确定。

高斯过程
高斯过程:“如果多元高斯分布的随机变量为无数个,且是离散时间的状态量,即随机变量为随时间变化的函数。其中每个时刻的均值用一个均值函数刻画,两个不同时刻的方差用一个协方差函数刻画。”理解这句话,将多维高斯分布的维数放大到无限大,其中均值向量里的每个元素都遵循一个函数——均值函数,就是说你给我这个无限维的高斯分布中某一维的高斯分布,我可以根据均值函数给出这一维高斯分布的均值。那么同理我们设置一个协方差函数,这个协方差函数可以根据需要而给出对应的协方差矩阵。一个高斯过程可以由一个均值函数和一个协方差函数来确定!


协方差函数又称为核函数,左下角是一个协方差函数,这个函数是经典的高斯核函数,一个协方差函数确定一个协方差矩阵如右下角。

把无限维的高斯分布,每一维按时间线或者其他量展开,就得到一个高斯分布的曲线,这个曲线中的每一个点都对应了一个一维的高斯分布,而每个高斯分布都有一个均值和方差,故高斯过程中每个点对应一个均值和方差。

高斯过程怎么来做预测?

第一步,确定数据点为一个高斯过程的采样点。要确定这些孤立的点是遵循一个高斯过程的,但是高斯过程又是由一个均值函数和一个协方差函数来确定的,也就是说我们要找均值函数和协方差函数,这里我们不妨设均值函数为常数0,也就是每个点对应的高斯分布的均值为0!那么协方差函数怎么确定呢?我们采用一个经典的高斯核函数的变形来确定这个高斯过程的协方差函数,函数表达式中有没法确定的未知量,我们称之为超参数。知道了高斯过程的均值函数和协方差函数,通过贝叶斯推断求出了所要求的点条件概率均值和方差的表达式。超参数通过最大似然估计求解。

参考:https://blog.csdn.net/qq_50310065/article/details/111775468


总结

对不同时间序列模型进行了比较分析。每个模型的数据特性、优点和缺点分别汇总:

使用GPR方法进行时序预测的文献:
1.Multistep ahead groundwater level time-series forecasting using Gaussian process regression and ANFIS
2.Uncertain prediction for slope displacement time-series using Gaussian process machine learning
3.Gaussian process regression for forecasting battery state of health
4.Monthly streamflow forecasting using Gaussian process regression

3.26学习周报

文章目录


前言

本周阅读文献《Simulate the forecast capacity of a complicated water quality model using the long short-term memory approach》,本文主要研究了LSTM模拟复杂水质模型(即环境流体动力学代码,EFDC)预测能力的能力,通过NSE系数评估LSTM性能,并应用随机森林来确定LSTM性能的关键驱动因素。结果表明,许多LSTM可以达到可接受的性能水平。叶绿素a、水温和总磷被认为是LSTM性能的关键驱动因素,这与湖沼学理论一致,证实了结构简单的LSTM可以模拟EFDC的预测能力。另外,学习了时间序列预测的相关知识,了解了时间序列预测常用的模型。

This week,I read an article which investigates the ability of LSTM to simulate the forecast capacity of a complicated water quality model. The LSTM performances are evaluated by the Nash–Sutcliffe efficiency coefficient, and random forest is applied to identify the key drivers of LSTM performance. The results show that many LSTMs could achieve an acceptable performance level. Chlorophyll a, water temperature, and total phosphorus are identified as the key drivers of LSTM performances, which are consistent with limnological theories. It is thereby confirmed that an LSTM with a simple structure could simulate the forecast capacity of EFDC. Then, I learn the relevant knowledge of time series forecasting and understood the commonly used models for time series forecasting.


文献阅读

题目:Simulate the forecast capacity of a complicated water quality model using the long short-term memory approach
作者:Zhongyao Liang , Rui Zou ,Xing Chen ,Tingyu Ren ,Han Su,Yong Liu

摘要

利用复杂的水质模型是用于预测水质的主要方法。然而,由于数据限制、大量计算和未来边界条件等限制,这些模型不容易使用。长短期记忆(LSTM)可以克服这些限制;然而,它在水质预报中的应用很少被探索。本研究研究了LSTM模拟复杂水质模型(即环境流体动力学代码,EFDC)预测能力的能力。首先,EFDC运行以产生六个水质变量的长期(12年)时间序列。这些变量与嵌入在EFDC中的方程具有内在关联,这些方程表示模拟系统的动态。LSTM的开发是为了使用六个水质变量提前1-31天预测叶绿素的浓度。然后,生成的数据用于训练具有不同模型结构(输入变量的组合、隐藏层数和滞后时间)的多个 LSTM。通过NSE系数评估LSTM性能,并应用随机森林来确定LSTM性能的关键驱动因素。结果表明,许多LSTM可以达到可接受的性能水平。叶绿素a、水温和总磷被认为是LSTM性能的关键驱动因素,这与湖沼学理论一致。隐藏层的数量和滞后时间实际上对 LSTM 性能没有影响。由此证实,结构简单的LSTM可以模拟EFDC的预测能力。结果还表明,本研究中的机制引导LSTM可能捕获某些机制特征。因此,LSTM有望成为水质预报的一种有前途的方法。

简介

水质预报对于提供早期预警和提前采取行动减轻污染至关重要,使用复杂的水质模型,例如环境流体动力学代码(EFDC),是用于预测水质的主要方法,因为这些模型能够描述水质变量的迁移和转变。在实践中,复杂的水质模型的开发总是数据要求高且耗时,此外,水质模型的预测精度在很大程度上取决于边界条件(例如天气条件和负荷输入)的预测。作为替代方案,使用数据驱动的方法可以有效地建立水质变量之间的关系,从而节省计算时间并不需要预测边界条件。然而,人们对它们的直接应用感到担忧,因为数据驱动的方法缺乏机制过程。然而,在数据驱动的方法中缺乏这些过程并不一定导致水质预测的失败。关键问题应该是数据驱动的模型是否可以模拟复杂水质模型的预测能力。如果前一个模型能够,那么即使没有代表任何机制过程的方程,也可以利用数据驱动的方法作为预测水质的有效工具。

本研究有两个研究目标:1)确定LSTM是否能够模拟复杂水质模型的预测能力,2)如果是,确定是否有可能采用简单的模型结构(例如,仅涉及几个输入变量和几个隐藏层的结构)来获得令人满意的模型性能。EFDC是使用最广泛的复杂水质模型之一(Kim等人,2017年,Zou等人,2006年),被选为水质模型。开发了许多LSTM模型,并评估了它们的性能。随机森林(Breiman,2001)进一步用于确定LSTM性能的关键驱动因素,并研究有能力的LSTM是否有可能具有简单的模型结构。

方法

鉴于全球有害藻华的临界条件,叶绿素a(CHL)被选为预测变量(LSTM的响应变量)。至于驱动因素,选择了影响藻类生长的水质变量,例如水温(TEM)和营养物质。此外,预计CHL在某些时间区间内具有紧密的自我关联。相应地选择六个变量作为预测因子:透射电镜、CHL、总磷 (TP)、磷酸磷 (PO4)、总氮 (TN) 和氨氮 (NH4)。运行EFDC以获得水质变量的12年时间序列,包括预测的响应变量和作为预测因子的几个变量。响应变量和预测变量之间存在复杂的非线性关系。如果 LSTM 能够很好地预测响应变量,那么这证实了它能够模拟 EFDC 的预测容量。其次,开发了许多具有不同模型结构的LSTM。然后根据纳什-萨特克利夫效率系数(NSE)评估它们的性能,通过该系数可以确定LSTM是否能够。最后,基于随机森林(RF)识别模型性能的关键驱动因素,这里选择随机森林是因为它能够确定变量重要性和高预测准确性。RF结果可以帮助确定有能力的LSTM是否具有简单的模型结构。
开发和评估 LSTM
时间 t 处LSTM块的状态图:

在本研究中,时间序列分为训练数据集(前9年)和测试数据集(剩余3年)两部分。为了确保输入变量保持在同一尺度上并保证 LSTM 中参数的稳定收敛,所有输入变量和响应都根据方程 (9) 进行标准化:

六个水质变量的每个可能组合都可以用作LSTM的输入变量。LSTM 的输入变量组合数为 63 (26–1).设置了 LSTM 的某些超参数,包括与模型结构最相关的隐藏层数和时间滞后。隐藏层的数量和时间滞后会有所不同,以探索它们对模型性能的影响。隐藏层数和时滞都有八种选择:5、10、15、20、30、40、50 和 60。预测天数设置为 1、3、5、…、31。因此,开发的LSTM数量为64 512个(63个×8个×8个×16个)。这些模型是使用训练数据集训练的。
至于LSTM的其他超参数,最大epoch设置为20,这意味着模型将在收敛时结束或epoch达到20。批量大小、验证分数和学习率分别为 5、0.15 和 0.001。通过时间算法的反向传播用于训练LSTM。选择均方根误差作为损失函数。
NSE是模型性能使用最广泛的标准之一,它表示为等式
基于随机森林RF识别 LSTM 性能的关键驱动因素
随机森林是环境研究中广泛使用的机器学习方法。它由分类或回归树的集合组成。它使用观测值的自举样本来生长每棵树,并且仅使用一小群随机预测变量样本来定义每个节点的拆分。每棵树都长到最大尺寸,无需修剪。最终预测是通过对所有树的结果求平均值来获得的。
在这项研究中,RF用于确定每个预测日LSTM性能的关键驱动因素;总共开发了16个RF。RF 的输入变量包括六个因子变量和两个数值变量(隐藏层数和时间滞后)。因子变量标记是否包括水质变量以预测 LSTM 中的 CHL。对于每个RF,观测值的数量为4032(63×8×8)。

结果

LSTM 的 NSE 值

每个预测日的NSE值分布如图所示。一方面,存在某些大于 0.65 的 NSE 值(LSTM 模型的比例由图 中的 p 值表示),这表明存在性能可接受的模型。随着预测天数的增加,NSE峰密度的位置向左移动,整体性能下降,如NSE的平均值和中值(分别为图中的m和med值)所示。
LSTM 性能的关键驱动因素
每个预测日的 RI 结果如图所示。如果相应的 RI 高于 0.1,则 RF 的输入变量被标识为关键驱动因素。对于所有预测日,确定了三个关键驱动因素:包含或不包含CHL,TP和TEM(。对于每个预测日,其他五个输入变量的 RI 总和小于 0.1。注意,两个超参数(隐藏层数和时间滞后)均未标识为关键驱动程序。

随着预测天数的增加,三个关键变量的折射率呈现出近似单调的趋势。随着CHL和TP的RI降低,TEM的RI表现出相反的变化。RI 的顺序也会随着预测天数而变化。从第 1 天到第 15 天,三个关键变量的 RI 顺序为 CHL > TP > TEM。在第17天,TEM取代TP的位置,成为第二个重要的驱动因素。第 23 天后,TEM 的 RI 超过 CHL 的 RI,并且 RI 顺序变为 TEM > CHL > TP。

讨论

关键驱动因素的鉴定结果与湖沼学的经典理论一致。CHL的预测取决于当前状态和滞后日的变化。
LSTM 具有简单结构模拟 EFDC 预测容量的能力
根据上述结果,结构简单的LSTM可以模拟EFDC的预测容量。首先,由于许多 LSTM 实现了可接受的性能,因此它们可以很好地模拟 EFDC 的预测容量。其次,只有三个水质变量被确定为LSTM性能的关键变量。这些水质变量始终受到定期监测。这两个超参数(隐藏层数和时间滞后)对 LSTM 性能的影响最小,并且都可以设置为较小的值。因此,具有简单结构的LSTM模型可用于获得高NSE值(图5)。最后,结果与湖沼学理论之间的一致性进一步支持了结果的可靠性。

结论

研究了LSTM模拟EFDC预测容量的能力。结果表明,在 64 512 个 LSTM 中,许多可以达到可接受的性能水平。与湖沼学理论类似,预测CHL所需的关键变量被确定为CHL,TEM和TP。隐藏层的数量和滞后时间可以设置为较小的值。因此,可以验证具有简单结构(例如,只有三个输入变量和五个隐藏层)的LSTM可以模拟EFDC的预测容量。机制引导的LSTM有望成为一种有前途的工具,因为它在预测水质方面既有效又高效。因此,未来的研究应侧重于在进行相对长期的预测时提高模型性能。

时间序列预测学习

1.基础知识

1.1什么是时间序列?

时间序列(英语:time series)是一组按照时间发生先后顺序进行排列的数据点序列。通常一组时间序列的时间间隔为一恒定值(如1秒,5分钟,12小时,7天,1年),因此时间序列可以作为离散时间数据进行分析处理。

时间序列分类
分为:平稳时间序列和非平稳时间序列
平稳时间序列,一般情况下围绕某一个值进行上下波动,无明显的趋势性。

非平稳时间序列,一般指时间序列中包含其他成分,比如趋势性,周期性,季节性和不规则性等。对于不平稳的时间序列一般进行差分处理。

1.2时间序列的基本任务?

  • 单指标时序预测任务:给定某一个指标的历史变化情况,预测其在未来一段时间内的变化。
  • 多指标时序预测任务:给定某几个指标的历史变化情况,预测其在未来一段时间内的变化。该任务与单指标时序预测任务的区别在于,几个指标之间不一定相互独立,而是存在某种影响。
  • 时序异常检测任务:从正常的时间序列中识别不正常的事件或行为的过程。可以从历史数据中检测,也可以基于时序预测对尚未发生的异常做出预警。
  • 时序指标聚类:将变化趋势类似的时序指标归至同一类别。在实际运维工作中,面对的指标可能成百上千,分别对其进行分析,工作量太大,可以在聚类的基础上再做建模分析。
  • 指标关联分析:即分析指标A是否会对指标B有影响,以及有什么样的影响(正向/负向、先后关系、多少时间步后造成影响等等)。

平稳性

平稳性是时间序列中最重要的概念之一。 一个平稳的序列意味着它的均值、方差和协方差不随时间变化。大多数的时间序列模型都假设时间序列(TS)是平稳的。首先,我们可以说,如果一个TS在一段时间内有一个特定的行为,那么它很有可能在将来遵循相同的行为。与非平稳序列相比,平稳序列的相关理论更为成熟,更易于实现。
平稳性的检验方法
ACF
平稳序列的自相关函数(Autocorrelation function,ACF)与任何特定时间 t无关,是时间间隔h 的函数,用于测量时间序列滞后值之间的线性关系,以 ρh 表示:

其中 h 是时间间隔。自相关系数是相关系数的一种,描述变量序列与自身间隔时间 h 的序列的相关性。协方差描述一个变量随另一个变量变化的程度。不同于统计学中常见的相关性分析假设变量间相互独立,自相关分析的对象是同一个变量的不同时间的值,因此, Xt 与 Xt+h 间会存在依赖。

假设检验: 常用的用于检测平稳性的假设检验是ADF(Augmented Dickey-Fuller Test)检验,p值小于0.05便可以认为平稳。
平稳性转换方法
给定一个非平稳的时间序列,一般需要将它转换为平稳序列,再做建模。常用的平稳性转换方法如下:

  • 变形(log函数等)
  • 减去移动平均、指数平均等
  • 差分

所谓差分,就是用 xt - xt-1 的值代替xt, 这是一阶差分。在一阶差分的基础上,继续做差分,就是二阶差分。对于大部分时序数据来说,二阶差分后,都可以得到平稳序列,很少用到更高阶的差分。对于很多时序预测模型尤其是深度学习模型来说,我们会发现,代码中可能并没有平稳性转换这一步。这是因为这些模型中往往有自动特征提取的步骤,从而隐性地完成平稳性转换。
评价指标

  • RMSE:均方根误差,最常见的一种。
  • MAE:平均绝对误差。
  • MAPE:平均绝对百分比误差。
  • MASE:平均绝对比例误差,这个用得不多。
  • R-square:小于0很差,等于0相当于将结果预测为均值,等于1则完全预测正确。这个也比较常见。
  • Adjusted R-square:消除了R-square中样本数量的影响。

2.时间序列预测

时间序列预测做的就是通过多种维度的数据本身内在与时间的关联特性,利用历史的数据预测未来。

算法汇总

时序预测从不同角度看有不同分类:

  • 从实现原理的角度,可以分为传统统计学,机器学习(又分非深度学习和深度学习)。
  • 按预测步长区分,可以分为单步预测和多步预测,简单来说就是一次预测未来一个时间单元还是一次预测未来多个时间单元的区别。
  • 按输入变量区分,可以分为自回归预测和使用协变量进行预测,区别在于维度中是否含有协变量,例如预测未来销售量时,如果只接受时间和历史销售量数据,则是自回归预测,如果可以接受天气、经济指数、政策事件分类等其他相关变量(称为协变量),则称为使用协变量进行预测
  • 按输出结果区分,可以分为点预测和概率预测,很多模型只提供了点预测而不提供概率预测,点预测模型后再加蒙特卡洛模拟(或其他转化为概率预测的方式)往往不能准确反映模型输出的预测概念,而在大多数场景下,概率预测更贴近事实情况,对于未来的预测本身就应该是一种概率分布。
  • 按目标个数区分,可以分为一元、多元、多重时间序列预测。举例理解,使用历史的销售量预测未来1天的销售量为一元时间序列预测,使用历史的进店人数、销售量、退货量预测未来1天的进店人数、销售量、退货量(预测目标有三个)为多元时间序列预测,使用历史的红烧牛肉面、酸菜牛肉面、海鲜面的销售量预测未来1天的红烧牛肉面、酸菜牛肉面、海鲜面的销售量(预测目标有三种)为多重时间序列预测。

传统经典时间序列预测的方法有ARIMA(一种非常流行的时间序列预测统计方法,它是自回归综合移动平均(Auto-Regressive Integrated Moving Averages)的首字母缩写),Holt-Winters(是一种(三次)指数平滑方法,Holt (1957) 和 Winters (1960) 将Holt方法进行拓展用来捕获季节因素);机器学习模型方法,这类方法以lightgbm、xgboost为代表,这类方法一般就是把时序问题转换为监督学习,通过特征工程和机器学习方法去预测;这种模型可以解决绝大多数的复杂的时序预测模型。支持复杂的数据建模,支持多变量协同回归,支持非线性问题。不过这种方法需要较为复杂的人工特征过程部分,特征工程需要一定的专业知识或者丰富的想象力。特征工程能力的高低往往决定了机器学习的上限,而机器学习方法只是尽可能的逼近这个上限。特征建立好之后,就可以直接套用树模型算法lightgbm/xgboost,这两个模型是十分常见的快速成模方法;深度学习类的方法包括Seq2Seq类,比如RNN、LSTM、DeepAR等,Attention类,如Transformer、Informer、TFT等。

深度学习中的LSTM/GRU模型,就是专门为解决时间序列问题而设计的;但是CNN模型是本来解决图像问题的,但是经过演变和发展,也可以用来解决时间序列问题。总体来说,深度学习类模型主要有以下特点:

  • 不能包括缺失值,必须要填充缺失值,否则会报错;
  • 支持特征交叉,如二阶交叉,高阶交叉等;
  • 需要embedding层处理category变量,可以直接学习到离散特征的语义变量,并表征其相对关系;
  • 数据量小的时候,模型效果不如树方法;但是数据量巨大的时候,神经网络会有更好的表现;
  • 神经网络模型支持在线训练。

LSTM学习

LSTM基础知识的学习参考 https://zhuanlan.zhihu.com/p/104475016
模型的基本架构:

class LSTM(nn.Module):
    def __init__(self, input_size=1, hidden_layer_size=100, output_size=1):
        super().__init__()
        self.hidden_layer_size = hidden_layer_size

        self.lstm = nn.LSTM(input_size, hidden_layer_size)

        self.linear = nn.Linear(hidden_layer_size, output_size)

        self.hidden_cell = (torch.zeros(1,1,self.hidden_layer_size),
                            torch.zeros(1,1,self.hidden_layer_size)) # (num_layers * num_directions, batch_size, hidden_size)

    def forward(self, input_seq):
        lstm_out, self.hidden_cell = self.lstm(input_seq.view(len(input_seq) ,1, -1), self.hidden_cell)
        predictions = self.linear(lstm_out.view(len(input_seq), -1))
        return predictions[-1]

总结

本周学习了时间序列预测方面的基础知识,对时序预测有了初步的了解,后面将继续学习深度学习相关的其他时序预测模型。

以上是关于4.2学习周报的主要内容,如果未能解决你的问题,请参考以下文章

人工智能——机器学习与深度学习思维导图

绪论

绪论

机器学习入门 机器学习简介 | 附加小练习

神经网络与深度学习摘要第1章 绪论

万门大学人工智能课目录