一种基于时段特征的匹配算法在智能电表用电预测中的应用研究

2020-03-13 10:55倪家明
计算机应用与软件 2020年3期
关键词:需求预测电表用电量

倪家明 陈 博 董 阳 李 旭

(国网天津市电力公司信息通信公司 天津 300010)

0 引 言

工业革命以来,电力系统作为推动社会经济不断发展的必要条件,与人类日常的生产、生活息息相关。电力系统高效稳定的运行不仅保障了工业生产的正常运转,而且直接影响着城市居民的生活质量。因此,为保证电力系统的稳定运行,同时节约发电成本,对用电需求进行准确预测具有十分重要的意义。

随着存储设备价格降低、网络传输速率加快等科技进步,传统的电网、电表也将被更加经济的智能电网[1]与智能电表[2]取代。作为一种现代化的输电网络,智能电网可以使用技术手段侦测、收集供应端的电力供给数据和客户端的电力消耗数据,并以收集到数据为基础控制电力的供给与输配,以达到节能、减少损耗、增加电网稳定性等目的。同样,作为一种新式的数字电表,智能电表可以标示出精确的耗电量,并具有存储、计算等功能。随着智能电网与智能电表的普及,电力系统中积累了大量的用户用电记录,这为细粒度的用电量预测提供了原始的数据积累。

智能电网和智能电表的使用,意味着更精确、更细粒度的用电数据,系统更加出色的计算能力,更大的存储空间和更快速的网络传输。由此,新的用电预测需求也应运而生,比如在各户智能电表中对用户的用电需求进行预测,并利用预测结果进行适当的调控。传统的用电需求预测算法通常使用某地区某一段时间内的用电量数据进行模型训练,而无法对每个用户细粒度的用电需求和短时间内的用电需求进行预测。

针对以上问题,本文提出了一种细粒度用电需求预测算法。该算法基于特征匹配的思想,通过提取每个用户的用电特征,并在实时用电数据上进行特征匹配,进而利用匹配到的特征对用电量进行预测。本文提出的模型可以运行在细粒度(例如:以分钟为单位)的居民用电数据上,由实验结果可见,基于特征匹配的细粒度用电需求预测模型能够实现更精确的用电需求预测。

1 相关工作

用电量预测算法主要包括以计划为目的的长、中期用电需求预测和以调控为目的的短期用电需求预测,本文的研究工作主要专注于短期的用电需求预测算法。

传统的短期用电需求算法主要包括三种:简单移动平均模型(SMA)[3-5]、统计模型和机器学习模型。其中,SMA是对某变数之前x个数量值进行加权算术平均,SMA可抚平短期波动,反映出长期趋势或周期,计算量较小,训练时间复杂度低,可以较好地应用于实际的用电量预测过程中。统计模型主要包括回归模型[6]以及时间序列模型[8-11]等模型。基于统计模型的方法通常使用大量历史用电数据拟合出模型,计算量比SMA稍大。以上两种方式有一个共同特点就是预测结果为用电需求的趋势,但是预测的数值和真实数据的数值误差较大。机器学习模型主要包括人工神经网络[12-15]以及模式匹配[16-17]等。其中,人工神经网络模型利用大量历史用电数据训练模型参数[18],训练完成后利用实时数据进行预测,训练时间复杂度较高。而模式匹配模型通常先从历史用电数据中挖掘出不同的特征(例如:每个特征都是一个长度为n的时间序列),然后对特征段进行聚类生成不同簇。在预测时,将待预测日前的时间序列T取出,挑选出和该序列最相似的簇,使用该簇中所有特征在len(T)+1处用电量的平均值进行预测。

上述方法均使用各地区用电量以天级的总和进行学习预测,但是地区用电量天级总和相对各用户小时级用电数据模式较为平稳,波动较小,而上述方法对于波动较大的以用户为单位的小时级数据的学习预测效果不够理想。

综上所述,基于智能电表和智能电网的用电需求预测算法应该满足如下要求:(1) 可以依据采集的各用户智能电表中的耗电数据实现对用户的用电预测;(2) 智能电网可以利用基于采集的各智能电表的耗电数据预测结果进行用电需求总量的预测;(3) 算法应可以利用各智能电表采集的细粒度数据实现细粒度预测,提升预测粒度的精准性和实用性。

