2、RELATED WORK

从2014年,GAN框架就引起了大家的关注,大多数工作集中在图像生成。(Choi et al., 2017) 设计了 GAN 来生成 综合性的电子病历数据(EHR)。这些EHRs包含二值、多值变量,例如 ICD-9编码、药物(medication)、程序代码(procedure codes)。他们关注于一位患者的 离散值的数据、生成的 snapshots,与之对应的我们关注的是 真实、时间序列数据。未来工作可以结合这些研究来生成 多模态综合医疗时间序列数据(multi-modal synthetic medical time-series data)
多数基于 GANs 的序列数据生成器 关注于自然语言处理任务中的 discrete tokens (Yu et al., 2016),这篇文章采用一种基于强化学习(RL)的方法对GAN进行训练。我们只调研到一个利用GAN生成连续值(continuous-valued)序列的任务,其目的是使用带有 LSTM生成器和鉴别器的GAN 生成多音音乐(Mogren, 2016)。主要的区别在于架构:我们不用双向鉴别器,生成器的输出不会作为下一步的输入。再者,我们提出 a conditional version of this Recurrent GAN
Conditional GANs (Mirza & Osindero, 2014; Gauthier, 2014) 给模型附加了 information,从而允许我们干预数据生成过程。该方法主要用于图像生成任务(Radford et al., 2015; Mirza & Osindero, 2014; Antipov et al., 2017)。最近,Conditional GANs 架构也被用于自然语言处理,包括翻译 (Yang et al., 2017) 和 对话生成 (Li et al., 2017),他们都没有用RNN作为鉴别器,并且如前所述, 由于数据的离散性,使用RL训练模型
在这项工作中,我们还介绍了一些新的方法来评估GANs,利用生成的合成数据的能力来训练有监督模型。在之前的研究中,一个 GAN-based semisupervised learning approach 被提出(Salimans et al., 2016)。然而我们的目标是生成可以用于训练 在GAN训练好后任务未知的模型 的数据。(个人理解:训练GAN生成数据,不针对特定的任务,而是针对未知任务)
我们简单地讨论 differentially private stochastic gradient descent (Abadi et al., 2016) 用于生成 a RGAN with stronger privacy guarantees,这对敏感的医疗数据尤其重要。另一种方法是使用 PATE方法 (Papernot et al., 2016)来训练鉴别器。在这种情况下,不是在梯度中引入噪声(如(Abadi et al., 2016)),而是训练一个学生分类器来预测一组教师的噪声投票,每个教师都在数据的不相交集上训练。

3、MODELS: RECURRENT GAN AND RECURRENT CONDITIONAL GAN

本文工作中提出的模型遵循传统GAN的架构,其中的生成器和鉴别器都可以使用RNN来取代。因此,我们提出 Recurrent GAN (RGAN) —— 可以生成 real-valued 序列数据,Recurrent Conditional GAN (RCGAN) —— 可以生成受限于一些输入条件(conditional inputs)的 real-value 序列数据。

如上图,Generator RNN 在每一个时间步采用不同的随机种子,也可以加上一个额外的输入,如果我们想用额外的数据来约束生成的序列。

上图展示鉴别器RNN如何使用生成的序列,如果它是RCGAN,则加上额外的输入,并为输入序列的每一个时间步长生成一个合成的或真实的分类。

3.1.1 MAXIMUM MEAN DISCREPANCY

一个隐式学得真实数据分布的 GAN 是 successful。我们通过研究它产生的样本来评估它。采用 maximum mean discrepancy (MMD) (Gretton et al., 2007) 来评估比较理想,这个方法已经被用为 generative moment matching networks (Li et al., 2015) 的训练目标。MMD 输出两个数据集的样本——一组来自GAN,一组来自真实数据分布——是否是由同一个分布生成的。它通过比较样本的统计量来实现这一点。在实践中,我们考虑两组样本(MMD2)之间统计量的平方差,并用核函数替换两个样本(的函数)之间的内积。给定一个核函数 K:X×Y→RK: X \times Y \to \Bbb{R}K:X×Y→R 和 样例 {xi}i=1N\lbrace x_i\rbrace_{i=1}^N{xi​}i=1N​,{yj}j=1M\lbrace y_j\rbrace_{j=1}^M{yj​}j=1M​,一个MMD2的无偏估计为:

在时间序列之间定义适当的内核是一个活跃的研究领域。然而,许多挑战来自调整时间序列的需要。在我们的例子中,生成的和真实的样本已经在时间维度上进行了补齐。然后我们将时间序列看做 vectors(或是matrices,在多维的情况下)进行比较,并且使用径向基核函数(RBF),使用 L2范数 或 Frobenius 范数 衡量两个 vectors/matrices 之间的距离。

