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. 【Android】构建Android12项目报错

    报错信息: Installed Build Tools revision 31.0.0 is corrupted. Remove and install again using the SDK Man ...

  2. 【DataBase】SQL50 Training 50题训练

    原文地址: https://blog.csdn.net/xiushuiguande/article/details/79476964 实验数据 CREATE DATABASE IF NOT EXIST ...

  3. ubuntu18.04 环境下如何为 vscode 安装kite

    传说中的Python环境下最好用的智能补全工具   kite =============================================================== 1.   ...

  4. NVIDIA显卡cuda的多进程服务——MPS(Multi-Process Service)

    相关内容: tensorflow1.x--如何在C++多线程中调用同一个session会话 tensorflow1.x--如何在python多线程中调用同一个session会话 参考: https:/ ...

  5. Apache DolphinScheduler 3.1.8 版本发布,修复 SeaTunnel 相关 Bug

    近日,Apache DolphinScheduler 发布了 3.1.8 版本.此版本主要基于 3.1.7 版本进行了 bug 修复,共计修复 16 个 bug, 1 个 doc, 2 个 chore ...

  6. 再探GraphRAG:如何提升LLM总结能力?

    作者:王振亚 编者语: 自微软发布GraphRAG之后,相关解读文层出不穷,其中不乏优秀的内容.比如前段时间转载薛明同学的<微软GraphRAG框架源码解读>让大家快速对GraphRAG的 ...

  7. Java 代码本地设置Hadoop用户名密码

    在Hadoop环境中,通常使用Kerberos进行身份验证.但在一些开发或测试环境中,我们可能需要在本地代码中设置用户名和密码来模拟或进行简单的测试.虽然这不是一个安全的做法,因为它违背了Kerber ...

  8. 9k star 监控系统,100% 国产,推荐了解

    前言 监控系统的重要性不言而喻,国内用的最多的应该是 Zabbix 和 Prometheus,其优缺点: Zabbix 是资产管理式,监控数据存在数据库中,擅长设备监控,不擅长微服务和云原生环境的监控 ...

  9. sshpass 带密码登陆

    brew install hudochenkov/sshpass/sshpass sshpass -p password ssh -p port user@xxxx.xxxx.xxxx.xxxx

  10. PowerShell 使用

    Practice 常用命令 vim $PROFILE # 编辑配置文件 Get-ChildItem *> $null # 抛弃所有输出 whoami Remove-Item -Recurse - ...