【论文导读】Identify Susceptible Locations in Medical Records

       本文转载自新智元,作者邓侃博士。论文由密歇根州立大学、康奈尔大学腾讯研究院的几位学者,联名发表在ACM2018,这篇文章讲述了如何在病历中找到敏感数据位置,以及如何利用这些关键数据对重症监护中的病人进行保护

      平时大家对自己的医疗数据或许并不怎么关心,面对一大串的字符数字,身为外行基本也看不出个所以然来,更不要说如何用这些数据来救人和自救了。但这些数据对于医生们而言就十分宝贵了。根据病患的诊疗数据医生们可以对病患的病情走向做出判断,进而给出相应的治疗手段。只不过这些平铺直叙的数据,即使是医生看起来也难免会有一些遗漏,又或者被一些可疑信息干扰。文章中提到的方法就是要从这些流水账似的数据中找到可疑的“red flag”甚至是潜在的测量误差,去提示医生关注可能遗漏或错误判断的关键信息。.


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


        打个比方,对于病人来说,看医生最在乎的除了身体是否康复外,大概就是花了多少钱了。为了少花钱或是从中赚钱,一些不法分子甚至会进行医保诈骗。医保诈骗通常把无病说成有病,把小病说成大病。要做到这一结果其实并不容易。诈骗犯们如果只是篡改诊断结果中的疾病,那必须是行不通的。因为报销审核的时候,一定会核查现病史、化验结果、检查报告等以核对病情描述与诊断结果是否一致。不妨把住院病历的内容,看成一个时间序列。从入院到出院这一期间每一天的病情描述都是一个矢量,包含各种症状、体征、化验指标、检查标志物,以及诊断、药品、手术、护理等等。而医保欺诈的目标,是既要尽可能少地改动病历,还得使之支持编纂出来的出院诊断。也就是说,最理想的情况是只改动病历时间序列中某一天某一项病情描述指标,就能使之得到期盼的诊断结果。反过来说,实际测量时可能存在的小偏差,或者数据中不起眼的一个数值变化就像是这个诈骗犯,小小的变动可能就导致了整个实际预测结果的改变。要如何才能发现哪个病情指标对诊断结果最重要呢?文章基于这一疑问,便提出了一个“通用的方法”去对时间序列数据中各个时刻各个数值的敏感度做出分析。

         如何实现搜寻

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

诊断模型的实现方案有很多。最简单的是用 LSTM 模型。当然也可以用它办法,譬如可以先用 LSTM,把不定长的病情描述的时间序列,转换成定长的张量,然后用 CNN 对定长的张量做分类。甚至也可以摈弃 LSTM,譬如 Attention,直接在时间序列中捕捉重要的数据,然后根据这些重要数据做分类。

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

       做敏感性分析的办法也很多,最粗暴的办法是穷举。保持时间序列中的其它数据项不变,只改变一项数据,然后把篡改过了的时间序列,输入进诊断模型。然后比较诊断模型的诊断结果,与病历中记录的真实的诊断结果。模型的结果,与真实结果,两者相差越大,说明这一项数据,对诊断结果影响越大。穷举的办法效率较差,论文提议,用前沿的对抗攻击(Adversarial attack)技术,来快速找到敏感的数据项。

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

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


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

      方法的拓展应用

       仔细想想时间序列敏感度分析的三步曲,会发现其实这个方法并不局限于对病历记录的敏感性分析,而就像之前说的,是一个实现对事件序列攻击的通用办法。站在医保审核的立场,只有懂得了不法分子篡改病例的原理,才能更有针对性地研究如何甄别病历记录中,哪些时间的哪些数据,被人为篡改了。从而更为有效的保障病人以及医疗工作者的权益。

展开阅读全文

没有更多推荐了,返回首页