用于肺结节分类的常规 EHR 的纵向多模态Transformer集成成像和潜在临床特征

news2024/12/23 23:47:27

Longitudinal Multimodal Transformer Integrating Imaging and Latent Clinical Signatures from Routine EHRs for Pulmonary Nodule Classification

摘要

该研究提出了一种基于Transformer 的多模态策略,用于将重复成像与常规电子健康记录(EHRs)中的纵向临床特征整合,以进行孤立性肺结节(SPN)的分类。通过对潜在临床特征进行无监督解缠,并利用时间-距离缩放的自注意力机制,共同学习临床特征的表达和胸部计算机断层扫描(CT)。该分类器在一个公共数据集的2,668个扫描和1,149名具有纵向胸部CT、账单代码、药物和实验室检查的患者的EHRs上进行了预训练。对227名具有具有挑战性的SPN的患者进行评估,结果显示与纵向多模态基线相比,AUC显著提高(0.824 vs 0.752 AUC),并且在单个横截面多模态情景(0.809 AUC)和纵向仅成像情景(0.741 AUC)上也有所改善。这项研究证明了一种新颖方法,在利用Transformer 共同学习纵向成像和非成像表型方面具有显著优势。
代码地址

本文方法

在这里插入图片描述
图1。左侧:非成像变量的事件流被转换为纵向曲线。ICA在一个大型的非成像队列上以无监督方式学习独立的潜在标志物S。
右侧:主体k对标志物的表达,Ek,在扫描日期进行采样。输入嵌入是由以下三部分组成的:
1)从标志物或成像中导出的标记嵌入,2)指示标记在序列中位置的固定位置嵌入,以及3)指示成像或非成像模态的可学习片段嵌入。扫描之间的时间间隔用于计算时间距离缩放的自注意力。这是一种灵活的方法,能够处理异步模态、不同序列长度上的不完整性和不规则的时间间隔。

通过概率独立性实现潜在临床特征

从电子健康记录队列中获取了医疗账单编码、药物和实验室检查的事件数据(长达22年)。删除了少于1000次事件的变量,并将医疗账单编码映射到SNOMED-CT本体后,得到了9195个唯一的变量。将每个变量转换为每天的纵向曲线,估算了每天的变量瞬时值。对连续变量使用了平滑插值,对事件数据使用了每个时间段的事件密度的连续估算。以前的研究使用了高斯过程推理来计算这两种类型的曲线。对于这项工作,我们为了提高计算效率而牺牲了近似值。为了将有限的记忆编码到曲线值中,每个曲线都使用了过去365天的滚动均匀平均值进行平滑处理。我们使用ICA模型来估算从EHR-肺部队列中观察到的曲线到独立的潜在源,即临床签名的线性分解。形式上,我们有数据集DEHR-肺部={Lk | k=1,…,n},其中纵向曲线表示为Lk={li | i=1,…,9195}。我们以三年的分辨率随机采样li ∀i∈[1,9195],并将所有主体的样本连接为xi ∈ Rm。对于DEHR-肺部,经验性地发现m为630037。我们做出了一个简化的假设,即xi是c个潜在来源s的线性混合,具有纵向表达水平e∈Rm。
在这里插入图片描述

Longitudinal Multimodal Transformer (TDSig)

将多模态数据集DImage-EHR和DImage-EHR-SPN表示为临床表达Ek = {ek,1,…,ek,T}和图像Gk = {gk,1,…,gk,T}的序列,其中T是最大的序列长度。设定T = 3,并添加了一个固定的填充嵌入来表示序列中的缺失项目。对于序列中的每个项目,计算包含位置和段信息的嵌入。图像的标记嵌入是由一个预训练的SPN检测模型提出的五个连接的3D块的卷积嵌入。我们使用一个16层的ResNet来计算这个嵌入。同样,临床特征表达的标记嵌入是对与图像标记嵌入相同维度的线性变换。然后将嵌入序列通过一个多头变压器进行传递。除了结节检测模型外,所有的嵌入都与变压器一起进行联合优化。我们将这种方法称为TDSig。

