基于时间序列的SVM短时电力负荷预测
2020-06-28叶远胜张静
叶远胜 张静
摘 要:随着电力系统的飞速发展,以往基于小规模数据的传统电力负荷预测算法可能无法容纳大量数据集和效率上的要求。为改善预测模型的工程实用性、效率和准确度,将传统的时间序列预测方法与机器学习中的支持向量机算法相结合,应用于短时电力负荷预测。即使用某一时刻对应的以往时间点的电力数据作为属性值,使用支持向量回归构建模型进行预测。通过实践证明,模型可以快速有效地处理数据,并且具有较高的预测准确度。
关键词:时间序列;支持向量机;电力负荷预测;机器学习
中图分类号:TP183;TM715 文献标识码:A 文章编号:2096-4706(2020)24-0017-03
SVM Short Term Power Load Forecasting Based on Time Series
YE Yuansheng,ZHANG Jing
(China University of Mining and Technology-Beijing,Beijing 100083,China)
Abstract:With the rapid development of power systems,traditional power load forecasting algorithms based on small-scale data in the past may not be able to accommodate large data sets and efficiency requirements. In order to improve the engineering practicability,efficiency and accuracy of the forecasting model,the traditional time series forecasting method is combined with the support vector machine algorithm in machine learning and applied to short term power load forecasting. That is,the power data corresponding to a certain point in the past is used as the attribute value,and the support vector regression is used to construct a model for prediction. Practice has proved that the model can process data quickly and effectively,and has high prediction accuracy.
Keywords:time series;support vector machine;power load forecasting;machine learning
0 引 言
关于电力负荷特性的研究是研究电力的一项重要内容。由于用电负荷宏观上受经济,市场政策,文化,地理等因素影响,微观上又受到节假日、工作日等日期类型属性,气象状况,社会活动等诸多因素的影响。且影响机制属于非线性关系,常规方法难以取得较高精度[1]。精确的短期负荷预测结果能够帮助电力工作人员指定合理的电力调配方案,即维持了供需平衡,保证了电网安全[2]。本文针对实际情况,利用支持向量机算法在解决线性不可分、高维数等问题上的优势,研究基于时间序列的短时电力负荷预测模型,以達到优化电力负荷管理的目的。
1 国内外研究现状
国内外的学者们对电力负荷预测进行了很多的研究,并取得了很多不俗的成果。按照预测手段的不同,电力负荷预测的方法主要有传统和现代两大分支。首先出现的是建立在数学基础上的传统预测方法。时间序列法是当前进行短时电力负荷预测较为完善成熟且可靠性较高的一种传统算法[3],每过一定的时间间隔对电力负荷数据进行一次记录并形成序列,并参考过往的负荷数据对未来进行预测。卡尔曼滤波法同样常用于短时电力负荷预测,它的原则与基础是线性无偏最小均方差估计,首先依据历史电力数据估计出模型参数,再预测观测的数据序列[4]。人工智能快速发展推动了现代预测方法的兴起,最常见的有人工神经网络(Artificial Neural Network,ANN)和支持向量机(Support Vecotor Machine,SVM)。人工神经网络理论建立神经元网络模型,首先用训练样本集进行训练学习,初步得出各个输出与输入层之间的参数,并以后项传播的方式不断进行参数修正直到得到一个理想的模型,最后再用该模型得到预测结果[6-8]。SVM拥有较强的推广能力,可以在保证较高的预测精确度的同时求解到全局最优解[9]。在解决小样本、线性不可分、高维数和多分类等实际问题上,支持向量机算法拥有很大的优势,故可以建立出比较理想的短时电力负荷预测模型[10]。
2 支持向量机原理与时间序列法
2.1 SVM简介
SVM是一类按监督学习方式对数据进行二元分类的广义线性分类器,其决策边界是对学习样本求解的最大边距超平面。SVM的任务就是寻找一划分超平面,且该划分超平面刚好处于两类训练样本的正中间位置,即最终的分类结果具有较高的鲁棒性和泛化能力[11]。其线性判别函数的表达式为:
f(x)=wTx+b (1)
wTx+b=0即为划分超平面。其中w=(w1,w2,w3,…)为法向量,决定了方向,b为位移项,决定了原点与超平面的距离。令两类样本都满足f(x)≥1,离分类面最近的樣本满足f(x)=1。假设超平面能将训练样本全部正确分类,则需满足:
yi[(w·xi)+b]≥1,i=1,…,n (2)
求出w与b即可得到模型:
f(x)=wTx+b=aiyixiT+b (3)
2.2 核函数
在现实场景中,原始样本空间内也许并不存在这样的超平面,能够将训练样本划分为两类。对于这样的问题,我们使用到了核函数方法。作为SVM中最重要的一部分,核函数方法的思路是通过非线性变换?将n维向量空间中的向量x映射到高维特征空间,使得样本在这个高维特征空间中线性可分,然后在高维特征空间中构造线性学习算法。一般而言,对于一个有限维的样本,总是存在一个高维特征空间使训练样本线性可分[12]。根据式(1)转换后的模型表达为:
f(x)=wT·?(x)+b (4)
加入了Lagrange乘子后并加以转换得到二次规划寻优问题:
(5)
我们通常会使用以下函数来简化这个高纬度的问题:
k(xi,xj)=?(xi),?(xj)=?(xi)T?(xj) (6)
即可以将xi与xj在特征空间的内积转换为它们在原始样本空间中通过函数k(·,·)计算的结果来简化计算。通过这样的等价转换,我们就可以避免直接去计算高维乃至无穷维特征空间中的内积[13]。于求解后可得到:
(7)
这里的函数k(·,·)就是“核函数”(kernel function)。核函数的选择是支持向量机问题的核心所在,核函数选择将直接影响到分类的效果。本文用到高斯核函数。
2.3 支持向量机回归
分类问题与回归问题是支持向量机问题的两大分支。在基础理论、如何选择核函数等方面上,SVM分类问题和回归问题存在很多相似的地方。与SVM分类问题不同,yi可以取任意实数值,而并非固定取值-1或+1。SVM回归问题实质上还是通过寻找一个最优函数y=f(x)来拟合输入数据与输出数据之间的关系,期待得到一个拟合误差最小的结果。支持向量回归中往往采用“不敏感损失函数”来做为误差函数,传统线性回归一般直接使用模型输出值f(x)与真实值y之间的差别作为损失,故此损失值通常不为零。而支持向量机回归允许f(x)与y之间有?的误差,则只要样本落在以f(x)为中心,宽度为2?的矩形区域内,都认为不存在误差。
其表达式为:
(8)
优化问题即求:
(9)
引入松弛变量ξi和,引入Lagrange函数,即可得到SVR的对偶问题:
(10)
代入求解有:
f(x)=(-ai)xiTxi+b (11)
结合KKT条件,对每个样本(xi,yi),都有(C-ai)ξi=0且ai(f(xi)-yi-ε-ξi)=0。
于是,在得到ai后,若0 b=yi+?-(-aj)xjTxi (12) 考虑到特征映射形式,则相应的,式(12)将形如: w=(-ai)?(xi) (13) 将式(13)代入到式(4),则SVR可以表示为: f(x)=(-ai)k(x,xi)+b (14) 其中k(x,xi)=?(xi)T?(xj)为核函数。 2.4 时间序列法 时间序列法是一种统计学上的分析方法,它用来描述事物随着时间发展变化的特征,又被称作称时间序列趋势外推法。时间序列法假设事物的发展趋势会延伸到未来,并忽略事物发展之间的因果关系,使用一定时间内的历史数据构成的数据序列来对未来该事物的情况进行预测。因此,时间序列法要求事物具有稳定的变化趋势和明确的相互关系。但很多时候事物的历史数据都会受到一些偶然因素的影响而变现出不太规则的变化,因此我们在使用历史数据时,还需采用算数平均、加权平均、指数平均等方法来减少偶然因素所带来的影响。时间序列传统的预测方法有移动平均法、加权移动平均、法指数平滑法等,现代方法有Box-Jenkins的自回归模型(ARIMA)。 3 实验 3.1 数据预处理 所使用的数据集为河北某电厂从2017年6月1日至2017年9月1日的电力数据。每隔三分钟记录一次,而且每隔几行表格中会出现一次空行数据,因此应先删除掉这些空行数据。在Python环境下,可以调用pandas包,读取表格数据后,使用DataFrame下的drop方法完成删除操作。因为使用时间序列法进行负荷预测,即通过前一天,前一周等的负荷来预测当前的电力负荷。所以首先要对原始数据进行操作,将与当前行对应的前一天、前一周这样的历史数据输入到本行作为属性值。对于某些特殊情况,如6月1日当天是没有前一天、前一周这样的数据作为参考的,故可以考虑使用当天的数据作为历史数据进行填充。这类缺少历史数据的数据约占整体的5%。大部分的机器学习算法无法在缺失的数据集上工作,所以需要使用一些函数来处理这些缺失值。Scikit-Learn提供了一个非常方便的工具:Imputer。创建该实例后,选择均值来替换缺失值。工作日、双休日、节假日等时段对电力负荷会产生较大的影响。因此需要从日期中提取出这些信息,并使用One-hot编码的形式将这些信息记录到电力数据集当中。
3.2 预测与结果评估
由于电力负荷数据分布的范围比较接近,因此不需要再进行标准化、归一化操作。在数据预处理完成后,选择3/4的数据作为训练集,1/4的数据作为测试集。将数据传入到SVR回归模型中。模型使用高斯径向基(RBF)函数,惩罚系数C=50,核函数的次数选定为3。预测的结果如图1所示。
预测精确度为0.923 1,均方误差为131.00,可以看出具有较高的预测精度。部分实际值与预测结果数据表1所示。
4 结 论
本文以时间序列法为基础,通过构建支持向量机回归(SVR)模型完成对短时电力负荷的预测,同时也兼并考虑到了节假日属性对电力负荷的影响,既提高了短期电力负荷预测的预测精度,还同时兼顾到了时效性问题,提升了模型的整体预测能力。与传统的短时电力负荷预测方法相比,本文所使用的基于时间序列的支持向量机回归(SVR)预测能够在较高的效率下获得更高的负荷预测精度。未来可以考虑研究在温度、天气状况、湿度、降雨量等影响因素下更复杂环境的短期负荷预测问题,并与其他负荷预测方法相结合,进一步提升预测模型的普适性和处理数据的能力。
参考文献:
[1] 康重庆,夏清,刘梅.电力系统负荷预测 [M].北京:中国电力出版社,2007.
[2] 牛东晓,曹树华,卢建昌,等.電力负荷预测技术及其应用:第2版 [M].北京:中国电力出版社,2009.
[3] 赵希正.中国电力负荷特性分析与预测 [M].北京:中国电力出版社,2002.
[4] 张文哲.电力系统短时负荷预测模型研究 [D].重庆:重庆大学,2004.
[5] 廖旎焕,胡智宏,马莹莹,等.电力系统短期负荷预测方法综述 [J].电力系统保护与控制,2011,39(1):147-152.
[6] 孟思齐,杨洪耕.基于灰色生成的卡尔曼滤波短期负荷预测 [J].电力系统及其自动化学报,2008,20(6):78-82.
[7] 张亚军,张大波,许诚昕.神经网络在电力系统短期负荷预测中的应用综述 [J].浙江电力 2007(2):5-9.
[8] 李重春,祝安琪,王烁罡,等.电力大数据下的短期电力负荷预测 [J].电力大数据,2019,22(1):66-70.
[9] 杜莉,张建军.神经网络在电力负荷预测中的应用研究 [J].计算机仿真,2011,28(10):297-300.
[10] 周志华.机器学习 [M].北京:清华大学出版社,2016.
[11] BATES J M,GRANGER C. The Combination of forecast [J].Journal of the Operational Research Society,1969,20(4):451-468.
[12] VAPNIK V N. The nature of statistical learning theory [M].New York:Springer,1995.
[13] THOMOPOULOS N T. Applied Forecastin Methods [M].Englewood Cliffs:Prentice-Hall,1980.
作者简介:叶远胜(1995—),男,汉族,安徽安庆人,硕士研究生在读,研究方向:机器学习;张静(1996—),女,汉族,安徽淮北人,硕士研究生在读,研究方向:自然语言处理。