模式分类在病理诊断中的应用 | ![]() |
模式分类是模式识别的一项重要内容,模式分类是通过构造一个分类函数或者分类模型将数据集映射到某一个给定的类别中,关联着其识别的整体效率,广泛应用于各个研究领域[1]。初次将模式分类与医学诊断紧密结合起来,重点研究BP神经网络(处理复杂性问题应用最广泛的方法)模式分类方法,在病理分类中表现出的分类效果。BP神经网络是应用最普遍的一种人工神经网络,其应用实例占神经网络的80%,已成为人工神经网络的经典代表[2-3],目前已经成功地应用于模式识别、图象处理、自动控制等领域。利用MATLAB软件对UCI数据集中Pima Indians Diabetes数据集进行分类,通过分类的准确率和运行时间方面得出神经网络用于医学诊断具有很好的发展前景。
1 BP神经网络方法BP(Back Propagation)神经网络是1986年由Rumelhart和McCelland为首的科学家小组提出,是一种按误差逆传播算法训练的多层前馈网络,是目前应用最广泛的神经网络模型之一[4]。BP网络能学习和存贮大量的输入-输出模式映射关系,而无需事前揭示描述这种映射关系的数学方程。它的学习规则是使用最速下降法,通过反向传播来不断调整网络的权值和阈值,使网络的误差平方和最小[5]。BP神经网络模型拓扑结构包括输入层(input)、隐层(hide layer)和输出层(output layer)[6]。BP神经网络的拓扑结构如图 1所示。
![]() |
图 1 BP网络拓扑结构图 |
图 1中,X1, X2, ....Xn是BP网络的输入值,Y1, Y2, ....Ym是BP神经网络的预测值,Wij和Wjk为BP神经网络的权值。从图 1可以看出,BP神经网络可以看做是一个非线性函数,网络输入和预测值分别为该函数的自变量和因变量。当输入节点数为n、输出节点为m时,BP神经网络就表达了从n个自变量到m个因变量的函数映射关系[7]。此时分类的目的就是判别某个输入X经过网络后所产生的Y属于哪个类,且Y∈(Y0,Y1...Ym)。综上所示,分类可表达为:Yj=maxYk,j即为输入X所属的类。
2 数据集与实现分析 2.1 数据集简述实验中主要采用UCI数据库上的Pima Indians Diabetes数据集,该数据集共包含768个实例,每个实例含有9个属性,从左至右依次为孕次(pregnant times)、餐后2 h内血浆葡萄糖浓度(Plasma glucose concentration)、舒张期血压mmHg(Diastolic blood pressure)、皮肤皱裂厚度mm(Triceps skin fold thickness)、血清胰岛素mu U/ml(serum insulin)、体重指数(Body mass index (weight in kg/(height in m)^2))、家族病史(pedigree function)、年龄(Age)、类变量(Class variable (0或1)),其中0代表没有患病,1代表患病。该数据集共500组没有患病的数据组和268组患病者数据统计。
2.2 BP神经网络训练与预测基于BP神经网络的特征信号分类算法建模包括BP神经网络构建,BP神经网络训练和BP神经网络分类三部分[8],算法流程如图 2所示。
![]() |
图 2 分类算法流程图 |
BP神经网络的构建根据系统输入输出数据特点确定,由于糖尿病特征输入信号有8维,待分类的信号有两种,所以BP神经网络初步的结构为8-21-2,即输入层有8个节点,隐含层有21个节点,输出有2个节点。
BP神经网络训练用训练数据训练BP神经网络,选用数据集共有768组数据,从中随机选出568组作为训练数据训练网络,200组数据作为测试数据测试网络分类能力。
将8个特征参数作为网络输入向量,患病状态作为输出向量(输出1代表没患病,输出2代表患病)。8个输入节点,2个输出节点,隐含层神经元根据经验采用公式
%输入数据归一化
[inputn, inputps]=mapminmax(input_train);
%网络结构
innum=8;
midnum=15;
outnum=2;
%权值,阈值初始化
w1=rands(midnum, innum);
b1=rands(midnum, 1);
w2=rands(midnum, outnum);
b2=rands(outnum, 1);
w1_1=w1;
w1_2=w1_1;
w2_1=w2;
w2_2=w2_1;
b1_1=b1;
b1_2=b1_1;
b2_1=b2;
b2_2=b2_1;
xite=0.1;
%训练网络
for ii=1:20
E(ii)=0;
for i=1:1:568
x=inputn(:, i);
for j=1:1:midnum
I(j)=inputn(:, i)'*w1(j, :)'+b1(j);
Iout(j)=1/(1+exp(-I(j)));
end
Yn=w2'*Iout'+b2;
%网络预测误差
for i=1:200
for j=1:1:midnum
I(j)=inputn_test(:, i)'*w1(j, :)'+b1(j);
Iout(j)=1/(1+exp(-I(j)));
end
fore(:, i)=w2'*Iout'+b2;
end
end
for i=1:200
output_fore(i)=find(fore(:, i)==max(fore(:, i)));
end
error=output_fore-output1(n(569:768))';
2.3 实验结果分析用训练好的BP神经网络分类糖尿病特征信号测试数据,BP神经网络的分类误差及运行时间如图 3, 4所示。
![]() |
图 3 BP神经网络分类误差 |
![]() |
图 4 训练网络运行时间 |
由图 3看出BP网络分类用在糖尿病诊断中测试正确率高达84%左右,当然要想将神经网络应用于医学诊疗方面还需要很大的进步空间,其中BP神经网络隐含层节点数对BP神经网络预测值有很大影响:节点数太少,网络不能很好得学习,需要增加训练次数,训练精度也受影响;节点数太多,训练时间增加,网络容易过拟合[10]。网络隐含层的层数和单元数的选择尚无理论上的指导[11]。在实际问题中一般是根据经验或者通过反复实验的试凑法确定最佳的节点数,对于本案例来说,分类误差与节点数关系如图 5所示。
![]() |
图 5 预测误差与隐含层节点数关系 |
从图 5可以看出,案例中BP神经网络的分类误差随着隐含层节点数的增加先减后增的趋势。当隐含层节点取15时,误差最小。
3 结论主要将模式分类应用在糖尿病症状诊断中,以常见的最为简单的BP神经网络建立病理诊断模型,用全面调节隐层神经元的个数对网络进行训练和优化,通过误差率和运行时间结果表明,BP神经网络模型建立方法简单,便于在实际中应用。只要通过采取调整隐层神经元个数对网络进行优化训练和注意训练样本的合理选取等手段,能够得到性能更优越的BP神经网络模型,将BP神经网络的方法应用在医学领域具有一定的参考价值和意义。
[1] |
姜斌, 黎湘, 王宏强, 等. 模式分类方法研究[J]. 系统工程与电子技术, 2007, 29(1): 99-102. |
[2] |
袁曾任. 人工神经元网络及其应用[M]. 北京: 清华出版社, 1999.
|
[3] |
PARIOS A G. An accelerating learning algorithm for multiplayer perception networks[J]. IEEE Transactions on Neural Networks, 1994, 5(3): 493-497. DOI:10.1109/72.286921 |
[4] |
周开利, 康耀红. 神经网络模型及其MATLAB仿真程序设计[M]. 北京: 清华大学出版社, 2005.
|
[5] |
禹建丽, 卞帅. 基于BP神经网络的变压器故障诊断模型[J]. 系统仿真学报, 2014, 26(6): 1343-1349. |
[6] |
郭红霞, 师义民. 中医脉象的BP神经网络分类方法研究[J]. 计算机工程与应用, 2005, 41(32): 187-189. DOI:10.3321/j.issn:1002-8331.2005.32.059 |
[7] |
DUDA R O, HART P E, STORKD G.模式分类[M].北京:机械工业出版社, 2003.
|
[8] |
王小川, 史峰, 郁磊, 等. MATLAB神经网络43个案例分析[M]. 北京: 航空航天大学出版社, 2013.
|
[9] |
虞和济, 陈长征. 基于神经网络的智能诊断[M]. 北京: 冶金工业出版社, 1999.
|
[10] |
贾永红. 人工神经网络在多源遥感影像分类中的应用[J]. 测绘通报, 2000(7): 7-8. |
[11] |
LIM T S, LOH W Y, SHIH Y S. A comparison of prediction accuracy, complexity and training time of thirty-three old and new classification algorithms[J]. Machine Leaning, 2000, 40(3): 203-228. |