今天带大家精读的论文是《An integrated power load point-interval forecasting system based on information entropy and multi-objective optimization》(基于信息熵和多目标优化的电力负荷点-区间综合预测系统),该论文是一篇以电力负荷预测为背景Rearch paper,出自东北财经大学王建州老师团队。

所属期刊《Applied Energy(应用能源)》是中科院分区工程技术大类1区Top,影响因子9.746。
*中科院分区以2021年12月最新升级版为准。
1 框架结构

框架梳理:
Stage1-数据预处理
使用模糊信息粒化(Fuzzy information granulation,FIG)对数据进行数据压缩,旨在将数据提取主要信息,同时实现时间序列长度缩短,减少计算复杂度和时长的效果。
Stage2-子模型选择策略
此处选择五个子模型(DOA-BPNN、ELM、TCN、DBN 和 GRU)分别来训练并预测模糊信息粒化之后的时间序列。此处为了实验结果的公平性,每次预测进行了五次重复实验取平均预测值。
Stage3-多目标优化算法优化权重
五个子模型的预测结果使用多目标优化算法(MODOA)优化权重,进行加权,完成点预测。
Stage4-波动性分析 (区间预测)
此阶段即是在点预测的基础上进一步扩充区间,通过区间预测增强预测结果的参考价值。此处的区间预测方法使用的核密度估计。首先将点预测的误差序列生成概率分布直方图,通过拟合其概率分布函数(Probability distribution function,PDF)求出累积分布函数(Cumulative Distribution Function,CDF)。按照分位数从累积分布函数上求的对应的横坐标,来作为在某置信度下的置信区间。将该置信区间在点预测结果上进行扩充,得到最终的区间预测结果。
亮点:
模糊信息粒化能够将较长的时间序列进行压缩,将低层次、低粒度的原始超短期电力负荷数据粒化抽象为高层次、粗粒度的低维时间序列,减少模型的输入数据总量,提高计算效率。
在多目标优化算法中,多目标函数引入了MAPE和残差项(Residual variance, RV)方差最小两个目标函数,其中RV表示预测的稳定性。
区间预测所选用的非参数核密度估计,能够克服参数估计中因为数据分布的不匹配而造成的概率分布函数拟合效果差的情况,同时也省去了参数估计中匹配分布情况的环节,节省计算时间,且最终的拟合效果更优。
核密度估计中,参数的选取以结果为导向。生成PDF前需要确定两个参数——核函数和带宽(Bandweigth),由于在最优带宽下核函数的选取对结果影响并不大,因此PDF确定的关键因素在于如何求得带宽。本文重复利用了分配子模型权重环节的多目标优化算法来根据最终区间预测评估指标的结果进行带宽的迭代,从而确定出来的最优带宽。
1 模糊信息粒化

对一个时间序列进行模糊信息粒化仅需要确定两个参数,隶属函数种类和窗宽。以窗宽为6为例,该过程可以抽象的理解为,将时间序列每六个点求三个值,这三个值可以表示为这六个点中的最大值、最小值、中位数,从而实现数据的粒化,作进一步分析。
2 核密度估计
核密度估计中所涉及到的两个参数为:核函数、带宽。
前期实验及众多文献均表明,在最优带宽下,核函数的选择对结果影响不大,所以我们通常只需要在选择好一个核函数后,计算最优带宽。通过近几天的了解,目前已知求带宽的方法有:
1. 公式代入法
积分均方误差可以定量的评估核密度估计是否满足密度函数的精度要求,其计算表达式如下:
对上式求期望值可以得到平均积分均方误差MISE:
其中,和
402 Payment Required
将式 中的高阶无穷小量省略后得到渐进积分均方误差 AMISE:
402 Payment Required
对式(4-16)求偏导数, 当 时, 求得最优窗宽:
2.拇指法则(经验法)
Silverman 提出一种初等的方法Rule of thumb,即拇指法则。该法则使用样本数据的方差 按照以下公式求得带宽:
笔者通过此方法验证求得的带宽与方法一中的方法非常接近。
3. 机器学习中的网格搜索
通过机器学习中的网格搜索法进行搜寻,我将代码整理为下,方便大家使用:
# File:KDE_BestBandWeight Author:Yorick
# Wechat subscription account: iDataScience
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import GridSearchCV
from sklearn.model_selection import LeaveOneOut
from sklearn.neighbors import KernelDensity
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
file_path = r"---FileURL---"
#Import Original data
original_data = pd.read_excel(file_path, usecols=[1],header=1)
original_data = original_data.values
original_data_list = original_data.astype('float32')
original_data_list = original_data_list.flatten()
#Import Forecasting data
forecast_data = pd.read_excel(file_path, usecols=[2],header=1)
forecast_data = forecast_data.values
forecast_data_list = forecast_data.astype('float32')
forecast_data_list = forecast_data_list.flatten()
#Get the list of error
obs_dist= = original_data_list-forecast_data_list
bandwidths= 10**np.linspace(-2,1,500) #选择进行迭代的区间和次数
#Calculate the best Bandwidth
grid = GridSearchCV(KernelDensity(kernel = "gaussian"), #假设核为高斯核函数,计算带宽
{"bandwidth":bandwidths},
cv = LeaveOneOut())
grid.fit(obs_dist[:,None])
print(grid.best_params_)
# Show the bandwidth iterative image
scores = grid.cv_results_['mean_test_score']
plt.semilogx(bandwidths, scores)
plt.xlabel('bandwidth')
plt.ylabel('accuracy')
plt.title('KDE Model Performance')
plt.show()
print(grid.best_params_)
print('accuracy =', grid.best_score_)
4. 优化算法
网格搜索法的升级版,以最终预测结果为导向,更为精确的筛选出最优带宽。
3 选用数据
本文使用的三个数据集是3月2020日至2021年11月日新南威尔士州电力负荷的NEM统计数据,每半小时获取一个数据点。具体来说,每个数据集是一个7个月的负载数据周期,包含9000个数据点,并划分为1500个数据点(通过模糊信息粒化9000/6=1500)。数据的前70%被用作训练集来训练个体模型,中间的20%数据被用来优化每个模型的权重,最后10% 数据用于测量所提出系统的预测能力。
验证集的使用:在训练的过程中,每个训练轮次结束后用来验证当前模型性能,优化超参数(本文用在了子模型预测结果的加权权重上)。
3 对比试验
本文设置了四组对比实验,前三组均是在验证点预测的结果,最后一组用来验证区间预测的结果。

【实验一】和没有使用FIG的模型进行对比
对比模型的数据使用每间隔三小时取一次的数据。
【实验二】和使用了FIG的单模型进行对比
【实验三】和不同优化算法进行比较
【实验四】区间预测评估
分了两种置信水平0.05 和 0.1。
4 实验结果分析
除了常规的评价指标对比以及DM测试、MAPE提升率比较外,本文还应用了较为新颖的评估角度:
Forecasting effectiveness 预测效果
针对于点预测而言,观察预测结果的偏度和峰值进一步分析(*)
Sensitivity analysis 敏感度分析
Convergence analysis 收敛性分析
针对多目标DOA算法而言的收敛速度
—END—
往期精彩回顾
适合初学者入门人工智能的路线及资料下载(图文+视频)机器学习入门系列下载中国大学慕课《机器学习》(黄海广主讲)机器学习及深度学习笔记等资料打印《统计学习方法》的代码复现专辑
AI基础下载机器学习交流qq群955171419,加入微信群请扫码: