原文链接:http://tecdat.cn/?p=6663
原文出处:拓端数据部落公众号
此示例中,神经网络用于应用2011年4月至2013年2月期间的数据预测公民办公室的电力耗费。
每日数据是通过总计每天提供的15分钟距离的消耗量来创立的。
LSTM简介
LSTM(或长短期记忆人工神经网络)容许剖析具备长期依赖性的有序数据。当波及到这项工作时,传统的神经网络体现出有余,在这方面,LSTM将用于预测这种状况下的电力耗费模式。
与ARIMA等模型相比,LSTM的一个非凡劣势是数据不肯定须要是稳固的(常数均值,方差和自相干),以便LSTM对其进行剖析。
自相干图,Dickey-Fuller测试和对数变换
为了确定咱们的模型中是否存在平稳性:
- 生成自相干和偏自相干图
- 进行Dickey-Fuller测试
- 对工夫序列进行对数变换,并再次运行上述两个过程,以确定平稳性的变动(如果有的话)
首先,这是工夫序列图:
据察看,波动性(或生产从一天到下一天的变动)十分高。在这方面,对数变换能够用于尝试略微平滑该数据。在此之前,生成ACF和PACF图,并进行Dickey-Fuller测试。
自相干图
偏自相干图
自相干和偏自相干图都体现出显着的波动性,这意味着工夫序列中的几个区间存在相关性。
运行Dickey-Fuller测试时,会产生以下后果:
当p值高于0.05时,不能回绝非平稳性的零假如。
STD1954.72484043.43020.23611754
变异系数(或平均值除以标准差)为0.236,表明该系列具备显着的波动性。
当初,数据被转换为对数格局。
尽管工夫序列依然不稳固,但当以对数格局示意时,偏差的大小略有降落:
此外,变异系数已显着降落至0.0319,这意味着与平均值相干的趋势的可变性显着低于先前。
STD2 = np.std(数据集)mean2 = np.mean(数据集)cv2 = std2 / mean2 #变异系数
std2 0.26462445
mean2 8.272395
cv2 0.031988855
同样,在对数数据上生成ACF和PACF图,并再次进行Dickey-Fuller测试。
自相干图
偏自相干图
Dickey-Fuller测试
... print('\ t%s:%。3f'%(key,value))1%:-3.4405%: - 2.86610%: - 2.569
Dickey-Fuller测验的p值降至0.0576。尽管这在技术上没有回绝零假如所需的5%显着性阈值,但对数工夫序列已显示基于CV度量的较低稳定率,因而该工夫序列用于LSTM的预测目标。
LSTM的工夫序列剖析
当初,LSTM模型用于预测目标。
数据处理
首先,导入相干库并执行数据处理
LSTM生成和预测
模型训练超过100期,并生成预测。
#生成LSTM网络model = Sequential()model.add(LSTM(4,input_shape =(1,previous))) model.fit(X\_train,Y\_train,epochs = 100,batch_size = 1,verbose = 2)#生成预测trainpred = model.predict(X_train)#将标准化后的数据转换为原始数据trainpred = scaler.inverse_transform(trainpred)#计算 RMSEtrainScore = math.sqrt(mean\_squared\_error(Y_train \[0\],trainpred \[:,0\])) #训练预测trainpredPlot = np.empty_like(dataset) #测试预测#绘制所有预测inversetransform,= plt.plot(scaler.inverse_transform(dataset))
准确性
该模型显示训练数据集的均方根误差为0.24,测试数据集的均方根误差为0.23。均匀千瓦消耗量(以对数格局示意)为8.27,这意味着0.23的误差小于均匀消耗量的3%。
以下是预测生产与理论消费量的关系图:
乏味的是,当在原始数据上生成预测(未转换为对数格局)时,会产生以下训练和测试误差:
在每天均匀耗费4043千瓦的状况下,测试的均方误差占总日均消耗量的近20%,并且与对数数据产生的误差相比十分高。
让咱们来看看这减少预测到10和50天。
10天
50天
咱们能够看到测试误差在10天和50天期间显着升高,并且思考到LSTM模型在预测时思考了更多的历史数据,耗费的波动性失去了更好的预测。
鉴于数据是对数格局,当初能够通过取得数据的指数来取得预测的实在值。
例如,testpred变量用(1,-1)从新调整:
testpred.reshape(1,-1) array(\[\[7.7722197,8.277015,8.458941,8.455311,8.447589,8.445035, ......8.425287,8.404881,8.457063,8.423954,7.98714,7.9003944,8.240862,8.41654,8.423854,8.437414,8.397851,7.9047146\]\],dtype = float32)
论断
对于这个例子,LSTM被证实在预测电力耗费稳定方面十分精确。此外,以对数格局示意工夫序列能够进步LSTM的预测准确度。
参考文献
1.在python中应用lstm和pytorch进行工夫序列预测
2.python中利用长短期记忆模型lstm进行工夫序列预测剖析
3.应用r语言进行工夫序列(arima,指数平滑)剖析
4.r语言多元copula-garch-模型工夫序列预测
5.r语言copulas和金融工夫序列案例
6.应用r语言随机稳定模型sv解决工夫序列中的随机稳定
7.r语言工夫序列tar阈值自回归模型
8.r语言k-shape工夫序列聚类办法对股票价格工夫序列聚类
9.python3用arima模型进行工夫序列预测