基于多标记学习和贝叶斯网络的中医症型分类预测方法与流程

文档序号:12720641阅读:353来源:国知局

本发明涉及一种信息分类预测方法,特别是涉及一种使用标记相关性作为描述样本的补充特征,并且将多标记学习算法和贝叶斯网络进行结合的基于多标记学习的中医临床症型分类方法。



背景技术:

中医临床症型分类主要是通过中医望闻问切的手法得到患者的症状信息(如:头疼、四肢冰冷、脉细等),并运用分类模型得到该患者对应症型(如:气虚、肝胃郁热等)。中医临床症型分类问题最大特点在于:每个患者对应症型常有多个,例如:气阴两虚兼血瘀,其中包含了气虚、阴虚和血瘀三种症型,因此使用多标记学习模型构建分类器成为解决该问题的常用方法。基于考察标记之间相关性的不同方式,已有的多标记学习问题求解策略大致可以分为三种:一阶、二阶和高阶;其中一阶方法将多标记问题转化成多个独立的二分类问题,忽略标记之间的关系,所以模型泛化能力最低,正确率不高;二阶方法将多标记问题拆分成两两标记比较,在一定程度上提高分类器泛化能力和正确率,但当现实问题具有超越二阶的相关性时,该类方法的性能将会受到很大影响;高阶方法策略通过考察高阶的标记相关性来构造分类器,如处理任一标记对其它所有标记的影响,这类方法往往泛化能力最高,但其复杂度也可能随之变大,不利于处理大规模数据。使用标记相关性来设计分类器,是多标记学习领域的特点也是难点。现在常用的多标记分类方法有大部分是将已有的二分类器进行改编,以适应多标记学习问题。



技术实现要素:

要解决的技术问题

为了避免现有技术的不足之处,本发明提出一种基于多标记学习和贝叶斯网络的中医症型分类预测方法。

技术方案

一种基于多标记学习和贝叶斯网络的中医症型分类预测方法,其特征在于步骤如下:

步骤1:根据收集到的t个中医病例,整理了s种四诊症状,选择以二值方式为特征赋值,如果病人出现某一症状,则该症状赋值为1,反之为0,由此得到每个样本的特征集xi=(xi1,xi2,…,xis),其中i=1,…,t;同时,根据中医病例整理出k种常见的糖尿病症型,针对每个样本,如果该样本对应标记集中有某一症型,则为该症型赋值1,反之为0,由此得到每个样本的标记集Yi=(yi1,yi2,…,yik),其中i=1,…,t,将每个样本的特征集和标记集一一对应对应得到一个数据集S={(x1,Y1),(x2,Y2),…,(xt,Yt)},将数据集S分为训练数据集D={(x1,Y1),(x2,Y2),…,(xm,Ym)}和测试数据集K={(x1,Y1),(x2,Y2),…,(xn,Yn)};

步骤2:将样本的标记集Yi=(yi1,yi2,…,yik)输入到Bayesian DAG learning工具包中,使用Bayesian DAG learning工具包中所提供动态规划算法DP来计算得到最优贝叶斯网络模型;

步骤3:根据贝叶斯网络模型读取训练数据集D中每个样本标记的父节点信息pa=(p1,p2,…,pk),将已有s维的四诊信息与k维的父节点信息融合,得到了一个s+k维的训练数据的增广特征集:xi′=xi∪pai=(xi1,xi2,…,xis,pi1,pi2,…,pik);

步骤4:使用训练数据D的特征集x1,x2,…,xm和它们的父节点信息pa1,pa2,…,pam分别作为训练数据和训练数据的标记集,训练得到一个多标记神经网络,使用这个多标记神经网络来预测测试数据集K中每个样本标记的父节点信息;然后将父节点信息与测试数据四诊信息融合,形成测试数据的增广特征集;

步骤5:将增广训练数据集D’={(x1′,Y1),(x2′,Y2),…,(xn′,Yn)}平均分成两份D1’,D2’用来训练出最优特征子集;使用训练数据D1’来随机生成新的特征子集共100组,将100组特征子集作为最初解空间,使用模拟退火算法SA进行迭代,每轮迭代中,将经过每组特征子集简化后的训练数据D1’输入多标记分类器,由多标记分类器输出一个指标Average precision作为描述特征子集的适应度,在设定时间Tk搜索解空间里适应度最高的解,即100组的特征子集:BF1’,BF2’,…,BF100’;

