目的
对于EHR数据的每个visit和每个code进行嵌入
方法
启发于skip-gram
- 对于visit
使用softmax上的交叉熵作为loss:
- 对于code
相比visit去掉加入侧写那一层,与visit网络共享Wc,可以一起学习。但在学习的时候对于code的Wc使用Wc’,Wc’=Relu(Wc)。这样可以吧Wc中的负值变成0,从而增加可解释性。
同一个visit中的每两个code看成邻居,从而可以得到loss:
- 整个大的学习网络
由于code和visit的网络共享权重Wc,因此可以一起训练,整体的目标loss为:
解释
可以类比于NMF(非负矩阵分解)(M=WH)。因为在嵌入的时候是使用了Relu(WX+b),因此得到的M是非负的。此时Wc可看成NMF中的W,X可看成H,最终嵌入的空间是M。
- 对于Wc的解释
由于X不论对visit来说还是code来说,都是one-hot,因此Wc这个空间坐标向量矩阵的每个轴可以看成用来提取一个症状组。
使用
找到top k个症状形成一个包含k个症状的症状组。 - 对于Wu的解释
找出top K
可以理解每个访问坐标是如何与一组症状相关联的。因为Ut是relu得到的,非负,并且Ut是通过Wc嵌入到症状组空间的向量。这样top K就是此与此疾病最相关的K个症状组。 - 例子 CRG prediction
可以分析code也就是症状对CRG的影响程度。
首先学习分类器,其中logistic regression weight是Wlr。
这样,用软中Wlr,对于分类器,就可找到最大的Ut,这个Ut可以最大程度预测疾病Ut*。
利用一个近似的方法来找:
instead of simply selecting the code coordinate with the strongest con- nection to the CRG level, we consider each coordinate’s maximum ability to activate the positive CRG prediction.不是找到哪个轴(疾病组)激活疾病,而是找到轴激活疾病的最大能力。
我们找到的最大的Ut是通过之前的Wc得到的,也就是找到Max(Wc+bc)即可。
计算出所有的Wc+bc,我们可以看出每个轴对疾病的贡献,也就是越大的Wc+bc,就可能患有这个疾病。