【本文首发于CSDN个人博客,转载请注明出处。In case of infringement, please contact to delete.】
今天破冰咯~ 趁着自己刚认真看完一篇论文,记录一下内容。第一篇几乎没用翻译直接看完的,学好英语太有用了。
论文是ICML 2022的《Learning of Cluster-based Feature Importance for Electronic Health Record Time-series》。这是一篇医学背景下的文章,提出通过可分聚类与深度学习处理医学高异质性时序数据,极具挑战性,并获得了效果提升。论文原文链接
下面是以我的逻辑和理解对论文的剖析,论文中提到的简单内容会略过,若有错误请指出。
p.s. 欢迎【关注&点赞&收藏】
EHR:电子健康记录,包含包括生命体征,既往病史,诊断,进度记录,药物,过敏,实验室数据,免疫接种日期和影像报告。
亚组分析:参与临床试验的患者由于受各种因素(如遗传学、人口学、环境、病理生理学、合并症、合并用药、区域等)的影响,往往具有不同程度的异质性,从而可能导致试验药物在不同患者中的疗效不同。临床试验中将具有不同特征的患者分组,是探索不同患者人群之间疗效差异的直观方法,同时也是获益-风险评估不可缺少的一部分。
亚组是全人群中的一个子集。亚组分析是指针对试验药物在亚组中的疗效和/或安全性进行试验设计与统计分析的过程,亚组是亚群的一个样本,将亚组结果推广到亚群时需要考虑亚组对亚群的代表性问题。
表型分析
患者轨迹建模:疾病轨迹变化,展现疾病的变化趋势,以及发展轨迹。时间可长可短,例如入住重症监护病房的患者,多久会发展为多脏器功能不全,以及发展的轨迹是怎么变化的等等。
vital-sign(生活特征):用来判断病人的病情轻重和危急程度的指征。主要包括体温、脉搏、呼吸、血压。它是实时了解病人病情变化的重要指标之一。
通过表型cluster预测可能表型:来源于医疗测试数据+过往病症表型
注:本文中,表型(phenotype)= outcome = label = class
encoder E, Identifier I, Predictor P
第n个患者的轨迹输入为 X n \mathbf{X}_n Xn(包含feature和time的矩阵), 通过encoder压缩为 z n \mathbf{z}_n zn,再通过identifier得到属于cluster i的概率 π i \pi_i πi(∴该患者在每个cluster的概率向量为 π \boldsymbol{\pi} π)。
training阶段:
第k个cluster的抽样数量服从于 π \boldsymbol{\pi} π的概率数据(分层抽样)。每个cluster抽样出的样本(实际上是centroid给出的)定义为 c k \mathbf{c}_k ck,代表cluster的表示向量(cluster representation vector)。所有cluster抽样结果放在一起形成 C \mathbf{C} C。
最后通过predictor得到 C \mathbf{C} C的预测结果(4个label之一)。
testing阶段:
选取概率最大的cluster i.
所以整个的目的是预测表现型。
【我认为,outcome的作用旨在encoder和predictor提供训练分类任务,实际上encoder要的是trajectory的压缩向量,predictor要的是计算cluster概率的部分】
【identifier根据k-means的分类结果来训练】
training和testing除了输入不同,基本思路都是使用MLP的那些。
假设:feature is time-independent。
通过LSTM算出 O n , t \mathbf{O}_{n,t} On,t.
Df个输入的全连接前馈神经网络,得到的输出为 R n , t R_{n,t} Rn,t,参数[D, B].
通过乘以向量 α ^ t \widehat{\mathbf{\alpha}}_t α t,得到 O ^ n , t \widehat{\mathbf{O}}_{n,t} O n,t .
最后通过 O ^ n , t \widehat{\mathbf{O}}_{n,t} O n,t得到权重 β \boldsymbol{\beta} β,是患者 n 的潜在表示和编码器网络的输出。【感觉是 β \boldsymbol{\beta} β前面可以看成一个改良版模块输出网络结果 o ^ \widehat{\mathbf{o}} o , 而 β \boldsymbol{\beta} β实际上是encoder的权重】
通过分类任务训练,其实是获得高维向量表示。【感觉很像nlp很多问题的做法啊】
初次,在E(x)后用k-means把训练数据分成K个clusters。identifier实际上是按照这个结果做的训练,给出 π \boldsymbol{{\pi}} π. 所以结果部分clustering的metric结果并不如DL好,因为实际上本质上用的是k-means。然而作者也在discussion提到了,这两者没有可比性
对 α ^ t \widehat{\mathbf{\alpha}}_t α t用softmax进行normalize得到 s t \mathbf{s}_t st
根据 c k \mathbf{c}_k ck和 o n , t \mathbf{o}_{n,t} on,t计算每个压缩后向量落在不同cluster的权重 γ \boldsymbol{\gamma} γ,并用softmax进行normalize。
得到K个cluster的分数矩阵 M n , k \mathbf{M}_{n,k} Mn,k(矩阵大小为 时间长度×特征数量)【得到的是每个特征在每个时刻的score】
第一个:比交叉熵多乘了一个 w c w_c wc,也就是同一个人在不同outcome下的权重,该权重反比于实际分布概率,总和为1。对样本少的outcome有更大的penalty。
第二、三个:解决了cluster collapse:①只将样本分配到一小部分cluster里,对数据使用不全 ②不收敛
此处略写,不难理解。
主要有几个实验:
欢迎交流想法!
码字结束,期待自己的下一篇