马鸿超,张坤丽,赵悦淑,昝红英,庄 雷
(1. 郑州大学 信息工程学院,河南 郑州 450001;2. 郑州大学 产业技术研究院,河南 郑州 450001;3. 郑州大学 第三附属医院,河南 郑州 450052)
自计划生育写入我国基本国策,晚婚晚育政策带来诸多益处的同时,也导致年龄超过35岁的高龄孕妇所占比例逐年增加[1]。2016年“全面二孩”政策实施之后,预计我国会迎来一个新的生育高潮,而高龄孕妇所占比重会更大。针对高龄产妇,难产、胎儿畸形的发生率及并发症风险都有所增加,这对各医疗机构的产科是一个巨大挑战。
自2010年国家卫生计生委医政医管局出台《电子病历基本规范(试行)》[2]之后,各诊疗机构累积了丰富的产科电子病历资源。海量电子病历数据是医疗领域的大数据,蕴含着大量医疗知识和健康信息。如何利用这些资源实现临床信息决策支持,从而改善临床治疗效果,是迫在眉睫的研究任务。
电子病历是医务人员对医疗活动进行的详细记录。其中非常重要的形式是自由文本(半结构或无结构)数据[3],如何采用自然语言处理技术对电子病历进行结构化和信息抽取是充分利用电子病历所蕴藏知识的重要一步。随着人工智能技术的发展,让医疗辅助诊断成为了可能。在电子病历中,首次病程记录以文本形式存储。包括患者的主诉、查体以及辅助检查等信息,而通常情况下,产科的入院诊断包括正常诊断、病理诊断及并发症等,即并非单一结果。如一份电子病历中的诊断中可能有“羊水过多”和“妊娠期高血压”。若将一个电子病历看作一个实例,诊断结果看作标记,则可认为每个实例都可能属于多个标记。可以将针对产科电子病历的辅助诊断问题转化为机器学习中的多标记分类问题,而同一份病历中的多个诊断结果即为不同的标记。
本文在分析中文产科电子病历自由文本结构及内容的基础上,对首次病程记录进行数据清洗,并规范化诊断结论。根据已收集到的电子病历中首次病程记录的主诉、入院查体、产科检查和辅助检查等信息,将LDA(Latent Dirichlet Allocation)主题模型抽取的特征与生理参数数值型特征融合,采用多种多标记分类的方法对产科电子病历进行自动诊断。
在多标记分类问题中,实例空间中的每一个实例可以属于多个标记,即设实例空间为X,实例集合为D,L为标记集合,|L|=n。在单标记中只有一个标记li与实例xi相对应,其中li∈L,xi是集合D的第i个实例,集合D可表示为{(x1,l1),(x2,l2),…,(xn,ln)}。而在多标记中,每一个实例可以属于多个标记,即实例集合D可以表示为{(x1,L1),(x2,L2),…,(xn,Ln)},其中Li⊆L,Li是xi关联的标记集合。不少学者对多标记分类进行研究,分别应用于文本分类[4],情感分类[5],图像和视频分类[6],生物信息[7]和医学[8]等领域。
目前,针对多标记学习的研究主要集中在三个方面: 第一,改进或者提出新分类或排序的模型,杨小健等[9]提出了一种结合类别权重及多示例的多标记学习改进算法(CWMI-INSDIF)。在对单一对象拆分时,充分考虑数据的内部特性,加入权重函数和自适应惩罚策略;李哲等[10]改进了分类器链,形成了有序分类器链(Ordered Classifier Chain,OCC),OCC可以有效利用各个标记之间的依赖关系。第二,改进、提出新的特征选择模型或者联合模型。李峰等[11]提出了一种局域互信息的粒化特征加权多标签学习k近邻算法GFWML-kNN(granular feature weighed k-nearest neighbors algorithm for multi-label leaning)。该算法计算了每个特征的权重系数,并把标记间的相关性融合进特征的权重系数,解决了特征相关性和组合爆炸问题。实验表明,该算法在整体上取得了较好的效果;Teisseyre P[12]把分类器链和强行网络正则化相结合,提出了CCnet算法,CCnet最重要的优点是在学习过程中能选择相关特征。第三,在新的领域应用多标记学习,Liu G P等[13]把技术应用到中文冠心病数据集上,进行多症状选择。
在医学领域,也有学者采用多标记分类方法进行数据的处理。Ira Goldstein等[8]利用I2B2 2008的数据,为每一个类别训练一个分类器,对肥胖症及其他15种并发症进行多标记分类;Shao H等[14]提出了一种混合优化的特征选择算法(Hybrid Optimization based Multi-Label,HOML)用于特征选择。HOML把模拟退火算法、遗传算法和爬山贪婪算法进行结合,在中医冠心病数据集上显著提高了分类的效果;Li Y等[15]把中药方剂与中医证候关系转化为一个多实例学习和多标记学习问题,提出了WSSH-MIML (Weighted Sampling based on Similar Herbs MIML)的方法,用于预测基于多实例多标记框架处方的主要症状;徐玮斐等[16]把随机森林与多标记学习算法相结合对慢性胃炎的实证症状进行选择和模型构建;程波等[17]提出一种基于多模态特征数据的多标记迁移学习模型,并将其应用于早期阿尔茨海默病诊断: 首先对图像提取特征,再选择最优特征子集,最后用多标记迁移学习模型分类回归器进行分类。
目前,在医学领域的研究多在公开数据集或类别较少的真实数据集上展开。如文献[8]中采用的是公开的评测数据。产科诊断种类较为复杂,且一些特征不易直接提取,这也为开展中文产科电子病历研究带来了一定困难,到目前为止,还鲜有人对较复杂的中文产科电子病历进行辅助诊断的研究。
产科电子病历多为自由文本形式或半结构化文本形式。本节结合具体的电子病历,重点对首次病程记录的内容及特点进行了分析。产科电子病历主要包括病程记录和出院小结两部分内容,具体如表1所示。在电子病历文本中,所有内容混排在一起,为了便于数据分析,将首次病程记录按主诉、入院查体、产科检查、辅助检查、入院诊断、诊断依据、鉴别诊断和诊疗计划等进行结构化,形成了本文进行实验的首次病程记录集合(图1则是按小节内容整理后的形式)。
表1 病程记录和出院小结所包含的主要内容
在电子病历中由于医院管理信息(Hospital Information System,HIS)系统的原因,存在首次病程记录冗余(如首次病程记录和出院小结的重复)、缺失(如首次病程记录和出院小结的缺失)、时序错乱(时间出现逻辑错误)等问题,因此也对数据进行了清洗。
图1 首次病程记录示例
本文以15家医院随机抽取的一万余份产科电子病历为研究对象,在抽取电子病历的同时进行去隐私化预处理[18],隐去了病人的姓名、身份证号码、家庭住址、医生姓名等涉及病人及医生的隐私性信息。
针对电子病历中存在的不同问题,采取不同的方式进行数据清洗[19]。针对首次病程记录冗余,采用自动比对的方式进行筛选。当检测到同一个病历中有多个首次病程记录时,根据信息的完整性以及记录时间,甄选出正确的首次病程记录;针对首次病程记录的缺失,则直接删除;而针对首次病程中的时序错误,根据产科治疗的时序逻辑,设计出了时序错误检测方案,对这一类首次病程记录也进行了删除。最终得到包含10 886份首次病程记录的数据集。
在首次病程记录中,入院诊断是医生依据病人的各项生理指标对病人的情况综合分析后作出的诊断,然后给出诊疗计划。因此,首次病程记录的入院诊断可以看作是依据显式或隐式的特征进行多个诊断标记的分类。本文的辅助诊断模拟这一过程,利用主诉、入院查体、产科检查和辅助检查来预测入院诊断。抽取了其中的主诉、入院查体、产科检查、辅助检查和入院诊断作为实验数据集,把入院诊断看作标记,其余四部分看作特征。在分词工具ICTCLAS*https://github.com/NLPIR-team/NLPIR中增加来自互联网及《妇产科学》[20]中的妇产科医疗术语和药物名称,对实验文本进行分词作为实验数据集。入院诊断中的每一条看作是一个标记,其中的“孕X+Y周”及“孕Z产U”是计算或主诉的结果,不作为类标记,将其他诊断作为多标记从数据集中共得到诊断737个,形成集合L1。由于本文中所使用的电子病历来源于多家诊疗结构,医生书写习惯并不相同,如在L1中出现的“胎盘前置状态”及“前置胎盘”两种写法,以及“上感”与“上呼吸道感染”这样的写法,即存在同一类别标记的多种不同表现形式。以ICD10疾病命名规范为依据,对诊断结果进行分词之后,采用基于语义的方法对标记的相似度进行计算*https://my.oschina.net/twosnail/blog/370744#comment-list,计算方法如式(1)所示。其中,S1、S2是两个诊断标记的语义向量表示。
(1)
根据相似度计算的结果,由医学专业人员对类标记进行规范化,合并了同一诊断结果的不同表述形式。从而得到类标记集合L2,包含标记249个,出现频次统计结果如表2所示。其中,仅出现1次的诊断标记有84个,占标记总数的34%。在数据集中共出现诊断标记25 881次,首次病程中最少标记数为1,最大标记数为9,平均每份电子病历出现2.38次。规范化之后把标记转化为0,1向量,出现为1,否则为0。
表2 入院诊断频率分布情况
LDA可以提取文本特征,而不能有效地表达数值特征,所以把LDA提取的文本特征与数值型特征融合。以下分别介绍LDA特征、数值型特征及相应的融合方式。
3.1.1 LDA特征
LDA由Blei等[21]在2003年提出,已经被广泛的应用到特征提取上。LDA是一个三层的贝叶斯模型,第一层是文档集合层D,每个文档d(d∈D)由K(k1,k2,…,km)个主题构成。每个主题ki由第三层的N个特征词构成,文本中的词是可观察的,而主题则是隐含的,LDA模型如图2所示。模型由参数(α,β)确定,α反映了隐含主题之间的相对强弱,β反映所有隐含主题自身的分布。首先,LDA从参数为β的Dirichlet分布中抽取主题与单词的关系,而后LDA生成一个文本: 首先从参数为α的Dirichlet分布中抽样出该文本d与各个主题之间的关系θd;其次,从参数为θd的多项式分布中抽样出当前所属的主题z;最后从参数为的多项式分布中抽取具体的单词w。一个文本中所有单词与其所属主题的联合概率分布如式(2)所示。
(2)
LDA的输出包含文档-主题概率分布矩阵M[m×n]。m表示文档总数D,一行代表一个文档(在本文中为一个病历实例),n是主题数,每一列表示一个主题。LDA的主题数目K=n表示一个实例的K个特征,每一个元素代表文档属于该主题的概率。假设D=3,K=120,图3是LDA的输出的一个实例M[3×120]。但LDA训练时是以词语为单位,并且高频的全局性词对主题的贡献概率大于低频词的贡献概率,而对于每一份病例中的检查指标都是自己所独有的,频率较低,LDA无法有效表达数值特征。所以引入了数值型特征,以弥补LDA的不足。
图2 LDA模型示意图
图3 M矩阵示意图
3.1.2 数值型特征
数值是电子病历中很重要的指标,不能忽略,需单独考虑。在首次病程记录中,孕妇年龄、停经月数、宫高腹围等16个生理指标是影响判断的重要因素,因此需要提取这些生理参数。文中有一些数值单位不统一的情况,以停经月数为例,一般描述为“停经X月余”,但也有“停经Y周”等的出现。在抽取时,我们把周转换为月,“四周”近似为“一个月”。在抽取时需要充分考虑这些问题,并换算单位。同时也要兼顾数据的真实有效性,在抽取孕妇体重增加生理参数中,其中一份,孕妇体重增加为“158kg”,可以推测这一数据可能是错误数据,抽取时需要设定一个阈值来判定数据的准确性。对于可能错误的数据,直接删除不用,因为可能出现错误的数据会影响实验的结果。表3是抽取的生理参数的数值型特征示例。
表3 数值型特征示例
3.1.3 特征融合
由上文可知,产科电子病历中既有描述性的文本特征(主诉和入院查体的描述性文本),也有生理参数的数值型特征(年龄,体温和宫高等)。只用数值型特征又无法表达描述性的文本特征,只用文本特征又无法表达数值型特征。因此我们把数值型特征单独抽取,与LDA特征向量进行拼接,进行融合,即为分类的最终特征。图4是将图3中矩阵拼接数值特征之后的结果,矩阵M[3×136]。
图4 M矩阵示意图
本文采用BP-MLL[7]进行多标记分类,这种方法是在传统的多层反向传播神经的基础上,改变原有的误差函数。为了将适用于单标记示例的传统前馈神经网络应用到多标记示例,必须设计一些特定的误差函数,而不是简单的平方和函数来捕捉多标记学习的特征,并且使误差函数最小化。式(3)所示误差函数认为每个类标记是独立的,没有考虑每一个标记之间的关系,式(4)所示误差函数侧重于网络在属于一个实例的标记上的输出与不属于其标记之间的差异。式(4)中误差函数的最小化,可以使系统,对于属于训练实例的那些标记,输出较大的值,对于不属于训练实例的标记,输出较小的值。
实验采用多标记常用的汉明损失(Hamming loss)、首标记错误(One Error)、覆盖距离(Coverage)、排序损失(Ranking loss)、平均精度(Average precision)作为评价指标[21]。
汉明损失: 该指标用于评估样本的真实标记与系统预测所得标记之间的误差率。即示例具有标记Yi但未被识别出,或不具有标记Yi却被误判的可能性。
首标记错误: 该评价指标用于考察在样本的类别标记排序序列中,排名最高的标记不是样本真实标记的可能性。在单标记学习中,就演化成一般的分类错误率。
覆盖距离: 该评价指标考察了在样本的类别标记排序队列中,平均需要多少搜索深度才能覆盖样本所有相关标记。
排序损失: 该指标用于考察在样本的类别标记排序序列中出现排序错误的情况。即样本对其所具有标记的排名低于对其所不具有标记的排名的可能性。
平均精度: 该评价指标考察了在样本的类别标记排序队列中,隶属度值大的标记仍为其相关标记的情况,即反映了预测类标的平均精确度。
本文选用的BP-MLL与常用的RAkEL[22]、MLkNN[23]和Classifier Chain[24](CC)分类方法进行比较,分别考虑三个因素对实验结果的影响。首先,如表2所示,诊断标记出现频次不均衡,且低频标记出现个数较多,因此考察不同频次的类别标记集合对实验结果的影响;其次,实验中利用LDA提取特征时,不同特征数目对实验结果也有影响,本文也予以考察。因此本节设置了三组实验,第一组设置LDA的主题数目K为120,比较不同规模标记数目对于分类性能的影响,第二组是标记数目为69时,LDA的不同主题数目对平均精度的影响,第三组是数值型特征对实验结果的影响。
首先选定L2=249,LDA的主题数K=120,结果如表4所示,“↓”表示值越小效果越好,“↑”表示值越大效果越好(下同)。MLkNN所选用的五个评价指标中结果最好,而BP-MLL除汉明损失表现较差外,在其余四个评价指标中也都有排到了第二位,从整体来看MLkNN和BP-MLL都有绝对的优势。从表4中可以看出,即使是表现最好的BP-MLL和MLkNN算法,其平均精度才为0.691 6±0.005 9和0.625 9±0.009 2。根据表2统计结果,仅出现1次的诊断标记有84个,频次在2~10的96个,两者共计180个,对这部分标记进行分析,主要是有三种情况:
第一种情况,是由于对电子病历并未做分类,因此所抽取的标记是所有在产科办理住院的患者。而有一些针对产科来讲是非典型的诊断结果,如过敏性皮炎、腹泻、左上肢骨折、左下肢陈旧性血栓、类风湿关节炎、抑郁症等。
第二种情况,是由于医生对入院诊断的书写习惯不同造成的,个别医生会在正常诊断中写出在类标记中出现频率较低的标记,如“单胎妊娠胎”仅出现一次。
第三部分,是较为少见的诊断结果。在抽取的10 886份电子病历中,仅出现一次的,如胎儿鼻骨缺失、胎儿十二指肠梗阻和抗磷脂抗体综合征等。这些标记在规模为10 886的数据集中仅出现一次,在一定程度上造成了数据的稀疏性。
将只出现一次的类标记删除,形成标记集L3,包含165个类标记,实验结果如表5所示。在表5中可以看出,除了RAkEL在平均精度上高于BP-MLL,在整体性能上MLkNN和BP-MLL依然是表现最好的两个算法,且平均精度值有所提高,且BP-MLL的提高超过了2%。
尝试进一步降低数据稀疏性,去除出现频率不大于10的标记,形成标记集L4,包含69个类标记,结果如表6所示。在表6中可以看出BP-MLL在覆盖距离、排序损失和平均精度都排到了第一位,而MLkNN在整体性能上也有不错的表现,且BP-MLL的平均精度高达0.713 6。
表4 L2=249,K=120时的实验结果
表5 L3=165,K=120时的实验结果
续表
表6 L4=69,K=120时的实验结果
由于主题数目对实验结果可能会有影响,所以本实验中的K在120上下选取,分别选择100、110、130、140,并与K等于120时进行对比。本实验旨在研究LDA的主题数目K对于分类结果的影响,以平均精度为例,横坐标是不同的主题数目,纵坐标是各个方法在不同主题下的平均精度。从图5中可以看出,随着LDA的主题数目K不断增长然后到达最高点,而后下降,在主题数目为110左右或者120左右时,达到最高点。MLkNN和BP-MLL整体效果均优于其他两种算法,而BP-MLL算法在整体上优于其他三种算法。
图5 主题数目K的大小对四种算法的平均精度影响
为了研究数值型生理参数对实验的影响,提取了16个生理参数作为数值特征。把这16个生理参数加入特征之中,与单独用LDA提取的特征作对比。在标记数目为69时,K为100,110,120,130,140时实验,具体如图6,表7所示。其中图6是加入数值特征前后,在BP-MLL方法上平均精度的对比,表7是另三种方法的对比。
加入生理参数的数值特征之后,平均精度均有不同程度的提高。在BP-MLL算法上,当K取140,平均精度提高了将近10%。当K取120时达到了最好的分类效果,其值为0.728 0。可以表明加入数值型生理参数之后,在一定程度上弥补了LDA不能表达数值特征的缺陷,有效提高了分类结果。
图6 数值型特征对BP-MLL的平均精度影响
续表
本文在对中文产科电子病历分析的基础上,把辅助诊断问题转化为多标记分类问题任务,比较了四种算法的分类性能,并分别讨论了LDA主题数目,类标记集合的大小和不同的分类方法对实验结果的影响。最后加入了提取的生理参数的数值型特征提高了各个算法的性能。当标记数目为69,LDA主题数目为120时,BP-MLL算法取得了最好效果,平均精度达到了0.728 0±0.013 5,这样的结果可为医学院学生的学习提供辅助手段。以往的工作一般是利用公开的数据集或者比较规范、标记数目相对较少的数据集,本文是在真实的病历中抽出特征并进行诊断,不仅适用于产科电子病历,同样也适用于其他的病历。本文的工作为以后电子病历尤其是产科方面电子病历的辅助诊断研究,提供了参考和思路。
从实验结果可以看到,分类的平均精度还有一定的提升空间。下一步的工作准备将多标记分类方法与产科医疗知识图谱进行融合,进行辅助诊断,进一步提高辅助诊断的精度及可靠性。
[1] 杨慧丽, 杨孜. 高龄妊娠对母胎结局的影响[J]. 中华产科急救电子杂志, 2016, 5(3):129-135.
[2] 卫生部印发《电子病历基本规范(试行)》[J]. 中国病案,2010,11(3):64-65.
[3] 杨锦锋,于秋滨,关毅,等. 电子病历命名实体识别和实体关系抽取研究综述[J]. 自动化学报,2014,08:1537-1562.
[4] Schapire R E, Singer Y. BoosTexter: A boosting-based system for text categorization[J].Machine learning, 2000, 39(2): 135-168.
[5] Liu S M, Chen J H. A multi-label classification based approach for sentiment classification[J].Expert Systems with Applications, 2015, 42(3): 1083-1093.
[6] Wang C, Yan S, Zhang L, et al. Multi-label sparse coding for automatic image annotation[C]//Proceedings of the 2009 IEEE Conference on Computer Vision and Pattern Recognition. IEEE, 2009: 1643-1650.
[7] Zhang M L, Zhou Z H. Multilabel Neural Networks with Applications to Functional Genomics and Text Categorization[J]. IEEE Transactions on Knowledge & Data Engineering, 2006, 18(10):1338-1351.
[8] Goldstein I, Uzuner Ö. Specializing for predicting obesity and its co-morbidities.[J]. Journal of Biomedical Informatics, 2009, 42(5):873-886.
[9] 杨小健, 王杉杉, 李荣雨. 一种结合类别权重及多示例的多标记学习改进算法[J]. 小型微型计算机系统, 2017, 38(4):857-862.
[10] 李哲,王志海,何颖婧,付彬. 一种启发式多标记分类器选择与排序策略[J]. 中文信息学报,2013,27(04):119-126.
[11] 李峰, 苗夺谦, 张志飞,等. 基于互信息的粒化特征加权多标签学习k近邻算法[J]. 计算机研究与发展, 2017, 54(5):1024-1035.
[12] Teisseyre P. CCnet: Joint multi-label classification and feature selection using classifier chains and elastic net regularization[J]. Neurocomputing, 2017, 235:98-111.
[13] Liu G P, Li G Z, Wang Y L, et al. Modelling of inquiry diagnosis for coronary heart disease in traditional Chinese medicine by using multi-label learning[J]. BMC complementary and alternative medicine, 2010, 10(1): 37.
[14] Shao H, Li G Z, Liu G P, et al. Symptom selection for multi-label data of inquiry diagnosis in traditional Chinese medicine[J]. Science China Information Sciences, 2013, 56(5): 1-13.
[15] Li Y, Li H, Wang Q, et al. Traditional Chinese Medicine formula evaluation using multi-instance multi-label framework[C]//Proceedings of the 2016 IEEE International Conference on Bioinformatics and Biomedicine. IEEE, 2016:484-488.
[16] 徐玮斐, 顾巍杰, 刘国萍,等. 基于随机森林和多标记学习算法的慢性胃炎实证特征选择和证候分类识别研究[J]. 中国中医药信息杂志, 2016, 23(8):18-23.
[17] 程波, 朱丙丽, 熊江. 基于多模态多标记迁移学习的早期阿尔茨海默病诊断[J]. 计算机应用, 2016, 36(8):2282-2286.
[18] Zhao Y S, Zhang K L, Ma H C, et al. Leveraging text skeleton for de-identification of electronic medical records[J]. Bmc Medical Informatics & Decision Making, 2018, 18(1):18.
[19] 张坤丽,马鸿超,赵悦淑,等.基于自然语言处理的中文产科电子病历研究[J].郑州大学学报(理学版),2017,49(04):40-45.
[20] 谢幸, 苟文丽. 妇产科学.第8版[M].北京: 人民卫生出版社, 2013.
[21] Blei D M, Ng A Y, Jordan M I. Latent dirichlet allocation[J]. Journal of machine Learning research, 2003, 3(Jan): 993-1022.
[22] Zhang M L, Zhou Z H. ML-KNN: A lazy learning approach to multi-label learning[J]. Pattern recognition, 2007, 40(7): 2038-2048.
[23] Tsoumakas G, Katakis I, Vlahavas I. Random k-labelsets for multilabel classification[J]. IEEE Transactions on Knowledge and Data Engineering, 2011, 23(7): 1079-1089.
[24] Read J, Pfahringer B, Holmes G, et al. Classifier chains for multi-label classification[J]. Machine Learning and Knowledge Discovery in Databases, 2009 , 85 (3): 254-269.