Deep Survival: A Deep Cox Proportional Hazards Network

相关资源

原论文地址:here

论文中使用的深度生存分析库:DeepSurv,是基于Theano 和 Lasagne库实现的,支持训练网络模型,预测等功能。

考虑到DeepSurv库中存在着一些错误以及未实现的功能,博主使用目前主流的深度学习框架Tensorflow实现了深度生存分析库:TFDeepSurv。欢迎有兴趣的同学Star和Fork,指出错误,相互交流!

TFDeepSurv简介:基于tensorflow的深度生存分析框架,经过模拟数据和真实数据的测试。支持生存分析数据事件时间出现ties的建模,自定义神经网络结构及参数,可视化训练过程,输入训练数据特征重要性分析,病人生存函数的估计。还有支持使用科学的贝叶斯超参数优化方法来调整网络参数。

博主有空会给出TFDeepSurv各个功能实现参考的源论文!

Introduction

文章提出使用非线性的风险函数重新构造COX比例风险模型,神经网络恰好擅长学习复杂的非线性函数。

但是目前的研究中,很少有构建的NN模型表现超过普通的COX模型,目前适用神经网络进行生存分析的主要的方法为:

  • 使用分类模型
  • 时间编码方法
  • Faraggi-Simon network(前向NN,估计单个病人风险)

有很多基于Faraggi-Simon network的方法,但是相比经典的COX比例风险没有明显的提升,原因是因为当时的NN研究还没有如今这么透彻!(现在有很多基于NN的优化方法,以及成熟的框架)

文章主要目标:
- 提出基于深度学习的COX模型进行生存分析(总是好于经典模型)
- 应用在个性化治疗推荐系统以及作为有用的医学研究框架

Background

生存分析数据

  • 包含三个部分:基础数据 x ,观测时间 T ,观测事件标识 E .
  • E = 0 表示没有观测到事件, E = 1 表示观测到了事件发生(比如死亡或生存)
  • E = 0 那部分病人被称为right-censored(右删失),在标准的回归模型中,这部分病人会被丢弃。

Faraggi-Simon network

  • 尝试使用NN去学习非线性的风险函数
  • 只有一个隐藏层,2到3个神经元
  • 表现不如经典的COX比例风险模型,然后就没有下文了

Deep Survival

DeepSurv

  • 使用了更深的网络(不止一个隐藏层).
  • 使用了更加先进的训练技巧,比如ReLU函数,Dropout,BatchNorm等方法.
  • 网络只有一个输出,估计了风险函数值.

损失函数如下:
损失函数

Treatment Recommender System

  • 同一个病人,不同种的治疗方式,可以采用训练好的网络计算风险函数值,根据这个结果决定采用哪种治疗方式.
  • 相比普通的COX模型,网络不需要先验知识(大致的意思就是不用人工提取重要特征).

Experiments

实验在三类数据上进行:仿真数据、真实生存数据、临床治疗数据。

评估网络模型预测准确性指标为:concordance-index (C-index),也就是一致性指数,其计算方式为:a pair is concordant with the true outcomes if the patient with a higher predicted risk dies first. The C-index is the ratio of the number of concordant predictions and the set of all possible pairs. (a non-comparable event, for example, is two censored patients or one patient who is censored before another’s death time)

我的理解是:所有可比对中,预测出风险函数大的确实先死亡对数占比。

实验设计(个人觉得这部分有必要学习一下):
baseline实验:a linear CPH regression for a baseline comparison

  • 仿真生存数据:进行了两个实验,线性的风险函数和非线性(Gaussian)的风险函数。每个实验数据包含训练、验证和测试集( N = 10000 ),协变量有10个,都服从[-1, 1]的正态分布,死亡时间 T = E x p ( λ 0 e h ( x ) ) 。两个实验中,设计的 h ( x ) 都只与两个协变量有关,主要是为了说明NN具有筛选变量的功能。最后,选择了一个截止时间,使得数据中有30%-40%病人都有观测事件 .
  • 真实生存数据:myocardial infraction (MI) 生存分析,1638个观测病例和5个特征.

实验结果

  • 线性风险函数数据:DeepSurv表现的和COX模型一样好,甚至误差远远小于COX模型。非线性风险函数数据:DeepSurv表现明显优于COX模型,C-index:0.612 vs 0.490。说明经典的COX模型在学习协变量与风险函数之间的非线性关系上明显无能为力,而DNN却能很好地学习这种非线性的映射.
  • C-index,DeepSurv:COX = 0.779 vs 0.669.

然后还在真实的乳腺癌数据中进行了实验,发现C-index,DeepSurv:COX = 0.695 vs 0.688,得出结论:在风险分层上来说,C-index大的DeepSur模型更加好!

Treatment Recommender System Experiments

这里就是实际应用了:同一个病人,不同种的治疗方式,可以采用训练好的网络计算风险函数值,根据这个结果决定采用哪种治疗方式。实验发现,推荐的治疗方式的生存曲线和未被推荐的治疗方式的生存曲线有显著差异,而且推荐的治疗方式生存时间更长!

My views:

个人的一些愚蠢的看法:

  • 伴随着DNN研究的深入,以及一些很好的优化方法和成熟的框架技术,使得基于DNN的生存分析能够进行。技术,不同研究领域的相互促进吧!
  • 文中有点不太好的是,关于实验的细节谈论的太少。对DNN熟悉的人肯定会问:网络结构是什么样的?如果调整确定的最佳网络参数?这些部分都没有给出一定的说明,直接在代码里给出,感觉在论文里阐述不是更加有说服力?
  • 对于不同的应用(实际的医学应用的临床数据特征多,冗余度高),作者提出的DeepSurv是否还会有较好的表现?这是值得怀疑的,而且利用医学的先验知识进行特征选择,或者不使用先验知识直接全部特征输入网络,到底哪一个好?作者给出的一个应用数据场景过于简单。

猜你喜欢

转载自blog.csdn.net/u014686462/article/details/78586192