时间-距离 自注意力

使用时间重点模型(TEM)来强调最近观察结果的重要性,而不是旧的观察结果。此外,对于填充的嵌入,自注意力被屏蔽,能够适应不同主体之间的序列长度变化。形式上,如果主体k在相对获取的日期t1 …tT有一个长度为T的序列图像,我们构建一个相对时间矩阵R,其中条目Ri,j = |tT − ti|,其中ti是令牌ˆek,i和ˆgk,i的获取日期,或者如果它们是填充的嵌入,则为0。我们使用形式为的TEM将R中的相对时间映射到Rˆ中的[0,1]值:
在这里插入图片描述

这是一个翻转的sigmoid函数,它随着相对时间从最近观察到现在单调递减。它的下降斜率和下降偏移由可学习的非负参数b和c控制。为每个注意力头实例化了一个单独的TEM,理由是单独的注意力头可以学习以不同的方式对时间进行条件判断。变压器编码器将查询、键和值矩阵计算为输入嵌入H = {Eˆ,Gˆ}的线性变换,其中p为注意力头索引。

在这里插入图片描述
在这里插入图片描述
其中 M 是填充掩码,d 是查询和键矩阵的维度。查询键产品的 ReLU 门控允许 TEM 在无符号方向上调整注意力权重

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1622222.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【QT学习】9.绘图,三种贴图,贴图的转换,不规则贴图(透明泡泡),简单绘图工具制作

一。绘图的解释 Qt 中提供了强大的 2D 绘图系统,可以使用相同的 API 在屏幕和绘图设备上进行绘制,它主要基于QPainter、QPaintDevice 和 QPaintEngine 这三个类。 QPainter 用于执行绘图操作,其提供的 API 在 GUI 或 QImage、QOpenGLPaintDev…

亚马逊云科技提高企业生产力神器Amazon Q评测分析

一年一度的全球云计算春晚,亚马逊云科技Re:invent在2023年11月27于Vegas震撼来袭,其中最令人关注的就是CEO Adam在Keynote中分享的内容。其中一个新内容就是提升生产力神器: Amazon Q,可以说它重新定义了企业的工作模式。那具体它神在哪里呢&…

Flutter 有什么优异特性和革命性创新之处?

Flutter 有什么优异特性和革命性创新之处? 什么是 Flutter? Flutter mobile app SDK是一种新的方式来构建漂亮的原生移动应用程序,摆脱过去常见的“千篇一律”的应用程序。用过Flutter的人都对它赞赏有加; 相比较其他新型系统&#xff0c…

ETL工具-nifi干货系列 第十七讲 nifi Input PortOut Port 实战教程

1、端口(Port),包含输入端口(Input Port)和输出端口(Out Port ) 使用一个或多个处理组构建的数据流需要一种方式将处理组连接到其他数据流组件。 处理组和处理组之间可以通过使用端口来进行连…

<网络> HTTP

目录 前言: 一、再谈协议 (一)认识URL (二)Encode 和 Decode 二、HTTP 协议 (一)协议格式 (二)见一见请求 (三)见一见响应 三、模拟实现响…

github Copilot的使用总结

1. 代码建议和补全 GitHub Copilot 的基本使用涉及编写代码时的实时代码建议和补全。一旦你已经安装并配置好 GitHub Copilot 插件,你可以在支持的编辑器(如 Visual Studio Code)中开始使用 Copilot。以下是一些基本的使用步骤: …

hadoop文件操作代码实现

hadoop文件操作 目录 一、文件的上传 删除 查看 1.整体代码 2.代码运行 3.查看证实 4.具体代码解析 1)向Hadoop传文件 2)向本地Windows传文件 3)删除Hadoop的文件 4)判断文件是否存在 二、列出文件 1.整体代码 2.代码…

代码随想录算法训练营Day8 | ● 344.反转字符串● 541. 反转字符串II● 54.替换数字● 151.翻转字符串里的单词● 55.右旋转字符串

(记得重学) ● 344.反转字符串 题目:编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。 不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一…

Unity 异常 bug

