APP下载

基于AdaBoost的短期边际电价预测模型∗

2020-05-15张俊玮史文彬欧家祥

计算机与数字工程 2020年2期
关键词:边际决策树电价

张俊玮 史文彬 欧家祥 丁 超

(1.贵州电网有限责任公司电力科学研究院 贵阳 550002)(2.上海电力学院 上海 200090)

1 引言

边际电价[1]不仅仅是联系电力市场中三大实体即发电企业、电力市场监管者、用电方的经济纽带,也是影响发电企业、用电方经济利益的重要因子[2]。

传统的电价预测算法[3]大致有基于人工神经网络的短期电价预测,基于回归分析法的短期电价预测,基于时间序列法的短期电价预测以及基于数学仿真法的短期电价预测。单一的预测算法存在泛化能力差,容易陷入局部最小值点等缺点。相对单一的预测算法,基于AdaBoost[4]的集成学习算法把决策树(C4.5[5]和CART[6])和神经网络(线性神经网络[7]和BP神经网络[8])两组学习器的学习结果进行两两组合,这几种集成学习[9]算法比单一预测算法拥有更显著的泛化能力[10]。本文首先对数据进行了预处理:缺失值处理、异常值处理、数据变换,然后采用基于AdaBoost的集成学习算法对训练数据进行训练,得到回归模型,采用测试数据集在回归模型上进行预测。基于AdaBoost的短期边际电价预测集成学习算法给每个子样本集中样本分配初始权重,并在训练过程中不断调整样本权重,考虑到了样本之间的差异性。经实验数据分析,Ada⁃Boost算法在短期边际电价的预测中拥有较高的精确度。

2 预测模型

2.1 C4.5算法

C4.5决策树使用信息增益率[11]来选择节点属性,C4.5既能够处理离散型属性[12]也能够处理连续型属性。C4.5的缺点是在构造树的过程中,需要对数据集进行多次的顺序扫描和排序,导致算法的效率比较低。

2.2 CART算法

CART(Classification And Regression Tree)算法即分类回归树算法,是决策树的一种实现。CART采用一种二分递归分割技术[13],把当前样本划分为两个子样本,这样生成非叶节点时就都会有两个分支,所以CART算法生成的决策树是结构简介的二叉树[14]。

2.3 线性神经网络

神经网络中最基本的成分是神经元模型。线性神经网络[15]是最简单的一种神经元网络,有一个或者多个线性神经元构成。线性神经网络的传输函数是线性函数[16],在收敛精度和速度上相比于感知器有了很大改进,但是由于其线性运算规则的局限性,只能解决线性可分的问题[17]。图1是线性神经网络的一个简单模型。

图1 线性神经网络的一个简单模型

2.4 BP神经网络预测模型

BP神经网络运用后向反馈(Back Propaga⁃tion)。其网络络结构包括输入层、隐含层、输出层3层,如图2所示。由图2可清楚地看到BP网络目标信号和网络输出之间误差∆s的反向传播。

单一的BP神经网络存在一些问题:算法的学习收敛速度慢;易陷入局部最优值;隐含层节点数的选取往往凭借经验,进一步影响网络的逼近能力及推广性质;网络参数(权值、阙值)确定一般未能达到最佳。

图2 BP神经网络结构图

3 AdaBoost算法

AdaBoost是adaptive boosting的缩写,运行机制如下:给初始样本训练集中每个样本赋予一个权重,一开始这些权重都相等,这些权重构成了向量D。先用初始训练集训练出一个基学习器,根据这个训练出的基学习器的表现对训练样本集进行调整,增加错样本的权重减少正确样本的权重,使先前训练过程中的错训练样本在后续训练中受到更多的关注,然后使用调整后的样本分布来训练下一个基学习器。重复进行上面的过程,直到基学习器的数目达到预定的值T,最后将这T个基学习器进行加权融合,产生一个最后结果的学习器。

3.1 AdaBoost基础模型

本文采用了一种基于AdaBoost算法框架的集成学习算法来对短期边际电价进行预测。在该算法中,有四个基学习器:C4.5决策树、CART决策树、线性神经网络和BP神经网络。

