﻿ 基于Stacking模型融合的光伏发电功率预测
 计算机系统应用  2020, Vol. 29 Issue (5): 36-45 PDF

Photovoltaic Power Prediction Based on Stacking Model Fusion
YANG Rong-Xin, SUN Zhao-Yun, XU Lei
School of Information Engineering, Chang’an University, Xi’an 710064, China
Foundation item: Transportation Research Project of Shaanxi Provincial Transportation Department (18-22R)
Abstract: In order to improve the prediction accuracy and reliability of photo voltaic power prediction output, this study proposes a photo voltaic power prediction method based on Stacking model fusion. The historical measured data such as temperature, humidity, and irradiance of a PV power plant are selected as the research object. Based on the feature intersection of the photo voltaic power data and the pre-processing and feature selection based on the model-based recursive feature elimination method, XGBoost and LightGBM are used. The three machine learning algorithms of Random Forest are the first layer of base learning for Stacking integrated learning. Linear Regression is used as the second layer of element learner to construct a photo voltaic power prediction model with multiple stacking models embedded in machine learning algorithms. The prediction results show that the R2 and MSE of the method reach 0.9891 and 0.1358, respectively, and the prediction accuracy is significantly improved compared with the single machine learning model.
Key words: PV     Stacking     modelfusion     baselearner     metalearner

1 算法理论介绍 1.1 XGBoost算法机理

