贾 峥 宗瑞杰 段会龙 李昊旻
1(浙江大学生物医学工程与仪器科学学院,杭州 310027)2(青岛市中心血站,山东 青岛 266071)3(浙江大学医学院附属儿童医院,杭州 310052)4(浙江大学转化医学研究院,杭州 310029)
提前而且精准地预测患者未来的疾病发展健康状态有助于疾病预防、早期诊断和及时干预等,不但可以控制高额医疗成本的增长,同时可以避免或减缓许多人的疾病困扰,因此具有重要的社会价值和科学意义。以往,医生主要依据经验来判断患者未来病情发展;但是,临床技术的日新月异与医学知识的爆炸式增长带来了更加纷繁复杂的临床数据和临床决策环境,临床工作者单纯依靠人脑来应对新的条件下的患者预测变得越来越困难。医疗大数据的积累为通过医疗数据挖掘来预测患者病情提供了新的基础依据[1],将促使医疗保健从基于熟练的艺术(proficiency-based art)发展为数据驱动的科学(data-driven science)[2],从“千人一方”转向“个性化治疗”,从“治已病”的被动模式逐渐发展至“治未病”的主动模式[3]。
目前,基于医疗大数据的预测方法尚处于百家争鸣阶段,主要可以划分为两类(见图1):一类是基于数据来训练生成预测模型(predictive model)[4-6],即针对特定目的,基于有监督的机器学习方法,如分类、回归、深度神经网络等,生成训练模型,预测未知患者的临床事件;另一类是通过衡量患者之间的距离,建立患者相似组,并通过相似组的特征来预测目标患者的情况,这被称为患者相似性(patient similarity)分析[7-11]。具体来说,患者相似性分析是指在特定的医疗环境下,选取临床概念(如诊断、症状、检查检验、家族史、既往史、暴露环境、药物、手术、基因等)作为患者的特征项,定量化分析复杂概念语义空间中概念间的距离,从而动态地度量患者间的距离,筛选出与索引患者相似的患者相似组。在医疗大数据场景中,患者相似组的各种特征在理论上能够提供多方面的预测,相比针对特定目标的训练模型具有更好的普适特性。
图1 预测模型与患者相似性Fig.1 Predictive model VS patient similarity
预测模型与患者相似性的预测方法具有不同的优势和特点。如图1所示,预测模型具有特定的预测空间,采用有监督的方法,将索引患者归入已知的一类群体中,如最小二乘回归[12]、决策树/随机森林[13-14]、支持向量机[13-14]、卷积神经网络[5]、递归神经网络[15]、径向基函数网络[13-14]等。患者相似性分析一般采用无监督或半监督的方法,根据临床概念的现实意义来计算概念间的相似性,再计算患者间的距离,最终得到按相似程度高低排序的已知患者,利用最相似的一簇患者做预测分析。
预测模型与患者相似性的适用条件不同。预测模型需针对特定预测目标,利用带有标签的已知患者群体,训练适用于特定应用场景的预测模型。当预测目标变化或更换应用场景时,均需要重新训练模型。此外,若无法收集足够数量的带有标签的已知患者,则不能训练出足够准确的预测模型。一般情况下,患者相似性不受限于预测目标和有标签的已知患者数量,其核心方法“复杂概念语义空间中概念间的距离”及“利用患者的临床概念度量患者间的距离”通常是与目标无关、非监督的,是通用可计算的方法。已有少量研究表明,针对特定场景、特定目标,预测模型选用Logistic回归,患者相似性选择k-NN,前者的表现精准度更高[7],然而患者相似性分析具有广泛的预测能力,随着大数据资源的积累和大数据分析技术的成熟,将会展现出日益广阔的应用场景。
本研究旨在对患者相似性分析涉及的技术、方法进行系统讨论,使读者了解患者相似性的定义、背景、进展、方法和挑战。下面从患者相似性分析的理论基础出发,介绍分析患者相似性的最新研究成果和计算框架,针对其中的关键技术(数据预处理、降维、距离度量、相似组分析等)进行详细介绍,并讨论当前分析患者相似性所面临的机遇和挑战。
患者相似性分析是对高年资医生比对患者的思维过程的模拟。医学分析哲学专家Sadegh-Zadeh在其专著HandbookofAnalyticPhilosophyofMedicine中详细阐述了临床推理的原理,临床推理的对象是患者而不是单纯的症状、检查结果、疾病或治疗。临床实践的目标不是诊断,而是寻找最佳的临床路径来管理患者个人的健康事务。临床决策可以看作是在医生与其临床调查对象控制下通过问答、信息生成来实现路径寻找(path searching)的过程[16]。具有丰富经验的医生可以快速地将当前的患者对象归入某一个案例模型,而这个模型本质上是对患者群体按照距离建立的聚类。医生将患者归入某一个案例模型,进而评估健康风险,选择治疗方案,预算治疗费用,估计住院时长,预测再住院,等等。做出临床决策的思维过程既是获得大量案例观察性知识的基础,也是进行临床决策的基础,而患者相似性分析是对这种思维过程系统性、计算机化的分析。基于大数据的患者相似性的应用能够提高疗效预测准确度[17],识别和预测疾病关系及共发性[18],在医疗时间点提供临床决策支持服务[19]。
患者相似性的研究尚处于发展阶段,还没有一致的结论证明哪种方法更有效,也没有完整成功的商业应用案例。走在时代前沿的科研机构、医疗机构,如Mayo Clinic, Memorial Sloan Kettering Cancer Center,以及IT行业巨头(如IBM Watson Health和Google Deep Mind Health)、雨后春笋般的创业企业,正在推动医学人工智能进入2.0时代,而患者相似性分析在大量获得成功的案例中都得到了应用,因此患者相似性分析的研究也成为了这次浪潮中灿烂的浪花。
近年来,基于患者相似性的预测模型的研究已经成为一个非常热门的研究领域,涉及到精神和行为异常[20]、传染病[18]、癌症[18,21-23]、内分泌问题[18,22]、代谢疾病[9-10]、神经系统疾病[18,21,24-26]、眼科疾病[18,25]、皮肤疾病[18,25]、心脏疾病[22,25,27-28]、肝脏疾病[23]、肠道疾病[25]、肌肉骨骼疾病[25]、先天畸形[25]以及各种影响健康状态的环境因素[10,29-30]等大量领域。
参考Kitchenham的指导方针,笔者采用系统搜索法,筛选出关于患者相似性的文献共18篇,其中7篇文献发表于2016年及以后。文献的出处是生物医学工程领域或医学领域具有代表性或权威性的期刊、会议论文集。这些研究满足:输入数据的类型,包括电子健康档案(electronichealth records);分析患者间的相似程度;不完全依靠人工;不完全依靠深度学习方法。文献查询结束于2017年7月30日,选择在Scopus、PubMed、ISIWeb of Science等涉及医疗相关出版物的数据库,搜索“患者/患者相似性(patient similarity)”,“相似性度量(similar measures)”,“健康数据(health data)”,“电子健康档案/病历(electronic health/medical records)”,“预测模型(prediction model)”等关键词。移除重复条目后,浏览所有标题及摘要并再次筛选,阅读全文,确定最终的纳入文献。从纳入文献中提取的数据汇总于表1中,基于以下准则进行分析:发表年份、数据源、数据类型、简介、方法。
可以看出,随着可获得的医疗数据资源的积累,利用医疗数据开展患者相似性分析的相关研究越来越广泛和深入。从2011—2017年,相关文献逐渐增多,研究热度逐渐升温,患者相似性分析已经在多个领域(如预测心力衰竭[17,31-32]、预测肾移植存活率[33]等)验证了其有效性,该方法还能为其他预测模型补充缺失的标签[34]等。然而,其中所使用的数据类型各不相同,使用的技术手段千差万别,预测效果也不一致,甚至一些研究对于同一方法的表现优劣存在矛盾的结论。下面讨论患者相似性分析的通用计算框架和其中涉及的关键技术,为相关研究提供参考。
患者相似性分析基于相似性计算,计算框架如图2所示。在医疗大数据背景下所有的医疗数据,如诊断、症状、检查检验、家族史、既往史、暴露环境、药物、手术等,都可以作为相似性计算的输入;海量医疗数据的质量通常良莠不齐、缺乏标准,需要进行预处理,清理脏数据,处理缺失值,映射和变换数据;高维的临床数据可能导致维度灾难,降低信噪比,因此需要恰当地选取或映射临床概念,在特征空间将患者表达为向量,利用数学方法定量地度量复杂概念语义空间中概念间的距离,综合异构的、多类型的临床概念,分析患者间的距离,基于排序或聚类分析筛选出患者相似组,综合分析患者相似组的治疗方案、病情发展趋势等,选用数据可视化工具等,为临床决策支持提供服务。下面就患者相似性计算过程进行系统的介绍。
表1 患者相似性分析相关文献汇总Tab.1 Summary of the articles related to patient similarity analysis
续表
注:数据源根据是否具有时间属性,分为横向和纵向。
Note: Data type is classified as cross-sectional and longitudinal based on whether it has time attributes.
图2 患者相似性计算框架Fig.2 The computing framework of patient similarity
理论上所有与患者相关的数据都可以用于分析患者相似性,目前这些数据的主要来源是临床信息化产生的数据,如检验/检查报告、体征、用药、诊断、病程记录等信息。数据分为两类:一类是存储于数据表中的结构化数据,例如数值型的检验结果、生命体征、人口统计学信息等;另一类是非结构化数据,如病程记录、出院记录、检查报告等文本信息,以及CT、X线、MRI、超声、心电等影像和信号数据。
结构化数据具有先天的适于计算机处理的优势,在经过特定转化后可以满足计算的需求。但是,非结构化数据中包含了复杂的信息,这些信息的自动提取和自动理解是人工智能面临的主要挑战之一。随着相关技术的进步,越来越多的非结构化信息可以服务于患者相似性分析,特别是医学语言处理技术的发展,使得从蕴含了大量信息的临床文本数据中能够提取有价值的、日常缺失的信息用于患者相似性分析。例如,Dey等利用医学语言处理工具PredMED,从非结构化的电子病历文本中识别出可用于Framingham心力衰竭诊断所需的体征和症状,检测其中的否定性表达,其信息提取的F值达0.910[42]。同时,医学影像信息学的发展,对于从原始影像信号中获得可计算的特征数据提供了越来越多的支持,也是目前医学人工智能的一个重要领域。由于这超出了本研究的范畴,这里不做详细介绍。
获得了可计算的数据还不能直接开展大规模的数据计算和分析,以下3点不可忽视:第一是数据质量,医疗数据质量参差不齐,大量临床数据是手工录入采集的,容易发生错误和矛盾的情况,需注意同一个临床测量在不同时期、不同设备和不同诊断标准下具有不同的意义;第二是数据标准,不同的国家、地区、机构的医疗数据标准不同;第三是数据量,虽然整体数据量很大,但是满足特定需求的样本量可能并不充足,如罕见病的病例,这种样本的不平衡往往会影响这类临床场景下决策的准确性。综上所述,恰当的数据预处理是在分析患者相似性之前必须解决的问题,主要包括以下步骤。
3.2.1数据筛选
数据筛选的目的是筛选出特定的数据类型和数据项,以满足特定目的的计算需求。由于临床概念的总数目极为庞大,单一科室中的患者涉及的症状、药品、检查检验等临床概念就有成千上万种,不加筛选可能导致维度灾难(dimension curse),因此需要根据实际应用场景来选择患者的数据类型。这些数据类型一方面要具有普遍性,即大多数患者都具有这样的数据,另一方面要能够满足实现定量分析的要求。在同一数据类型下,也可能存在大量的离散取值,如临床症状,约束这个取值也可以获得更好的计算性能。比如,Dai等的研究中定义了如下的表型过滤条件,一是在全部患者的出院记录中出现总频次低于5次的低频表型,二是利用TF-IDF方法从出院记录中挑选出300个分值最低的低信息量表型[43]。而在特定场景中,也可以设定筛选条件来建立更符合预测场景的患者群体,比如Wang等的研究中将心力衰竭作为目标疾病,筛选条件为50~79岁、至少两次与心力衰竭相关的ICD-9编码、发病前记录的电子病历不少于18个月的患者[17]。
3.2.2缺失值的处理
临床数据的概念空间虽然存在很多维,但是患者的临床记录并不会对所有维度进行说明,通常都会存在缺失数据项的问题。例如,医生不会在病程记录中提及全部症状,如果使用二值法表示患者是否具有某种症状,单个患者90%以上的症状会被标记为“缺失”。患者不会将医院具有的全部实验室检验项目逐一进行检查,医生会选择性地要求患者测量一部分指标,那么未测量的指标数据为空。因此,如何处理缺失值是患者相似性计算中需要处理的。目前,处理缺失值的方法包括:
1) 忽略患者。如果缺失项是进行研究必不可少的概念,可以选择剔除数据不完整的患者[42],当然这会导致该患者的剩余临床概念被浪费。
2) 人工填写。一些重要的数据缺失项可以通过人工查询或随访来补充,但是这种方式耗时费力。
3) 使用一个全局常量填充缺失值。例如,使用N/A,Unknown,Null[44],并在计算的过程中针对缺失值提供特定的计算方法。
4) 使用属性的中心度量填充缺失值。例如,使用某检验指标患者群体的均值或中位数[44-45]。
5) 使用最可能的值填充缺失值。使用该属性最常见的数值补充缺失值,比如阴性的症状[45]。另一种方法是利用患者已有数据填补纵向时间轴上的缺失值,例如一位病人患有慢性病,某次记录缺失并不等于疾病痊愈,其他时间点记录的慢性病可用于填补缺失的记录[83]。或者还可以在异质的患者群体(heterogeneous cohort)中寻找同质的邻近患者(homogeneous neighborhood)[84],利用已有的稀疏数据填补缺失值,可以用贝叶斯方法、多任务学习等方法确定缺失值。Sun使用时间窗口内的均值和线性回归方法填写缺失值[46]。Wang等将患者矩阵分解为两个低秩矩阵,其中的医疗概念映射矩阵可以与同质的邻近患者共享[83]。Zhou等假设患者个体具有不同的表型,同质的患者群体具有相似的临床概念映射矩阵,利用不同临床概念之间的相关性,采用多任务学习方法填补稀疏矩阵[84]。缺失值补充提升了有效样本的数量,Chiu等的研究中最初的训练集仅有337个样本,利用患者相似性的方法传递标签,补充了1 097个具有虚拟标签的样本[34]。
3.2.3数据映射和变换
在数据预处理阶段,通常将临床概念映射到编码或者变换为其他形式,以方便后续的大规模数据分析。数据变换策略包括以下几种:
1) 概念编码。指由给定的属性构造新的属性并添加到属性集中,例如利用医学语言处理技术将ICD-10赋予疾病诊断结果,使用ICD码替代非结构化的疾病描述文本[18,20]。
2) 数值归一化。指将数据按一定规则映射到特定的规范区间,例如使用Z分数法处理数值型的实验室检查检验[35],进而可以统一计算各个检验值所构成的空间距离。
3) 利用概念层次关系的知识映射数据到特定概念分层。例如,Li等使用Clinical Classifications Software 将最底层的ICD-9-CM归类至更广泛的身体系统或疾病类别,“循环系统的疾病”、“精神障碍”使用最高最广的ICD层级进行数据分析[18]。
4) 计算获得新特征。指对数据进行计算、汇总或聚集,Dey等使用一位主治医师负责的全部患者的体征/症状的平均出现次数作为特征项[42]。
5) 数值的定型化和离散化。指用区间标签或概念标签替换原始数值,Lowsky等将连续型的群体反应性抗体峰值划分为6个区间段[33]。
使用越多的维度来评价患者相似性越有可能获得越精确的评估,但是过于高的数据维度对于计算来说却是灾难。
高维的临床数据中,并非所有特征都很重要,其中包含的干扰信息可能降低患者相似性分析过程的性能。大量的弱相关特征和冗余特征是难以处理的,根源是非相关特征降低了信噪比。为控制、平衡时间复杂度和空间复杂度,需利用维度归约技术得到数据集的归约表示,称之为降维[1]。通俗地讲,降维就是将初始临床概念数据投射到一个新的低维空间。
3.3.1基于特征选择的降维
特征选择是指从d个维度中利用领域知识找出蕴含最多信息的k个维并丢弃其他k-d维。Saraiva等引入医学领域专家知识,从人口统计学信息、体征、症状这3个类别中挑选出26种临床概念,用于区分肛周癌、结直肠癌、食管癌和胃癌[37]。Labellapansa等基于案例和领域知识,赋予筛选出的临床概念不同的权重[39]。
在缺乏清晰的领域知识的情况下,通常利用数据统计的方式来评估不同维度的信息量。例如,广泛使用的TF-IDF[17,31,47],TF意思是词频(term frequency),IDF意思是逆向文件频率(inverse document frequency),其乘积可以用于评估一个临床概念在数据集中的一份病历中的重要程度。该概念的重要性随着它在患者病历中出现的次数成正比增加,但同时会随着它在其他患者的病历中出现的频率成反比下降。TF-IDF可用来为特征项赋予权重,权重越大,信息量越高,低信息量的特征可以被省略。Roque等利用TF-IDF,为诊断结果的疾病编码ICD-10赋予权重,越普遍常见的疾病,其信息量越低[20]。Saeed等使用TF-IDF,为小波系数赋权重来分析时序临床特征[47]。其他一些研究中还使用Tree-Lasso[48]、l1-norm[49]方法选择临床概念特征。
3.3.2基于特征映射的降维
特征映射是指找到一种方法将原来d个维度的组合映射到k个维(k 1) 线性判别分析(linear discriminant analysis, LDA)[50]是一种用于分类问题的有监督的降维方法。Ling等利用LDA,从含有13个临床概念的空间中得到7个临床概念的线性组合,以此作为川崎病和其他发热疾病的判别依据[51]。 2) 主成分分析(principal components analysis,PCA)[52]利用降维的思想把多指标转化为少数几个综合指标(即主成分),其中每个主成分都能够反映原始变量的大部分信息,且所含信息互不重复。这种方法在引进多方面变量的同时,将复杂因素归结为几个主成分,使问题简单化。Wang等使用PCA来处理一个包含20万患者共计约400万份索赔报告、400万份实验室检验记录、500万份用药记录的大数据集,利用欧式距离判断患者间的相似程度[17]。Miotto等也推荐在深度学习之前利用PCA方法来去除不相关的因素,以达到更好的患者预测效果[53]。 3) 非负矩阵分解(non-negative matrix facto-rization,NMF)[54]将原始高维矩阵分解为两个相乘的低维矩阵。左矩阵称为基矩阵,右矩阵称为系数矩阵。用系数矩阵代替原始矩阵,就可以实现对原始矩阵的降维,得到数据特征的降维矩阵。例如,在Ling的研究中,利用使用非负矩阵分解的方法,将患者-特征矩阵An×m分解为Wn×k×Hk×m,对于矩阵W,k个组成部分代表了风险因子特征中的潜在模式,当分析未知患者的风险因子时,使用相对应的一部分特征项即可进行评估[55]。 4) 离散小波变换(discrete wavelet transform,DWT)[56]是一种线性信号处理技术,将时序数据向量变换为不同的数值小波系数向量,截断小波变换后的数据,仅保留一小部分最强的小波系数来实现降维。Saeed等使用DWT处理ICU患者随时间变化的生理测量记录,挖掘多参数时序模型,用于预测生理不稳定[47]。 5) 局部样条回归(local spline regression,LSR)[57],也可以用于非线性维度降低。Wang等利用该方法处理由人口统计学信息、药品NDC码、治疗步骤CPT码、疾病诊断ICD码、HCC码等组成的庞大的临床概念集合,得到临床概念的特征空间,再利用欧式距离判断患者间的相似程度[17,31]。 除以上提到的降维方法外,其他的一些线性降维方法,如多维尺度(multidimensional scaling,MDS)[58]、因子分析(factor analysis,FA)[59]和非线性降维方法(如拉普拉斯特征映射(Laplacian eigen maps,LE)[17]、局部线性嵌入(locally linear embedding,LLE)[17]、等距特征映射(isometric feature mapping,Isomap)[60]等,已应用于医学信息学领域的数据降维。还有一些方法,如邻域保持嵌入(neighborhood preserving embedding,NPE)、线形局部切空间排列(linear locally target space alignment,LLTSA)、局部二值模型(locally binary patterns,LBP)等,具有很好的降维效果,但尚未见应用于医疗领域。 临床决策过程中涉及的临床概念包括了诊断、症状、检验/检查、家族史、既往史、环境、药物、手术等。患者的相似性分析本质上需要在各个概念层面上均具备相似性分析的能力,针对临床决策中主要的概念空间,使用针对性的相似性计算方法和相应的评估方法,最终融合成一个系统性的患者相似性分析方法体系。 3.4.1临床概念间的距离 每一类临床概念具有不同的语义空间特征,比如两个诊断之间的距离如果仅通过是否一致来判断,就无法有效区分风湿性心肌炎(I09.000)、类风湿性关节炎(M06.900)、风湿性关节炎(I00.x01)、痛风性关节炎(M10.002)等这类相关诊断之间的距离远近,因此需要针对性地研究各个概念的语义空间,并针对性地设计和验证距离计算方法,最终才能够服务于全面的患者相似性计算。 根据概念取值属性,存在如下的概念类型: 1) 数值型。一般的实验室检查检验项目是数值型,如血压、白细胞计数、尿量、体温,通常采用两个数值之差的绝对值来表示两个数据的距离。 然而,计算临床概念间的距离不能忽视实际的临床意义。例如,血常规中平均血红蛋白含量的正常范围是27.0~34.0,3位患者的测量值分别是25.8、27.2、33.5。按照一般计算方法,前两位患者更相近,然而按照临床意义,前一位是异常的,后两位是正常的,因此后两位更相近。Z分数[36]也叫标准分数,能够有效解决这个问题。数值型临床指标总体上服从正态分布,临床上参考范围也通常采用正态分布的百分位数法来确定。Z分数是从原始分数中减去群体的平均值,再依照群体的标准差分割成不同的差距。结合临床意义的Z分数是分段函数,对于正常范围的数值,定义为0,低于下限或高于上限,则处理为该值与下/上限的差值与群体标准差的比值,比值越大,说明该指标的异常程度越高。需注意临床上有些指标仅在单侧方向上的异常才具有临床意义,比如门冬氨酸氨基转移酶等异常升高。 2) 布尔型。阴阳定性的检验、临床症状是否出现等数据属于布尔型数据,一般使用异或值表示相同或不同,也有研究为了统一计算,将布尔型映射为0和1,然后按数值型来计算。 3) 编码型。临床存在大量编码数据,如疾病分类与编码(ICD-10)、手术操作分类与代码(ICD-9-CM-3)、解剖学治疗学及化学分类(ATC)、医学系统临床术语(SNOMED CT)等。编码体系是专家知识的一种体现,其中蕴含了大量的语义关系,提供了多种可能来评估概念编码之间的距离,比如基于信息论或基于层级的方法评估距离。以ICD-10为例,它是树形结构,虚拟顶点之下共有4级,22个一级节点(即疾病分类),12 000余个四级节点(即疾病名称)。比较两个编码的距离时,基于层级的方法考虑编码的深度及两个编码间的最短路径,深度越深说明该编码的概括性越强,最短路径越短说明二者的临床意义越近。Girardi在研究中对比了基于概率的和基于层级的距离度量方法,结果表明前者的可视化往往使患有多发诊断的患者更接近患有单一诊断的患者,后者的可视化在它们之间形成了清晰的边界,基于层级的方法表现更佳[40]。 4) 分类型。如银屑性皮损面积和严重指数(PASI)[61],腋下体温分为正常、低烧、中度发烧、高烧、超高烧5个等级,这是序数型数据。由于每个序数型数据都可以有不同的状态数,所以通常需要将每个数据的值域映射到[0.0,1.0]上,以便每个数据都有相同的权重,再使用数值型数据的距离度量计算方法。对于不具有按层级递进关系的分类型数据,使用一位有效编码(one hot encoding)进行转换。 5) 序列型。时间序列(如连续记录的临床事件)、符号序列(如时间跨度为5年的ICD-10编码)、生物学序列(如DNA)是3种序列型数据,其计算方法有Edit距离、Damerau Levenshtein距离、Hamming距离、Smith Waterman相似性、Needleman Wunsch相似性等,计算公式见文献[62]。Chiu等将异常的指标按照频次排序,使用Hamming距离计算两个向量中值不一致的元素个数[34]。 在不同研究中,对于同一种临床概念可能需要不同的相似性度量方法。以疾病诊断结果为例,Gottlieb等将其视为布尔型,即一位患者或患有、或未患某种疾病[63];Lin根据该疾病在患者群体中出现的概率判断相似性[64];Girardi等则利用ICD编码天然的层级属性计算患者相似性[40]。 3.4.2患者间的距离 经过数据预处理,患者表达为由处理过的临床概念的值组成的向量。比较两位患者,就是逐一比较向量中每个相同数据类型、相同临床意义的特征值的相似程度,再综合在一起,分析两位患者的整体相似程度。 综合分析的方法,一类是基于规则的计算,这些规则一般由资深的临床医生提供,利用计算机编程实现这些规则来计算出患者相似性。 Saraiva等在研究中参考医学书籍、National Cancer Institute(NCI)网站和全科医师的建议,针对癌症分类问题制定了9条规则来为挑选出的特征赋权重,最后使用加权的平均距离作为患者间的相似性[37]。 为解决特定问题制定的基于规则的方法,其最大优点是可解释性强。Gehrmann等研究对比了基于规则、卷积神经网络、n-gram模型3种方式在从临床记录中提取预先定义的医学概念,并预测患者表型这一任务中的表现,证实基于规则的方式并不一定是最佳的方式[65]。 另一类是多维距离计算方法,是把各个概念距离作为新的距离计算的输入,常见多维距离计算方法如表2所示,布尔型数据组成的特征向量是数值型数据组成的特征向量的一种特殊类型。 Jaccard距离、Dice距离是应用广泛、简单易懂的经典方法,可用于根据两位患者具有的症状、测量的指标、诊断的疾病等度量相似性。 Joshi等将ICU患者的高维度临床概念聚类得到低维度的特征表达,以特征的平方和度量患者的病情危重程度[35]。然而,两位患者达到同一危重程度可能是经由不同的“路径”,因此使用特征向量的余弦值来进一步修正患者的相似性。 利用表2中距离和相似性度量方法,获得按照与索引患者的相似程度高低排序的已知患者序列,最相似的一组患者可用于下一阶段的病情分析,这个患者组被称为患者相似组。 表2 距离和相似性度量方法Tab.2 Distance and similarity measurements 注:计算公式详见Wolfram距离和相似性度量[62]。 Note: For more details please refer to Wolfram Distance and Similarity Measures[62]. 类似于基因组、蛋白组用来描述某个层次上的全部信息,患者相似组(similarome)[11]用来描述一个大规模患者群体中具有相似特征的患者群体。这个相似组中蕴含了临床实践的各种知识,为计算机获取医学知识提供了保障。患者相似组分析指的是与索引患者相似的患者的识别。如果将感兴趣的或与索引患者相关的特征项(如某种并发症、药品)赋予更高的权重,相似组内部可进一步划分为多个不同的子群体,称为子相似组(subsimilarome)[11]。利用基于距离的聚类方法,可以将患者划分为若干个子集,每个子集是一个簇(cluster),在此称为患者相似组。聚类方法可分为划分方法(partitioning method)、层次方法(hierarchical method)等。 3.5.1基于距离的划分方法 基于距离的划分方法指给定含有n个患者的集合,构建患者群体的k个相似组,并且k≤n。典型的划分方法采取互斥的簇划分,即针对一种相似性度量方案,每个患者仅属于一个相似组。给定要构建的分区数k,划分方法是首先创建一个初始划分,采用迭代的重定位技术,通过把患者从一个组移动到另一个组来改进划分。 为了达到全局最优,基于划分的聚类可能需要穷举所有可能的组合,计算量极大。实际应用大多采用启发式方法,如k均值(k-means)和k中心点(k-medoids),逐渐提高聚类质量,逼近局部最优解。 Panahiazar等根据医学知识,选取了4种实验室检验、4种药物、4种人口统计学信息、26种共病状况、1种心电测量值、2种体征,利用k均值聚类法,将患者分为若干个相似组,将每个相似组中最常使用的治疗方案作为该组的标签,使用广义Mahalanobis距离判断新入患者与相似组的距离,得到排序的相似性,将新入患者归入最相似的簇中,并将该相似组的治疗方案推荐给医生[27]。 k均值等传统的划分方法是一种硬划分,是把每个待处理的患者严格地划分到某个相似组中。模糊聚类是对传统技术的改进,每一个数据点按照一定的模糊隶属度隶属于某一聚类中心。模糊聚类属于无监督学习,不需要训练样本,可以直接通过机器学习达到自动分类的目的,在Matlab工具箱中提供了两种聚类方法的支持:模糊C均值聚类和模糊减法聚类。 k均值、k中心点这类启发式聚类方法适用于发现中小规模数据集中的球状簇[68]。为了发现具有更复杂形状的簇,对超大型数据集进行聚类,需要进一步扩展基于划分的方法,如子空间聚类(subspace cluster)和双聚类(bicluster)等。 3.5.2基于距离的层次方法 基于距离的层次方法创建给定患者集合的层次分解,其形成方式分为凝聚的或分裂的。在每次相继迭代中,一个簇被划分成更小的簇,直到最终每位患者在单独的一个簇中,或者满足某个终止条件。 Panahiazar等将新入患者的真实治疗方案作为标准,评估推荐方案的准确度和召回率,结果表明k均值聚类和层次聚类的表现优劣相当[27]。Roque等使用由ICD-10组成的向量来表达患者个体,利用TF-IDF方法为ICD-10赋权值,利用余弦值计算患者间的距离,利用平均连接层次聚类法将患者分为307个子类,探讨各子类所包含的疾病种类及数量[20]。Joshi等以幅值表示总病危程度,以角度表示病情的异常方向,利用层次聚类法将患者分为10个子类,讨论各子类的死亡率[35]。 传统层次方法的缺陷:一是不能撤销先前步骤,簇之间不能进行对象交换;二是可伸缩性差,每次分裂或合并都需要考察和评估许多簇或对象。一种提高层次方法聚类质量的方向是多阶段距离,如BIRCH(balanced iterative reducing and clustering using hierarchies)和变色龙法(Chameleon)。 患者相似性分析提供了一种通用的计算机辅助临床决策支持的理论框架,在医疗大数据不断积累的背景下其潜力将会逐步被认识、发现和利用,而患者相似性分析技术也是今后医疗大数据产业的一项关键基础技术。目前的这些研究仅仅是患者相似性分析利用的冰山一角,还留有大量的工作等待研究者去探索。 病历文本中蕴含了细致的医疗事实、临床的决策依据以及采用的临床干预手段,但是计算机目前仅能从中获取一些片段性的信息,还处于“断章取义”的阶段。人工智能在医学中的一个重要挑战就是让计算机能够理解病历文本,虽然近年来在深度学习方面取得了很好的进展,如神经网络概率语言模型(neural network language model,NNLM)[69]成功应用于语音识别和机器翻译任务中,Word2Vec是Google发布的基于多层感知机的语言模型开源工具[70],已有一些成功应用的案例。尽管如此,距离计算机“读懂”病历仍是任重道远。 患者是一个生物动态系统,其生命体征是随时间变化的,这些时序特征是一种重要的临床模式特征,目前大多数研究仅利用静态时间点的各种数据进行相似性分析,不能完整地反映患者之间动态的相似性[6]。一些研究者认识到这样的缺陷,开始把时间信息纳入到患者相似性分析中。临床时间序列数据的相似性搜索要求子序列匹配[71]、趋势分析[72],这个过程通常需要对时间序列数据进行数据变换和维度归约,形成特征空间。在统计学和信号处理中,时间序列的分析已有大量研究。但是,在临床概念中,各个概念对于时间尺度的依赖是不同的(从秒、小时到年),如何在一个多分辨率的情况下比较动态模型依然是一个挑战。 基于时序模型来查询与索引患者相似的已知患者,该搜索技术包括规范化变化(normalization transformation)[73]、原子匹配(atomic matching)[74]、窗口压合(window stitching)[75]以及子序列排序(subsequence ordering)[76]。最近,研究人员提出,可将时间序列数据变换成逐段聚集相似,识别基本模式(motif)[5](即频繁出现的序列模式),构建索引和散列机制。 在统计学和信号处理领域,时间序列数据的回归已有大量研究。然而,对于医疗领域的实际应用而言,需要超越纯粹的回归,进行趋势分析,具体方法包括有限状态机(finite-state machine)[77]、马尔科夫模型(Markov model)[78]、自动回归集成的移动平均(auto-regressive integrated moving average,ARIMA)[79]、长记忆时间序列建模(long memory time series modeling,LMTS)[80]和自回归(autoregression)[81],可用于预测患者未来的病情。 Ng等的研究结果表明,尽管一组相似的患者使用相似的特征做病情分析,但特征的重要性是因人而异的[10]。传统的利用患者相似性预测病情,是利用统计学的方法推测出可能的情况,并没有考虑因人而异的特征权重。而传统的预测模型则是训练一个全局模型,预测所有新入患者的病情均采用同一个模型,并不是个性化的预测。一些研究提出了利用患者相似性的个性化预测模型[10,82],将患者相似性与预测模型结合起来,筛选出新入患者的相似组作为训练集,利用深度学习为每一个患者训练出个性化的预测模型,进而服务于临床决策。 此外,引入领域专家知识能够提高患者相似性分析的准确度。Wang等根据矩阵摄动(matrix perturbation)理论将大量无标签的患者与少量由领域专家标记过的患者结合起来,进行患者相似性分析[17]。这开启了一个新的研究方向,将半监督的机器学习和强化学习应用于医疗领域。 对于医疗问题,模型的性能和可解释性同等重要。医生往往不会采纳他们无法理解的临床决策支持工具给出的建议,医生希望结果是可解释的、可理解的和可用的。尽管机器学习模型因性能优越而广受欢迎,但如何解释这些结果、如何使其更容易被理解,制约着其转化为临床决策支持工具。患者相似性分析相比黑盒的预测模型具有更好的可解释性,但是在复杂多维的环境中,这种相似性表现得也非常抽象,通常需要借助于数据可视化(data visualization)工具,将聚类、分布、排列、比较、关联等信息以可视化的方式呈现给医生,这能直接提升对信息认知的效率,并引导医生从可视化的结果中分析和推理出有效信息。这种直观的信息感知机制,极大地降低了数据理解的复杂度,突破了常规统计分析方法的局限性。 本文是对患者相似性的综述,首先对比了预测模型与患者相似性分析的异同点,之后介绍了患者相似性的计算体系,具体步骤如下:利用医学语言处理工具,从电子病历中提取临床概念;对医疗数据做预处理,包括数据筛选、缺失值处理和数据变化;将高维的临床概念降至低维的特征空间,可采用特征选择或特征提取方法;结合临床意义,计算临床概念间的距离和患者间的距离;利用聚类分析获得患者相似组,可使用基于距离的划分方法或层次方法。 在本文的最后,介绍了患者相似性分析尚存在哪些挑战和机遇。 对于我国的医疗卫生事业而言,在需求不断增长和现有的资源配置下,迫切需要医疗人工智能技术能够为国家提供医疗改革战略性的支撑。患者相似性分析技术是医学人工智能综合展现的一个核心技术,全面掌握该技术能够破解很多长期困扰医疗体系的问题,比如医疗服务同质化的问题。而我国的医疗改革、医疗科技战略,也为今后开展这样的工作、发展这样的产业提供了非常好的机遇。 (致谢:感谢康奈尔大学王飞教授审阅了全文并给予了宝贵的指导)3.4 距离度量
3.5 患者相似组
4 挑战与机遇
4.1 深度利用病历文本
4.2 动态的度量相似性
4.3 个性化的度量相似性
4.4 预测结果的可解释性
5 总结