全文链接:https://tecdat.cn/?p=38726
原文出处:拓端数据部落公众号
分析师:Qingxia Wang
在能源领域,精准预测能源消费总量对制定合理能源战略至关重要。当前,能源消费预测分析主要运用单一模型(如灰色预测法、时间序列分析法等)和组合模型两种方式。然而,单一模型存在系统误差较高、预测结果可信度存疑等问题,提升预测精度成为亟待解决的关键。
组合预测旨在整合多个预测结果以获取更精准的单一预测,但受个体预测质量、数据特性及组合方法等因素影响,其优势并非必然呈现。过往诸多研究基于元学习等手段优化组合预测,虽各有成效却仍存在局限。
在此背景下,本文聚焦能源消费总量序列预测,运用如 ARIMA、GM (1,1)、BP 神经网络等单一模型及变权重组合预测模型开展分析,同时参考前沿的多任务优化等预测组合方法相关研究,对比不同模型预测精度,以期为我国能源战略决策提供可靠依据。
组合预测方法预测能源消费总量序列预测
在能源消费预测分析中,主要采用单一模型和组合模型两种方法进行分析。单一模型主要是利用灰色预测法、情景预测法、时间序列分析法、神经网络等研究方法。但是由于预测方法过多,预测结果可信度存在一定质疑,同时单一模型预测的系统误差较高,因此提高预测精度是重点需要解决的问题。
采用单一预测模型和组合预测模型比较分析,选取最优结果
任务/目标
采用单一预测模型和组合预测模型对能源消费总量进行预测分析,并根据模型预测结果比较预测精度选择最优预测模型。
数据源准备
从《中国统计年鉴》中选取了2000年至2020年的中国能源消费总量、经济水平、人口规模、能源结构以及产业结构的历史数据,分别使用GM(1,1)模型、ARIMA模型以及BP神经网络模型对中国未来5年的消费总量进行预测,并根据单一模型和组合模型的预测分析结果为我国未来制定合适的能源战略的决策提供参考。
建模
ARIMA,一般用于时间序列预测
ARIMA模型是指将非平稳时间序列转化为平稳时间序列,然后将结果变量做自回归(AR)和自平移(MA)。
GM(1,1)模型
GM(1,1)模型是在基于灰色预测理论的基础上,对于原始时间序列数据,通过累加生产一个新的递增的时间序列数据,使得其更具有规律性,并通过GM(1,1)中建立的微分方程,计算出相应的模型参数,从而得出数据预测公式,最终将往年的数据带入计算得出未来几年的消费总量预测值。
BP神经网络模型
BP神经网络模型是人工神经网络模型的一种,其来源是在基于人类大脑中的复杂的神经系统的运作机制,可以对输入的信息进行更加合理的分配以及处理,将不同的信息传入不同的神经元,并在一系列的处理过后再合并输出,得到最终结果。
变权重组合预测模型
变权重组合预测模型,即对每一个单一预测模型的预测值赋予不同的权重,再求其加权平均值,作为组合预测模型的预测结果。此模型的主要适用条件为,在已知各个单一模型预测精度的前提下,对预测精度较大的单一模型结果赋予较大权重值,对精度较小的单一模型赋予较小的权重值。
ARIMA模型预测结果
GM(1,1)模型预测结果
BP神经网络模型结果
组合预测模型结果
研究结论
通过多重比较分析发现,基于ARIMA模型、GM(1,1)模型、BP神经网络模型三个单一预测模型的变权重组合模型预测的模型精度最优,其预测未来五年我国的能源消费值分别为515395.4987、525669.9064、534904.6054、542270.647、548358.9693;从中可以看出,在未来五年,我国能源消费总量将突破500000万吨标准煤,并且继续呈现不断上升的趋势。
基于多任务优化的预测组合方法研究|附数据代码
摘要
预测组合旨在运用多个预测结果来生成更为精准的单一预测。本文提出了一种多任务优化范式,它能够同步解决相关问题,并进一步丰富现有的预测运筹学方法。在训练阶段,会借助特定的优化模型去甄别对各时间序列而言既准确又多样的预测方法,同时利用神经网络对该优化模型的行为加以学习,待训练结束后,借助网络确定候选方法集。实验结果显示,相较于前沿的相关方法,本文所提方法可有效提升点预测的准确性。
引言
预测在诸多领域都占据着重要地位,像金融、能源、供应链以及库存管理等领域,精准的预测不可或缺。鉴于其重要性与复杂性,数学优化方法在预测领域应用颇多,并且随着优化与机器学习不断融合,这一趋势愈发凸显。
预测组合作为一种常用的预测手段,也就是把多个预测结果整合起来,进而得到更准确的单一预测。大量研究表明,它确实有助于提升预测的准确性,不过其优势并非是必然存在的,会受到诸如个体预测的质量、待预测数据的特性以及所采用的组合方法等多种因素影响。在预测组合相关文献中,涵盖了众多主题,例如组合时运用的方法、能带来的好处以及潜在的一些问题等。像存在过拟合的风险,也就是生成的方法可能过于灵活,在训练阶段对个体预测拟合得很好,但在对样本外数据进行准确预测时却表现不佳;还有可能产生过于复杂、难以解读的预测结果,进而给决策环节带来困难。而且,诸多研究也证实了,集成预测的成功与否很大程度上取决于组件模型的选择情况。
基于元学习的预测组合
元学习能够被用于挑选最为恰当的模型,或者优化组合不同基础预测时所用到的权重。在基于特征的预测过程中,选择、提取或者估计合适的特征是普遍面临的挑战,而基于特征的时间序列表示在各类时间序列挖掘任务中愈发受到关注。在时间序列预测领域,很多成功应用都是以元学习为基础实现的。
例如,Talagala 等人研发出了名为 FFORMS 的元学习方法,它借助随机森林(RF)分类器,依据一组时间序列特征,从九个基础预测器里选出最佳的预测方法。为构建可靠的分类器,他们通过模拟与假定总体中相似的新时间序列,对观测到的时间序列集进行扩充。时间序列特征是基于手动挑选的 25 个非季节性数据特征和 30 个季节性数据特征确定的。
Montero-Manso 等人对 FFORMS 加以改进,提出了一种元学习方法用于学习预测模型凸组合的权重,由此形成了 FFORMA 框架。在运用 FFORMA 进行预测前,要从原始时间序列中提取 42 个手工特征,并计算池中各预测方法的总体加权平均误差。为确定组合的最优权重,会把问题构建为非线性回归问题,利用 XGBoost 算法将时间序列特征与预测误差相关联。
Di Gangi 提出了一个基于多层感知器(MLP)的元学习系统,它以 FFORMA 中所用的预先计算好的时间序列特征表示作为输入,能够自动生成预测方法的稀疏凸组合。该方法的优势在于,在预处理阶段无需对被排除的方法计算预测值,这样既能节省计算资源,又能提升实时应用中的可靠性,不过其预测准确性相较于 Montero-Manso 等人提出的 FFORMA 方法要差一些。
Lichtendahl 和 Winkler 分析了 Montero-Manso 等人提交的 M4 竞赛顶级策略,通过设置准确性筛选和多样性筛选,去除不准确以及预测误差高度相关的方法,发现对剩余方法取简单的截尾均值,效果几乎和 Montero-Manso 等人通过 FFORMA 产生的组合一样好。
Kang 等人对前沿的 FFORMA 框架进行调整,使其能够将预测的多样性作为输入,通过观察池中各方法预测的多样性来提取时间序列特征,利用新得到的手工特征训练预测模型的加权组合,将多样的方法纳入组合方案后,提升了 FFORMA 的点预测准确性。
此外,还有 Ma 和 Fildes 提出的针对零售预测设计的元学习算法,通过卷积神经网络(CNN)自动提取时间序列特征,然后将这些特征与用于组合预测方法的一组权重相联系;Li 等人也采用类似思路,先将时间序列数据通过递归图转化为图像,再运用计算机视觉算法提取特征,最后通过最小化与 FFORMA 中相同的加权平均损失函数,将这些特征进一步转化为预测方法的权重。
元学习器:回归和分类任务
本文的元学习方法旨在确定一组权重,用于组合由多种方法生成的预测结果,目标是充分利用这些方法之间在准确性和多样性方面的特点。Talagala 等人的方法是将问题转化为传统的分类问题,也就是把各个预测方法编码为类别,对于每个时间序列而言,最佳方法就成为目标类别。但实际上,可能存在其他方法产生的预测误差与最佳方法相近的情况,所以相较于各方法产生的预测误差,所选定的具体类别重要性就没那么高了。
通常来说,寻找为各预测方法分配权重的函数这一问题往往会被构建成回归任务,其目标是最小化组合预测的误差。回归任务可以看作是每个实例具有不同类别权重的分类任务,再结合对特定系列赋予更高重要性的实例权重。这意味着回归任务的本质和分类任务密切相关。
所提出的元学习框架包含两个不同阶段,分别是元数据生成与模型训练(离线阶段)以及预测(在线阶段)。对于每一个时间序列,会将其划分为训练期和测试期,测试期的时长与预测的时间跨度相匹配。针对每个时间序列,先在训练期对池中各预测方法进行拟合,然后在测试期提取不同预测方法所产生的预测结果,将不同方法的预测结果汇总成一个矩阵,再与测试期的实际观测值进行对比,由此得到预测误差矩阵。从这个矩阵中,通过求解一个优化问题,把准确性和多样性信息汇总为一个二元标签向量。之后,利用梯度下降优化训练由深度神经网络实现的元学习器,使其最小化一个自定义的损失函数,目的在于估计各序列的组合权重,进而实现在线阶段能够为任意目标序列生成权重以及组合预测。
- import tensorflow as tf
- # 构建神经网络模型结构
- model = tf.keras.Sequential([
- tf.keras.layers.Dense(32, activation='relu', input_shape=(input_size,)), # 定义输入层,input_size 表示输入数据的维度
- tf.keras.layers.Dense(16, activation='relu'), # 中间隐藏层
- tf.keras.layers.Dense(output_size) # 输出层,output_size 表示输出的维度
- ])
- # 编译模型,指定优化器、损失函数等参数
- model.compile(optimizer='adam', loss='mse') # 使用 Adam 优化器,均方误差(mse)作为损失函数示例
- # 进行模型训练,假设 x_train 和 y_train 分别是训练数据的输入和对应的目标输出
- model.fit(x_train, y_train, epochs=num_epochs, batch_size=batch_size) # num_epochs 表示训练的轮数,batch_size 表示每批次数据的数量
上述代码演示了构建一个简单神经网络模型的常规步骤,先是定义了模型的结构,包含输入层、隐藏层和输出层,然后对模型进行编译配置优化器和损失函数等,最后使用给定的训练数据进行模型训练,通过这样的训练让模型学习合适的参数,以便后续用于预测等任务。
多任务学习框架下的元学习方法概述
我们的元学习旨在确定权重组合多种预测方法结果,利用方法的准确性与多样性优势。有的方法将选最佳方法视为分类问题有局限,实际找权重分配函数多为回归任务,且回归和分类任务联系紧密。
所提元学习框架分两阶段,离线阶段进行元数据生成与模型训练,在线阶段做预测。对时间序列划分训练、测试期,经系列操作得预测误差矩阵,汇总信息成标签向量,用深度神经网络做元学习器,通过梯度下降优化训练,最小化自定义损失函数来估计组合权重用于后续预测。
神经网络设计
(一)整体结构与任务划分
元学习模型的深度神经网络含回归、分类两个子网。回归子网通过最小化组合预测误差学习权重;分类子网按多样性标准选预测方法作为辅助任务,二者输出结合得到凸组合最终权重。
(二)回归子网
以原始时间序列为输入,经卷积层提取特征后输出未归一化权重。遵循准确性和多样性原则,将学习问题构建成多标签分类问题,以找出适合特定序列的基础模型。
(三)分类子网
采用二次规划(QP)特征选择方法生成训练标签,为各时间序列选满足准确性和多样性要求的预测方法子集。通过相关优化问题(如下式)及构建规则得标签向量: