BASE summaryCV descriptionPatient Similarity Patient Similarity

项目经验回顾总结,主要是2016-18年间做过的一些实际项目

  • 研究
    • 相似度研究
    • [ ] 图像检测
    • [ ] 文本结构化抽取
    • [ ] 公告事件研究
  • [ ] 工程
    • [ ] 爬虫
    • [ ] 图谱构建
    • [ ] web api开发

Patient Similarity

WHAT
通过疾病、症状、药品等电子病例信息来判断病人两两间病史相似度

HOW

  1. 使用word2vec向量化EHR事件
  2. 相似度计算网络模型,利用卷积神经网络学习一组病人间的特征,构造相似度矩阵计算其相似度值。

WHY

  1. 通过word2vec向量化表示,有几个好处:
    • 降低数据维度。原始one-hot表示高维(EHR事件多达7000余种)且稀疏(单个病人病史仅包含少数事件), 经过word2vec训练后,可降维至指定数据维度。
    • EHR事件之间具有前后相关性。类似语义嵌入,相同或类似的EHR事件其向量余弦值等于或接近于1。
  2. 卷积神经网络沿病史时间轴做卷积操作,提取病史特征,有效利用了病史间的局部相关性。

RESULT
给定一对病人电子病例数据,判断其是否罹患同一疾病,准确率达97%。

Details

  1. word2vec训练EHR向量
    • 每个病人EHR事件按时间排序,构成一个输入样本,该样本包含若干个ERH事件。输入样本总数达40,000个
    • 使用gensim来训练EHR向量,主要设置参数为min_count, size, window,对应为事件最少出现频率、词向量输出维度、上下文覆盖距离(以词为单位)
      1
      2
      3
      4
      5
      6
      7
      model = 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,在后续学习中能取得最优表现
  2. 神经网络学习病人特征
    • 网络架构如下所示
      • 使用两个卷积网络,分别在两个样本输入矩阵上做卷积操作,得到卷积特征;
      • 对卷积特征做池化操作,得到池化特征;
      • 由两个样本池化特征,构造中间参数变量相似度矩阵$M$,用以计算相似度: $sim(x_a,x_b) = x_{a}^TMx_b$
      • 将池化特征及相似度拼接成一个新的特征,构造全连接层
      • 以全连接层输出与样本对标签,选择均方误差(MSE)作为损失函数

      framework_cnn