APP下载

一种中医辨证多标记学习算法的设计及实现*

2020-04-20孙鑫亮胡孔法周雪忠

世界科学技术-中医药现代化 2020年11期
关键词:证型排序标签

杨 涛,孙鑫亮,朱 垚,胡孔法,周雪忠

(1. 南京大学信息管理学院 南京 210023;2. 南京中医药大学人工智能与信息技术学院 南京 210023;3. 南京中医药大学第一临床医学院 南京 210023;4. 北京交通大学计算机学院 北京 100044)

1 引言

辨证论治是中医临床诊疗的核心思想,其中“辨证”是临床立法、处方和用药的前提和基础[1]。辨证是在中医理论的指导下,通过四诊采集患者的临床信息,并对临床信息进行综合分析、判别证型的过程。由于临床信息到证型的对应关系复杂,加之临床辨证结果往往多证型兼夹,这给中医辨证的数字化和智能化带来障碍[2]。因此,如何有效地模拟临床信息到证型之间的关系?如何解决兼夹证型的复杂诊断问题?已经成为中医诊断领域的研究难点之一[3]。

近40年来,国内外众多学者开展了中医辨证智能化研究,研究方法大致可以分为:基于符号逻辑的方法、基于概率统计的方法、基于模糊数学的方法、基于机器学习的方法四大类[4]。这些方法各具特点:①基于符号逻辑的方法简单易用,从理论上只要产生式规则的数目足够多,就能表达出中医专家的知识;其缺点是当规则较多,推理链较长时,容易出现前后矛盾的推理[5]。②基于概率统计的方法利用统计函数或方程(如判别函数[6]、因子分析[7]等)建立从症状到证的量化关系,其模型相对简单,但准确性不高,泛化能力不足。③基于模糊数学[8]的方法利用利用隶属函数表示不同证型,利用模糊相似度计算进行证型判别,其优点是简单易理解,容易被中医人员接受,但如何建立合理的隶属函数尚无好的方法,需要依靠专家经验反复修正[9]。④基于机器学习的方法将中医辩证问题转为为分类问题,采用神经网络[10]、支持向量机[11]、集成学习[12]等方法模拟中医诊疗。由于中医证候种类繁多,各证候类别样本分布不均衡等因素,导致分类模型难以解决复杂的中医辨证问题。

图1 ML_RDT算法原理

上述方法尝试从不同角度模拟中医辨证过程,推动了中医辨证数字化的发展。然而,由于临床上简单证型较少出现,多个证型兼夹的情况较为常见,传统的方法难以处理这一问题。从信息学角度来看,多证型兼夹属于典型的多标记学习问题,可以尝试利用多标记学习理论解决这一问题。鉴于此,本文提出一种基于依赖树的中医辨证多标记学习算法ML_RDT(Multi-label Reinforced Dependency Tree),用以解决兼夹证型的诊断问题。

2 中医辨证多标记学习算法

2.1 算法设计思想

令X表示症状输入空间(即,所有可能的输入症状情况),Y表示证型输出空间,F={x1,x2,……,xm}表示有m个不同的症状特征(feature),L= {y1,y2,……,yn}表示有n个不同的证型标签(label)。假设一个中医多标记训练样本T={(Xi,Yi)|i∈[1,n]},其中Xi∈X是一个示例(instance),Yi⊆L表示Xi对应的症状标签集合。多标记学习的任务是从训练样本T中学习一个多标记分类器h:X→2L,用于预测未分类的示例。

传统的多标记学习算法不同标签之间相互独立,而中医辨证结果往往出现兼夹证型,兼夹证型中的各个证型(标签)之间存在紧密联系,传统的多标记学习算法无法解决这一问题。ML_RDT根据中医辨证的特点,分别针对特征与标签构造特征依赖树和标签依赖树,利用标签依赖树对特征依赖树的预测结果进行修正,从而解决兼夹证型关联问题。

ML_RDT算法原理如图1所示:

第1步,从训练样本T中提取不同标签yi对应的正例样本Si={Xi|(X1,yi)∈T,yi=1}和反例样本Si′={Xi|(X1,yi)∈T,yi=0}。

第2步,分别寻找正例样本Si和反例样本Si′对应的最优依赖树fyi=1(X)和fyi=0(X),当判断示例r对应的yi标签上的值,计算fyi=1(r)与fyi=0(r)的值,并进行归一化处理。当fyi=1(r)≧fyi=0(r),标签yi上取值1,否则为0。计算所有标签上的值,得到zr=[y0,y1,……,yn]。

