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. 【Java】爬资源案例

    也不知道为什么喜欢叫爬虫 搞明白原理之后原来就是解析网页代码获取关键字符串 现在的网页有很多解析出来就是JS了,根本不暴露资源地址 依赖一个JSOUP,其他靠百度CV实现 <!-- https: ...

  2. HPA* (Near Optimal hierarchical Path-finding)算法的效果演示视频

    地址: https://www.youtube.com/watch?v=vtps41xEBU4

  3. OneFlow框架0.9.1dev版本,成功安装并运行

    安装cuda和cudnn: (此步骤可以忽略,pip安装框架时会自动安装依赖的cuda和cudnn环境) conda install cudatoolkit==11.8.0 python3 -m pi ...

  4. 19-canvas绘制文字

    1 <!DOCTYPE html> 2 <html lang="en"> 3 <head> 4 <meta charset="U ...

  5. 轻松易懂,一文告诉你什么是http协议?

    阅读本文之前,请详细阅读以下几篇文章: <一文包你学会网络数据抓包> <教你如何抓取网络中的数据包!黑客必备技能> 一.什么是http? Http协议即超文本传送协议 (HTT ...

  6. XSS 基本概念和原理介绍

    XSS 基本概念和原理介绍 基本概念 跨站脚本攻击 XSS(Cross Site Scripting),为了不和层叠样式表 ( Cascading Style Sheets,CSS ) 的缩写混淆,故 ...

  7. Win11如何找回熟悉的开始菜单、任务栏和右键菜单

    背景 公司政策满3年可以换新电脑,前段时间申请了下,到手后发现是Win11系统,配置翻倍,欣然接受,把一些常用的软件都安装上,但是,用了一段时间后,发现右键刷新要点击2次,开始菜单找东西也完全靠搜索, ...

  8. XGBoost模型 0基础小白也能懂(附代码)

    XGBoost模型 0基础小白也能懂(附代码) 原文链接 啥是XGBoost模型 XGBoost 是 eXtreme Gradient Boosting 的缩写称呼,它是一个非常强大的 Boostin ...

  9. 【Azure Developer】上手 The Best AI Code "Cursor" : 仅仅7次对话,制作个人页面原型,效果让人惊叹!

    AI Code 时代早已开启,自己才行动.上手一试,让人惊叹.借助这感叹的情绪,把今天操作Cursor的步骤记录下来,也分享给大家. 推荐大家上手一试,让你改变! 准备阶段 下载 Cursor(htt ...

  10. JS实现树形结构数据的模糊搜索查询

    简单示例: 需求:输入 "题2" 字,希望树形结构中带有 "题2" 字的项显示,即使父节点没有,但子节点含有,父节点仍要返回. let arr = [ { ti ...