邓侃解读:医疗关键数据时间序列敏感度分析的通用方法

简介: 密歇根州立大学、康奈尔大学腾讯研究院的几位学者,联名发表了一篇题为 “Identify Susceptible Locations in Medical Records”的论文。这篇文章讲述了如何在病历中找到敏感数据位置,以及如何利用这些关键数据对重症监护中的病人进行保护。

2018年2月13日,来自密歇根州立大学、康奈尔大学腾讯研究院的几位学者,联名在 Arxiv 上发表了一篇题为 “Identify Susceptible Locations in Medical Records” [1]的论文。 这篇文章讲述了如何在病历中找到敏感数据位置,以及如何利用这些关键数据对重症监护中的病人进行保护

平时大家对自己的医疗数据或许并不怎么关心,面对一大串的字符数字,身为外行基本也看不出个所以然来,更不要说如何用这些数据来救人和自救了。

但这些数据对于医生们而言就十分宝贵了。根据病患的诊疗数据医生们可以对病患的病情走向做出判断,进而给出相应的治疗手段。只不过这些平铺直叙的数据,即使是医生看起来也难免会有一些遗漏,又或者被一些可疑信息干扰。

文章中提到的方法就是要从这些流水账似的数据中找到可疑的“red flag”甚至是潜在的测量误差,去提示医生关注可能遗漏或错误判断的关键信息。

找到这些敏感信息意味着什么?

打个比方,对于病人来说,看医生最在乎的除了身体是否康复外,大概就是花了多少钱了。为了少花钱或是从中赚钱,一些不法分子甚至会进行医保诈骗。

医保诈骗通常把无病说成有病,把小病说成大病。

要做到这一结果其实并不容易。诈骗犯们如果只是篡改诊断结果中的疾病,那必须是行不通的。因为报销审核的时候,一定会核查现病史、化验结果、检查报告等以核对病情描述与诊断结果是否一致

不妨把住院病历的内容,看成一个时间序列。从入院到出院这一期间每一天的病情描述都是一个矢量,包含各种症状、体征、化验指标、检查标志物,以及诊断、药品、手术、护理等等。

这些数据信息都是连贯的,仅修改结果就像一个错误的数学公式,很容易被发现。

而医保欺诈的目标,是既要尽可能少地改动病历,还得使之支持编纂出来的出院诊断。也就是说,最理想的情况是只改动病历时间序列中某一天某一项病情描述指标,就能使之得到期盼的诊断结果。

反过来说,实际测量时可能存在的小偏差,或者数据中不起眼的一个数值变化就像是这个诈骗犯,小小的变动可能就导致了整个实际预测结果的改变。

要如何才能发现哪个病情指标对诊断结果最重要呢?文章基于这一疑问,便提出了一个“通用的方法”去对时间序列数据中各个时刻各个数值的敏感度做出分析。

如何实现搜寻

1. 首先,我们需要一个诊断模型,输入是病情描述的时间序列,输出结果是罹患各种疾病的概率。

诊断模型的实现方案有很多。最简单的是用 LSTM 模型。

当然也可以用它办法,譬如可以先用 LSTM,把不定长的病情描述的时间序列,转换成定长的张量,然后用 CNN 对定长的张量做分类。

甚至也可以摈弃 LSTM,譬如 Attention,直接在时间序列中捕捉重要的数据,然后根据这些重要数据做分类。

2. 搞定诊断模型以后,接下去对时间序列中每一天的每一项数据,做敏感性分析。

做敏感性分析的办法也很多,最粗暴的办法是穷举。保持时间序列中的其它数据项不变,只改变一项数据,然后把篡改过了的时间序列,输入进诊断模型。然后比较诊断模型的诊断结果,与病历中记录的真实的诊断结果。模型的结果,与真实结果,两者相差越大,说明这一项数据,对诊断结果影响越大。

穷举的办法效率较差,论文提议,用前沿的对抗攻击(Adversarial attack)技术,来快速找到敏感的数据项。

