LEAP: Learning to Prescribe Effective and Safe Treatment Combinations for Multimorbidity

Authors: Yutao Zhang, Robert Chen, Jie Tang, Walter F. Stewart, Jimeng Sun

Keywords: Treatment Recommendation, Multimorbidity, Multi-Instance MultiLabel Learning

  • 关键词:治疗方案推荐,多发病,多实例多标签学习

KDD’17 清华大学,佐治亚理工学院 (Georgia Institute of Technology),萨特健康 (Sutter Health)

论文链接:https://dl.acm.org/doi/pdf/10.1145/3097983.3098109

代码链接:https://github.com/neozhangthe1/AutoPrescribe


0. 总结

  • 使用RNN+强化学习,根据病人的疾病给出对应药物。

  • RNN用于学习疾病和药物之间的对应关系,强化学习部分用于避免药物之间的互斥作用,以及使模型推荐结果更完整。

  • 使用了MIMIC3和另一个私有数据集。

  • 没有考虑病人的历史诊疗记录,也没有对剂量和服用频次等信息的考量。

1.研究目标

利用历史诊疗信息和额外的药物互斥信息,对输入的诊断,给出对应的药物推荐。

2.问题背景

针对患有多种疾病的患者,经常需要多种药物联合治疗。而药物之间可能有对抗性;治疗A疾病的药物可能对B疾病有加重效果。

3. 方法——LEAP模型

3.1 问题定义

治疗方案推荐的目标是:基于患者历史诊断记录,从所有治疗方案中选择一种最佳的推荐给患者。

面临的主要挑战:

  • 学习药物和疾病之间的映射关系
  • 学习药物之间的相互作用关系

3.2 Basic LEAP模型

模型输入是疾病名称的集合,映射到响应的embedding \(x_i\),然后通过一个注意力机制,得到这些疾病向量对应的药物向量\(\Psi_i\),再结合RNN模型中的当前状态\(s_{t-1}\)和上一个药物名称\(y_{t-1}\),生成当前状态向量\(s_t\),进而得到当前的输出药品\(y_t\)。

模型训练时,由于病人实际使用的药物是一个集合,不是一个序列,因此需要指定一种排序方式,比如最流行的药品放前面、最罕见的药品放前面、按药品名称排序、随机排序等方法。

预测时用K=2的beam search来得到输出。

3.3 基于强化学习的fine-tune

Basic LEAP模型可以学到疾病和药品之间的对应关系,但无法学到药品之间的互斥关系;模型生成的药品序列也不够完整。

本文提出利用额外的药品-药品互斥、药品-疾病互斥信息来进一步指导模型的训练。

简单来说,就是如果模型输出序列包含上述互斥对,就把模型Reward置零,否则,模型Reward就是输出序列和groud truth之间的Jaccard相似度。

这样的模型设计同时解决了上面提到的两个问题:模型包含互斥信息直接白给,如果输出序列不够完整也不能得到高的Reward。

4. 实验

4.1 数据集

  • MIMIC-3:公开。包含6,700疾病,4,000药物,涵盖11年,50,000次医疗记录
  • Sutter:私有。包含8,000疾病,7,500药物,涵盖18年,2,400,000医疗记录。

sutter中的药物使用GPI一级和三级编码系统,MIMIC-3中的药物使用NDC编码系统,但被转换为GPI一级和三级编码。

训练集、验证集、测试集按7:1:2划分,应该是按病人划分,没有考虑根据病人的历史诊疗记录做进一步推荐的场景。

4.2 baselines

  • Rule-based:使用一个药物-疾病映射数据集来推荐药物
  • K-Most frequent:选择与该疾病相关的K个最相关的药物。Sutter和MIMIC-3上分别设K为1和3
  • Softmax MLP:3层神经网络,阈值等超参做grid-search
  • Classifier Chains:分类器链,把前面的分类结果作为后面的分类器的输入。输入信息使用multi-hot编码,使用SVM作为分类器
  • LEAP:本文提出的基于RNN、强化学习和额外药物关系数据库的算法。基于Theano实现(开源)、使用ADAM优化器。

4.3 实验结果

实验分为定量实验和定性实验,分别验证推荐的准确度和完整性、安全性等。

4.3.1 定量实验

使用Jaccard相似度来衡量推荐结果与ground truth的相似性:

\[\operatorname{Jaccard}=\frac{1}{K} \sum_{i}^{K} \frac{\left|Y_{i} \cap \hat{Y}_{i}\right|}{\left|Y_{i} \cup \hat{Y}_{i}\right|}
\]
  • 实验结果如下。当分类级别比较多(3)时,药物推荐难度升高,性能相对较低。

论文argue了AUC等传统评价指标对于此任务并不合适——我们不仅需要把相关药物排到前面,还需要避免药物之间以及药物和其他疾病之间的互斥性。

4.3.2 label输入顺序

训练的时候,ground truth要一个一个输入进去,顺序有怎样的影响:

  • 随机输入效果最好,优先输入流行药物效果最差。

4.3.3 去除药物相互作用的效果

4.3.4 定性分析

邀请专家,对100个随机诊断对应的推荐结果进行评分。

  • 2分:解决所有疾病且没有药物相互作用
  • 1分:解决50%以上的疾病且没有药物相互作用
  • 0分:解决50%以下的疾病或者有药物相互作用