第3步,寻找证型标签的最优依赖树,构造依赖函数f(Y)。

第4 步,设定预测结果修正系数α,对归一化后正例标签预测结果{fyi=1(X)|k∈[1,n]}进行排序,将中间α%对象对应zr中的元素置为空,作为待修正对象。将1-α%的元素输入f(Y)预测其他α%的值,得到新的预测结果zr′。当f(zr′)>f(zr)则预测结果为zr′,否则取zr。

寻找最优依赖树是ML_RDT 的关键之一,本文采用经典的Chow-Liu tree building algorithm[13]建立依赖树,该算法构造以变量为节点、互信息为权值的最大生成树作为依赖树。

ML_RDT算法伪代码如下:

3 实验

3.1 评价指标

为了评价算法效果,下列经典的多标记学习评价指标[14]被使用:

3.1.1 汉明损失(Hamming loss,HL)

该指标用于考察样本在单个标记上的误分类情况,即隶属于该样本的概念标记未出现在标记集合中而不属于该样本的概念标记出现在标记集合中,其值越小,模型表现越好。其定义为:

其中Q为标签总数,h(xi)为分类结果。

3.1.2 1-错误率(One error,OE)

该指标用于考察在样本的概念标记排序序列中,序列最前端的标记不属于样本标记集合的情况,其值越小,模型表现越好。其指标表达式为:

排序第一H(xi) = 1,否则H(Xi) = 0,其中m为记录数目。

3.1.3 覆盖率(Coverage)

该指标用于考察在样本的概念标记排序序列中,覆盖隶属于样本的所有概念标记所需的搜索深度情况,其值越小,模型表现越好。其定义为:

其中P 为特征标签的个数,m为记录数目,C(xi)=且l′i= arg mink∈Yi f(xi,k)。

3.1.4 排序损失(Ranking loss,RL)[14]

该指标用于考察在样本的概念标记排序序列中出现排序错误的情况,其值越小,模型表现越好。其定义为:

3.1.5 平均精度(Average precision,AVP)

该指标用于考察在样本的概念标记排序序列中,排在隶属于该样本的概念标记之前的标记仍属于样本标记集合的情况,其值越大,模型表现越好。其定义为:

其中P(xi)=

3.2 实验数据

数据来源于国医大师周仲瑛教授的电子病历数据。抽取其诊治冠心病的医案数据,根据《中医临床术语症候部分》对原始数据中的症状和证型规范化处理,最终得到1315 条数据,共503 个变量,其中482 个特征,21个标签。症状和证型的分布统计信息见表1。

表1 症状和证型的频数统计

3.3 实验内容

①采用十折交叉验证法将实验数据随机分为10组,其中9 份作为训练数据,1 份作为测试数据;②将ML_RDT 在依赖树基础上,进行了正反例依赖树比较和预测结果修正等多重优化。为了分析优化的效果,我们将其与ML_DT(Multi-label Dependency Tree)、ML_PDT(Multi-label Parallel Dependency Tree)进行比较。其中ML_DL 只生成每个标签对应的正例特征标签依赖树进行预测;ML_PDT 分别生成每个标签对应的正反例特征标签依赖树,根据正反例依赖树预测的概率进行最终结果判定。③将ML_RDT 与经典的多标记学习算法ML_KNN[14]、ML_RBF[15]、BP_MLL[16]进行比较,以多标记学习评价指标对算法效果进行比较。

3.4 实验结果

ML_RDT 的十折交叉验证每一折的情况如图2 所示。其中Hamming loss、One error、Coverage、Rank loss四个指标越低,模型效果越好,Average preision 越高,模型效果越好。从图2 可以看出,ML_RDT 的Hamming loss 小于0.1,One error、Coverage、Rank loss均小于0.2,Average preision 大于0.9,表明模型的诊断效果较好。

图2 ML_RDT算法十折交叉验证结果

ML_RDT 与ML_DT、ML_PDT 的模型表现如表2所示,其中加粗的为各指标下表现最佳的结果。从表2 可以看出,在五项评价指标上,模型表现ML_RDT >ML_PDT>ML_DT。均采用依赖树模型,ML_RDT 明显优于其他方法,证明针对正例标签和负例标签分别建模,同时考虑证型关系,利用证型依赖树对结果进行校正能够有效提高模型效果。

表2 三种基于依赖树的模型表现(mean ± SD)

ML_RDT 与经典的多标记学习算法(ML_KNN、ML_RBF、BP_MLL)的模型表现如表3所示。从表3可以 看 出,在Hamming loss、Coverage、Ranking loss、Average precision 四个指标上,ML_RDT 表现均优于其他算法,仅在One error指标上低于其他算法。

