邓侃解读:医疗关键数据时间序列敏感度分析的通用方法-阿里云开发者社区

开发者社区> 技术小能手> 正文

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

简介: 密歇根州立大学、康奈尔大学腾讯研究院的几位学者,联名发表了一篇题为 “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”微信公众号

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
基于 Scheduled SQL 对 VPC FlowLog 实现细粒度时间窗口分析
针对VPC FlowLog的五元组和捕获窗口信息,在分析时使用不同时间窗口精度,可能得到不一样的流量特征,本文介绍一种方法将原始采集日志的时间窗口做拆分,之后重新聚合为新的日志做分析,达到更细粒度的分析效果。
444 0
[20180302]sql profile能减少分析时间吗?
[20180302]sql profile能减少分析时间吗? --//链接http://www.itpub.net/thread-2097379-1-1.html的讨论,测试看看sql profile能减少分析时间吗? --//要找到这样的语句分析时间"很长",...
799 0
TreeMap源码分析——基础分析(基于JDK1.6)
常见的数据结构有数组、链表,还有一种结构也很常见,那就是树。前面介绍的集合类有基于数组的ArrayList,有基于链表的LinkedList,还有链表和数组结合的HashMap,今天介绍基于树的TreeMap。
409 0
独家 | ARIMA/Sarima与LSTM的时间序列数据集成学习(附链接)
本文探讨了简单的ARIMA/Sarima与LSTM的时间序列数据集成学习方面的问题。
1586 0
HashMap源码分析(基于JDK1.6)
在Java集合类中最常用的除了ArrayList外,就是HashMap了。本文尽自己所能,尽量详细的解释HashMap的源码。一山还有一山高,有不足之处请之处,定感谢指定并及时修正。     在看HashMap源码之前先复习一下数据结构。
497 0
HashSet及LinkedHashSet源码分析(基于JDK1.6)
Java容器类的用途是“保存对象”,分为两类:Map——存储“键值对”组成的对象;Collection——存储独立元素。Collection又可以分为List和Set两大块。List保持元素的顺序,而Set不能有重复的元素。
718 0
ArrayList源码分析(基于JDK1.6)
不积跬步,无以至千里;不积小流,无以成江海。从基础做起,一点点积累,加油!     《Java集合类》中讲述了ArrayList的基础使用,本文将深入剖析ArrayList的内部结构及实现原理,以便更好的、更高效的使用它。
480 0
穿越数据的变迁 - 如何使用阿里云Redis数据闪回进行按时间点的数据恢复
如何使用阿里云Redis数据闪回进行按时间点的数据恢复
2025 0
+关注
技术小能手
云栖运营小编~
7208
文章
9
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载