一种基于Transformer和改进掩码矩阵的风电功率预测方法

文档序号:32161705发布日期:2022-11-12 02:49阅读:46来源:国知局
一种基于Transformer和改进掩码矩阵的风电功率预测方法
一种基于transformer和改进掩码矩阵的风电功率预测方法
技术领域
1.本发明属于风力发电技术领域,同时属于机器学习、大数据分析领域,特别涉及一种基于transformer和改进掩码矩阵的风电功率预测方法。


背景技术:

2.风电功率预测非常依赖数据的完整性,但是由于一些人为原因,比如:记录丢失,数据删除等,以及一些不可抗拒的因素,比如传感器异常、设备老化的等等,会导致数据丢失,从而使下游预测任务所使用的数据集大多数为不完整的数据集。通常,对于缺失数据的处理方式为直接删除和缺失插补。直接删除操作简单、快速,但是存在很大的局限性,因此大多数情况下选择对缺失数据进行插补。插补方法有很多,人工插补、统计插补方法,以及最主流的机器学习插补方法。人工插补作为最初的插补方法,其耗费时间长,耗费人力,而在机器学习的时代,机器学习插补方法,可以通过机器学习来捕获到一些隐藏的特征,从而更好地对数据进行插补,节省了人力,缩短时间,提高了插补的准确性。
3.然而目前的机器学习插补方法,比如深度置信网络、gan等通过捕获现有数据的特征来预测缺失数据,如果整体缺失部分太多,或者用于预测缺失值的数据太少,对于缺失数据的预测精度会有所降低。因此,现有技术中,在数据集不完整时,难以实现准确有效的风电功率预测。


技术实现要素:

