用R语言中的神经网络预测时间序列:多层感知器和极限学习机

原文链接:http://tecdat.cn/?p=16392


对于此示例,我将对R中的时间序列进行建模。我将最后24个观察值保留为测试集,并将使用其余的观察值来拟合神经网络。当前有两种类型的神经网络可用,多层感知器;和极限学习机。

  1.  
     
  2.  
    # 拟合 多层感知器
  3.  
    mlp.fit <- mlp(y.in)
  4.  
    plot(mlp.fit)
  5.  
    print(mlp.fit)

这是使MLP网络适合时间序列的基本命令。这将尝试自动指定自回归输入和时间序列的必要预处理。利用预先指定的参数,它训练了20个用于生成整体预测的网络和一个具有5个节点的隐藏层。print是输出拟合网络的摘要:

  1.  
    MLP fit with 5 hidden nodes and 20 repetitions.
  2.  
    Series modelled in differences: D1.
  3.  
    Univariate lags: (1,3,4,6,7,8,9,10,12)
  4.  
    Deterministic seasonal dummies included.
  5.  
    Forecast combined using the median operator.
  6.  
    MSE: 6.2011.

该函数选择了自回归滞后,并将虚拟变量用于季节性趋势。使用plot显示网络的体系结构(图1)。

 

图1.输出 plot(mlp.fit).

浅红色输入代表用于编码季节性的二进制虚拟变量,而灰色输入则是自回归滞后项。要生成预测,您可以输入:

 forecast(mlp.fit,h=tst.n)
 

图2显示了整体预测,以及各个神经网络的预测。

图2. plotMLP预测的输出。

您还可以选择隐藏节点的数量。

  1.  
    # 自动拟合 MLP
  2.  
    hd.auto.type="valid"

这将评估1到10个隐藏节点,并选择验证集MSE上的最佳节点。也可以使用交叉验证。输出误差:

  1.  
    MSE
  2.  
    H.1 0.0083
  3.  
    H.2 0.0066
  4.  
    H.3 0.0065
  5.  
    H.4 0.0066
  6.  
    H.5 0.0071
  7.  
    H.6 0.0074
  8.  
    H.7 0.0061
  9.  
    H.8 0.0076
  10.  
    H.9 0.0083
  11.  
    H.10 0.0076

ELM几乎以相同的方式工作。

  1.  
    # Fit ELM
  2.  
    elm.fit <- elm(y.in)
  3.  
    print(elm.fit)
  4.  
    plot(elm.fit)

以下是模型摘要:

  1.  
    ELM fit with 100 hidden nodes and 20 repetitions.
  2.  
    Series modelled in differences: D1.
  3.  
    Univariate lags: (1,3,4,6,7,8,9,10,12)
  4.  
    Deterministic seasonal dummies included.
  5.  
    Forecast combined using the median operator.
  6.  
    Output weight estimation using: lasso.
  7.  
    MSE: 83.0044.

在图3的网络体系结构中只有用黑线连接到输出层的节点才有助于预测。其余的连接权重已缩小为零。

图3. ELM网络架构。

该程序包在R中实现了层次时间预测。可以通过以下方式进行操作:

  1.  
     
  2.  
    forecastfunction=mlp.thief

因为对于这个简单的示例,我保留了一些测试集,所以我将预测与指数平滑进行比较:

METHODMAE
MLP (5 nodes) 62.471
MLP (auto) 48.234
ELM 48.253
THieF-MLP 45.906
ETS 64.528

MAPA这样的时间层次结构使您的预测更可靠,更准确。但是,使用神经网络会明显增加计算成本!


最受欢迎的见解

1.用于NLP的Python:使用Keras的多标签文本LSTM神经网络分类

2.Python中利用长短期记忆模型LSTM进行时间序列预测分析 – 预测电力消耗数据

3.python在Keras中使用LSTM解决序列问题

4.Python中用PyTorch机器学习分类预测银行客户流失模型

5.R语言多元Copula GARCH 模型时间序列预测

6.在r语言中使用GAM(广义相加模型)进行电力负荷时间序列分析

7.R语言中ARMA,ARIMA(Box-Jenkins),SARIMA和ARIMAX模型用于预测时间序列数

8.R语言估计时变VAR模型时间序列的实证研究分析案例

9.用广义加性模型GAM进行时间序列分析

原文地址:https://www.cnblogs.com/tecdat/p/13724978.html