XGBoost是经过优化的集成树模型, 从梯度提升树模型改进和扩展而来. 树的集成模型由式(1)表示:

 ${\overset{\frown} {{{\rm{y}}_i}}} = \sum\limits_{k = 1}^K {{f_k}({x_i})} ,\;{f_k} \in F$ (1)

 $L = \sum\nolimits_i {l({\overset{\frown} {{y_i}}} ,{y_i}) + \sum\nolimits_k {\Omega ({f_k})} }$ (2)

 ${\overset{\frown} {y_i}}^{(t)} = {\overset{\frown} {y_i}}^{(t - 1)} + {f_t}({x_i})$ (3)

 ${L^{(t)}} = \sum\limits_{i = 1}^n {l({\overset{\frown} {y_i}}^{(t - 1)},{y_i} + {f_t}({x_i})) + \Omega ({f_t})}$ (4)

 $\begin{split} {L^{(t)}} \approx &\displaystyle\sum\limits_{i = 1}^n {[l({\overset{\frown} {y_i}}^{(t - 1)},{y_i}) + {g_i}{f_t}({x_i})} \\ &+\frac{1}{2}{h_i}{f_t}^2({x_i})] + \Omega ({f_t}) \end{split}$ (5)

 $\left\{ \begin{array}{l} {g_i} = {\partial _{{\overset{\frown} {y_i}}^{(t - 1)}}}l({\overset{\frown} {y_i}}^{(t - 1)},{y_i})\\ {h_i} = {\partial ^2}_{{\overset{\frown} {y_i}}^{(t - 1)}}l({\overset{\frown} {y_i}}^{(t - 1)},{y_i}) \end{array} \right.$ (6)

 ${\tilde L^{(t)}} = \sum\limits_{i = 1}^n {[{g_i}{f_t}({x_i}) + \frac{1}{2}{h_i}{f_t}^2({x_i})]} + \varOmega ({f_t})$ (7)

 $\begin{split} {{\tilde L}^{(t)}}& = \sum\limits_{i = 1}^n {[{g_i}{f_t}({x_i}) + \frac{1}{2}{h_i}{f_t}^2({x_i})]} + \gamma T + \frac{1}{2}\lambda \sum\limits_{j = 1}^T {{w_j}^2} \\ &= \sum\limits_{j = 1}^T {[(\sum\nolimits_{i \in {I_j}} {{g_i}){w_j} + \frac{1}{2}} (\sum\nolimits_{i \in {I_j}} {{h_i}} + \lambda ){w_j}^2]} + \gamma T \\ \end{split}$ (8)

 ${w_j}^* = - \frac{{\displaystyle\sum\nolimits_{i \in {I_j}} {{g_i}} }}{{\displaystyle\sum\nolimits_{i \in {I_j}} {{h_i}} + \lambda }}$ (9)

wj的最优解wj*带入目标函数, 得到:

 ${\tilde L^{(t)}}_{(q)} = - \frac{1}{2}\displaystyle\sum\limits_{j = 1}^T {\frac{{{{(\displaystyle\sum\nolimits_{i \in {I_j}} {{g_i}} )}^2}}}{{\displaystyle\sum\nolimits_{i \in {I_j}} {{h_i}} + \lambda }} + \gamma T}$ (10)

XGBoost在进行节点分裂时, 采用一种贪心算法, 每次在已有的叶子节点中加入分裂. 假设ILIR分别是分裂后的左和右叶子节点的集合. 信息增益如下:

 $\begin{split} Gain =& \dfrac{1}{2}\left[ {\dfrac{{{{(\displaystyle\sum\nolimits_{i \in {I_{\rm{L}}}} {{g_i}} )}^2}}}{{\displaystyle\sum\nolimits_{i \in {I_{\rm{L}}}} {{h_i}} + \lambda }} + \dfrac{{{{(\displaystyle\sum\nolimits_{i \in {I_{\rm{R}}}} {{g_i}} )}^2}}}{{\displaystyle\sum\nolimits_{i \in {I_{\rm{R}}}} {{h_i}} + \lambda }}} \right.\\ &\left. { - \dfrac{{{{(\sum\nolimits_{i \in I} {{g_i}} )}^2}}}{{\displaystyle\sum\nolimits_{i \in I} {{h_i}} + \lambda }}} \right] - \gamma \\ \end{split}$ (11)

1.2 LightGBM算法机理

(1)按照数据集的梯度绝对值进行排序, 并选取最大的100%数据集保留, 作为大梯度样本点子集.

(2)从剩余数据集中随机选取100%数据生成小梯度样本点集合.

(3)将小梯度样本点集合乘以常数(1–a)/b放大样本数据.

(4)合并样本集, 得到一个采样集, 通过该采样集的训练, 产生一个弱学习器.

(5)不断重复上述4个过程, 直至训练的模型达到提前设置的迭代次数或者出现收敛的状态.

 图 1 Histogram 算法基本过程示意图

1.3 基于Stacking的集成学习方式

 图 2 基于Stacking的集成学习方式

(1)将原始数据集按照一定比例切分为训练集和测试集.

 图 3 第一层单个基学习器5折交叉验证示意图

 图 4 第二层元学习器模型构建示意图

(2)将训练集平均分为5份, 即对于每一个基学习器进行5折交叉验证, 在每次交叉验证时以4份作为模型的训练集, 剩余的一份作为验证集, 并且在每次交叉验证完成时, 用训练的基学习器模型对验证集和测试集进行预测.

(3)单个基学习器在完成5折交叉验证后, 会得到各个验证集的预测集, 也即训练集每条样本的预测值, 同时得到测试集的5列预测值, 然后将各个验证集的预测集整合为1列, 记为A1, 将测试集的5列预测值按行取平均, 得到B1.

(4)当第一层的m个基学习器完成训练后, 会得到第二层元学习器模型的输入特征矩阵(A1, A2, ···, Am), 将原始训练集的标签值作为模型的输出矩阵, 进行模型的训练. 同时会得到最终的测试集输入特征矩阵(B1, B2, ···, Bm).

(5)当元学习器训练完成后, 将(B1, B2, ···, Bm)作为特征矩阵, 利用模型输出模型融合后的最终预测结果.

2 基于Stacking模型融合的光伏发电功率预测模型分析

Stacking集成学习是一种建立在统计学习理论基础之上的多算法融合的机器学习方法, 一般情况下, 对于单一的预测模型而言, 其预测准确率是呈现边际效用递减的趋势, Stacking集成学习方式是组合来自多个预测模型的信息以生成新模型的模型集成技术. 将不同的机器学习算法通过不同的方式结合在一起, 以此获得比单一算法更优越的性能. 在Stacking集成学习模型中, 要充分分析每个基学习器的单独预测能力, 使得Stacking集成学习模型获得最佳的预测效果.

 图 5 Stacking模型融合架构图

Stacking框架下基于多模型融合的光伏发电功率预测方法训练流程大致如下:

(1)在数据预处理的基础上使用随机森林、XGBoost以及LightGBM算法结合递归特征消除法对输入特征进行特征选择, 删除冗余特征.

(2)划分原始数据集, 使用交叉验证方式, 优选各个模型的最优超参数.

(3)使用划分后的数据集对Stacking中的第一层预测算法分别训练, 并输出预测结果, 生成新的数据集.

(4)使用新生成的数据集, 对Stacking中第二层算法进行训练, 基于多模型融合的Stacking集成学习算法训练完毕.

3 光伏电场数据算例分析 3.1 光伏电场数据预处理

 图 6 光伏电场初始数据部分图示

3.2 光伏电场数据特征分析

 图 7 特征相关性热度图

3.3 各单模型的超参数选择与预测性能分析

3.4 Stacking模型融合预测性能及改进机制分析

 图 8 特征子集寻优过程中交叉验证的均方误差曲线图

 图 9 Stacking模型融合的性能曲线图

4 结论

 [1] 吕鑫, 刘天予, 董馨阳, 等. 2019年光伏及风电产业前景预测与展望. 北京理工大学学报(社会科学版), 2019, 21(2): 25-29. [2] 瞿谊. 风光伏发电预测技术的发展. 数码世界, 2018(4): 274. DOI:10.3969/j.issn.1671-8313.2018.04.239 [3] 张玉, 黄睿, 张振涛, 等. 基于克里格模型的光伏发电量预测. 热力发电, 2017, 46(4): 27-32. DOI:10.3969/j.issn.1002-3364.2017.04.027 [4] Guo HP, Wu SH, Wang ZQ, et al. Linear regression for forecasting photovoltaic power generation. Applied Mechanics and Materials, 2014, 494–495: 1771-1774. DOI:10.4028/www.scientific.net/AMM.494-495.1771 [5] 李芬, 宋启军, 蔡涛, 等. 基于PCA-BPNN的并网光伏电站发电量预测模型研究. 可再生能源, 2017, 35(5): 689-695. DOI:10.3969/j.issn.1671-5292.2017.05.009 [6] 张玉, 莫寒, 张烈平. 基于模糊支持向量机的光伏发电量预测. 热力发电, 2017, 46(1): 116-120. DOI:10.3969/j.issn.1002-3364.2017.01.116 [7] 肖俊明, 韦学辉, 李燕斌. 基于BP神经网络和遗传算法的光伏功率预测的研究. 计算机测量与控制, 2015, 23(2): 392-393, 405. DOI:10.3969/j.issn.1671-4598.2015.02.017 [8] 张雨金, 杨凌帆, 葛双冶, 等. 基于Kmeans-SVM的短期光伏发电功率预测. 电力系统保护与控制, 2018, 46(21): 118-124. DOI:10.7667/PSPC171595 [9] 傅美平, 马红伟, 毛建容. 基于相似日和最小二乘支持向量机的光伏发电短期预测. 电力系统保护与控制, 2012, 40(16): 65-69. DOI:10.3969/j.issn.1674-3415.2012.16.011 [10] Sun W, Zhang X. Application of self-organizing combination forecasting method in power load forecast. Proceedings of 2007 International Conference on Wavelet Analysis and Pattern Recognition. Beijing, China. 2007. [11] 高相铭, 杨世凤, 潘三博. 基于EMD和ABC-SVM的光伏并网系统输出功率预测研究. 电力系统保护与控制, 2015, 43(21): 86-92. [12] 王守相, 张娜. 基于灰色神经网络组合模型的光伏短期出力预测. 电力系统自动化, 2012, 36(19): 37-41. [13] 单英浩, 付青, 耿炫, 等. 基于改进BP-SVM-ELM与粒子化SOM-LSF的微电网光伏发电组合预测方法. 中国电机工程学报, 2016, 36(12): 3334-3342. [14] Yang XY, Jie R, Hong Y. Photovoltaic power forecasting with a rough set combination method. Proceedings of the 2016 UKACC 11th International Conference on Control. Belfast, UK. 2016. [15] Li Q, Sun YQ, Yu YJ, et al. Short-term photovoltaic power forecasting for photovoltaic power station based on EWT-KMPMR. Transactions of the Chinese Society of Agricultural Engineering, 2017, 33(20): 265-273. [16] 李多, 董海鹰, 杨立霞. 基于EMD与ELM的光伏电站短期功率预测. 可再生能源, 2016, 34(2): 173-177. [17] 张立影, 刘智昱, 孟令甲, 等. 基于小波变换和神经网络的光伏功率预测. 可再生能源, 2015, 33(2): 171-176. [18] 史佳琪. 区域综合能源系统供需预测及优化运行技术研究[博士学位论文]. 北京: 华北电力大学(北京), 2019. [19] 史佳琪,张建华. 基于多模型融合Stacking集成学习方式的负荷预测方法. 中国电机工程学报, 2019, 39(14): 4032-4042.