步骤6:将BF1’,BF2’,…,BF100’作为遗传算法GA的100个初始种群,经过选择、交叉和变异算子,不断迭代产生新的解,每轮迭代中,将经过每组特征子集简化后的训练数据D1’输入多标记分类器,由多标记分类器输出一个指标Average precision作为描述特征子集的适应度,在设定时间Tg内得到适应度最高的100组的特征子集:BF1”,BF2”,…,BF100”;

步骤7:将适应度最高的100组解:BF1”,BF2”,…,BF100”作为爬山算法HC的输入,每轮迭代时改变每组特征子集中的任意一个特征值,将经过这组特征子集简化后的训练数据D1’输入多标记分类器,由多标记分类器输出一个指标Average precision作为描述特征子集的适应度,在设定时间Th内计算选出适应度最优的一组,将其作为最优特征子集BF;

步骤8:使用步骤5-7对D2’依次进行随机生成新的特征子集共100组、模拟退火算法SA、遗传算法GA、爬山算法HC迭代,得到最优特征子集BF’,比较BF和BF’的适应度,选取适应度高的那组的那组作为最终的最优特征子集;

步骤9:将增广测试数据集中的增广特征集按照步骤8得到的最终最优特征子集的特征序号进行特征选择,将训练数据集和测试数据集中的增广特征集替换为最优特征子集,分别得到了最优训练数据集DBF和最优测试数据集KBF;最后使用DBF训练多标记分类器,并在KBF上完成测试。

步骤4中所述的多标记神经网络使用误差反向传播算法实现训练,误差函数是:

其中,m是训练样本数,Yi表示样本xi对应的相关标记,表示样本xi对应的无关标记,表示该网络对样本xi的相关标记的实际输出值;表示该网络对样本xi的无关标记的实际输出值。

所述的多标记分类器采用SVM算法设计分类器。

步骤6中所述的选择、交叉和变异算子分别使用轮盘赌选择策略Roulette Select Scheme、Half Uniform Crossover Scheme、二进制变异策略,交叉和变异概率设置为pc≥0.8,pm≤0.05。

有益效果

本发明提出的一种基于多标记学习和贝叶斯网络的中医症型分类预测方法,首先,由于增加了症型之间的相关性作为补充信息,对样本的描述相较传统四诊信息更为丰富,更清晰的刻画了样本,提高了分类器的正确率。而且,在中医诊疗实践中,中医专家是通过中医的理论结合长期的临床实践经验得出最终的判断,所以统计常见症型并通过贝叶斯网络来分析症型之间的联系与中医诊疗过程是一致的。最后,本发明方法相较于一阶的多标记学习算法,在构造分类器时,都使用一样数量的分类器,只是本发明在样本特征集上增加了若干父节点信息的值,所以,在计算复杂度和时间成本上的增加极小,但分类效果明显优于一阶多标记学习算法。

附图说明

图1 6种中医症型的贝叶斯网络模型

具体实施方式

现结合实施例、附图对本发明作进一步描述:

为了更好的运用标记之间的相关性来提高分类正确率,本发明提供一种将贝叶斯网络与多标记学习结合的分类方法。该方法首先针对中医临床糖尿病的6种常见症型进行统计,使用贝叶斯网络计算每种症型在其他症型出现下的条件概率,得到6种症型之间的有向无环图模型,这种图模型可以很好的描述标记之间的相关性:两个节点的箭头代表此两个症型是具有因果关系或是非条件独立的;而节点中变量间若没有箭头相互连接一起的情况就称这两个症型彼此之间为条件独立。若两个节点间以一个单箭头连接在一起,表示其中一个节点是“成因(parents)”,另一个是“果(descendants or children)”。由此通过建立贝叶斯网络,可以直观的发现每种症型存在的隐形“成因”,在这里我们称之为每个症型的父节点信息。所以,本发明通过寻找到中医糖尿病6种症型之间的关系,发掘每个症型存在的隐形“成因”,并将这些“成因”与传统四诊信息结合起来,构造增广特征集来描述样本。最后通过特征选择算法和多标记分类算法来构造分类器,实现对中医临床糖尿病6种常见症型的分类预测。

1.构造数据集