本文提出一种基于特征匹配的用电量预测模型,满足上述预测需求。算法使用电力消耗的特征识别,应用在以6小时为单位的各户每日尖峰平谷的数据集上。在此之前文献[19]已使用类似于本文的思想在分钟级数据上开展相关工作并取得了良好效果。

2 基于特征匹配的用电需求预测算法

2.1 问题介绍

根据电网的负荷变化情况,可以将一天划分为尖、峰、平、谷四个时段,进而可以用四个时段的用电量代表居民一天的用电行为。本文以时段为单位开展细粒度用电需求预测的相关研究,该研究问题可以形式化地表示为如下形式:

对于时段t,给定该时段之前n个时段的历史用电行为序列X={xt-n,xt-n+1,…,xt-1},其中xi表示第i个时段的用电量,根据历史用电行为序列预测当前时段的用电量xt。

2.2 算法描述

针对本文的研究问题,首先对居民用电行为的特点进行一定的分析。居民用电数据是一种典型的时间序列数据,但是又不同于股票等时间序列数据,其具有如下一些特点:

(1) 居民的用电量在一段时间内相对固定。

(2) 居民的生活习惯较为固定。

(3) 在不同的时段(例如不同季节)居民的用电行为会有不同,但在相同时段内较为固定。

(4) 居民的大部分用电行为具有实效性。例如:某户购进了新电器,或是某户人员进行了更换,那么该户的用电特征将会与之前的用电特征有一定的不同并一直持续下去。

综上,针对居民用电数据的特点,本文提出了一种基于特征匹配的用电需求预测算法,该算法主要分为四个步骤。第一步,基于智能电表的可存储可计算的特点,对居民的历史用电行为序列进行用电行为特征的提取。第二步,将居民的实时用电序列与提取到的特征进行匹配,得到与实时用电数据最相似的用电行为特征。第三步,利用匹配到的特征进行用电需求的预测,得到单个居民的用电需求预测量。第四步,通过智能电网将预测结果传送给控制中心,控制中心对所有预测结果进行求和,得到区域整体的用电需求预测量。利用这些数据,智能电网的控制中心就可以对某地区的用电情况进行调控。

区域耗电预测的系统结构示意图如图1所示。

图1 区域耗电预测系统结构示意图

2.3 特征提取算法

本文提出一种基于特征匹配的用电需求预测算法,其中核心步骤是进行特征匹配。首先,我们对用电行为序列和用电行为特征进行定义:

定义1令di={di1,di2,di3,di4,di5}表示智能电表中存储的某户居民在第i天的用电行为记录,其中di1、di2、di3、di4、di5分别表示当日的尖、峰、平、谷四个时段的用电量和当日总用电量。由n天的居民用电行为记录构成的序列D={d1,d2,…,dn}称为用电行为序列。

定义2从用电行为序列中提取的,能代表居民用电行为特点的序列D′={di,di+1,…,dj}称为用电行为特征,其中i、j分别表示用电行为特征的起止索引。

用电行为序列的结构如图2所示。其中:①表示居民历史用电行为序列。该序列由居民每日的尖、峰、平、谷四个用电时段的用电量(单位:kW/h)组成。②代表了连续3天的用电行为记录,其中不同颜色的方块代表不同时段的用电量。除各时段细粒度的用电量之外,用户行为记录还应考虑粗粒度的日用电量总和。对此,本算法将日用电量总和插入到对应日的尖峰平谷用电量之后,如③所示。具体地,每五个方块表示居民一天的用电行为,其中前四个方块分别表示一天内尖、峰、平、谷四个时间段的用电量,最后一个方块表示当天的用电量总和。

图2 用电行为序列的数据结构示意图

基于智能电表中存储的居民用电行为序列,本文以天为单位将用电行为序列划分为多个子序列,并采用欧氏距离计算居民用电子序列之间的相似度,以此挖掘居民的用电行为特点,选取能够代表用电行为特点的子序列构成用电行为特征集合,具体的特征提取算法如算法1所示。

算法1特征提取算法

输入:历史用电行为序列H;用电行为子序列覆盖的天数w;相似度阈值p0,当两个特征的相似度小于阈值,则认为特征相似。

输出:用电行为特征集合S。

步骤1:初始化用电行为特征集合S为空集。

