专栏首页拓端tecdat用R语言中的神经网络预测时间序列:多层感知器和极限学习机
原创

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

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


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

# 拟合 多层感知器mlp.fit <- mlp(y.in)plot(mlp.fit)print(mlp.fit)

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

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

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

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

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

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

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

图2. plotMLP预测的输出。

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

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

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

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

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

# Fit ELMelm.fit <- elm(y.in)print(elm.fit)plot(elm.fit)

以下是模型摘要:

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

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

图3. ELM网络架构。

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

forecastfunction=mlp.thief

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

METHOD

MAE

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进行时间序列分析

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 使用R语言进行时间序列(arima,指数平滑)分析

    您要分析时间序列数据的第一件事就是将其读入R,并绘制时间序列。您可以使用scan()函数将数据读入R,该函数假定连续时间点的数据位于包含一列的简单文本文件中。

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

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

    拓端
  • R语言通过WinBUGS对MGARCH和MSV模型进行贝叶斯估计和比较

    经济全球化和金融市场的完整性促进了对资产定价,风险管理,投资组合选择等各个领域的多元波动建模的需求。因此,两种类型的模型 - 多变量广义自回归条件异方差(MGA...

    拓端
  • 使用R语言进行时间序列(arima,指数平滑)分析

    您要分析时间序列数据的第一件事就是将其读入R,并绘制时间序列。您可以使用scan()函数将数据读入R,该函数假定连续时间点的数据位于包含一列的简单文本文件中。

    拓端
  • DeepMind丨深度学习最新生成记忆模型,远超RNN的GTMM

    【新智元导读】DeepMind 的最新研究成果,对广泛使用于语音识别、图像识别、语义理解等领域的深度学习人工网络RNN性能带来显著提升(substantiall...

    新智元
  • 再谈数据挖掘——时序预测初探

    1. 背景 先来看两个例子,下面两幅图展示了百度在趋势预测方面的应用案例,一个是世界杯期间的比赛输赢预测,另一个是北京各旅游景区的游客人数预测。 ? ? 这两...

    腾讯大数据
  • 机器学习中时间序列预测的一些常见陷阱

    时间序列预测是机器学习的一个重要领域。说它重要是因为有很多预测问题都涉及时间成分。然而,虽然时间成分补充了额外的信息,但与其他预测任务相比,时间序列问题更难以处...

    商业新知
  • 独家 | 如何用XGBoost做时间序列预测?

    本文介绍了如何用XGBoost做时间序列预测,包括将时间序列转化为有监督学习的预测问题,使用前向验证来做模型评估,并给出了可操作的代码示例。

    数据派THU
  • 用python做时间序列预测一:初识概念

    相比朴素法,就是考虑了季节性,也就是说将同期的最后一次观测值作为本期的预测值,比如预测本周的数值,那么就将上周的周一观测值作为本周的周一预测值,上周的周二观测值...

    程序员一一涤生
  • R语言︱机器学习模型评价指标+(转)模型出错的四大原因及如何纠错

    笔者寄语:机器学习中交叉验证的方式是主要的模型评价方法,交叉验证中用到了哪些指标呢?

    素质

扫码关注云+社区

领取腾讯云代金券