文章编号:1007−2322(2021)03−0325−07
文献标志码:A
中图分类号:TM715
基于Prophet 与XGBoost 混合模型的短期负荷预测
朱江行1,邹晓松1,熊炜1,袁旭峰1,2,艾小清1,彭月1
(1. 贵州大学电气工程学院,贵州省贵阳市 550025;2. 贵州电网有限公司电力科学研究院,贵州省贵阳市 550002)
Short-Term Power Load Forecasting Bad on
Prophet and XGBoost Mixed Model
Zhu Jianghang 1,Zou Xiaosong 1,Xiong Wei 1,Yuan Xufeng 1,2,Ai Xiaoqing 1,Peng Yue 1
(1. School of Electric Engineering, Guizhou University, Guiyang 550025, Guizhou Province, China ;
everywhere
2. Guizhou Electric Power Rearch Institute; Guiyang 550002, Guizhou Province, China )
摘要:准确有效的预测电力负荷对电网的安全稳定运行具有重要的参考价值。通过对Prophet 框架和XGBboost (eXtreme gradient boosting)机器学习模型的深度分析,提出了基于Prophet 与XGBoost 的混合电力负荷预测模型,针对大量的历史电负荷数据、日期信息、气象数据,分别构建Prophet 电力负荷预测模型和XGBboost 机器学习预测模型,通过误差倒数法将Prophet 和XGBoost 结合得到混合预测模型。应用所提方法对西南地区某地市历史电负荷数据进行验证,结果证明,Prophet-XGBoost 混合模型比支持向量机回归模型(SVR, support vector regression)、Prophet 模型和XGBoost 模型拥有更高的预测精度,且与SVR 模型相比运行时间更短。
关键词:短期负荷预测;Prophet ;XGBoost ;混合模型;机器学习
Abstract :Accurate and effective load forecasting is of great importance to cure and stable operation of power grid.Through deep analysis on Prophet frame and extreme gradient boosting (abbr. XGBboost) machine learning model, a hybrid load forecasting model bad on Prophet-XGBoost was pro-pod. Bad on large amount of historic load data, data information and meteorological data, a Prophet bad load fore-casting model and an XGBboost bad machine learning fore-casting model were constructed respectively, and by means of reciprocal error method the Prophet and XGBoost were com-bined to obtain hybrid forecasting model. Taking historical load data of a certain city located in Southwest China for example,
the propod hybrid model was applied to the load forecasting test, and the results show that using the propod Prophet-XG-Boost hybrid model a higher forecasting accuracy can be ob-tained than by such models as support vector machine regres-sion (abbr. SVR,support vector regression) model, Prophet model and XGBoost model, and the time wasted for the load forecasting by the propod method is much shorter than that by SVR model.
Keywords :short-term forecasting ;Prophet ;XGBoost ;mixed model ;machine learning
DOI :10.ki.1007-2322.2020.0321
0 引言
在我国高速经济发展中,电力负荷的预测已成为一项重要而艰巨的任务。通过可靠且高质量的负荷预测模型准确地预测电负荷及其变化趋势能够为电网制定调度策略、供电计划提供重要参考[1-2]。
电力系统信息化的发展,分布式电源的大量使用以及电动汽车的出现,增加了配电网中电力消耗的复杂性,对电负荷预测的准确性和稳定性提出了更高的要求。国内外众多学者已对电力负荷预测的理论和方法开展了大量的研究,针对用电负荷的预测,常用的方法主要包括时间序列分析法和机器学习分析法两类[3-4]:时间序列分析方法主要包含指数平滑模型法[5]、自回归方法[6]和累积自回归滑动平均
(Auto regressive Integrated Moving Average model ,ARIMA)方法[7]等,时间序列分析方法主要根据历史电负荷和现在电负荷预测未来电负荷,但其只考虑了数据的时间相关
基金项目:国家自然科学基金资助项目(51667007);贵州省科学技术基金项目([2019]1058)
Project supported by National Natural Science Foundation of China (51667007);Science and Technology Foundation of Guizhou Province ([2019]1058)
第 38 卷 第 3 期现 代 电 力
Vol.38 No.32021 年 6 月
Modern Electric Power Jun. 2021
性因素,并没有考虑外界因素对预测对象的影响,故当有特殊时段时,其预测结果偏差可能较大;机器学习分析法主要包含专家系统法[8]、支持向量机(support vector regression,SVM)[9]、随机森林[10]和人工神经网络(Artificial Neural Network,ANN)[11]等。文献[12]提出了一种基于岭回归估计的径向基函数神经网络短期负荷预测方法,解决了输入多重共线性问题;文献[13]利用改进的PSO-RVM (Particle swarm optimization-Relevance Vector Machine)算法对各小波分量进行预测然后叠加得到最终预测值,为后期运行可靠性评估提供数据支撑,机器学习分析法能够考虑气象、时间及日期等多特
征进行预测,提高预测精度。此外也有不少研究人员将多种单一模型进行结合得到混合模型;文献[14]针对负荷数据时序性和非线性的特点,通过卷积神经网络(Cellular Neural Network,CNN)构建多特征向量作为长短期记忆网络(Long Short-Term Memory,LSTM)的输入,将CNN与LSTM有效结合,进一步提高了预测精度;文献[15]采用误差倒数法将LSTM与XGBoost (Xtreme gradient boosting)结合,修正单一模型误差较大的时序数据,以降低单一预测模型误差。
Prophet模型可将时间序列通过一定的函数变换为每小时、每日、每周、每季度及每年等不同时间维度的组合模式,并加以整体趋势[16],其主要考虑了时间相关性,对气象等因素考虑较少;XGBoost算法运行速度较快,并且通过人为对数据进行预处理,构建考虑气象,日期等多因素的特征向量,考虑了多因素影响[17]。兼顾Prophet 和XGBoost各自独有的优点,本文提出一种基于Prophet-XGBoost混合模型的短期负荷预测方法,较单一模型预测精度更高,较SVR模型运行时间更短。
1 Prophet模型
2017-02-24,Facebook发布了时间序列预测框架Prophet,与传统的时间序列预测方法相比,有以下优点:其具有较好的灵活性,轻松适应多个季节的季节性,并通过分析对趋势做出不同的假设;测量值不必呈等间距分布,也不需要插值缺失值;拟合速度较快;预测模型具有易于解释的参数,这些参数可通过分析对预测进行强加。
g(t)
s(t)h(t)
Prophet实质上是一个基于自加性模型的预测时间序列数据的模型,模型整体可以分解为三个主要部分:趋势项(growth) 、季节项 (asonality)、节假日项(holidays) ,它们通过下式叠加在一起:
εt
式中:代表误差项,一般情况下,假设其服从均值为0的正态分布,其主要用来反映未在模型中体现的异常变动。
g(t)为趋势函数,包括调节模型光滑度的参数和不同程度的假设,主要是对时间序列中的分段线性增长或logistic饱和增长等非周期性变化进行建模,根据数据中的变化点(changepoint)检测趋势走向。本文采用logistic饱和增长模型,基本趋势项采用一个逻辑回归模型:
k b(t)C(t)
t g(t)C(t)
式中:代表增长率;表示偏移量;为模型容量;随着的增加,趋近于。
s(t)
s(t)
代表周期性变化,为了拟合并预测季节的效果,Prophet基于傅里叶级数提出了一个灵活的模型,可根据以下公式进行估算:
N T
T T2n
a1,a2,···a N b1,b2,···b N
式中:代表周期总数;代表某个固定的周期(年度数据的是365.25,周数据的是7);代表期望在模型中使用该周期的个数;,表示模型中需要估计的参数。
长度英文h(t)
h(t)
代表节假日效果,节假日和大事件都会导致时间序列中出现可预测的波动。不同节假日及大事件在不同时刻下的影响都能建立独立模型,给每个独立模型制定一个时间窗口,其中考虑了节假日的影响有窗口期(如中秋节的前几天和后几天),同一个窗口期中的影响为相同值。节假日效果模型根据以下公式进行估算:
好人好事演讲稿
L i iκi
D i
t
式中:为节假日集合;为第节假日;为对应节假日对预测值的影响因子;为窗口期中包含的时间。
Z(t)=[1(t∈D1),···1(t∈D L)]
定义,可得:
326现 代 电 力2021 年 6 月
1.1 Prophet建模
电力负荷数据具有时序性,本文利用Prophet 模型对历史电力负荷数据进行实验,模型构建步骤如下:
1)数据处理。
Prophet的输入量是一个包含两列的数据框,第一列为日期,第二列为与日期相对应的电力负荷数据,本文采用西南地区某地市2013-01-01至2015-12-31日的电力负荷数据,数据的采样周期为1h,包含了每天24个采样点的负荷情况,其中训练集选为2013-01-01到2015-03-13的电力负荷数据,预测目标为2015-03-14日各小时点的电力负荷。
2)参数调优。
在python3.7环境下调用fbprophet软件包,Prophet预测模型中对实验结果影响较大的参数有趋势模型、转折点数量、季节拟合度和假期拟合度。具体步骤如下:
① 选择趋势模型为分段线性的趋势;
② 根据电力负荷数据的规律给参数转折点设定一个初始值为2,选择季节拟合度和假期拟合度的初始值都分别为8和9,并在节假日项中设置节假日特征如表1所示;
manage是什么意思表 1 节假日特征表
Table 1 Holidays feature list
节假日日期
元旦节2013-01-012014-01-012015-01-01
春节2013-02-102014-01-312015-02-19
清明节2013-04-042014-04-052015-04-05
劳动节2013-05-012014-05-012015-05-01
端午节2013-06/122014-06-022015-06-20
中秋节2013-09-192014-09-082015-09-27
国庆节2013-10-012014-10-012015-10-01
③ 用处理好的训练集对Prophet模型进行训练,通过作图观察拟合效果,调节上述模型参数,使模型预测效果最佳。
2 XGBoost模型
XGBoost实现的是一种通用的Tree Boosting 算法,相比梯度提升算法,性能有10倍以上的提升。所用树模型是回归数(CART)模型,树的集成模型为:
⌢y
i
i K
F f k F
x i i
英文论文修改式中:为第个样本的预测值;为树的数目;为CART(回归树)的集合;对应于集合中的一个函数;表示输入的第个数据。
L
XGBoost模型的目标函数包含两部分:
⌢y
i
26个英文字母手写体y
tabletop
i
式中:第1项代表预测值和真实值之差;第2项为对树模型规模的惩罚项,是所有回归树的复杂度之和,即:
γλT w 式中:和为惩罚系数;为叶子节点个数;为叶子节点的分数。
f t(x i)
t
式(7)在计算过程中,通过寻找最佳,不断叠加来最小化目标函数。第轮的目标函数可改写为:
澳洲大学排名榜I j={i|q(x i=j)}j
g i=∂¯y t−1
i
l
(
y i,⌢y
(t−1)
i
)
h i=∂2
¯y t−1
i
l (
y i,⌢y
(t−1)
i
)
对式(9)进行二阶泰勒近似展开,定义
为第棵树每一叶子中的样本集合。其中,为一阶导数,
为二阶导数,于是可得:
G j=g i H j=h i
定义,可得:
w w
length是什么意思对上式中求偏导可得最优为:
第 38 卷 第 3 期朱江行等:基于Prophet与XGBoost混合模型的短期负荷预测327
将式(12)代入式(11)可得:
L Gain 目标函数越小则模型越好,在训练过程中,应用贪心算法对子树进行划分,并枚举可行的分割点,不断计算结点损失以选择增益最大的叶子结点。增益的计算公式如下:
式中:第1项为左子树分裂后的增益;第2项为右子树分裂后的增益;第3项表示不进行子树分裂的增益。
2.1 XGBoost 建模
综合考虑气象,日期等因素对电力负荷数据的影响,采用XGBoost 模型对电力负荷数据进行预测,模型的构建步骤如下:
1)数据处理。
在1.1节的数据基础上加入气象数据,构建数据集,将前5个时刻的负荷数据,工作日信息,温度,湿度,风速,降雨量构建特征向量作为输入,预测第6个时刻的负荷数据,训练集与预测范围同1.1节。
2)参数调优。
在python3.7环境下调用XGBoost 软件包,XGBoost 预测模型的参数由3种类型组成, 其中通用参数用于宏观函数控制,Booster 参数用于决定每一步的booster ,学习目标参数用于控制学习的表现,具体步骤如下:
①确定各个参数初始值及范围如表2所示;
表 2 参数初始化值及范围
Table 2 Initialization value and range of parameters
参数名
初始化值范围n_estimators 迭代次数
800
500~1500Gamma 函数00~0.2
Subsample 下采样0.80.5~0.9colsample_bytree 列占比0.80.5~0.9learning_rate 学习率
0.1
0.01~0.3
②采用网格搜索法对迭代次数、函数、下采
样、列占比及学习率进行高负荷搜索,通过观察
拟合效果,调整各参数值,如:若过拟合,则减小下采样值,直到达到最好的效果。
3 混合预测模型
t P (t )X (t )t =1,2,···,n 根据电力负荷数据分别构建Prophet
模型和XGBoost 机器学习模型,假设在时刻,
Prophet 模型的预测值为,XGBoost 机器学习模型的预测值为,,然后采用误差倒数法将两个单一模型进行组合。此时,定义集成后的Prophet-XGBoost 混合预测模型为:
εP ,εX Y t t 式中:分别为Prophet 和XGBoost 的平均相对误差;为时刻的混合预测值。
应用如式(16)和式(17)所示的倒数误差法求取权重,该方法通过对平均相对误差小的模型赋较大的权重,使整个混合模型的平均相对误差趋于减小,得到更准确的预测值。
基于Prophet-XGBoost 混合模型的电力负荷预测流程如图1所示。
图 1 Prophet-XGBoost 混合模型预测流程Fig. 1 Forecasting flow chart of Prophet-XGBoost
hybrid model
4 算例分析
4.1 预测评价指标
为评估各预测模型的质量,本文采用平均相对误差(mean absolute percentage error ,MAPE),
328
现 代 电 力
2021 年 6 月
平均误差(mean error ,ME)和均方根误差(root
mean square error ,RMSE)作为预测评价指标。各评价指标的计算方法如下:
penny pricey t t ˆy
t t n 式中:代表时刻电力负荷值实际值;代表时刻电力负荷预测值;代表电力负荷数据数量。
4.2 实验结果与分析
本文采用西南地区某地市2013-01-01至2015-12-31的电力负荷数据、气象数据、工作日数据,分别采用1.1节和2.1节所述方法对Prophet 模型和XGBoost 模型进行参数调优,各最优参数如表3、表4所示。
表 3 Prophet 模型各参数最优值
Table 3 Optimal values of parameters in Prophet model
参数名最优值
转折点数量3季节拟合度10假期拟合度
10
表 4 XGBoost 模型各参数最优值
Table 4 Optimal values of parameters in XGBoost model
参数名
最优值n_estimators 迭代次数
740Gamma 函数0Subsample 下采样0.7colsample_bytree 列占比0.7learning_rate 学习率
0.08
通过实验,式(1)中趋势项、季节项、节假日项3部分对应的分析结果如图2所示,图2(a )
至图2(b )依次为总体增长趋势、节假日项、日周期趋势。
由图2可知,该地区电力负荷呈现上升趋势,各节假日对电力负荷的影响程度不同,从日趋势来看,白天用电量多于夜晚用电量,符合实际情况。
混合模型与各单一模型的预测值和实际值的对比如图3所示,各模型的平均相对误差如图4所示,MAPE 、ME 和RMSE 值如表4所示。
由图可3知,各模型对次日实际负荷预测都得到较好的结果,其中本文所提出的Prophet-XGBoost 混合预测模型相比三个单一模型有更高的预测精度,其预测曲线与实际曲线变化趋势相似,Prophet 模型较XGBoost 模型精确度更高,SVR 模型精确度最低。由图4可知本文提出的Prophet-XGBoos 混合预测模型各时刻平均相对误
809070605040
2.50−2.5−5.0−7.5−10.0−12.5
1001020
图 2 组成成分分析
时刻
:0004:0002:0008:0006:0012:0010:0016:0014:0018:0020:0022:00
实际值SVR 模型Prophet 模型XGBoost 模型
Prophet-XGBoost 模型
图 3 各模型预测曲线对比图Fig. 3 Comparison of forecasting curves
by various models
第 38 卷 第 3 期朱江行等:基于Prophet 与XGBoost 混合模型的短期负荷预测
329