OverlapBoxNonAlloc 使用bug 环境: Unity2021.3.15 在测试场景中使用 OverlapBoxNonAlloc 测试检测没有问题 但是到了真实应用场景,使用 OverlapBoxNonAlloc 检测移动中的小怪 小怪碰撞体为:带有 Rigidbody 的Circle Collider 2D 就会出现异…

RustGUI学习(iced)之小部件(二):如何使用滑动条部件

前言 本专栏是学习Rust的GUI库iced的合集,将介绍iced涉及的各个小部件分别介绍,最后会汇总为一个总的程序。 iced是RustGUI中比较强大的一个,目前处于发展中(即版本可能会改变),本专栏基于版本0.12.1. 概述…

力扣HOT100 - 994. 腐烂的橘子

解题思路: 因为要记录轮数(分钟数),所以不能一口气遍历到底,所以不能用深搜(bfs),而要用广搜(bfs,层序遍历)。 先记录下新鲜橘子数,…

MyBatis Dynamic SQL基本使用

MyBatis Dynamic SQL基本使用 一、概念二、特性Hamcrest是什么 三、MyBatis Dynamic SQL 快速入门3.1 环境准备3.2 定义表和列3.3 创建 MyBatis3 映射器3.4 使用 MyBatis3 执行 SQL 四、数据库对象表示4.1 表或视图表示4.2 表别名4.3 列表示 五、Where 子句支持5.1 简单的 wher…

什么样的文件传输调度产品 可以简化IT工作流程?

文件传输调度是企业数据管理中的一个重要环节,企业在存在多个分支机构、子公司,或者多个数据中心、服务器节点的时候,都会需要进行文件传输调度,在使用传统的FTP、rsync等传输方式在应对这些复杂的文件交换需求时,会存…

C语言趣味代码(三)

这一篇主要围绕写一个程序---寻找数字 来写,在这篇我会详细和大家介绍基本实现以及它的改良版,还有相关知识的拓展,干货绝对满满。 1. 寻找数字 在这一主题下,我们会编写一些代码,来锻炼玩家的反应力,同时…

让外贸客户心甘情愿下单的话术分享

学会这些话术,轻松拿捏客户,让客户心甘情愿下单 一、客户喜欢讨价还价的模板旨在帮助外贸人员在与客户讨价还价时,既能坚持自己的立场,又能体现出专业和诚信的态度。 二、客户犹豫要不要下单的贸易话术旨在帮助客户消除疑虑&#…

Spring Boot 源码--SpringApplication#run 方法源码解析

前言: 开发过 Spring Boot 项目的都知道只需要一个简单的入口类,然后入口类中有个 main 方法,main 方法中调用了 SpringApplication.run 方法,再配合 SpringBootApplication 注解就可以完成一个项目的启动,如下&#…

云打印怎么上传文件?云打印怎么把文件发送给商家?

随着云打印的火热,现在很多同学们都选择云打印服务来打印自己的资料文档。但是云打印服务毕竟要隔着网络打印,那么我们应该怎么上传文件呢?云打印怎么把文件发送给商家呢?今天小易就带大家一起来了解一下。 云打印怎么上传文件&am…

python爬虫之xpath4

1 最终项目实现的代码 仙剑 #!/usr/bin/env python ​ import logging import requests import re from urllib.parse import urljoin import pymongo import multiprocessing ​ mongo_client pymongo.MongoClient("mongodb://192.168.135.131:27017/") db mong…

【禅道客户案例】专访鸿泉物联研发副总监徐小倩,感受上市公司研发项目管理“知与行”

杭州鸿泉物联网技术股份有限公司(以下简称“鸿泉物联”、“公司”)成立于2009年6月11日,2019年11月6日登陆上海证券交易所科创板(股票代码:688288),注册资本10034.392万元,目前员工6…

嵌入式4-24

作业: 整理思维导图 定义一个矩形类Rec,包含私有属性length,width,有以下成员函数: void set_length(int l); //设置长度 void set_width(int w); //设置宽度 int get_length(); //获取长度 int get_width(); //获取宽…