TimeGAN的介绍和优势
TimeGAN是基于GAN的变体,在解决时间序列数据的生成任务上相较其他GAN具有优势。当前,TimeGAN已被广泛地应用于复杂时间序列模拟,相较于传统GAN模型和第三代神经网络算法,TimeGAN在训练收敛速度和模拟精度上具有显著优势。对本文而言,鉴于负荷时间序列特征的复杂性,本文将该方法用于负荷侧情景集的生成。TimeGAN是一种黑箱模型,与传统的方法不同,无需事先对数据的分布做任何假设,仅需将大量历史负荷过程输入模型,TimeGAN会对历史负荷情景进行学习和训练后,自动合成新的情景过程。而在情景生成期间,TimeGAN还会主动调整自身的结构和参数,以最大程度地模拟复杂因素变化对于负荷曲线的影响。因此,相较于传统方法,TimeGAN可以更充分地考虑复杂因素对于负荷的影响,适用性更为广泛。
Python实现
使用Python 3.7开发环境调用开源库Pytorch构建了TimeGAN模型。并进行了t-SNE和PCA可视化分析,同时绘制了概率密度对比图。
import numpy as np
import pandas as pd
from sklearn.preprocessing import MinMaxScaler
from tensorflow import function, GradientTape, sqrt, abs, reduce_mean, ones_like, zeros_like, convert_to_tensor,float32
from tensorflow import data as tfdata
from tensorflow import config as tfconfig
from tensorflow import nn
from tensorflow.keras import Model, Sequential, Input
from tensorflow.keras.layers import GRU, LSTM, Dense
from tensorflow.keras.optimizers import Adam
from tensorflow.keras.losses import BinaryCrossentropy, MeanSquaredError
import numpy as np
from tqdm import tqdm, trange
import matplotlib.pyplot as plt
import matplotlib.gridspec as gridspec
from sklearn.decomposition import PCA
from sklearn.manifold import TSNE
预期结果
在系统环境为Intel(R) Core(TM) i7-12700, 2.30 GHz, 16 GB RAM的PCs上,使用Python 3.7开发环境调用开源库Pytorch构建了TimeGAN模型。将区域的历史负荷数据输入TimeGAN模型进行学习和训练,设置train_steps为20000,其余参数进行了微调,程序执行时间约3小时。最终,TimeGAN模型合成了大量仿真负荷情景。
对TimeGAN生成负荷情景的合理性进行了检验。如图所示,TimeGAN生成的负荷情景数据与原始负荷数据间的皮尔逊相关系数系数(ρ)为0.87,表明生成数据与原始数据之间具有较强的相关性;R-Square(R2)的值为0.77,意味着TimeGAN很好的学习了原始负荷数据的特征,生成情景与原始情景间的拟合程度较好。此外,图中颜色梯度反映了数据点的密集程度,可以看出,TimeGAN生成的数据与原始数据的整体分布高度一致,在图中形成了明显的红色高密度区域。同时,数据点整体集中在红色拟合线两侧,说明TimeGAN生成的数据与原始数据在全局分布上没有明显的偏差。
相较于传统基于概率分布的随机抽样方法在极端负荷情景模拟上的优势,还使用了多数论文采取的基于正态分布的负荷情景随机生成方法生成了大量负荷情景数据,用以对比验证。考虑到生成的负荷情景的高维特性,采用常用的T-Distributed Stochastic Neighbor Embedding(t-SNE)方法将两种方法生成的情景集进行降维并可视化。TimeGAN生成的数据点良好的匹配了原始数据点,与原始负荷数据高度重叠,且在边缘部分(较为极端的情景)方面也有良好的覆盖。