原文链接:http://tecdat.cn/?p=23544
上面是一个对于如何应用长短期记忆网络(LSTM)来拟合一个不稳固的工夫序列的例子。
每年的降雨量数据可能是相当不稳固的。与温度不同,温度通常在四季中体现出显著的趋势,而雨量作为一个工夫序列可能是相当不稳固的。冬季的降雨量与夏季的降雨量一样多是很常见的。
上面是某地区 2020 年 11 月降雨量的图解。
作为一个间断的神经网络,LSTM 模型能够证实在解释工夫序列的波动性方面有劣势。
应用 Ljung-Box 测验,小于 0.05 的 p 值表明这个工夫序列中的残差体现出随机模式,表明有显著的波动性。
>>> sm.stats.acorr_ljungbox(res.resid, lags=\[10\])
Ljung-Box 测验
Dickey-Fuller 测验
数据操作和模型配置
该数据集由 722 个月的降雨量数据组成。
抉择 712 个数据点用于训练和验证,即用于建设 LSTM 模型。而后,过来 10 个月的数据被用来作为测试数据,与 LSTM 模型的预测后果进行比拟。
上面是数据集的一个片段。
而后造成一个数据集矩阵,将工夫序列与过来的数值进行回归。
# 造成数据集矩阵
for i in range(len(df)-previous-1):
a = df\[i:(i+previous), 0\]
dataX.append(a)
dataY.append(df\[i + previous, 0\])
而后用 MinMaxScaler 对数据进行标准化解决。
将前一个参数设置为 120,训练和验证数据集就建设起来了。作为参考,previous = 120 阐明模型应用从 t – 120 到 t – 1 的过来值来预测工夫 t 的雨量值。
前一个参数的抉择要通过试验,但抉择 120 个时间段是为了确保辨认到工夫序列的波动性或极其值。
# 训练和验证数据的划分
train_size = int(len(df) * 0.8)
val\_size = len(df) - train\_size
train, val = df\[0:train\_size,:\], df\[train\_size:len(df),:\]# 后期的数量
previous = 120
而后,输出被转换为样本、工夫步骤、特色的格局。
# 转换输出为 \[样本、工夫步骤、特色 \]。np.reshape(X_train, (shape\[0\], 1, shape\[1\]))
模型训练和预测
该模型在 100 个历时中进行训练,并指定了 712 个批次的大小(等于训练和验证集中的数据点数量)。
# 生成 LSTM 网络
model = tf.keras.Sequential()
# 列出历史中的所有数据
print(history.history.keys())
# 总结准确度变动
plt.plot(history.history\['loss'\])
上面是训练集与验证集的模型损失的关系图。
预测与理论降雨量的关系图也被生成。
# 绘制所有预测图
plt.plot(valpredPlot)
预测后果在均匀方向准确性(MDA)、均匀平方根误差(RMSE)和均匀预测误差(MFE)的根底上与验证集进行比拟。
mda(Y_val, predictions)0.9090909090909091
>>> mse = mean\_squared\_error(Y_val, predictions)
>>> rmse = sqrt(mse)
>>> forecast_error
>>> mean\_forecast\_error = np.mean(forecast_error)
- MDA: 0.909
- RMSE: 48.5
- MFE: -1.77
针对测试数据进行预测
尽管验证集的后果相当可观,但只有将模型预测与测试(或未见过的)数据相比拟,咱们能力对 LSTM 模型的预测能力有正当的信念。
如前所述,过来 10 个月的降雨数据被用作测试集。而后,LSTM 模型被用来预测将来 10 个月的状况,而后将预测后果与理论值进行比拟。
至 t -120 的先前值被用来预测工夫 t 的值。
# 测试(未见过的)预测
np.array(\[tseries.iloctseries.iloc,t
取得的后果如下
- MDA: 0.8
- RMSE: 49.57
- MFE: -6.94
过来 10 个月的均匀降雨量为 148.93 毫米,预测精度显示出与验证集类似的性能,而且绝对于整个测试集计算的均匀降雨量而言,误差很低。
论断
在这个例子中,你曾经看到:
- 如何筹备用于 LSTM 模型的数据
- 构建一个 LSTM 模型
- 如何测试 LSTM 的预测准确性
- 应用 LSTM 对不稳固的工夫序列进行建模的劣势
最受欢迎的见解
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 进行工夫序列剖析