步骤2:从历史用电行为序列的起点选取长度为5w的用电序列作为待定序列si(由于一天的用电记录是由尖、峰、平、谷四个四段的用电量和总用电量共同组成,子序列选取的长度为5w)。

步骤3:若用电行为特征集合S不为空集,则计算子序列si与集合中已存在的特征之间的相似度,得到相似度的最小值p;若用电行为特征集合S为空集,则设置p为int型的最大值。

步骤4:如果相似度的最小值p大于p0,则认为子序列与用电行为特征集合中的特征均不相似,可以将其si作为新特征,添加至特征集S中;反之,认为用电行为特征集中已包含能代表子序列的用电行为特征,则不添加至特征集。

步骤5:若未遍历至历史用电序列的末尾,则沿历史用电行为序列向后移动5位(即以天为单位后移一天),选取长度为5w的用电序列作为子序列si,转至步骤3。

步骤6:若已遍历至历史用电行为序列的末尾,则输出用电行为特征集合S,算法结束。

其中,用电行为特征集合应具备如下两个特性:(1) 集合中包含的任意两个用电行为特征之间的相似度应该尽可能小,即特征之间的差异度尽可能大。(2) 集合中包含的任意一个用电行为特征应和多个用电行为子序列具有较高的相似度,即用电行为特征应具有一定的代表性。

由此,特征提取算法的关键在于相似度的定义。本文基于欧氏距离,采用下式进行相似度计算:

(1)

式中:Si、Sj分别为两段等长的用电行为子序列,d(i,j)为用电行为子序列Si和用电行为子序列Sj的欧氏距离,len(*)为用电行为子序列的长度,Si(t)代表用电行为子序列Si中的第t个值。d(i,j)越大,说明Si和Sj的相似度越低,同理,d(i,j)越小,说明Si和Sj的相似度越高。

欧式距离作为相似度的定义简单易懂,容易计算,但要求序列的长度相同。因此,为了简化算法,本文采用固定的长度进行特征提取。

按照算法1对每户居民的历史用电行为序列进行遍历,能够快速地得到各户居民的用电行为特征集合。进而可以将提取到的用电行为特征集合存储在对应的居民智能电表中,用于居民用电需求的实时预测。

2.4 实时预测算法

在进行居民用电需求预测时,各户居民的智能电表将结合该户的用电行为特征集合,以及该户的实时用电行为序列进行用电需求预测。图3为预测算法中的特征对比示意图。

图3 特征对比示意图

在特征提取的过程中,我们已选取若干个长度为5w的用电行为子序列作为用电行为特征。由此,在预测过程中,我们选取待预测时段之前长度为5w-q的历史用电行为序列与特征集中的用电行为特征进行相似度计算,并选择与历史用电行为序列相似度最高的用电行为特征中的第5w-q+1个值作为待预测时段的预测值,由此完成用电需求预测。其中,q由待预测时段所属的时段类型决定。若待预测时段为尖峰时段,则q=5;若待预测时段为高峰时段,则q=4;若待预测时段为平段,则q=3;若待预测时段为低谷时段,则q=2。

2.5 特征更新及丢弃算法

考虑到居民的用电模式不是完全固定的,除了居民使用负载时间的随机性外,电器的更换、增减,房屋使用人数的增减、人员的更换,都会造成用电模式的改变。因此,用电行为特征集合应该随着时间的推进不断增加新特征,以保持特征的时效性。我们可以将该过程称为特征更新。

然而,不断扩大特征集不仅会增加智能电表的存储压力,也会增加实时预测算法的复杂度。因此本文将特征集的大小设置为50,并在特征更新的同时丢弃失去时效性的无用特征,该过程可以被称为特征丢弃。本节主要介绍特征集合的更新和丢弃算法。

特征更新算法:特征更新算法与特征提取算法类似,即在预测的同时添加符合条件的新的用电行为特征。在实时预测的过程中,计算用户实时产生的用电行为序列与特征集中已有特征之间的相似度,如果当前用电行为序列与特征集中已有的特征均不相似,则截取该序列作为新的用电行为特征添加至特征集中。具体的特征更新步骤如算法2所示。

算法2特征更新算法

输入:用电行为特征集合S;待预测时段之前长度为5w-q的历史用电行为序列h;相似度阈值p1,当两个特征的相似度小于阈值,则认为特征相似。