为了选择合适的核带宽 σ\sigmaσ,我们在两个分布之间最大化MMD检验幂的 t-statistic 的估计量(Sutherland et al., 2016);
其中,VVV 是 MMD2估计量的渐进方差。我们在训练期间使用验证集的分割来实现这一点——集合的其余部分使用优化的带宽来计算MMD2。与 (Sutherland et al., 2016) 相同,我们将混合内核定义为具有两个不同核带宽 σ\sigmaσ RBF内核的和,同时进行优化。我们发现,MMD2比发生器或鉴别器损失更有信息,并与可视化评估的质量良好相关。

5、LEARNING TO GENERATE REALISTIC ICU DATA

本文的主要目标之一是建立一个能够生成真实医疗数据集的模型,特别是ICU数据。
为此,我们的工作基于最近发布的 Philips eICU database。该数据集是由飞利浦公司提供的重症监护远程保健程序收集的。它包含了来自全美208个护理单位的大约20万名患者,共有224,026,866个条目,分为33个表格。
从这些数据中,我们着重于生成由床边监测仪测量的四个最常记录、有规律采样的变量:脉搏血氧仪测量的氧饱和度(SpO2)、心率(HR)、呼吸频率(RR)和平均动脉压(MAP)。在eICU数据集中,这些变量每五分钟测量一次。为了减少我们考虑的序列的长度,我们 每隔15分钟将样本向下测量一次,取每个窗口的中值。这大大加快了对基于LSTM的GAN的培训,同时仍然捕获了数据的相关动态。 (思考:是否会使得异常数据被平滑??)
在接下来的实验中,我们考虑病人入住ICU的开始,认为这是他们护理的关键时刻。我们关注他们停留的头4个小时,结果是对每个变量进行16次测量。虽然医疗数据通常充满了缺失的值,但在这项工作中,我们通过 丢弃缺失数据的患者 (向下采样后)来绕过这个问题。通过这种方式对数据进行预处理,我们最终得到了17693名患者的队列。最受限制的是对 non-missing MAP values 的需求,因为这些值的测量是 invasively 进行的。

5.1.1 TSTR TASKS IN EICU

ICU产生的数据很复杂,因此非医学专家很难发现其中的模式或趋势。因此,一个显示ICU综合数据的图不能提供足够的信息来评估其与真实数据的实际相似性。因此,我们使用TSTR方法评估ICU RCGAN的效果。
要执行TSTR评估,我们需要对数据执行一个或多个监督任务。ICU的一个相关问题是病人在不久的将来是否会变得危重——这是一种早期预警系统。对于生成动态时间序列数据的模型,这是特别合适的,因为数据中的趋势可能是最具有预测性的。基于我们的四个变量 (SpO2, HR, RR, MAP) ,我们定义关键阈值(‘critical thresholds’)并生成二进制的标签表示在患者将来一个小时对应的变量是否会超过阈值,也就是在第4-5小时之间,并且我们认为前4个小时是符合的。阈值设置如下表所示:

其中SpO2没有上限,因为它是一个百分比,100%表示理想条件。
对于MNIST,我们从真实的数据标签中抽取标签作为样本,并将其用作RCGAN的条件输入。这确保了标签在合成数据集中和真实数据集中的分布是相同的,考虑到标签不是独立的这一事实(患者不太可能同时患有高低血压)。
按照算法1,我们训练RCGAN 1000个epoch,每50个epoch保存一个版本的数据集。然后,我们使用TSTR对合成数据进行评价。我们使用交叉验证选择最好的合成数据集的基础上,分类器的性能,但由于我们假设它还可能用于未知的任务,我们只使用7个任务中的3个感兴趣的任务进行交叉验证步骤(用斜体表示在表2)。这个实验的结果展示在表2中,比较了性能通过一个随机森林分类器的训练预测7个感兴趣的任务,在一个实验中使用真实的数据,在另一个实验中使用合成的数据。

6、IS THE GAN JUST MEMORISING THE TRAINING DATA?

对于TSTR在MNIST和eICU中的表现,一种解释可能是GAN只是简单地“记忆”训练数据并重新生成它。如果是这样,用于训练GAN的数据将会被泄露,当用于敏感的医疗数据的时候,会有数据隐私方面的问题。关键是模型的训练数据不能被 adversary 恢复。 此外,typical GAN objective (GAN目标) 激励生成器重现训练示例,我们希望它不要过度拟合于训练数据,而是学习一个隐式分布(implicit distribution)在训练样例中表现良好。
为了回答这个问题,我们执行了三个测试——一个是定性测试,两个是统计测试,概述在下面的小节中。虽然这些评估本质上是经验主义的,但我们仍然相信,提出和测试的隐私评估措施对于快速检查RGAN生成的数据的隐私属性非常有用,但没有强大的隐私保障。

