一、引言
针对传统 BP 神经网络模型在预测精度方面的不足,将 Adaboost 算法融入传统 BP 神经网络模型,从而构建 BP-Adaboost 预测模型,可对任意模型(如交通流量)进行预测分析。
二、 预测建模及原理
2.1 BP 神经网络模型
BP 神经网络模型是一种常用的神经网络模型,在模型结构上它一般分为三个部分,即输入层、隐含层和输出层,如图 1 所示。 在图 1 中,输入层对应的是数据的输入,也称为自变量,自变量经过隐含层的数据训练,在输出层输出所预测的结果,即输出层输出的是因变量。输入层节点数用 n 表示,隐含层节点数用l表示,同时输出层节点数用 m 表示, 则 BP 神经网络模型通过隐含层的非线性函数关系,建立了从输入层 n 到输出层 m 的函数关系。
BP 神经网络模型原理的核心在于数据的训练过程,其主要步骤如下:
步骤 1:初始化神经网络
根据 BP 神经网络模型的输入与输出数据矩阵计算n、l 和 m 的值, 同时初始化各层神经元之间的连接权重系数 wij 和 wjk,隐含层与输出层的范围 a 和 b,同时,确定神经元学习激励函数等参数。
步骤 2:确定隐含层输出
应用公式(1)计算隐含层的输出:
其中,f 为激励函数。
步骤 3:确定输出层输出
应用公式(2)计算输出层输出的预测结果 Ok:
步骤 4:分析误差
计算模型的预测误差如下:
其中,e表示预测误差,Y表示期望值,O 表示预测值。
步骤 5:更新权重
依据所计算的预测误差 e 的大小, 动态调节连接权重,计算公式如下:
其中,η表示学习速率。
步骤 6:更新范围
分别应用公式(5)和公式(6)更新,即:
步骤 7:输出最终预测结果
若误差大于设定的误差范围,则返回步骤2,否则输出预测结果。
2.2 BP-Adaboost 模型
将 Adaboost 融入 BP 神经网络模型中,构建 BP-Adaboost 预测模型, 提高原有 BP 神经网络模型的预测精度。 Adaboost 算法本质上是一种迭代算法,它的迭代过程是:首先,应用次分层向量随机训练样本矩阵 ,并且确定训练因子。 然后,为迭代次数,并计算迭代解,同时根据迭代结果调整训练因子,增加其权重值,经过一系列的多次迭代,得到弱预测器函数,并将这些弱预测器函数进行整合,形成具备高精度特性的强预测函数。 这样,将 Adaboost 算法融入至 BP 神经网络模型中,得到的BP-Adaboost 预测模型结构如图 2 所示,在图 2 中,BP 神经网络模型是所构建 BP-Adaboost 预测模型的基础,而Adaboost 算法是其中的关键组成部分。
在图 2 中,Adaboost 迭代算法融入预测模型中的原理具体如下:
步骤 1:选择样本矩阵以及初始化网络模型
将样本矩阵分成 组,则训练因子为 ,同时确定相关参数。
步骤 2:次分层向量的训练
划分次分层向量,记为 ,经过训练计算出相应的误差率,计算公式为:
其中,g(t)表示预测结果,y表示期望结果。
步骤3:调整测试数据权重
通过下式计算误差率 的权重,如下:
步骤 4:调整因子
调整因子的计算公式为:
步骤 5:形成强预测器函数
经过 T 次迭代共产生 T 个次级向量 f(gt,at),将这些次级向量进行组合,以此形成强预测器函数 h(x):
三、模型预测结果对比
3.1 数据模拟
利用BP网络拟合非线性函数如下:
它表示一维高斯分布高斯分布(Gaussian distribution),又称正态分布(Normal distribution)。若随机变量x服从一个数学期望为μ、方差为σ^2 的正态分布,记为N(μ,σ^2)。其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ= 0,σ=1时的正态分布是标准正态分布。
根据上述高斯函数得到该函数的2000组输入输出数据,从输入输出数据中随机选取1900组数据作为网络训练数据,用于网络训练。剩下的100组数据作为网络测试数据,用于测试网络的拟合性能。具体数据规划如下图所示:
3.2 预测结果对比
从图5图6中可以看出,强预测器预测误差低于弱预测器预测误差,BP_ Adaboost强预测器预测算法取得了良好的效果。
四、参考文献
[1]李翔, 朱全银.Adaboost 算法改进 BP 神经网络预测研究[J].计算机工程与科学, 2013, 35(8):96-102
五、Matlab代码获取
上述Matlab代码获取,可私信博主。
博主简介:研究方向涉及智能图像处理、深度学习等领域,先后发表过多篇SCI论文,在科研方面经验丰富。任何与算法、程序、科研方面的问题,均可私信交流讨论。