根据收集到的128个糖尿病病例,整理了78种四诊症状,例如:多饮、多食、口苦、舌红、脉弦等等,这些症状全方位的描述了病人的情况,可当作描述样本的特征。选择以二值方式为特征赋值,根据病例的记载如果病人出现某一症状,则该症状赋值为1,反之为0,由此得到每个样本的特征集xi=(xi1,xi2,…,xi78),(i=1,…,128)。同时,根据病例整理出6种常见的糖尿病症型,分别是:气虚、阴虚、血瘀、肝胃郁热和湿阻,针对每个样本,如果该样本对应标记集中有某一症型,则为该症型赋值1,反之为0,由此得到每个样本的标记集Yi=(yi1,yi2,…,yi6),(i=1,…,128)。将每个样本的特征集和标记集一一对应对应得到一个数据集S={(x1,Y1),(x2,Y2),…,(x128,Y128)},将数据集S分为训练数据集D={(x1,Y1),(x2,Y2),…,(xm,Ym)}和测试数据集K={(x1,Y1),(x2,Y2),…,(xn,Yn)}。

2.构造贝叶斯网络

本发明运用贝叶斯网络来描述标记相关性时,将采集到的128组病例的6维症型(标记集)Yi=(yi1,yi2,…,yi6),(i=1,…,128)作为输入数据,随机变量y1,y2,…,y6分别代表贝叶斯网络中的6个节点。使用Bayesian DAG learning(BDAGL)工具包中所提供动态规划算法(dynamic programming,DP)来得到如图1所示的最优贝叶斯网络结构,贝叶斯网络结构是以矩阵形式存在。

3.构造训练数据的增广特征集

得到图1所示的贝叶斯网络后,可以读取每种症型的父节点信息pa=(p1,p2,…,p6),例如一个样本的标记是“肝胃郁热兼血瘀”(Yi=(0,0,1,1,0,0)),那么他的父节点信息是“气虚、阴虚、湿和痰瘀阻内”(pai=(1,1,0,0,1,1))。在训练阶段,对每个训练样本标记集Y中,排在第一个的,也就是中医诊断中的“主证”(key syndrome)按照上述贝叶斯网络寻找它的父节点信息。然后,将已有78维的四诊信息与6维的父节点信息融合,得到了一个84维的增广特征集(Augmented feature):xi′=xi∪pai=(xi1,xi2,…,xi78,pi1,pi2,…,pi6)。

4.构造测试数据的增广特征集

对于测试数据,由于不知道其真实标记,所以无法直接从贝叶斯网络中获取其父节点信息,从而需要对它们的父节点信息进行预测。本发明使用多标记神经网络对测试样本的父节点信息进行预测。将训练数据D的特征集x1,x2,…,xm和它们的父节点信息pa1,pa2,…,pam作为训练数据和训练数据的标记集,训练得到一个多标记神经网络,使用这个多标记神经网络来预测测试数据集K中的每个样本标记的父节点信息。多标记神经网络中使用误差反向传播算法实现训练,误差函数是:

m是训练样本数,Yi表示样本xi对应的相关标记,表示样本xi对应的无关标记,表示该网络对样本xi的相关标记的实际输出值;表示该网络对样本xi的无关标记的实际输出值。可以看出当越大,分类误差越小,分类器效果越好。这个误差函数是为了区别样本xi的相关标记和无关标记,该网络在相关标记Yi上的输出值应该大于无关标记的,其含义与效果与多标记算法评价指标中的ranking loss比较相似,最后通过梯度下降和误差反向传播最小化误差函数。

在构造网络时,网络中的输入层有78个节点,输出层有6个节点,隐层节点数设置为10,激活函数设置为“tanh”。将训练好的网络用于预测测试数据K的6维父节点信息,然后将父节点信息与测试数据四诊信息合并,形成测试数据的增广特征集。

5.特征选择和分类

本发明使用特征选择算法对样本特征集进行特征筛选,找到最优特征子集,降低增广特征集的维数。本发明使用的特征选择算法集合了模拟退火算法、遗传算法和爬山算法,其核心是遗传算法。为了避免由于遗传算法随机初始化导致算法陷入局部最优,在开始时借助模拟退火的全局搜索能力,在解空间里找到散落在不同位置的多个近似最优解,将这些近似最优解作为遗传算法的初始种群,从而避免了在收敛速率很高时陷入局部最优,最终在遗传算法输出的多个解中进行改编并使用爬山算法将结果进一步优化。为了找到最优特征子集,同时需要对每种特征子集进行评估,本发明使用多标记分类器来测试每个特征子集的性能。