决策树是一个自上而下生成的过程,每个内部节点都各自拥有对应这一条分枝解答方案,这个解答方案中包括了该节点的属性和判断规则。最后每个叶节点都会对应一个分类。一条由根节点到叶节点的路径可以解释出某一个分类的形成规则,所以使用决策树可以很容易地生成规则,规则很容易解读。神经网络是“向后传播分类法”。一个神经网络中的神经元分为输入和输出两种功能,其中每个连接都与一个权重相关联。神经网络是以分类树的形式创建层次聚类。有别于决策树,神经网络的聚类方法将每个数据簇描述为一个样本。样本充当了簇的“原型”,这里不一定是对应一个特定的数据实例或者对象。神经网络的分类树不同于决策树。它的每个节点应对一个概念,包含了该概念的概率描述,汇总分类在该节点下的对象。由于以上的对比,所以AdaBoost的弱学器选择了差异较为对称的决策树和神经网络。因为预测模型的结果是连续形数据所以决策树选用了C4.5和CART算法。

四种基学习器进行两两组合分别产生:

1)基于C4.5和线性神经网络的AdaBoost算法;

2)基于C4.5和线性神经网络的AdaBoost算法;

3)基于CART和BP神经网络的AdaBoost算法;

4)基于CART和BP神经网络的AdaBoost算法。

基于AdaBoost的短期边际电价预测模型流程图如图3所示。

图3 基于AdaBoost的短期边际电价预测模型流程图

3.2 训练流程

使用训练数据集对基于AdaBoost的集成学习算法来进行训练的过程如下:

1)根据季节的不同将原始样本集拆分为2个训练样本集,同时初始化每个样本集中单个样本的权重。初始化公式为

式中,i为某个样本;n为该样本所属样本集的样本容量。

2)分别针对这两个样本集每个样本集构建一个基学习算法,本文选择的四个基学习算法分别是C4.5决策树,CART决策树,线性神经网络和BP神经网络,每种预测模型分别从决策树和神经网络中各选择一种。由于算法的功能相似,可以将每个算法用公式描述为

式中,wi为第i个样本集中样本权重分布向量。

3)用选择的两个基算法分别对两个训练集进行训练,生成了两个子模型。对生成的子模型利用测试数据及来计算误差进行评估。误差函数的数学描述为

式中,yi为实际值;nj为样本集的样本容量。

4)根据式(3)中计算出的结果Ej重新计算各个基算法的权重,各基算法的权重重新分配的计算公式如下:

如果迭代没有达到一定的次数即迭代的最大上限或者没有满足验证条件:

式中,ξ为误差的期望值。那么调整各子训练中每个样本的权重,并返回步骤3)。否则,退出整个流程。调整公式为

其中,Kj是归一化系数,用于使W'i服从正态分布。

3.3 预测流程

首先对数据进行了处理,在预测的过程中使用测试数据集,通过使用训练样本集训练好的基于AdaBoost的边际电价预测模型来预测未来1天48点的边际电价。同样地,预测样本中的温度输入使用未来NWP数值天气预报数据来替代预测日的实际温度数值,而预测日系统负荷也由电力市场中的预测负荷来替代实际系统负荷,这种机制会产生一定误差。

4 算例实证分析与模型检验

4.1 数据预处理

电价数据一般情况下都是比较平稳的。对边际电价影响较大的因子有当天的系统负荷、近期历史电价、气候变化、季节变化、节假日政治活动等。在节假日,由于系统的负荷与平常日有明显的差异性,为了简化模型,节假日因素的影响可以通过当日系统负荷值的整体水平体现。最终选择的影响因素为历史边际电价、负荷和温度。本文使用美国电力市场的历史数据,数据的采集频率是0.5h。本文主要选取三大类属性一共17个分量:负荷类属性、历史边际电价属性和温度属性。

由于温度在一定范围内变化对边际电价的影响是相似的,所以处理温度属性时,可以对温度进行分段处理。短期边际电价预测结果的评价指标使用平均绝对百分比误差(mean absolute percent⁃age error,MAPE),其数学计算公式为

式中Yt为预测值;yt为真实值;n为预测点的个数。

在短期边际电价预测中,MAPE值的大小与预测准确的成正比,MAPE值越大,预测越准确。

4.2 AdaBoost的短期边际电价预测

基于AdaBoost的短期边际电价预测模型的核心部分是两类权重的调整:子训练集中各样本的权重和使用的各基学习算法的权重,该算法集成了决策树(C4.5、CART)和神经网络(线性神经网络、BP神经网络),每一AdaBoost算法中包含决策树和神经网络中的一种。

表2 四种AdaBoost模型训练参数

表2是四种不同AdaBoost模型的训练参数,现将输入数据分别输入到参数设定好的的四种模型中,计算模型的输出值并对其进行适当处理。

