中医杂志

神经网络在中医疾病诊断中的实现

 

1 引言

通过国内期刊数据库对BP神经网络和中医临床诊断检索了87篇相关论文,其中关于神经网络报道16篇,BP神经网络报道27篇,人工神经网络报道10篇,与神经网络相关的论文一共43篇。关于神经网络应用于疾病诊断,关于中医诊断9篇,中医证候9篇,中医专家系统6篇,高血压3篇,哮喘2篇,大肠癌2篇,冠心病3篇,糖尿病3篇。在以前疾病的诊断中,一直试想如何提高诊断率是我们一直在努力思考的问题之一,虽然在利用BP神经网络达到了90%以上的准确率,大多数在92%左右。此研究通过数据整理,增加了样本采集量,准确率可以达到98%左右。之前,研究的病历资源较少,大肠癌症型分类研究中应用数据为338例,糖尿病肾病中医侯症中研究数据为449个,数据量往往只有200至400个左右。本次增加了样本采集量,通过1565个数据实验,其中包括不同的疾病,糖尿病,高血压,冠心病,咳嗽,胃病。使得疾病的类型覆盖面大大提高,得到各种急病的诊断率有所提高。

2 采集数据

采用的数据来四川省各个县市医院的临床数据,由于实际情况临床的诊断对象表现出不止一种病,可能患其他各种疾病,所以研究又引入了高血压、咳嗽、冠心病、胃病等疾病一同建立模型,模拟真实的就医环境。数据针对糖尿病、高血压、咳嗽、冠心病,胃病共1565例。病例包括乏力、便秘、心悸等310个症状,以及Ⅱ型糖尿病、高血压、咳嗽、冠心病、胃病5个疾病诊断。

2.1 数据清洗规则

数据的收集过程中,会产生各种难以避免的错误和不规范操作,导致数据库中有噪声(noise),不完整(missing),不一致(inconsistent)的数据[1],要保证数据的规范正确,为此,首先要进行数据的清洗。对于数据的清洗采用:填补遗漏的数据值、平滑噪声数据等[2]。对于疾病的描述不准确、遗漏的数据。采取舍去的方法,保证数据的完整性。对于症状与描述的不统一,疾病的诊断不统一。按照国家中医药管理局发布的术语规范进行规范化降噪,保证数据的一致性和真实性。对于空白,错误的数据,一律舍去,保证数据的正确和完整。在数据清洗之后,将数据整理,进行数字化编码处理。数字化编码以0、1编码[3],0代表不存在,1代表存在。

2.2 清洗方法

数据预处理:删除错误和空白的数据,保证数据的正确性。替换不规范的数据,保证数规范统一,得到1020例正确数据。其中确诊糖尿病590例,确诊高血压61例,确诊咳嗽205例,确诊冠心病21例,确诊胃病143例。

主成分分析:对归一化处理后的数据进行主成分分析[4],由于1565条数据涵盖的症状有302个。如果将每一个症状输入神经网络,会大大增加网络复杂度。所以在不影响诊断的情况下,选择主成分即可。主成分的选定标准为频数大于15的症状,经过筛选前27个症状的频数大于15,输入症状从302个提炼至27个。

3 BP神经网络设计

3.1 网络层数

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

3.2 输入层节点数

输入层节点数由于输入向量的维数决定。此研究输入27个症状,所以有27个输入节点。

3.3 隐含层节点数

隐含层节点数[7]决定了神经网络的结构。目前对确定隐含层节点个数没有一个明确方法,需要参考公式,再结合实验调整节点个数,确定最佳的训练效果。经过实验调整,最终确定了两个隐含层个数为6和3的训练的时间最短,网络误差最小,最后的准确率也较高。

3.4 输出层神经元个数

输出层的神经元个数即为需要预测的疾病个数。本次研究分别有糖尿病、咳嗽、冠心病、高血压、胃病五个疾病,所以对应有五个输出节点。

3.5 隐含层传输函数的选择

BP网络的输入节点传递函数[8]有多种。最常见的两种为Log-sigmoid和Tan-sigmoid。Log-sig型函数的输入值可以取任意的值,输出值一般为(0,1)之间,Tansig函数的输入值可以为任意值,输出值一般在(-1,1)之间。由于本次研究的期望输出都是(0,1),所以选择对应的Log-sig作为传递函数。输出节点转移函数选用tansig函数或purelin函数。对于函数的选择,本实验分别试用了两个函数,结果表明tansig函数在65次达到最小梯度,purelin函数在15次达到最小梯度。所以采用purelin函数的训练效果较好。

上一篇:改进证据理论在中医诊断模型中的应用
下一篇:没有了