输出:更新后的用电行为特征集合S。

步骤1:计算用电行为序列h与特征集中已存在的特征之间的相似度,得到相似度的最小值p。这里取特征的前5w-q维与h计算相似度。

步骤2:如果相似度的最小值p大于p1,则认为用电行为序列h与特征集合中的特征均不相似,使用待预测时段当天的用电序列将历史用电行为序列h的长度扩充至5w,并添加至特征集S中;反之,认为特征集中已包含能代表该用电行为的特征,则不进行上述操作。

步骤3:若更新后的特征集合S的容量大于50,则执行特征丢弃算法,算法结束。

步骤4:若更新后的特征集合S的容量不大于50,则输出特征集合S,算法结束。

特征丢弃算法:特征丢弃算法需要对每个特征添加两个属性,即每个特征首次出现的时间和特征被使用的次数。算法的思路是:对特征集中所有的特征进行遍历,如果特征首次出现的时间早于设置的最早时间,并且特征被使用的次数低于设置的最低次数,则将该特征删除。通过特征丢弃算法,可以删去丧失时效或因偶然因素产生的用电行为特征,进而节省存储空间与特征对比空间,提高程序的运行效率。具体的特征丢弃算法的步骤如算法3所示。

算法3特征丢弃算法

输入:用电行为特征集合S;时间阈值t;使用次数阈值u。

输出:更新后的用电行为特征集合S。

遍历特征集合S,对于其中每个特征h执行以下步骤:

步骤1:对比特征h的首次出现时间th和时间阈值t,如当前特征首次出现时间早于时间阈值,则转步骤2;否则,转步骤3。

步骤2:对比特征h的使用次数uh和使用次数阈值u。如当前特征的使用次数低于使用次数阈值,则认为该特征已失去时效性,丢弃该特征,继续遍历特征集;否则,转步骤3。

步骤3:将当前特征h的使用次数置为0,保留该特征,继续遍历特征集。

遍历结束,输出更新后的用电行为特征集合S,算法结束。

2.6 存储优化

在本文算法实现的过程中,用电行为特征集合会存储在各居民的智能电表中,并用于用电需求预测。在未进行存储优化的情况下,每个用电行为特征都会被存储为一个数组,并需要在智能电表中为其预留一个长度为5w的空间进行存储。由此,当存在n个特征时,空间复杂度为O(n×5w)。随着用电行为特征数n的增加,消耗的存储空间会非常高,影响智能电表的正常运转。因此,本文提供一种有效的优化方法,可以有效地降低特征存储的空间复杂度。

具体来说,由于本文的用电行为特征都是从用户的完整用电行为序列中提取出来的,而用户完整的用电行为序列会被存储于智能电表中。因此,我们只需要存储用电行为特征中每个值对应的居民完整用电行为序列中的索引值即可,而无需保存特征的具体数值。由于用电行为特征中的每一个位置的值对应到居民完整用电行为序列中的位置是连续的整数,因此在记录特征时,仅记录其对应的用电行为序列中的起止索引值即可,这样,空间复杂度降到了O(2×n)。如图4所示,采用这种方法,首先为用户用电行为序列中的每个值分配一个索引值,然后对于每个特征只记录其对应的原始用电行为序列中的起止索引。这样,比原始算法节省了大量的存储空间。

由于用户的完整用电行为序列可能会被定期清理,所以基于完整用电行为序列的存储优化的特征可能会存在问题。针对这个问题,本文进一步采用一种使用单独空间的优化方法。如图5所示,不同于直接使用居民完整用电行为序列的索引,此方法将挑选出的特征统一存储到一个单独的数组中。考虑到不同的特征之间往往会存在部分数据重合的情况,本方法不直接采用首尾拼接的方式将特征添加到数组,而是对比数组中存储的特征末尾与待存储特征是否重合,只将不重合的部分添加到数组末尾,最终记录每个特征对应的特征数组中的起始索引值。

3 实 验

3.1 数据简介

本文采用的数据集是天津市某地区居民2015年-2016年间的真实用电数据。每条数据包括用户ID、日期、当天用电量总和、尖时段用电量、峰时段用电量、平时段用电量、谷时段用电量共7个属性。数据集共包含有24 634个有效用户,我们使用前8个月的数据进行特征提取,使用后4个月的数据进行预测验证。

