项目经验回顾总结,主要是2016-18年间做过的一些实际项目
- 研究
- 相似度研究
- [ ] 图像检测
- [ ] 文本结构化抽取
- [ ] 公告事件研究
- [ ] 工程
- [ ] 爬虫
- [ ] 图谱构建
- [ ] web api开发
Patient Similarity
WHAT
通过疾病、症状、药品等电子病例信息来判断病人两两间病史相似度
HOW
- 使用word2vec向量化EHR事件
- 相似度计算网络模型,利用卷积神经网络学习一组病人间的特征,构造相似度矩阵计算其相似度值。
WHY
- 通过word2vec向量化表示,有几个好处:
- 降低数据维度。原始one-hot表示高维(EHR事件多达7000余种)且稀疏(单个病人病史仅包含少数事件), 经过word2vec训练后,可降维至指定数据维度。
- EHR事件之间具有前后相关性。类似语义嵌入,相同或类似的EHR事件其向量余弦值等于或接近于1。
- 卷积神经网络沿病史时间轴做卷积操作,提取病史特征,有效利用了病史间的局部相关性。
RESULT
给定一对病人电子病例数据,判断其是否罹患同一疾病,准确率达97%。
Details
- word2vec训练EHR向量
- 每个病人EHR事件按时间排序,构成一个输入样本,该样本包含若干个ERH事件。输入样本总数达40,000个
- 使用
gensim来训练EHR向量,主要设置参数为min_count,size,window,对应为事件最少出现频率、词向量输出维度、上下文覆盖距离(以词为单位)
1
2
3
4
5
6
7model = gensim.models.Word2Vec(
sentences,
min_count=5,
window=10,
size=50,
workers=4)
model.wv.save_word2vec_format('../data/model_50.vector', binary=False) - 设置
min_count=10, size=50, window=10,在后续学习中能取得最优表现
- 神经网络学习病人特征
- 网络架构如下所示
- 使用两个卷积网络,分别在两个样本输入矩阵上做卷积操作,得到卷积特征;
- 对卷积特征做池化操作,得到池化特征;
- 由两个样本池化特征,构造中间参数变量相似度矩阵$M$,用以计算相似度: $sim(x_a,x_b) = x_{a}^TMx_b$
- 将池化特征及相似度拼接成一个新的特征,构造全连接层
- 以全连接层输出与样本对标签,选择均方误差(MSE)作为损失函数
- 网络架构如下所示




近期评论