模态综合医疗时间序列数据:REAL-VALUED (MEDICAL) TIME SERIES GENERATION WITH RECURRENT CONDITIONAL GANS相关推荐

  1. 2017 Real-valued (Medical) Time Series Generation with Recurrent Conditional GANs

    Abstract GAN在生成数据方面取得了瞩目的成效,作者提出了两种GAN应用于医疗数据方面,RGAN和RCGAN,用于生成多维的时间序列数据.RGAN,在生成器和分类器上都采用RNN架构.RCGA ...

  2. keras时间序列数据预测_使用Keras的时间序列数据中的异常检测

    keras时间序列数据预测 Anomaly Detection in time series data provides e-commerce companies, finances the insi ...

  3. GAN(生成对抗网络)在合成时间序列数据中的应用(第一部分——利用GAN生成合成(synthetic)数据)

    (本文基本是对Jasen 的<Machine Learning for Algorithmic Trading>第二版的第21章进行翻译.改写和复现,并用于我们的实际情况) 1. 准备阶段 ...

  4. MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征

    文章目录 MITRE:利用微生物组时间序列数据推断与宿主状态变化相关的特征 热心肠日报 写在前面 主要结果 图1. MITRE通过对时间序列的微生物群落的系统发育信息进行学习,同宿主的状态改变联系起来 ...

  5. 分布滞后线性和非线性模型(DLNM)分析空气污染(臭氧)、温度对死亡率时间序列数据的影响...

    全文下载链接 http://tecdat.cn/?p=23947 分布滞后非线性模型(DLNM)表示一个建模框架,可以灵活地描述在时间序列数据中显示潜在非线性和滞后影响的关联.该方法论基于交叉基的定义 ...

  6. python时间序列峰值检测_如何检测和过滤时间序列数据的峰值?

    我有一个pandas用户登录数据框,如下所示:id datetime_login 646 2017-03-15 15:30:25 611 2017-04-14 11:38:30 611 2017-05 ...

  7. 通过 Python 代码实现时间序列数据的统计学预测模型

    来源 | DeepHub IMBA 封图 | CSDN 付费下载于视觉中国 在本篇中,我们将展示使用 Python 统计学模型进行时间序列数据分析. 目标是:根据两年以上的每日广告支出历史数据,提前预 ...

  8. python平稳性检验_时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python)...

    时间序列预测基础教程系列(14)_如何判断时间序列数据是否是平稳的(Python) 发布时间:2019-01-10 00:02, 浏览次数:620 , 标签: Python 导读: 本文介绍了数据平稳 ...

  9. R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label)

    R语言ggplot2可视化:ggplot2可视化时间序列数据并在末尾数据点添加数值标签(number label) 目录

最新文章

  1. ACMNO.13求Sn=1!+2!+3!+4!+5!+…+n!之值,其中n是一个数字。 输入 n 输出 和 样例输入 5 样例输出 153
  2. 快速入门分库分表概念原理
  3. linux命令之添加系统搜索动态库目录-ldconfig
  4. select隐藏_数仓|几种SQL隐藏的错误,你遇到过吗?
  5. windows下安装zabbix_agent
  6. CSS中的未定义行为,浏览器的差异(一)
  7. 用数组存储字符C进行回文检测
  8. 玩转oracle 11g(39):oracle11g密码过期后的解决方法
  9. jQuery 参数详解
  10. 网络分解的时代即将到来,云服务商正在铺路 | 分析师洞察
  11. java读取redis数据_Java连接redis操作数据
  12. java读取外部配置文件_java读取jar外部的配置文件
  13. maven常用命令大全(附详细解释)
  14. WPS JS 宏搜索带颜色的字的笔记
  15. python数字式时钟_数字时钟案例学习python函数及时间库
  16. 实习一个月,自我总结
  17. 【C语言】猜灯谜问题
  18. Python编程学习笔记 - 下载数据进行可视化(I)
  19. 互联网正在化有形为无形,这是一场深刻而又彻底的嬗变
  20. uniapp一套代码打包两个APP 安装失败,提示:与已安装应用签名不同,该文件包与具有同一名称的现有文件包存在冲突

热门文章

  1. php技术面试成功后试岗,6.3公里“阅读静安”光音栈桥“会唱歌”
  2. python英语词汇读音_利用PYTHON 爬虫爬出自己的英语单词库
  3. KVM中给windows虚拟机安装virtio驱动
  4. python定义公民类、变量有身份证号_Python趣解身份证号码的奥秘!
  5. ‘EagerTensor‘ object has no attribute ‘reshape‘处理图像数据
  6. 小学计算机打字比赛教案,打字比赛活动方案
  7. 【星海出品】Horizon安装
  8. 被裁了!39 岁阿里 P9,攒下 1.5 亿....
  9. [ECE]模拟试题-2
  10. Android系统的指纹开发