4.为了克服上述现有技术的缺点,本发明的目的在于提供一种基于transformer和改进掩码矩阵的风电功率预测方法,该方法基于transformer框架和改进掩码矩阵实现风电功率序列的机器学习插补,从而在数据集不完整的情况下准确地预测风电功率。
5.为了实现上述目的,本发明采用的技术方案是:
6.一种基于transformer和改进掩码矩阵的风电功率预测方法,包括:
7.步骤1,获取原始数据,所述原始数据为一段时间内的气象数据和风机数据,原始数据表现为时间-气象数据-风机数据的三维矩阵,将所述一段时间划分为多个时间窗口,每个时间窗口内形成时间与多元特征的二维矩阵,所述多元特征包括温度、湿度、大气压强以及功率数据;
8.步骤2,将所述原始数据与位置矩阵相加,然后与改进掩码矩阵相乘以构造主动缺失,得到带有位置信息和掩码信息的时间序列数据(即一个新矩阵),该时间序列数据作为transformer中编码器的输入矩阵;所述改进掩码矩阵中,针对原始数据中原本缺失、主动缺失和不缺失三种数据的标记不同;
9.步骤3,通过损失函数,计算经过transformer得到的重构数据中主动缺失部分与原始数据中主动缺失部分之间的损失;
10.步骤4,根据重构数据和所述位置矩阵,将原始数据中的缺失值插补,并通过插值公式计算插补后的数据与原始数据之间的损失;
11.步骤5,当重构数据中主动缺失部分与原始数据中主动缺失部分的真实值之间的损失收敛,即transformer模型收敛的时候,此时使用重构数据对原始数据插补出来的结果为最终插补的结果;
12.步骤6,利用插补得到的数据集进行风电功能预测。
13.在一个实施例中,所述步骤2,位置矩阵由时间序列固定位置编码矩阵和时延编码矩阵相加得到,时延编码加入在位置信息中,时延编码矩阵公式如下式所示:
[0014][0015]
式中,为掩码矩阵中的值,为第ti时刻、第j个特征的时延编码值,为第t
i-1
时刻、第j个特征的时延编码值,n为滑动时间窗口的大小,d为特征的维数。
[0016]
在一个实施例中,所述改进掩码矩阵有3种可选参数:-x,0和x,其中-x表示原本缺失,0表示主动缺失,x表示不缺失,改进掩码矩阵的样式如下式所示:
[0017]
其中m∈rn×d[0018]
其中:m是一个n
×
d的矩阵,是掩码矩阵3种可选参数之一,当原始数据中的数据为原本缺失时,该数据对应位置上的值为-x,当原始数据中的数据为主动缺失时,该数据对应位置上的值为-0,当原始数据中的数据为不缺失时,该数据对应位置上的值为x。
[0019]
在一个实施例中,所述步骤3,损失计算公式如下:
[0020]
l=x
·
(tanh(m))'-de(z)
·
(tanh(m))'
[0021]
其中,l为重构数据中主动缺失部分与原始数据中主动缺失部分之间的损失值,x为原始数据,de()为transformer中的解码器,z为经过编码器的低维向量,其为transformer编码器捕获到的数据特征,de(z)为经过transformer得到的重构数据。
[0022]
在一个实施例中,所述步骤4,通过掩码矩阵和位置矩阵,获取到原始数据中缺失值的位置,然后使用在重构数据中相同位置上的数据,对原始数据进行填补。
[0023]
在一个实施例中,所述步骤4中,插值公式为:
[0024]
l
inputed
=x
·
relu(tanh(m))+de(z)
·
(1-relu(tanh(m)))
[0025]
其中,l
inputed
为插补后的数据与原始数据之间的损失,其使用了relu函数和tanh函数。
[0026]
与现有技术相比,本发明结合了transformer总体框架和风电功率序列的特点,使用位置编码和改进掩码矩阵,来对缺失数据进行重构。通过对缺失数据的重构,填补了原始数据的中的缺失部分,保证了数据集的完整性,避免了模型因数据集不完整而使预测精度
降低的情况,提高了在数据集不完整的情况下的风电功率预测的准确率。
附图说明
[0027]
图1为本发明整体流程图。
[0028]
图2为本发明在使用缺失率为30%的imwp数据集上做的对比试验的结果。
具体实施方式
[0029]
下面结合附图和实施例详细说明本发明的实施方式。
[0030]
为了将主流的机器学习插补方法与风电功率序列特点相结合,本发明的目的在于提供一种基于transformer和改进掩码矩阵的风电功率预测方法,该方法基于transformer框架和改进掩码矩阵实现数据序列插补,通过对存在缺失值的原始风电功率数据使用位置矩阵和改进掩码矩阵进行处理,将处理后的带有掩码信息和位置信息的数据作为transformer中编码器的输入,使用transformer模型重构数据,根据编码器捕获的数据特征,解码器输出一个不存在缺失值的重构矩阵,并根据改进的损失计算方法优化模型,在优化结束后,根据改进掩码矩阵和位置矩阵,使用重构数据对原始数据进行插补。
[0031]
具体地,如图1所示,本发明的方法包括了如下步骤:
[0032]
步骤1,获取原始数据。
[0033]
在本发明中,原始数据为一段时间内的气象数据和风机数据,例如:温度、湿度、大气压强、功率数据等,由于使用了时间窗口,因此,原始数据的表现为时间-气象数据-风机数据的三维矩阵,如果将一段时间划分为多个时间窗口,则每个时间窗口内形成了时间与多元特征的二维矩阵,此处的多元特征包括温度、湿度、大气压强以及功率等数据。在这些数据中,由于人为因素,比如数据丢失,或一些不可抗拒的因素,比如设备老化,导致数据存在缺失。
[0034]
步骤2,为原始数据引入位置信息和掩码信息。
[0035]
先将存在缺失值的原始数据与位置矩阵相加,用于位置标记,然后与改进掩码矩阵相乘,用于构造主动缺失,并标记数据缺失信息,从而得到带有位置信息和掩码信息的时间序列数据,即一个新矩阵,该时间序列数据作为transformer模型中编码器的输入矩阵,通过解码器获取重构后的时间序列。
[0036]
对于位置嵌入,由于本发明使用传统的transformer模型作为基础模型,所以不包含递归和卷积,为了让模型学习到时序信息,使用了固定版本的位置嵌入,在编码器中嵌入位置信息。同时,为了让模型更好地学习到时间序列的隐藏信息,在位置信息中加入了时延编码时延编码矩阵公式如下式所示:
[0037][0038]
式中,为掩码矩阵中的值,为第ti时刻、第j个特征的时延编码值,为第t
i-1
时刻、第j个特征的时延编码值,n为滑动时间窗口的大小,其具体值可以设置为1周或1天,d为特征的维数。
[0039]
因此,本发明的位置编码由时间序列固定位置编码和时延编码相加得到,即,位置矩阵由时间序列固定位置编码矩阵和时延编码矩阵相加得到。其中,时延编码的数值根据原始数据的掩码矩阵来确定,然后将位置编码与原始数据相加,得到带有位置信息的原始数据。
[0040]
本发明原始数据中,原本缺失的部分指原始即缺失相应位置的数据,即该位置是没有数据的。不缺失指其原始即存在相应位置的数据。为实现本发明的目的,还引入了主动缺失,主动缺失指的是,原始位置存在数据,为了计算模型训练时候的损失,将其人为构造缺失,使其在输入矩阵中的值为0。
[0041]
对于原始数据中的原本缺失数据,无法计算其与经过transformer后的重构数据之间的损失,即,无法对“缺失数据”最终的重构效果进行对比,因为缺少其真实值。因此,要对原始数据构造主动缺失数据,来模拟原始数据中的原本缺失数据,由于主动构造的缺失数据是有真实值的,所以可以计算其与重构数据之间的损失,从而衡量模型的训练效果。
[0042]
具体地,在改进掩码矩阵中,针对原始数据中原本缺失、主动缺失和不缺失三种数据的标记不同。因此,在将原始数据与改进掩码矩阵相乘时,即可构造主动缺失。
[0043]
例如,改进掩码矩阵有3种可选参数:-x,0和x。其中-x表示原本缺失,0表示主动缺失,x表示存在,其默认类型为float32。此处的目的是要构造一个输入矩阵,让原本缺失数据的位置上的值不能为0,主动缺失数据上的位置上的值要为0,不缺失数据的位置上的值不能为0。因此,在掩码矩阵中,用-x表示原本缺失,因为此时的原始数据是经过位置嵌入的原始数据,其中原本缺失数据的位置上的值已经不为nan或者0了,因此,与-x相乘后,其值也不为0;而主动缺失数据的位置上的值一定要为0,所以,用0表示主动缺失,这样与0乘完之后,其值就一定为0;不缺失数据的位置上不能为0,因此,与x相乘之后,其值也不为0。示例地,如果要主动构建30%的缺失,那么就在存在的数据上,记录数量大小为全部数据总量的30%的原本就存在的数据的位置,然后,在掩码矩阵中将其对应位置的值设置为0。
[0044]
改进掩码矩阵m的样式如下式所示:
[0045]
其中m∈rn×d[0046]
式中,m是一个n
×
d的矩阵,是掩码矩阵3种可选参数之一,当原始数据中的数据为原本缺失时,该数据对应位置上的值为-x,当原始数据中的数据为主动缺失时,该数据对应位置上的值为-0,当原始数据中的数据为不缺失时,该数据对应位置上的值为x。
[0047]
其中,x的值可以自由选择,但选择的值最好应经过tanh激活函数,并且超过默认的float32,然后将-x,0,x经过relu,tanh和tanh求导后,会趋近于-1和1;j表示第几个特征,例如0表示第1个特征,j表示第j-1个特征;t0表示的是在时间窗口中第一组多元数据,ti表示在时间窗口中第i-1组多元数据。具体地,掩码矩阵在计算重构损失的时候,仅使用了tanh的导数,tanh的导数在0处其值为1,在两边近似为0。掩码矩阵在计算插补损失的时候,
则需要依次使用tanh激活函数和relu激活函数。
[0048]
该改进掩码矩阵通过与带有位置信息的原始数据相乘之后,会得到一个带有掩码信息和位置信息的新矩阵,该矩阵为transformer编码器的输入矩阵,其中在由于掩码矩阵中,针对原始数据中原本缺失、主动缺失和不缺失三种数据的标记不同,因此,在该输入矩阵中,原本缺失位置的数据为原始数据与对应位置矩阵的值的和乘-x,主动缺失位置的数据为0,不缺失位置的数据为原始数据与对应位置矩阵的值的和乘x。
[0049]
步骤3,计算重构损失。
[0050]
通过损失函数,计算经过transformer得到的重构数据中主动缺失部分与原始数据中主动缺失部分之间的损失,以提高模型的性能。
[0051]
本发明通过使用改进掩码矩阵,可以标注两种缺失,因此,在计算重构损失时,可以仅计算主动构造的缺失数据之间的重构损失,损失计算公式如下:
[0052]
l=x
·
(tanh(m))'-de(z)
·
(tanh(m))'
[0053]
其中,l为重构数据中主动缺失部分与原始数据中主动缺失部分之间的损失值,x为原始数据,de()为transformer中的解码器,z为经过编码器的低维向量,其为transformer编码器捕获到的数据特征,de(z)为经过transformer得到的重构数据。由于使用了tanh()函数的导数作为激活函数,因此,在改进掩码矩阵中,矩阵m中的值在超过100的时候会直接等于1。
[0054]
步骤4,数据插补。
[0055]
根据重构数据和位置矩阵,将原始数据中的缺失值插补,并通过插值公式计算插补后的数据与原始数据之间的损失。
[0056]
由于改进掩码矩阵中已经标记了原始数据中原本缺失的数据,因此原本缺失数据的位置是已知的,由此,通过掩码矩阵和位置矩阵,可以获取到原始数据中缺失值的具体位置。然后使用在重构数据中相同位置上的数据,对原始数据进行填补。
[0057]
本步骤中的插值公式为:
[0058]
l
inputed
=x
·
relu(tanh(m))+de(z)
·
(1-relu(tanh(m)))
[0059]
其中,l
inputed
为插补后的数据与原始数据之间的损失,其使用了relu函数和tanh函数。
[0060]
步骤5,当重构数据中主动缺失部分与原始数据中主动缺失部分的真实值之间的损失收敛,即transformer模型收敛的时候,此时使用重构数据对原始数据插补出来的结果为最终插补的结果。
[0061]
此处,重构数据中主动缺失部分指的是在主动缺失数据位置的预测数据。在输入矩阵中存在主动缺失、原本缺失和不缺失的数据,经过transformer编码器和解码器后,生成了重构数据。输入矩阵中主动缺失的数据也经过transformer编码器和解码器后,得到了重构,获取到了该预测数据。
[0062]
原始数据中主动缺失部分的真实值则指的是原始数据中主动缺失部分的数据。因为是主动缺失的,所以这些数据其实是存在的,只是为了构造缺失,将其对应位置的掩码矩阵的值设置为了0,从而相当于缺失,此处真实值指的就是原始数据中主动缺失部分的原本数据。
[0063]
步骤6,利用插补得到的数据集进行风电功能预测。
[0064]
在本发明的具体实施例中,硬件为一台计算机,配置包含硬件环境:cpu:2颗intel xeon 6130处理器(2.1ghz/16c)/2666mhz/10.4gt;gpu:6块16g_tesla-p100_4096b_p_cac;内存:16根32g ecc registered ddr4 2666;软件环境:操作系统:ubantu 16.04;深度学习框架:tensorflow,pandas,scikit-learn;语言及开发环境:python 3.6、anaconda 3、pycharm 2020。
[0065]
本实例以2019年内蒙古某风电场数据imwp为分析对象。imwp共分为两部分数据集,气象数据(nwp)和功率数据,共14980条。其中,气象数据(nwp)包括日期、时间、层高、风速、风向、湿度、温度、气压、空气密度数据,其部分数据样式如表1所示;功率数据包括日期、时间、风场编号、集电线编号、短期原始、短期预测功率等等,其部分数据样式如表2所示。这部分数据由风电场运行监测与数据采集系统(scada)获取。由于环境恶劣、scada系统传感器异常、通讯故障等因素,存在一定的异常和缺失数据,其中缺失数据近4300条(30%)。本发明实例中在缺失率为30%的imwp数据集上使用本发明提出的方法、vae-gan、gan、knn、mean进行插补,然后使用随机森林回归模型和lstm神经网络模型对未来风电数据进行预测,其结果如图2所示。通过图2可以看出,经过本发明提出的方法进行插补的数据集会对后续的下游任务提供更贴近真实数据的数据集,同时也会提高下游模型的性能。
[0066]
虽然本发明已经通过优选实施例进行了描述,然而本发明并非局限于这里所描述的实施例,在不脱离本发明范围的情况下还包括所作出的各种改变以及变化。
[0067]
表1 imwp中的历史天气数据
[0068][0069]
表2 imwp中的历史功率数据
[0070]
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1