结果:

4.3.5 case study

两个病人的诊断,以及各种方法得到的推荐结果对比:

LEAP: Learning to Prescribe Effective and Safe Treatment Combinations for Multimorbidity的更多相关文章

  1. booklist for machine learning

    Recommended Books Here is a list of books which I have read and feel it is worth recommending to fri ...

  2. What is machine learning?

    What is machine learning? One area of technology that is helping improve the services that we use on ...

  3. 宽度学习(Broad Learning System)

    宽度学习(Broad Learning System) 2018-09-27 19:58:01 颹蕭蕭 阅读数 10498  收藏 文章标签: 宽度学习BLBLS机器学习陈俊龙 更多 分类专栏: 机器 ...

  4. 一些基本的C/C++数据类型

    size_t size_t. A basic unsigned integer C/C++ type. It is the type of the result returned by sizeof ...

  5. How To Easily Call WCF Services Properly z

    Please note: this article has been superceded by the documentation for the ChannelAdam WCF Library. ...

  6. 【原】Scala学习资料

    Scala是基于JVM的一种通用函数式也是面向对象编程语言,能和Java.C#等主流的编程语言无缝融合. 下面给大家推荐一些Scala的学习资料,序号靠前的重要性比较高. 1.Scala初学指南 (1 ...

  7. Policy Gradient Algorithms

    Policy Gradient Algorithms 2019-10-02 17:37:47 This blog is from: https://lilianweng.github.io/lil-l ...

  8. Learning English with EnglishClass101.com---10 Habits of highly Effective Learners

    you can find it on YouTube:Learning English with EnglishClass101.com 10 Habits of highly Effective L ...

  9. Paper慢慢读 - AB实验人群定向 Learning Triggers for Heterogeneous Treatment Effects

    这篇论文是在 Recursive Partitioning for Heterogeneous Casual Effects 的基础上加入了两个新元素: Trigger:对不同群体的treatment ...

  10. Multi-Agent Reinforcement Learning Based Frame Sampling for Effective Untrimmed Video Recognition

    Multi-Agent Reinforcement Learning Based Frame Sampling for Effective Untrimmed Video Recognition IC ...

随机推荐

  1. 【Dubbo】构建SpringBoot整合Dubbo的Demo

    参考乐字节的Dubbo教程 https://www.bilibili.com/video/BV19L4y1n7YE Zookeeper单机部署 (Windows) 因为项目需要,这里我自己学习就采用Z ...

  2. 说说中国高校理工科教育中的基础概念混乱问题——GPU是ASIC吗

    在YouTube上看到这样一个视频: https://www.youtube.com/watch?v=7EXDp6c9n-Q&lc=Ugydwl8gppB5FWE8Y5V4AaABAg.9fc ...

  3. 从数据到洞察:DataOps加速AI模型开发的秘密实践大公开!

    作者 | 代立冬,白鲸开源科技联合创始人&CTO 引言 在AI驱动的商业世界中,DataOps作为连接数据与洞察的桥梁,正迅速成为企业数据战略的核心. 在WOT全球技术创新大会2024·北京站 ...

  4. SMU Spring 2023 Contest Round 4(第 21 届上海大学程序设计联赛 春季赛)

    A. Antiamuny wants to learn binary search 签到题. #include <map> #include <set> #include &l ...

  5. python分布式事务方案(一)tcc

    python分布式事务方案(一)tcc 随着单体应用的拆分以及服务化的流行,现在分布式事务已经比较常见,分布式事务理论ACID.CAP.BASE等我就不说了,现在就直接说一下一种常见的解决方案-tcc ...

  6. C#读写图片文件到Access数据库中

    今天学习了把图片文件读写到数据库中,我是用的Access数据库,SQL还没去测试,不过都差不多 数据库表的样式 练习嘛就随便弄了下,说明下图片转成的字符串要用备注类型才可以哦 如果用的Sql数据库的话 ...

  7. JAVA IO流-小白版

    I/O流原理 I/O 是 Input / Output 的缩写,I / O 流技术是非常实用的技术,用于处理数据传输.如读/写文件,网络通讯等: Java中对于数据的输入/输出操作以"流(s ...

  8. 推荐一款开源一站式SQL审核查询平台!功能强大、安全可靠!

    1.前言 在当今这个数据驱动的时代,数据库作为企业核心信息资产的载体,其重要性不言而喻.随着企业业务规模的不断扩大,数据库的数量和种类也日益增多,这对数据库的管理与运维工作提出了前所未有的挑战.在这样 ...

  9. WebShell流量特征检测_哥斯拉篇

    80后用菜刀,90后用蚁剑,95后用冰蝎和哥斯拉,以phpshell连接为例,本文主要是对这四款经典的webshell管理工具进行流量分析和检测. 什么是一句话木马? 1.定义 顾名思义就是执行恶意指 ...

  10. Unity 中 Color 与 Color32 的区别

    1. 存储方式 Color用四个浮点数(float)来表示RGBA,取值范围均是0到1 举例: var orange = new Color(1f, 0.5f, 0f, 1f); 而Color32使用 ...