ML_RDT、ML_KNN、ML_RBF、BP_MLL 在21 个标签下的AUC 对比情况如表4 所示,加粗的为各标签下表现最佳的结果,其中出现部分标签的AUC 取值为空(nan)情况,这是由于测试样本分布不均衡,部分标签取值全为0或者1导致。

4 分析及讨论

从测评指标来看,ML_RDT模型表现较为稳定,在每一折上的波动较小(图2)。从表2可以看出,三种基于依赖树的模型在所有的测评指标上都呈现ML_RDT表现最佳、ML_PDT 次之、ML_DT 最差,这表明对模型进行正反例依赖树比较和预测结果修正的优化有效地提升了模型效果。从表3 可以看出,ML_RDT 在Hamming loss、Coverage、Ranking loss、Average precision上表现最佳,One error 表现较ML_KNN 略差,但优于ML_RBF 和BP_MLL 算法。从表4 可以看出,ML_RDT的AUC(max = 1.00,min = 0.88,avg = 0.97),ML_KNN的AUC(max = 1.00,min = 0.50,avg = 0.74),ML_RBF的AUC(max = 0.77,min = 0.50,avg = 0.66),BP_MLL的AUC(max = 0.78,min = 0.50,avg = 0.54),ML_RDT在各个标签下的AUC 表现全面优于其他算法。总体而言,ML_RDT 综合表现优于ML_KNN、ML_RBF 和BP_MLL算法。

表3 ML_RDT与经典多标记学习算法的模型表现

表4 不同算法在21个标签的AUC对比

从临床意义来看,Hamming loss 反映了模型诊断结果中各个子项与真实诊断结果对应情况的误判率,其值越小,模型诊断结果与真实诊断的对应越好;One error 反映了模型诊断结果中排序第一的诊断错误情况,其值越小,对主要病证的诊断效果越好,体现在中医临床上就是抓住主要矛盾(即辨识主证)的能力;Coverage 反映了模型诊断结果与真实诊断结果相比的冗余情况,其值越小,冗余诊断越少;Average precision反映了模型诊断结果与真实诊断结果的相似度,其值越大,诊断相似度越大。从测评结果可以得知ML_RDT 诊断结果与真实的诊断的一致性较好,且冗余诊断较少,能够很好地解决兼夹证型的诊断和重要性识别(排序)问题。

从算法设计角度来看,ML_RDT 引入了标签依赖树对原始预测结果进行校正,利用依赖树节点之间的关系,通过已知节点预测未知节点,较好地解决了证型之间存在关联的问题。此外,ML_RDT 计算过程简单高效,能够适用于小样本数据的学习和推理,而ML_KNN、ML_RBF 和BP_MLL 对样本量要求较高,且难以解决由于样本分布不均衡导致的分类效果不佳等问题。ML_RDT 采用以变量为节点,以互信息为权值的最大依赖树作为模型的核心,由于互信息不受样本分布影响,因此能够有效解决样本分布不均衡问题,特别适用于样本量小、分布不均衡的中医临床数据集。

综上所述,ML_RDT 针对中医辨证的证型间夹问题进行算法设计,充分考虑了证候之间的相关性,建模过程中通过构建证型依赖树对初始辨证结果进行校正,有效地提升了算法性能,诊断效果明显优于其他经典的多标记学习算法。

5 结束语

依赖树属于图模型的一种特殊形式,其用树结构来描述多元随机变量之间的联合分布概率模型,从而给研究高维空间中的概率模型带来了很大的便捷性。其在自然语言处理[17]、医学诊断[18]等方面有着广泛的应用。本文将依赖树引入到中医诊断领域,设计了基于依赖树的中医辨证多标签分类算法ML_RDT,通过和其他多标记学习算法比较,测评效果优于其他比较算法,能够有效应用到中医兼夹证型诊断中。研究成果可以进一步设计成软件系统,为中医临床辅助诊疗服务。

猜你喜欢

证型排序标签
不稳定型心绞痛患者中医证型与血脂和炎症指标水平的相关性分析
基于数据挖掘的小儿肺炎中医辨证分型研究
作者简介
原发性高血压中医证型证候要素的多元回归分析
恐怖排序
节日排序
无惧标签 Alfa Romeo Giulia 200HP
不害怕撕掉标签的人,都活出了真正的漂亮
让衣柜摆脱“杂乱无章”的标签
科学家的标签