本文将用6400字介绍时序预测在电力行业中的应用。
首先必须要理解电量和负荷两个概念。
电量:
电量,又称“用电量”,是指用电对象消耗有功电能的数量,以kW·h(千瓦·时)为计量单位。它是用电的有功功率与时间乘积累积量,常用电能表计量。根据用电对象的不同,可分为单台用电设备用电量、产品的生产用电量、企业(车间、工序、工艺)用电量(包括其内部的输变电过程中损耗电量),行业用电量等。用电量主要用于能源消费的统计、贸易结算、设备和产品能耗评价。用电量是电力消费过程中一个非常重要的特征量,是一项重要的能源消费指标。
负荷:
负荷,又称“用电负荷”。电能用户的用电设备在某一时刻向电力系统取用的电功率的总和。根据电力用户的不同负荷特征,电力负荷可区分为各种工业负荷、农业负荷、交通运输业负荷和人民生活用电负荷等。
背景
在电力行业中,电量和负荷的研究有助于电网的稳定运行,帮助电力进行迎峰度夏和迎峰度冬,电量和电力是需要持续研究的内容。
地区电量数据能及时真实反映当地经济建设和社会生产情况,行业电量数据能直接展示本地不同行业生产规律和发展态势。对于供电公司而言,需要常态化地预测未来一个月供电区域内全行业高压用户售电量以及外贸企业用电量。
2021年下半年以来,国家层面多个政策文件对“电网企业代理购电”做出明确安排。
如2021年10月国家发改委《关于进一步深化燃煤发电上网电价市场化改革的通知》(下称“1439号文”)要求,各地有序推动工商业用户全部进入电力市场,对暂未直接从电力市场购电的用户由电网企业代理购电;同期,国家发改委办公厅印发的《关于组织开展电网企业代理购电工作有关事项的通知》(下称“809号文”)也要求,各地结合当地电力市场发展情况,不断缩小代理购电范围。
电量预测对国家政策、经济运行和供电单位而言都有着强烈的需求。
电力系统负荷预测是指在充分考虑一些重要的系统运行特性、增容决策、自然条件与社会影响的条件下,研究或利用一套系统地处理过去与未来负荷的数学方法,在满足一定精度要求的意义下,确定未来特定时刻的负荷数值。
众所周知,电能具有难以大量储存的特点,因此要求电力系统的发电、输电、用电必须同时完成,要求发电量与用电量需保持一个动态的平衡,也就是说,电力系统指定的发电计划与实际用电量越接近越好,因此电力负荷预测是电力系统运营中尤其重要的工作之一。随着电力行业的高速发展,配电网中分布式电源以及电动汽车充电桩的接入,增加了用电模式的复杂性,因此,对于负荷预测精度的要求也随之增高。
提高负荷预测技术水平,有利于计划用电管理,有利于合理安排电网运行方式和机组检修计划,有利于节煤、节油和降低发电成本,有利于制定合理的电源建设规划,有利于提高电力系统的经济效益和社会效益。
随着电力中24点和96点负荷采集系统的完善,负荷预测的重要性开始凸显。
电力负荷数据一般具有一定的周期性如周周期性、月周期性和年周期性,同时电力负荷也会受到多方面外界因素如温度、天气、节假日、电价、人口因素以及用户行为等影响,而表现出一定的随机性。这样的随机性导致的不确定性显著增加了短期负荷预测的难度。
什么是时间序列
时间序列过程(time series process)定义为一个随机过程{Xt|t∈T},这是一个按时间排序的随机变量的集合。也就是将每一个时刻t位置的点作为一个随机变量。T是索引集合(index set),T决定定义时序过程以及产生观测值的一个时间集合。
这里假定: (1)随机变量Xt的取值是连续的; (2)时间索引集合T是离散且等距的。
用电负荷就是典型的时间序列
还有一种你天天见的时间序列
而与之对应的两种应用就是电力负荷预测和量化交易。
时间序列有哪些任务类型
给定一组时间序列数据,通常会要求回答一个或多个有关它的问题。时间序列数据出现的主要问题类型取决于数据的上下文以及收集数据的原因,下面给出一些常见的目标:
描述:描述时间序列的主要特征,例如:序列是递增还是递减;是否有季节性模式(例如,夏季较高,冬季较低);第二个解释变量如何影响时间序列的值?
监控:检测时间序列行为何时发生变化,例如负荷突然下降,或者突然出现峰值。
预测:从当前值预测时间序列的未来值,并量化这些预测中的不确定性,比如上一小节讲到的电力负荷预测和量化交易。
分类:给定多个时间序列,将它们按照相似性进行分类,比如给定负荷数据,分类为工业负荷或民用负荷。
假如给定用电负荷数据,以上4个任务就是典型的4种题型。
什么是时序预测
时间序列预测就是利用过去一段时间的数据来预测未来一段时间内的信息,包括连续型预测(数值预测,范围估计)与离散型预测(事件预测)等。时间序列预测有两个要素:时间要素和数值要素。
时间序列预测特点如下: (1)时间序列模型是依赖于事件发生的时间先后顺序的,同样大小的值改变顺序后输入模型产生的结果是不同的。 (2)在相同时间间隔内测量到的数据点:小时、每天、每周、每X天等。 (3)较复杂的预测建模问题,与回归分析模型的预测不同。
时序预测有哪些分类
从维度上来说,时间序列可以分为:单变量预测和多变量预测。
(1)单变量时间序列(Univariate Time Series):只考虑单个变量的时间序列,不考虑其它变量对该变量的影响。
(2)多变量时间序列(Multivariate Time Series):多维时间序列的各维度高度相关,数据处理时应当综合考虑各维度,以免造成有效信息损失。
按照预测多少,时间序列可以分为:单步预测和多步预测。
单步预测是每—次预测的时候输入窗口预测未来一个值。
多步预测是每—次预测的时候输入窗口预测未来多个值。
举个例子:
有一组时序数据[1,2,3,4,5,6,7,8,9,10],利用这组数据训练一个模型,使其能对后面提供的数据做一个单步的预测。在此处令n_input=3,n_output=1,处理后的数据变为:
[1,2,3] =====> [4] [2,3,4] =====> [5] [3,4,5] =====> [6] [4,5,6] =====> [7] [5,6,7] =====> [8] [6,7,8] =====> [9] [7,8,9] =====> [10]
假设一组时序数据为: [[1,11],[2,12],[3,13],[4,14],[5,15],[6,16],[7,17],[8,18],[9,19],[10,20]],对其进行两步预测,在此处令n_input=3,n_output=2,处理后的数据变为:
[[1,11],[2,12],[3,13]] ======>[4,5] [[2,12],[3,13],[4,14]] ======>[5,6] [[3,13],[4,14],[5,15]] ======>[6,7] [[4,14],[5,15],[6,16]] ======>[7,8] [[5,15],[6,16],[7,17]] ======>[8,9] [[6,16],[7,17],[8,18]] ======>[9,10]
监督学习是指:利用一组已知类别的样本调整分类器的参数,使其达到所要求性能的过程,也称为监督训练或有教师学习。
对于监督学习,时序的关键是进行特征工程和构建数据集。
举个例子,特征的抽取。
时序序列中,最大值,最小值,均值,中位数,局部峰值都是特征。
电力负荷预测
现在电力负荷有日负荷、24点负荷和96点负荷,一般研究的是24点负荷。24点负荷即1天内采集24个点的用电负荷,即每小时采集1个数据,研究的时序数据的时间频率是1h。
在电力系统中,台区是指(一台)变压器的供电范围或区域。它是电力经济运行管理的名词。
以单个台区级别的24点负荷数据为例,利用时序数据进行次日24点负荷的预测(单变量多步预测任务)。该任务的数据表现如下图所示,P代表有功功率。
这是一个台区真实的负荷例子,数据分布图展示了24点负荷的数据分布形态,周期特性和趋势性不明显。
如何构建时间序列特征
时序的特征有统计特征、维度特征和滑窗特征。
统计特征 对时间序列进行统计分析是最容易想到的特征提取方法,这里包括的特征有: 简单特征:均值、标准差、极值、分位数、尖峰个数、缺失个数、偏差等; 高级特征:自相关性、周期性、趋势(斜率)、频率、随机噪音等。
维度特征 维度特征是提取时间序列在时间维度上的信息,包括:
(1)连续型特征 持续时间、时间间隔
(2)离散型特征 小时级特征:哪个时间段(0-24) 天级特征:一周中的星期几、工作日、周末、法定假日 星期级特征:一个月中的第几个星期、一年中哪个星期 月份级的特征:第几个月份
滑窗特征 将时间序列在时间轴上划分窗口是一个常用且有效的方法,包括滑动窗口(根据指定的单位长度来框住时间序列,每次滑动一个单位),与滚动窗口(根据指定的单位长度来框住时间序列,每次滑动窗口长度的多个单位)。
窗口分析对平滑噪声或粗糙的数据非常有用,比如移动平均法等,这种方式结合基础的统计方法,即按照时间的顺序对每一个时间段的数据进行统计,从而可以得到每个时间段内目标所体现的特征,进而从连续的时间片段中,通过对同一特征在不同时间维度下的分析,得到数据整体的变化趋势。
负荷预测特征
采用最常用的窗口特征进行数据集的构建,把时间序列问题转换成监督数据集,从而构建时序数据特征,特征构建过程如下图所示:
多步预测方法
多步预测方法有多种,下面逐一介绍下。对于序列这里假设一个序列:[1,2,3,4,5,6,7,8,9,10,X,Y,Z],X,Y,Z是需要被预测的数值。
由多个单步实现多步
model1:[1,2,3,4,5,6,7,8,9],[X] model2:[1,2,3,4,5,6,7,8,9],[Y] model3:[1,2,3,4,5,6,7,8,9],[Z]
这种做法的问题是如果需要预测N个时间步,则复杂度很高,比如预测未来100天,则意味着我们要构建100个模型。
但是这样做,较长的预测步骤数有较好的效果。
递归多步预测
递归多步预测的本质还是简单的单步预测,但是和第一种情况不同,递归多步预测不需要多个预测模型,仅仅一个模型就够了。举个例子,假设我们构建了一个3阶滞后模型:
还是以上面的例子为例:[1,2,3,4,5,6,7,8,9,10,X,Y,Z]
我们先预测X,即根据:
用model去predict([8,9,10])得到prediction(X),假设predict出来的结构为11.24,然后我们把预测值当作特征,得到[9,10,11.24],然后用model去predict([9,10,11.24])得到prediction(y),依此类推。
由于使用预测代替真实值,因此递归策略会累积预测误差,即递归策略的偏差比较大,从而随着预测时间范围的增加,模型的性能可能会迅速下降。
深度学习的多输出策略
直接进行多输出,则model的形式是: model多输出:[8,9,10][X,Y,Z]
这可以非常灵活的支持多输入或者多输出的形式。可以通过最后一层设为全连接层,神经元个数为输出的时间步骤数。
这种方法的问题是,如果标签是时序依赖的。比如时间序列预测未来3个时间步骤t+1,t+2,t+3,如果我们直接使用多输出的方式,则t+1,t+2,t+3三个标签我们其实是认为它们是完全独立的,但是实际上它们是存在序列依赖性的,这个问题和序列标注早期的简单方法存在的问题是一样的,就是没有考虑标签的序列依赖的性质。因此就诞生了另外一种策略,也是基于深度学习的方法。
seq2seq结构
常见的问答系统的seq2seq结构,可以用于时序的多步预测。
[1,2,3,4,5,6,7,8,9,10][X,Y,Z],我们可以直接构造上述seq2seq结构的输入输出样本,假设我们使用3阶滞后,预测未来的3个时间步,则样本构造为:
[1,2,3], [4,5,6] [2,3,4], [5,6,7] […], […] [8,9,10], [X,Y,Z]
在seq2seq的结构中,可以使用LSTM或者CNN的网络结构作为encoder和decoder的组件即可,这种情况下,attention+seq2seq网络结构都可以直接处理这样的问题。
算法选择与结果评估
XGBoost算法在负荷预测多步预测有不错的表现。以下是利用XGBoost算法实现负荷预测的过程。
(1)利用滑窗构建负荷预测特征; (2)利用多个模型构建时序多步预测; (3)利用XGBoost作为核心算法。
结果如下:
横坐标是时间步数,因为是多步预测,存在多个重复的时间点。但是都属于不同的test数据集的一份数据。
从预测结果可以看到,整体预测效果非常好。在r2的评价指标上达到了0.906,rmse为0.081,比递归预测有很大优势。但这也带来了额外的开销,如模型达到了百兆,耗时为232s,比递归预测有更大的消耗。
电量预测
由于日电量数据是电力部门的敏感数据,因此我们以一个开源数据集为例进行讲解。数据集从2006年12月到2010年11月,数据时长约为4年,时间频率改写成天。
date: 日期格式为 dd/mm/yy time: 时间格式为 hh:mm:ss Global_active_power: 家庭消耗的总有功功率(千瓦),在交流电路中,电源在一个周期内发出瞬时功率的平均值(或负载电阻所消耗的功率),称为"有功功率" Global_reactive_power: 家庭消耗的总无功功率(千瓦),在具有电感或电容的电路中,在每半个周期内,把电源能量变成磁场(或电场)能量贮存起来,然后,再释放,又把贮存的磁场(或电场)能量再返回给电源,只是进行这种能量的交换,并没有真正消耗能量,我们把这个交换的功率值,称为" 无功功率" voltage: 平均电压(伏特) Global_intensity: 平均电流强度(安培) sub_metering_1: 厨房的有功功率 sub_metering_2: 用于洗衣机等电器的有功功率 sub_metering_3: 空调热水器等电器的有功功率
为了预测未来一周的用电量,经过滑窗后构建监督数据集,该数据集的电量预测步长为7,输入特征可以根据实际的业务需求判断。
尝试了不同的循环神经网络算法,如CNN-LSTM,seq-seq LSTM,ConvLSTM,他们之间的比较结果如下。
根据表格中各模型在不同特征条件下的评价结果,表明:针对本方法中的数据集,近期数据对未来数据预测产生正面影响,而更远期数据对模型结果产生负面影响;
除自变量外,其他特征数据对未来数据预测产生的结果与该特征和自变量的相关性有关;
不同模型结果显示,基于自变量的序列预测产生的效果比其他模型较好。(仅限本数据集中数据)
不同类别模型所依赖的特征与数据长度的不同,对预测结果产生一定影响,因此需要根据数据集中数据长度和特征情况,进行慎重选择。
总结
本文了解到时间序列有定性描述、预测和分类等任务类型。其中我们重点探讨了时序预测任务中的多步预测的特征构建方法、实现策略,并利用负荷预测和电量预测进行验证。我们还发现不同任务条件下,我们可以采取不同的多步预测方法。
时间序列任务在工业界有较多的应用场景,如电力、IoT设备、风险监控等行业有较多的应用。在后续实际工作中,有三条基本判断原则:
(1)如果没有可用的数据,或者如果可用的数据与预测无关,那么应该使用定性预测方法。
(2)关于过去的数字化信息是可以用的,且有理由假设过去的一些模式会在未来延续下去,可以使用定量预测。
(3)在很大程度上,什么数据是可用的,决定了选择什么合适的预测方法。这一点是非常关键的。
后记
现在时间序列方向已经延伸了更多的算法和工具,比如informer、基于深度分解架构和自相关机制的长期序列预测模型Autoformer,TFT时序框架等。
如果想用到置信区间,可以尝试deepAR。
滑动窗口间隔是根据业务去定的,相邻滑窗之间的间隔可以是1个或多个时间步骤。可以根据数据的长度、频率、预测目标来综合判断。
本文讲解的是单个台区的数据,使用了一个模型。实际中,单个台区单个模型会导致模型量过大,后期不太友好。可以对时序进行聚类或分类,多个台区使用一个模型。
预测未来的时间步骤数越大,模型的效果衰减越厉害。
预测对象的选择是需要讲究的。专变台区还好,有些台区的数据也有难以预测的。
电力负荷预测输入特征常常包括温度数据,温度数据是最高温和最低温。极高温的情况如果在历史中出现过,在未来会有体现。政策性因素会导致预测难度增加,造成偏差。
经典机器学习电力负荷预测步骤
数据预处理:缺失值处理、异常值处理
确定模型的输入:采用梯度提升树递归特征消除法筛选重要度高的特征 挖掘历史负荷序列中的信息:采用深度自编码器对历史负荷序列进行特征提取,构造新的特征,完成特征集合构建 模型融合:采用blending框架将XGboost、随机森林、极限学习机等模型进行融合
|