中医杂志

BP神经网络在中医胃病病型诊断中的实现

 

目前人工智能火热发展,在医学上不少的研究已经涉及了人工智能,而中医具有整体性,模糊性,抽象性的特点,与神经网络的容错性、自助学习性的特点十分切合。张秋云等研究用遗传算法的BP神经网络确定不同患者的不同的穴位。[1]徐亮等用BP神经网络搭建了中医辨证模型,预测气虚型与非气虚型的准确率,[2]其诊断类型较少,只有气虚型和非气虚型两种输出结果,其次,其准确率较低,只有80%的准确率。本文以真实的中医胃病临床数据为基础,利用Matalb软件,应用BP神经网络技术搭建了训练模型,增加了诊断的类型,诊断类型包括肝胃不和、胃阳虚、胃阴虚等36个诊断结果。本次的准确率也有所提高,平均诊断率达到90%以上,能够模拟中医师的辨证,从而辅助胃病病型的诊断。

1 临床数据来源

采用的数据来自四川省各个县市医院的真实中医临床数据,总共2252条数据,每条数据至少包含一个胃病相关症状和病型诊断。

2 数据清洗加工

数据的收集会产生各种错误和不规范,数据库中有噪声(noise),不完整(missing),不一致(inconsistent)的数据。[3]保证数据的规范正确,为此,首先要进行数据的清洗。对于数据的清洗一般包括:填补遗漏的数据值、平滑噪声数据等。[4]对于疾病的描述不准确、遗漏的数据,采取舍去的方法,从而保证数据的完整性。对于症状描述的不统一,疾病的诊断不统一,可按照国家中医药管理局发布的术语进行规范化降噪,从而保证数据的统一性。在数据清洗之后,将数据整理分类,可分为胃部感觉,口咽感觉、面色等16个症状分类。每个分类下根据具体的症状从0开始,以1为单位依次编码。最终得到16个症状分类共175个症状编号,得到1个症型分类共38个病型编号。

3 模型设计

(1)BP神经网络原理:神经网络与人脑的神经系统类似,由许多的神经元节点构成。神经元可分为三层:输入层、隐含层、输出层。不同的神经元具有不同的权值,权值代表着对下一层神经节点的影响程度,权值越大则对节点影响越大,反之越小。权值会随着神经网络模型的训练而做出调整。BP神经网络是解决权值调整的网络模型,利用BP算法而调整节点的权值。该算法训练中有正向传播和反向传播两个过程。在正向过程中传递一组输入值和输出值,输入值经过输入层,再到隐含层,最后到输出层输出结果。反向过程中,将输出结果与输出值比较,反向传递,根据比较的误差修改节点的权值,直到误差在允许的范围内为止。经过多次的训练,最后的节点权值稳定下来。此时模型的权值结构即代表了符合训练数据的神经网络模型。最后通过输入数据,从模型导出输出结果,形成非线性对应关系。

(2)网络层数。BP神经网络[5]可以包含一个或者多个隐含层,理论上已经证明,单个隐含层可以通过适当增加神经元节点的个数实现任意非线性映射。对于大多数应用场合,单个隐含层即可满足需要。但如果样本过多,增加一个隐含层可以明显减少网络规模。因为样本数据输入层有16个输入节点,所构成的网络较复杂,因此采用2个隐藏层,从而减少网络规模。

(3)输入层节点数。输入层节点数与输入的变量个数相同。此研究有16个症状分类作为输入,每个症状分类输入编号变量,因此有16个输入节点。

(4)隐含层节点数。隐含层节点数对BP神经网络的性能影响很大。较多的隐含层节点数可以带来更好的性能,但可能导致训练的时间过长,造成过度拟合。可以参考公式,和n分别为输入层和输出层的神经元个数,a为[0,10]之间的常数,再结合实验调整节点个数,确定最佳的训练效果。经过多次实验,最终确定了隐含层分别为6、4的训练时间最短,网络模型收敛最快,最后的准确率也较高。

(5)输出层神经元个数。输出层神经元个数与输出变量相同。本次输出变量只有病型一个,输出值为对应的病型编号。病型编号共有38个,因此共有38种输出的可能。

4 结果

整理后的数据共2252条,将1700条输入用于网络训练,552条数据用于测试,3次实验总的准确率分别是93.66%,91.30%,90.76%,平均准确率达到了90%以上。

5 讨论

本次研究以BP神经网络结合中医胃病病型的诊断,采用真实的临床数据搭建BP神经网络诊断模型。通过编码提高了诊断病型的数量,其病型的诊断多达38种。同时通过BP算法提高了病型的诊断准确率,使得病型预测的平均准确率达到90%以上。但此次研究仍然有许多问题,BP神经网络作为广泛使用的神经网络之一,其本身存在许多缺陷,例如局部极小化,算法收敛速度慢,网络结构不确定等问题。对于上述的问题,还有待进一步的研究和优化。

上一篇:BP神经网络在中医疾病诊断中的实现
下一篇:没有了