使用TimeGAN建模和生成时间序列数据
在本文中 , 我们将研究时间序列数据并探索一种生成合成时间序列数据的方法 。
时间序列数据—简要概述
时间序列数据与常规表格数据有什么不同呢?时间序列数据集有一个额外的维度——时间 。 我们可以将其视为3D数据集 。 比如说 , 我们有一个包含5个特征和5个输入实例的数据集 。 
文章图片
那么时间序列数据基本上是该表在第3维的扩展 , 其中每个新表只是新时间步长的另一个数据集 。 
文章图片
主要的区别是时间序列数据与表格数据相比有更多的数据点实例 。
能源数据集的案例研究
如果我们看一下能源数据集 , 它实际上看起来只是一个常规的表格数据集 , 每一行都意味着一个新的时间步长 , 并以特性的形式具有相应的数据点 。 根据数据列 , 每个条目在持续10分钟后被记录 。 
文章图片
但是我们在前一节中看到它看起来像一个3D表格数据集 。 在这里 , 我们可以使用一种采样数据点的方法来创建第三维 。
我们取一个大小为24的窗口 , 并沿着数据集的行运行它 , 每次移动一个位置 , 从而获得一定数量的2D矩阵 , 每个矩阵的长度为24 , 并具有所有列特征 。 
文章图片
在这个数据集中 , 有19736行 。 通过每24行移位采样 , 我们得到19712个条目 , 每个条目有24行和28个特征 。 当然 , 我们可以随机混合它们 , 使它们成为独立和同分布(IID) 。 因此 , 我们得到了一个维度(19712 , (24,28))的数据集 , 其中每个19712实例有24行(即时间步)和28个特性 。
使用TimeGAN生成时间序列数据
TimeGAN(时间序列生成对抗网络)是一种合成时间序列数据的实现 。 论文的作者也提供了相应的Python实现 , 在本文中 , 我们将使用0.3.0版本 , 这是撰写本文时的最新版本 。
pipinstallydata-synthetic==0.3.0
有关这方面的更多细节请参阅ydata-synthetic的github源代码 。 在本节中 , 我们将查看如何使用能量数据集作为输入源来生成时间序列数据集 。
我们首先读取数据集 , 然后以数据转换的形式进行预处理 。 这个预处理实质上是在[0,1]范围内缩放数据 。
fromydata_synthetic.preprocessing.timeseries.utilsimportreal_data_loading
file_path="./data/energy_data.csv"
energy_df=pd.read_csv(file_path)
try:
energy_df=energy_df.set_index('Date').sort_index
except:
energy_df=energy_df
#Datatransformationstobeappliedpriortobeusedwiththesynthesizermodel
energy_data=https://pcff.toutiao.jxnews.com.cn/p/20210909/real_data_loading(energy_df.values,seq_len=seq_len)
print(len(energy_data),energy_data[0].shape)
现在 , 从这个时间序列数据(energy_data)生成实际的合成数据是最简单的部分 。 我们在energy_data上训练TimeGAN模型 , 然后使用这个训练过的模型生成更多的数据 。
fromydata_synthetic.synthesizers.timeseriesimportTimeGAN
synth=TimeGAN(model_parameters=gan_args,hidden_dim=hidden_dim,seq_len=seq_len,n_seq=n_seq,gamma=1)
synth.train(energy_data,train_steps=500)
synth.save('synth_energy.pkl')
synth_data=https://pcff.toutiao.jxnews.com.cn/p/20210909/synth.sample(len(energy_data))
这里我们根据需求适当地定义要提供给TimeGAN构造器的参数 。 我们将n_seq定义为28(特性) , seq_len定义为24(时间步骤) 。 其余参数定义如下:
seq_len=24#Timesteps
n_seq=28#Features
hidden_dim=24#Hiddenunitsforgenerator(GRU&LSTM).
- iPhone|美媒:iPhone15确认使用USB - C口,今年升级有遗憾!
- 中兴|使用中兴Axon40UItra之后,明白屏幕完美,却在市场上遇冷的原因
- 互联互通|哪些无人机适合新手使用?从普宙O2到大疆Mini 3 Pro,一文读懂
- 华为|越来越全面性的手机,过度使用,是否会损坏其内存卡机速度
- 如何实现一根网线连接路由器,既能上网又可以使用itv呢?
- iPhone 13深度使用半年,体验虽然流畅,但两个缺点却让人无奈!
- 电饭锅第一次使用,有什么性能检测法子?
- 如何在 Notion 类产品中使用卡片笔记写作法:理念与实践
- B站“特殊版”来了!全程使用无广告,比开会员还给力
- 马克·扎克伯格|扎克伯格宣布打造元宇宙钱包,计划让10亿人使用元宇宙