图4 不同AdaBoost预测模型的计算结果对比

图4 是四种基于不同基学习器的AdaBoost算法分别对8月20号的边际电价进行了预测,通过对预测结果进行比较分析来评估基于AdaBoost的短期边际电价预测模型的性能,可以看出四种算法预测的趋势与实际值趋势契合度很高。

基于CART的AdaBoost预测模型在前期比基于C4.5的预测模型要稳定。基于学习器CART在做回归预测上要优于C4.5,具有较好的泛化性。基于线性神经网络的AdaBoost预测模型在中后期有较大的波动,更容易陷入局部最优,而基于BP的AdaBoost预测模型在后期拟合精度较高,总体来说基于CART和BP的AdaBoost学习算法的预测误差最小。

在这C4.5、CART、线性神经网络和BP几种基学习器中,BP神经网络的表现都要比前三种优秀。为了进行充分比较,实验使用相对误差最小的预测模型(基于CART和BP的AdaBoost模型)与BP神经网络、标准支持向量机分别对8月20日的边际电价再次进行了预测,通过对预测结果进行比较分析来评估基于AdaBoost的短期边际电价预测模型的性能。其中,SVM采用了高斯核函数:

表3 实验中各模型训练参数

表3是各模型的训练参数,现将输入数据分别输入到参数设定好的的三种模型中,计算模型的输出值并对其进行适当处理。

图5 三种预测模型与实际值的对比

图5 是实际值与采用基于CART和BP的Ada⁃Boost算法与BP神经网络和SVM算法分别进行的8月20日48点短期边际电价预测结果的对比图。可以看出三种算法预测的趋势与实际值趋势契合度很高。BP神经网络的误差相对更大,在特别是在峰值电价的预测区域更加明显,基于CART和BP的AdaBoost学习算法的预测误差最小。结果从实证上说明了AdaBoost能够很好地在基学习器预测结果的基础上通过权重调整进行有效的优化,使得预测的最终结果更加接近实际值。

图6 三种算法的平均绝对百分比误差

图6 对比了三种算法的在预测的48点每一个点上的绝对误差百分比,从图中能更加直观地看到三种算法在48点预测值的误差百分比曲线。BP神经网络在大部分预测点上的误差都要明显高于另外两个算法。SVM算法的预测结果误差百分比介于两者之间,而且SVM算法主要是因为个别点的误差过大导致了算法泛化能力低。而本文提出的基于AdaBoost的集成学习算法基本上在每个点的绝对误差百分比都小于5%,波动相对较小,说明这种集成学习算法具有更高的泛化能力。

以上的实验结果说明:

1)在一天的48点边际电价值中,某些时刻电价变化比较剧烈,这种现象也说明了影响电价变化的因素众多,电价预测的难度比较大;

2)SVM算法和BP神经网络受到经验性训练参数设置的影响,预测的精度相对较低,而且出现个别点的误差明显偏大,泛化能力较弱。

3)常用的两种预测算法在预测过程误差普遍比基于AdaBoost的集成学习算法要大,泛化能力不如集成学习算法。集成学习的强泛化能力在误差计算上体现在误差受整体误差的影响比较大且整体误差比较稳定。

5 结语

本文将提出一种基于AdaBoost的短期边际电价预测集成学习算法并通过实验论证了模型的可用性。最后通过实验分析了AdaBoost算法在短期边际电价预测中的表现,主要评价指标为平均绝对百分比误差,横向对比了采用不同基学习器的Ada⁃Boost算法的性能,基于CART和BP的AdaBoost模型要优于其他三种模型。纵向对比了集成学习算法和SVM算法以及单一BP神经网络算法预测结果的精确度,验证了集成学习能够提高预测准确度,并且提升算法的泛化能力。

相对于传统的短期负荷预测模型,神经网络在做回归预测上拟合能力强,但容易陷于局部最优,不具备较强的泛化能力,决策树拥有较强的泛化能力,但是在单个场景的预测精度不如神经网络。本文基于AdaBoost模型的短期边际电价集合了决策树泛化能力强和神经网络拟合能力强的优势,通过决策树先学习样本,再通过神经网络强化学习决策树错误样本,从而达到同时提高预测模型泛化能力和拟合精度的目的。

猜你喜欢

边际决策树电价
学会坚持,学会放弃,理性行动
浅议导数和边际在量本利经济分析中的应用
简述一种基于C4.5的随机决策树集成分类算法设计
决策树学习的剪枝方法
决策树在施工项目管理中的应用