使用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).
- 东南亚|MIUI13深度使用报告,这还是我认识的MIUI吗?网友评价很真实
- 小米 11 Ultra 内测 NFC“读写勿扰”与“解锁后使用”功能
- 支付宝|新的支付方式兴起,已有超1.4亿人使用,微信支付宝地位不再?
- “最敬业”的手机代言人,厂商欠债173亿破产,他却仍在继续使用
- 锐龙|iOS15.2.1真的不好用吗?重度使用两天后,已升级用户都这样说
- 高度计|美国C波段5G部署争执最新进展:联邦航空局发指令限制使用高度计
- iOS|iOS15.2.1使用报告,年前不能错过的版本,网友的体验说明了一切
- iOS|iOS15.2.1不同机型使用体验,网友评价太真实,看完升级也不迟
- vivo NEX|vivo NEX 5或放弃真全面屏,使用超大尺寸挖孔屏,主打影像系统
- 淘宝|直通车标准计划智能计划销量明星的使用场景?什么时候用什么计划