多层次个性化临床路径推荐方法
2022-11-07朱能军陈小松沈坤炜
顾 扬,曹 健+,朱能军,陈小松,沈坤炜
(1.上海交通大学 计算机科学与工程系,上海 200240;2.上海大学 计算机工程与科学学院,上海 200444;3.上海交通大学医学院附属瑞金医院,上海 200025)
0 引言
不同于针对某种疾病的单一治疗方案,临床路径是以预期的治疗效果和成本控制为目的,由医生、护士和其他人员共同针对某一疾病建立的一套标准化的治疗模式与治疗程序[1]。目前,临床路径已在国外得到普遍应用。大量临床实践表明,临床治疗路径可以有效提升治疗效果[2],缩短治疗时长,减少治疗费用,同时增加医疗服务的系统性和满意度。传统的临床路径需要医院相关人员收集资料讨论后共同拟定,该过程会耗费医务人员大量的精力和时间,且受专家的主观影响较大,所形成的路径往往固定不变,难以反映患者的个性化差异,在实际操作中存在一定偏差[3]。
随着医疗信息化技术的飞速发展,病例数据大量积累,数据挖掘方法在构建临床治疗路径中的应用得到越来越多的关注。现有算法总体上分为基于过程挖掘和基于其他方法的临床路径挖掘两类,其效率、可解释性和可评价性尚需提升。
在挖掘出临床路径后,需要对每个病人提供个性化的治疗方案,快速推荐合理有效的临床路径方案将对医生的临床诊断具有很大参考价值。现阶段主要有基于规则的推荐方法和基于历史数据的推荐方法。
值得注意的是,在医学领域:①诊疗过程本身存在层次性,医生一般按照先宏观后微观的顺序为病人制定治疗方案,其所依据的医疗指南(如国家综合癌症治疗网络(National Comprehensive Cancer Network, NCCN))[4])也具有层次性;②由于个体差异性和疾病的复杂性,医学本身具有不确定性,医生的经验在诊疗过程中更为重要,只推荐具体的方案会产生过拟合的情况;③医疗数据反映的病人特征有限,很多因素如个人意愿、家庭经济情况等需要医生在诊疗过程中了解,而这些恰为方案制定的关键。依赖历史病例推荐具体方案会导致推荐的偏向性,相反推荐粗略的方案能为医生提供更灵活的参考。因此,智能推荐的方案只作为医生的辅助工具,相比为医生推荐某个具体方案的准确性,推荐方案所体现的知识凝练程度、为医生提供更全面的决策支持的能力显得更有意义。
针对上述问题,本文提出一个多层次个性化临床路径推荐方法。为了获取多层次的临床路径,首先设计了过程层次临床路径的挖掘模型,利用过程挖掘中的启发式网络进行初步挖掘,然后运用社区发现的Louvain算法对挖掘出的网络结构进行社区划分,从而挖掘出抽象临床路径。为了提升推荐方案的决策支持能力,提出抽象—具体临床路径的推荐模型,利用挖掘出的临床路径为患者推荐抽象临床路径,在此基础上分阶段推荐治疗方案,最终形成具体的临床路径,为医生提供决策支持。本文利用上海交通大学医学院附属瑞金医院的乳腺癌病例数据对模型进行实验验证,并对相关结果进行进一步讨论和分析。
1 相关工作
临床路径挖掘主要分为基于过程的挖掘和基于其他方法的挖掘两类。因为临床路径反映了疾病诊疗活动的过程,与过程管理的处理对象类似,所以过程挖掘方法最先被用于挖掘临床路径。LANGAB等[5]采用过程挖掘的7种算法挖掘临床路径,发现传统过程挖掘算法的挖掘效果不明显[6];DE WEERDT等[7]提出上卷和下钻两种方法对数据进行处理;LAKSHMANAN等[8]采用频繁挖掘方法挖掘与医疗结果相关的临床路径[9]。实际上,由于医疗数据的复杂性和非结构化性,过程挖掘方法容易产生复杂的不易理解的意大利面状模型,不利于进行精准高效的路径推荐。为了提升可解释性,BLEI等[10]尝试使用隐狄利克雷分布(Latent Dirichlet Allocation, LDA)主题模型挖掘治疗路径,但忽略了数据中的时序特征;XU等[11]提出将过程挖掘与LDA主题模型相结合;WANG等[12]基于患者病历,综合运用机器学习算法制定个性化医疗方案。总之,临床路径挖掘主要利用基于日志的过程挖掘方法产生与实际相符的、易于人类理解的工作流模型[13-14],并在此基础上进行改进创新,然而现阶段鲜有成果能够被真正纳入标准临床路径制定中。
临床路径推荐大致分为基于规则的推荐方法和基于历史数据的推荐方法。基于规则的推荐主要利用知识表示中将规则符号化的方法[15],该方法将规则抽象为逻辑公式,将病人的各种指标作为输入,从而推导出正确的结果。这里的规则一般来源于许多医疗机构发布并使用的权威医学指南[4]。然而,这些推荐方法有些是粗略的,例如可以根据病人的情况推导出其需要化疗,却无法推导出需要哪种类型的化疗。另外,对于有些特殊的病例,并未匹配治疗指南中的某个规则,如果将这样的病例作为输入,系统根本无法得到一个结果。基于案例数据的推荐方法的本质是对比待推荐病例与病例数据库中的已有知识并做出相应的判断,对这一方法最早的研究出现在20世纪70年代后期[16],其基本原理是将海量的历史案例及相应的解决方案构成一个知识库,采用机器学习算法,如K最近邻(K-Nearest Neighbors, KNN)、支持向量机等,在知识库中搜寻出最相似的几个历史案例,根据这些案例进行进一步决策。不同于基于高度复杂规则的医疗推荐方法和基于简单统计模型的方法,ZHANG等[17]于2017年提出LEAP(learn to prescribe)算法,该算法将医疗推荐分解为一系列决策过程来自动确定合适的药物数量,同时创新性地将临床知识纳入强化奖励设计,以防出现不利的药物组合。然而,这些方法大多只能为医生推荐具体的治疗方案,普适性、可参考性不强,且会造成过拟合,对医生的决策支持帮助有限。
2 多层次临床路径的推荐方法
2.1 方法概述
针对上述临床路径挖掘与推荐中存在的层次性不明显、普适性不强、决策支持能力不够等问题,本文提出一个多层次临床路径推荐方法。如图1所示,在对每一个患者进行临床路径推荐之前,采用过程挖掘和社区发现算法挖掘出准确合理的多层次的抽象临床路径(过程层次临床路径挖掘模型),并推荐抽象路径,在此基础上利用KNN等算法分阶段推荐最优方案,形成具体临床路径(抽象—具体临床路径推荐模型)。相比直接推荐,从抽象到具体的多层次推荐过程既符合人类的认知过程,又可以凝练出多层次的医学知识,从而为医生提供更全面的参考。
2.2 过程层次临床路径的挖掘模型
2.2.1 模型概述
临床路径反映了疾病诊疗活动的开展过程,其本质与过程管理的研究对象相似,因此可以将过程挖掘方法运用到临床路径挖掘中。通过观察标准临床路径表单可知,一般临床路径都具有阶段鲜明、层次划分明确等特点,而过程挖掘一般只能挖掘出较为复杂的网络结构模型,阶段性不明显,因此在传统模型基础上进行改进,以挖掘出具有层次结构的过程模型。
社区发现算法指从复杂网络数据集中检测发现出社区的算法,其中社区内部节点之间关联紧密,社区之间关联性低。如图2所示,本文通过社区发现算法对过程挖掘初步得到的复杂网络进行处理,得到划分好的社区,进而挖掘出具有层次结构的过程模型(抽象临床路径)。
2.2.2 启发式网络挖掘
过程挖掘是通过分析过程日志中的数据,提取得到过程相关的信息,从而自动发现过程模型的技术。常用的过程挖掘方法,例如基于隐Markov链的过程挖掘算法[18],需要已知原过程模型,再利用过程日志进行改进;基于Petri网模型的α及其改进算法[19-20]通过挖掘活动间的时序关系得到最终的过程模型;启发式网络挖掘算法基于启发式网络的思想,对处理包括大量过程活动和噪声的日志效果很好[21]。
本文采用的数据集来自医院的诊疗日志,其中不可避免地存在噪音数据和日志不完整等情况。考虑到过程挖掘算法的优缺点、医院诊疗日志的特征以及研究目的,本文决定采用启发式网络挖掘算法,并结合医疗数据特征进行改进。启发式网络挖掘通过计算活动和序列的频率及依赖关系来建立模型,其基本思想是频繁的路径更有可能被挖掘,挖掘结果一般用因果网(Causal Net, C-Net)表示。
启发式网络挖掘一般分为3个步骤:①建立一个活动依赖频率表,计算出任意一对活动之间的依赖度;②挖掘表中活动之间的关联,设定一个阈值,过滤掉小于阈值的活动关系,构造活动依赖图;③利用启发式算法选择应该包含的绑定关系,从而建立流程模型C-Net。
2.2.3 社区发现算法
社区发现算法从一张图中划分出很多子图,使子图内各节点的关系尽可能大,子图之间的关联尽可能小,这些子图称为社区。Louvain算法是一种层次贪心发现算法,与其他算法相比,具有速度快、检测全面、能够发现层次性的社区结构等优点。相关实验表明[22],对于拥有1.18亿个节点的复杂网络,Louvain算法的探测时间仅需152 min。
定义1模块度。模块度Q是度量一个社区网络划分效果的指标,定义为
(1)
定义2模块度增益。模块度增益ΔQ是判断能否将一个节点合并到新社区中的指标。将节点i加入节点j所在社区C的模块度增益
(2)
(1)阶段A(划分社区)
步骤1将图中每个节点初始化为一个小的社区。
步骤2对于每个节点i,依次尝试将其加入邻居节点所在的社区,计算加入前后的模块度增益ΔQ,记录ΔQ最大的节点所在的社区编号,如果最大值大于0,则将节点i加入邻居节点所在的社区,否则节点i仍保留在原社区。
步骤3重复步骤1和步骤2,直到所有节点不再发生移动。
(2)阶段B(压缩节点)
步骤4对图进行压缩,将同一社区内的节点作为一个新节点,新节点之间的边权重即为原社区之间的权重。
步骤5重复阶段A和阶段B,直到整个社区的模块度Q不再变化。
2.3 抽象—具体临床路径的推荐模型
2.3.1 基于案例的临床路径推荐
(1)问题描述与特征提取
假设数据集D中共有N个案例(案例由患者属性及其治疗方案构成),则第k个案例可表示为
Dk=x(k),y(k)。
(3)
式中:特征向量x=(x1,x2,…,xd)T表示患者的各个属性值;y(k)表示案例Dk的分类,对应某个治疗方案,取自于一个由c个分类构成的集合C。需要解决的问题是,对于一个具有特征向量x的新患者,利用数据集D为样本x预测新的分类。
首先将患者的各项属性转换为数值形式的特征向量x。本文数据集患者的属性信息有些用文字记录,而且并非所有数字型特征都应纳入特征向量,有些属性(如身高、肺活量)在治疗乳腺癌疾病时并没有多大的参考价值。在考虑是否纳入病人属性时应遵循如下两个原则:①根据相关医疗手册选择;②根据领域专家意见选择最重要的属性。
离散数值的属性可以直接纳入特征向量,连续数值的属性要进行离散化处理后再纳入,这样做的意义是放宽了该属性的灵敏度,便于进行相似程度计算。对于多选型属性,可将其对应的one-hot编码转化为十进制数进行存储。在对相关数据进行特征筛选等预处理后,最终有12种属性被纳入特征向量,表示为x=(x1,x2,…,x12)T。
(4)
式中ωk为第k个属性的权重。
(5)
在使用式(4)前必须确定属性的权重ωk,最简单的方法是根据医疗经验手动分配权重,例如可以为医疗指南中出现的属性权重设置更大的值,然而以这种方式精确分配权重值非常困难。因此,本文利用遗传算法(Genetic Algorithm, GA)从数据集中学习到一组最优化的权重。
采用二进制编码,根据分类错误率定义适应度函数(目标函数)
(6)
式中:#Misclassification为在top-N推荐列表中未命中的样本数;#samples为训练样本的数目。遗传算法的目的是通过多次迭代搜索最佳权重,以最小化适应度函数值,从而提高推荐的准确率。
对于一个待预测的样本x,根据上述相似度度量方法,结合式(4)和式(5),可以从训练集中找出最相似的k个样本,下面基于这k个样本推荐类别。最简单的方法是少数服从多数的投票原则,但对于临床路径的推荐问题,这种方法比较粗糙,病人之间的属性相似度应该扮演更重要的角色,即相似度越高,该训练样本对推荐的决策影响越大,反之越小。
因此对于一个待预测的样本,将前k个相似样本与预测样本的相似度作为相似样本所属类别的权重。如式(7)所示,对于分类集合中的每个类别yC,将k个相似样本中类别也为yC的样本类别权重相加,最终值最大的类别作为待预测样本的预测类别。
2组原发性高血压患者均以4周作为一个治疗疗程,连续实施2个疗程的治疗,在治疗的过程中,每天对其血压水平进行监测,并记录其症状改善情况。
(7)
(8)
2.3.2 抽象—具体临床路径的推荐模型
上述方法直接根据病人的属性特征为医生推荐具体的临床路径,然而由于医学本身的不确定性和治疗方案的动态更新,可能导致对历史数据过拟合,同时考虑到医生在现实诊疗过程中,会根据病人的各项身体指标先给出一个概括性的治疗方案,再结合具体治疗情况细化每一个阶段的治疗方法,即诊疗过程具有层次性,本文结合2.2节挖掘出的抽象临床路径,提出一个抽象—具体(abstract-concrete)临床路径的推荐模型。
如图3所示,首先为每一位患者推荐抽象临床路径,在宏观层面上为医生提供决策参考,然后在抽象路径的基础上分阶段运用KNN、决策树等算法推荐相应的最优方案,最终得到具体的临床路径。从宏观到微观的推荐过程,既可以为医生提供多层次多角度的决策支持,又可以避免过拟合问题,从而提升临床路径的普适性。
3 实验验证及结果分析
3.1 数据集介绍
本文实验数据集(简称RJ2021)来源于上海交通大学医学院附属瑞金医院乳腺中心,中心牵头联合国内多家医院共同参与,致力于为乳腺疾病预防、诊断、治疗和研究提供服务和数据。。
RJ2021目前已有10 000个左右病例,详细记录了所有病人检查、问诊、治疗的相关信息,包括病人的基本信息、临床及病理信息、治疗类型、治疗方案、疗效信息等。实验采用的患者病例信息主要分为患者属性和治疗方案两类。
(1)患者属性 主要由患者的基本信息和临床及病理信息构成,在临床记录或检查没有纰漏的前提下,这部分信息客观且不受外界因素干扰,可以有效帮助医生对病人情况做出判断、对疾病做出诊断、对治疗方案做出选择。
(2)治疗方案 是在治疗类型的基础上,医生根据患者的不同情况制定的最佳治疗方法。治疗类型有化疗CT、放疗RT、靶向治疗TT、内分泌治疗ET 4种。对于每一种治疗类型,都包含了一个具体的治疗方案集合,表1所示为化疗和放疗的每种治疗方案及其编号。医生仅需根据患者的属性信息为其选择最合适的治疗方案,不会改变相应类型治疗方案的详细计划。利用这一特点,患者临床路径的推荐就可以被当作一个多分类问题,这为本文需要解决的推荐问题提供了极大的便利。
表1 治疗方案
3.2 临床路径的挖掘
由前文对RJ2021数据集的介绍可知,每位患者的病例信息中包含了所采用4种治疗类型中的具体治疗方案,表2所示为部分病人所采用的具体治疗方案,基于这些数据,利用过程层次临床路径的挖掘模型进行实验。首先采用启发式挖掘算法挖掘出如图4所示的C-Net,其中数字为每种治疗类型中的方案编号;然后采用Louvain算法划分阶段,处理后的结果如图5所示。
表2 部分病人采用的治疗方案
图5中,a,b,c,d分别表示治疗路径的4个阶段CT,RT,ET,TT。可见,乳腺癌疾病存在多种治疗路径,例如[a,b,c,d]对应CT+RT+ET+TT,[a,c,d]对应CT +ET+TT,[a]表示只采用CT。这些路径并未考虑具体的治疗方案,而是按治疗类型分阶段表示。将挖掘出的路径命名为抽象临床路径,其为临床路径推荐的基础。上述实验结果表明过程层次临床路径的挖掘模型可以从复杂日志数据中挖掘出具有层次结构的过程模型。
3.3 临床路径的推荐
为了测试基于案例的推荐方法的预测效果,将数据集按一定比例随机划分为训练集和测试集,并用KNN算法比较不同K值下对不同治疗阶段进行推荐的效果,因为每个治疗阶段均可抽象为多分类问题,所以评价指标选取准确率Accuracy、宏平均Macro-F1和微平均Micro-F1,实验结果如表3所示。
表3 基于案例的KNN推荐算法性能
表中KNN3,KNN4,KNN5分别表示K=3,4,5时的结果,FourT是将CT,RT,ET,TT 4个阶段的推荐结果组合之后得到的治疗路径,D-KNN为直接对病人的临床路径推荐得到的结果。
从实验结果可见,在每个治疗阶段,KNN算法推荐的准确率均在70%以上,甚至达到90%,且K值的变化对结果影响不大,分析原因可能是相似的患者比较集中,其采用的治疗方案差别不大。但将每个阶段的结果简单组合后得到的FourT路径效果显然比对临床路径直接推荐差,说明临床路径的各阶段之间可能存在某种关联,从流程的角度推荐路径应该更加合理。因此继续对抽象—具体临床路径的推荐模型进行实验。
如3.2节所述,本文利用过程层次临床路径的挖掘算法挖掘出16条抽象路径(如表4),按照二进制编码为其标号0,1,2,…,15。
表4 抽象临床路径编码表
基于表4中的16条抽象临床路径,采用KNN和决策树多分类算法(Classification and Regression Tree, CART)首先推荐了抽象层面的临床路径,结果如表5所示,抽象临床路径的推荐准确率达85%以上。在此基础上分阶段推荐相应的最优方案,最终得到具体的临床路径。将这一模型的结果与直接对病人临床路径推荐的结果进行对比,结果如图6所示。
表5 抽象临床路径的推荐结果
图6中,AC_KNN和AC_CART是利用抽象—具体模型,分别应用KNN和CART算法形成的方法;D-KNN和D_CART则为直接推荐的方法。从结果可见,无论抽象—具体模型还是直接推荐,决策树算法的推荐准确率均可达80%左右,优于KNN方法。医学诊断过程中,存在根据某种指标高低选择治疗方案的现象,这种规则化的判定方法与决策树算法的思想较为相似,且与实验结果相符,但并不能说明KNN算法是无用的,因为KNN算法最大的优点是具有可解释性,尤其在医学领域,相似病例是医生重要的参考。
由图6可见,KNN算法和CART算法直接推荐的3个指标均优于抽象—具体模型,对这一问题继续进行探讨。
在制定患者治疗方案过程中,虽然会有多学科团队共同参与讨论,并通过投票的方式给出自己的意见,但是最终的治疗方案往往由主治医生决定。这一决策过程可能在某种程度上存在偏差,即最终决策方案可能并不是单纯从医学角度考虑得到的最佳方案,因为主治医生可能会综合病人实时的身体情况、病人自身意愿、家庭经济情况等各方面因素,做出最终决策。由此表明,如果实验的Groundtruth集仅由最终决策方案决定,则会产生一定误差。因此将Groundtruth集修改为多学科团队投票的前3名方案,重新进行实验,这里选用KNN算法为代表,结果如表6所示。
表6 不同Groundtruth集的推荐效果对比
表中方案第1个前缀A表示Groundtruth集为最终决策方案,前缀B表示Groundtruth集为医生投票方案的前3名。可见,虽然D_KNN方法的效果仍优于AC_KNN,但是B_AC_KNN和B_D_KNN的准确率差值明显小于A_AC_KNN和A_D_KNN,说明在医学领域没有绝对正确的治疗方案,或者说制定治疗方案需要考虑很多因素。
因此,抽象—具体临床路径的推荐模型无论在有效性还是实际应用上均具有一定意义,尤其在决策支持方面,相比直接推荐,其从整体到具体的推荐过程凝练出多层次的知识,为医生提供了多角度的参考信息,有利于医生制定出更符合病人实际情况的个性化临床路径。另外,给模型十分贴近人类的认知决策过程——先宏观后微观,宏观层面的抽象路径可以让医生对病人需要接受的疗程数以及疗程先后顺序心中有数,微观层面可以进一步对方案进行微调。
4 结束语
本文对个性化临床路径的推荐方法进行研究。首先设计了一个基于启发式网络挖掘和社区发现算法的过程层次临床路径的挖掘模型,然后模拟医生诊疗过程,提出并实现了抽象—具体临床路径的推荐模型,在推荐抽象临床路径的基础上分阶段推荐具体的治疗路径。最后通过真实场景下的数据实验表明,该方法无论在有效性还是为医生提供决策支持的能力上均具有一定意义。
对于临床路径的推荐过程,本文已经分析出每个阶段活动之间可能存在某种关联,未来将从该角度入手引入联合概率等参数,进一步优化抽象—具体临床路径推荐模型,以提高推荐的各项性能。