本发明将增广训练数据集D’={(x1′,Y1),(x2′,Y2),…,(xn′,Yn)}平均分成两份D1’,D2’用来训练出最优特征子集(也可以分成三份D1’,D2’和D3’,其中两份用来训练出最优特征子集,一份用来测试最优特征子集的性能,在经过D1’,D2’训练得到最优特征子集后,为了放心,再利用D3’去进行测试,具体操作为:将D3’按照最优特征子集的特征序号进行特征选择,将经过这组特征子集简化后的训练数据D3’输入多标记分类器,由多标记分类器输出一个指标Average precision作为描述特征子集的适应度,比较D3’测试得到的适应度和经D1’,D2’训练得到最高的那个适应度,如果在D3’测试得到的适应度值在D1’,D2’训练得到最高的那个适应度的值±0.1范围内,就说明最优特征子集没有问题;否则重新开始训练)。在划分数据集时,尽量保证每种标记的数据在各个数据集中大致一样多。在进行特征选择前,需构造多标记分类器实现对最优特征子集的评估,本发明使用SVM算法设计分类器:

F(x,Y)=[f(x,y1),…f(x,y6)],

其中Θ是人为加入用以区分相关标记和无关标记的阈值,假设F(x,Y)都是线性模型。该分类器是以最小化ploss为目标,即:

其中

可以看出是hinge losses的和,定义

则该问题可转化为:

此处q是标记个数,n是训练样本数,向量C表示hinge loss的权重。可以发现,ξ可由决定,不需要优化,所以通过引入约束矩阵A,我们可将优化问题写成:

由于上式计算量较大,需要将数据集划分成若干份,以便于并行计算,最后引入surrogate augmented lagrangian算子:

其中αz和η是拉格朗日乘数。那么,上式可分解成为Z个独立的子问题,即:

k是迭代次数。由此,该问题可由现有处理SVM分类问题的多种方法来处理。

得到分类器F(x,Y)=[f(x,y1),…f(x,y6)]后,可以用来测试每种特征子集的好坏。接下使用训练数据D1’和D2’来随机生成新的特征子集共100组:BF1,BF2,…,BF100,将100组特征子集输入特征选择算法,经过不断更新迭代最终输出最优特征子集。本发明使用分类器中的指标Average precision作为适应度函数(fittness)来评价每一种特征子集的好坏,最优特征子集具有最高的Average precision。

首先,将100组特征子集BF1,BF2,…,BF100作为最初解空间,输入模拟退火算法(SA)。在SA的每次迭代时,对100组特征子集进行变异,以产生新的特征子集,模拟退火算法的变异概率pm随着温度下降而降低,最终在限定时间Tk搜索到解空间里适应度最高的解(特征子集)。

其中Tc表示当前温度,由上式可知,变异概率pm随着当前温度Tc的下降,由0.5逐渐趋近于0,即对特征子集的改变逐渐变小,这个变异操作相当于在整个解空间随机的采样。产生新的特征子集进入搜索空间后,模拟退火算法(SA)以一定概率接受比当解稍差的解,状态转移概率如下所示:

可以看出,随着温度Tc降低,较差的解被接受的概率也越来越小。温度冷却的进度是随着程序运行的耗时进行的。于是当时间截止,可得到经过全局搜索保留下的100组较好的解,即100组较好的特征子集:BF1’,BF2’,…,BF100’。将BF1’,BF2’,…,BF100’作为遗传算法(GA)的100个初始种群,在时间Tg内,经过选择、交叉和变异算子,不断迭代产生新的解,在这里使用轮盘赌选择策略(Roulette Select Scheme),交叉使用Half Uniform Crossover Scheme,变异采用二进制变异策略,交叉和变异概率一般设置为pc≥0.8,pm≤0.05,得到适应度最高的100组解:BF1”,BF2”,…,BF100”。最后,把由遗传算法搜索得到的100组特征子集,作为爬山算法(HC)的输入,在时间Th内,每轮迭代时改变每组特征子集中的任意一个特征值,并从中计算选出适应度最优的一组,即为最优特征子集,例如:原始特征子集x=(x1,x2,…,x84)是84维的,经过特征选择之后的最优特征子集也许是x=(x2,x4…,x81)是40维的。这个特征子集记录了被选择的特征序号。

在增广训练数据集D’上得到最优特征子集之后,对增广测试数据集中的增广特征集按照最优特征子集的特征序号进行特征选择,由此完成了增广训练数据集D’和增广测试数据集的特征选择,将训练数据集和测试数据集中的增广特征集替换为最优特征子集分别得到了最优训练数据集DBF和最优测试数据集KBF。最后使用DBF训练先前构造的多标记分类器,并在KBF上完成测试。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1