3.2 数据分析

针对上文描述的居民用电特点,本节采用天津市某地区居民2015年-2016年用电数据进行分析,结果如图6和图7所示。图6为某一个用户一年内每日低谷时期的用电量时间序列。从图中可以发现,居民的生活习惯较为固定,在短期的时间段内居民的用电行为相对稳定,但一年中不同时段之间居民的用电行为又会存在不同,例如:有一些序列在图中多次出现,但是序列之间的特点又存在不同。我们称这类用电序列为特征序列,特征序列可以用于预测。图7是某一任选用户在不同时刻的两个相似的特征序列,可以进一步说明特征序列可以用于预测。

图6 某用户一年内每日低谷时段用电量

图7 某用户不同时间段内的用电序列

从以上分析可以看出本文所使用的特征匹配算法是合理的。下面将通过实验验证本文方法的有效性。

3.3 实验设置

本文使用前8个月的数据作为训练集,后4个月的数据作为测试集。相似度阈值设置为0.8,特征长度为5,最早时间设置为1个月,最少出现次数设置为2。

3.4 对比方法

为了证明本文所述方法的有效性,我们将本文提出的模型与其他几种方法的实验效果进行了对比。对比方法如下:

简单移动平均算法(SMA)[3]:加利福尼亚洲的标准用电数据预测算法。具有计算简单、稳定性高的特点。

自回归移动平均模型(ARIMA)[21]:全称为自回归积分滑动平均模型,ARIMA模型是针对非平稳时间序列所建立的模型。它是最常用的时间序列预测模型。

人工神经网络(ANN)[22]:人工神经网络模型是通过模仿生物神经网络的行为特征,进行分布式并行信息处理的数学模型。这种网络依靠系统的复杂度,通过调整内部大量节点之间相互连接的关系,从而达到信息处理的目的。

3.5 评价指标

本文使用相对百分误差绝对值的平均值(Mean absolute percentage error,MAPE)来评估模型,计算公式如下:

(2)

式中:At是t时刻的实际值,Ft是t时刻的预测值,n是预测的个数,MAPE越小代表模型的预测效果越好。

3.6 实验结果

为证明本文方法的有效性,我们对单个用户的用电量以及区域整体的用电量均进行预测,实验结果如表1所示。由表1可以看出,本文提出的算法和SMA算法相比,本文算法得到的每个用户的平均MAPE为0.396,SMA算法得到的平均MAPE为0.415。本文的算法略优于SMA算法。

通过将每个用户相同时段的用电量需求相加,即可得到总用电需求预测值,然后与真实值作对比,得到最终的地区总用电量需求预测的MAPE值。表1同时记录了本文算法、SMA算法、ARIMA模型、ANN模型分别预测得到的区域MAPE值。本文算法在此数据集上的总用电量预测的MAPE为7.7,取得了最优的性能。

表1 实验结果

本算法相对于其他常用算法的优势在于可以更充分地利用各用户的历史用电数据。SMA算法忽略较久之前的历史数据,使得部分有用的数据被浪费。ARIMA和ANN模型无法利用每个用户的数据,只能在总和数据上建模,也使得各用户的用电细节被忽略。而本算法可以同时利用历史数据和各用户的数据,这使得预测的准确性有一定的提升,特别是对于细粒度的用电需求预测。

4 结 语

智能电网是生产力发展的必然趋势,也是社会经济发展的必然选择,在新的技术、新的需求下,更为精确、细粒度的用电需求预测必不可少。

本文首先对用户的用电数据进行分析,并介绍了一种基于特征匹配的用电需求预测算法。此外,本文算法针对存储空间有限的实际情况,进一步提出了特征存储优化算法。为证明模型的有效性,本文使用天津市某地区2015年-2016年居民用电数据进行实验,实验结果表明,本文算法无论是针对单个用户预测,还是对区域整体预测,都实现了性能的提升,具有较强的应用价值。

猜你喜欢
需求预测电表用电量
世界钢铁协会发布2022-2023年钢铁需求预测
01 国家能源局:3月份全社会用电量同比增长3.5%
高质量发展背景下大型建筑企业融资需求预测与结构优化策略研究
基于BP神经网络的济南市物流需求预测
“蹦叭”跳动电表数
法国人抗议智能电表或监控隐私
停电那点事儿
如何测电表的量程