使用傅里叶流的生成时间序列建模
项目描述
傅里叶流 🌀
用于《使用傅里叶流的生成时间序列建模》论文的代码。
代码作者:Ahmed Alaa
描述
在医疗预后等领域生成合成的时序数据至关重要,在这些领域,由于对隐私的担忧,研究受到无法访问数据的限制。
最近提出的大多数用于生成合成的时序数据的方法都依赖于使用生成对抗网络(GANs)的隐式似然建模——但是这些模型可能难以训练,并且可能通过“记住”训练数据中的时间模式来损害隐私。
在本文中,我们提出了一种基于新颖归一化流类的显式似然模型,该模型在频域而不是时域中观察时间序列数据。提出的流称为 傅里叶流,它使用离散傅里叶变换(DFT)将任意采样周期的变长时间序列转换为固定长度的频谱表示,然后对频域变换的时间序列应用(数据相关的)频谱滤波器。我们表明,凭借DFT的解析性质,傅里叶流的雅可比行列式和逆映射可以在线性对数时间内高效计算,无需像现有的NICE(Dinh等人(2014年))、RealNVP(Dinh等人(2016年))和GLOW(Kingma & Dhariwal(2018年))等流那样施加显式结构约束。
安装
使用 pip
安装
pip install fflows
示例
拟合傅里叶流
import numpy as np
from fflows import FourierFlow
T = 11
n_samples = 100
dims = 3
X = np.random.randn(n_samples, T, dims)
model_params = {
"hidden": 11,
"n_flows": 11,
}
train_params = {
"epochs": 10,
"batch_size": 500,
"learning_rate": 1e-3,
"display_step": 100,
}
model = FourierFlow(**model_params)
model.fit(X, **train_params)
生成新数据
samples = model.sample(10)
assert samples.shape == (10, T, dims)
数据
本文中使用的公共数据集可在以下位置获得:
实验
- 对于实验1(第5.1节),运行
ICLR 2021 - Experiment 1.ipynb
。 - 对于实验2(第5.2节),运行
run_experiment_2.py
。
引用
请使用以下格式引用:
@inproceedings{alaa2020generative,
title={Generative Time-series Modeling with Fourier Flows},
author={Alaa, Ahmed and Chan, Alex James and van der Schaar, Mihaela},
booktitle={International Conference on Learning Representations},
year={2021}
}
项目详情
下载文件
下载适合您平台的应用程序。如果您不确定选择哪个,请了解更多关于 安装包 的信息。
源代码分发
此版本没有可用的源代码分发文件。请参阅 生成分发存档的教程。
构建分发
fflows-0.0.3-py3-none-any.whl (20.0 kB 查看哈希值)
关闭
哈希值 for fflows-0.0.3-py3-none-macosx_10_14_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c6101a5b3ebf241cf3bb473420ac1669759e4ca84fabbb09fb576d16eb2b6928 |
|
MD5 | 03e586b1da51b2a5008c4925adf82746 |
|
BLAKE2b-256 | 5693eba05d84a28ed2f1885a37d528f6b4bef6e8aabae19d0a104a6439570a24 |