对抗攻击技术的原理,不难懂。由于诊断模型是神经网络,神经网络的各个参数,是通过梯度下降算法确定的。下降梯度越陡,相关的参数对模型的输出影响越大。

3. 为了让敏感性分析的结果,看起来更直观,做一个热力图。

854405b09692fa9b7c20676ff2228d419f34d8f5

横轴是各项病情指标,纵轴是时间轴,从入院到出院。二维空间中的每一个点,对应着某一天某一项指标,对诊断结果的影响力,用颜色表示影响力。

方法的拓展应用

仔细想想时间序列敏感度分析的三步曲,会发现其实这个方法并不局限于对病历记录的敏感性分析,而就像之前说的,是一个实现对事件序列攻击的通用办法

站在医保审核的立场,只有懂得了不法分子篡改病例的原理,才能更有针对性地研究如何甄别病历记录中,哪些时间的哪些数据,被人为篡改了。从而更为有效的保障病人以及医疗工作者的权益。


原文发布时间为:2018-03-5

本文作者:邓侃

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

原文链接:邓侃解读:医疗关键数据时间序列敏感度分析的通用方法

相关文章
|
Java 关系型数据库 数据库连接
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
Mybatis+MySQL动态分页查询数据经典案例(含代码以及测试)
|
存储 NoSQL 关系型数据库
【云原生】3.3 Kubernetes 中间件部署实战
一个项目总会有数据吧?数据存那里呢?在前面我们讲过,很明显直接存在数据卷里面(PVC),例如 MySQL的数据。比如 MySQL有自己的配置文件、Redis 有自己的配置文件、微服务也有自己的配置文件,将它们挂在到配置集里面(ConfigMap),服务采用的是 ClusterlP 与 NodePort。......
2338 105
【云原生】3.3 Kubernetes 中间件部署实战
|
运维 供应链 监控
深度解读:计算巢产品面对面--为软件供需两端提供哪些服务(系列二)
软件供需两端,供应端除了软件开发者,还包含软件服务商(企业应用服务商、IT集成服务商、交付服务商和管理服务提供商),需求端为软件使用终端用户。
69943 92
|
消息中间件 网络协议 物联网
MQTT常见问题之MQTT突然连不上如何解决
MQTT(Message Queuing Telemetry Transport)是一个轻量级的、基于发布/订阅模式的消息协议,广泛用于物联网(IoT)中设备间的通信。以下是MQTT使用过程中可能遇到的一些常见问题及其答案的汇总:
|
测试技术 C语言
每天一道C语言编程:Cylinder(圆柱体问题)
每天一道C语言编程:Cylinder(圆柱体问题)
145 0
|
缓存 运维 监控
记一次 JMeter 压测 HTTPS 性能问题
在使用 JMeter 压测时,发现同一后端服务,在单机 500 并发下,HTTP 和 HTTPS 协议压测 RT 差距非常大。同时观测后端服务各监控指标水位都很低,因此怀疑性能瓶颈在 JMeter 施压客户端。
记一次 JMeter 压测 HTTPS 性能问题
|
缓存 对象存储
怎么重复使用inputStream?
怎么重复使用inputStream?
715 0
|
消息中间件
RabbitMQ高级特性-TTL(Time-To-Live 过期时间)
RabbitMQ高级特性-TTL(Time-To-Live 过期时间)
203 0
RabbitMQ高级特性-TTL(Time-To-Live 过期时间)
番茄时间管理和四象限工作法完美搭配造就职场神器
番茄工作法 番茄时间管理又称为番茄工作法,是较简单易行的时间管理与高效工作方法,使用番茄工作法是将每天的工作任务设定为今日目标,选择一个待完成的任务,将番茄时间设为25分钟(每25分钟为为一个番茄时),在此时间内专注工作、中途不允许做任何与该任务无关的事,直到25分钟的这个番茄时钟响起,然后标记已完成或转入下个番茄时待办事项,短暂休息3-5分钟,开始下一个番茄时。
2748 0
|
网络协议 Go Memcache
go gomemcache包源码分析
go gomemcache包源码分析
11303 0
下一篇
oss云网关配置