可以认为女性并未受到不公平待遇。而女性的婚姻对工资虽有一定的影响,但在误差允许范围内,可以忽略不计。
y 37 37 38 42 38 38 40 X1 38 41 42 42 42 42 30 X2 0 0 0 0 0 0 0 X3 0 0 0 0 0 0 0 X4 0 0 0 1 0 1 0 X5 0 1 0 1 1 0 0 X6 1 0 1 0 0 1 0 X7 0 0 0 0 0 0 0 X8 0 0 0 0 0 0 0 y' 41.7565 42.022 42.1105 42.1105 42.1105 42.1105 41.0485
5.3.5模型分析:
在模型三中,本文采用了逐步判别法来筛选主要因素。并再次使用多元线性回归测试了建模效果。应当指出,这种给予逐步判别法的选取关系密切因素的方法,虽然会导致结果的准确性下降,但是在实际应用中,特别是当计算的工资个数非常多,耗费资源较多时,有着很大的实际意义。
5.4 模型四:基于BP算法的神经网络
在模型一、二中,本文采用了回归分析法建立模型,但是由结果可以看出,输出结果和期望值还是存在很大的误差,因此本文采用模型四,即BP神经网络模型。
BP神经网络是一种进行分布式并行信息处理的算法数学模型。这种网络依靠系统的复杂程度,通过调整内部大量节点之间相互连接的关系,从而达到处理信息的目的。人工神经网络具有自学习和自适应的能力,可以通过预先提供的一批相互对应的输入-输出数据,分析掌握两者之间潜在的规律,最终根据这些规律,用新的输入数据来推算输出结果,这种学习分析的过程被称为“训练”。 自学习过程是一个反复迭代的过程,首先给网络一个初始权值,然后输入一个样本计算并输出,通过实际输出与期望输出之间的差值来修改网络的权值以达到减少这个网络差值的目的。反复执行该过程直到这个差值小于预定值为止。对
11
足够样本进行这样训练后,网络所得的那组权值便是网络通过自学习得到的正确的内部表示。因为本题选用多层网络(MSP)。
5.4.1前馈神经网络
本文采用前馈神经网络。既是构成网络的神经元只接受前一层的输入,只输出给后一层的神经元,无反馈网络,因此可用一单向无环网络来描述。在网络中结点可以分为两类,既是输入输出结点与计算结点。输入输出接点直接与外界相联,直接受外界影响,因此为可见层,而其他结点所在的中间层为隐藏层。若一个神经网络有多层,则第k层的输出与第k+1层的输入相连。输出可耦合到任意多个输入。
5.4.2三层前馈神经网络
本文构建一个三层前馈神经网络,如下图所示:
基于实际问题的分析,可知网络只有一个输出y,既员工的日工资。而有输入变量有8个,分别为x1,x2,……,x8。以此确定了输入层与输出层的节点数分别为7个和1个。另外,而中间隐藏层节点数的选取我们采用动态构造法:即输入输出节点数不变,而隐层节点数可变,初始时放入足够多的隐藏层节点,然后逐渐删掉那些不起作用的节点,直到节点不可收缩为止。使用MATLAB神经网络工具箱进行迭代,为使结果更加直观,收敛速度加快,不妨将y和x1规格化,
12
2(?y???ymin)y???即按照公式
ymax???ymin (其中y'min和ymax分别为对应变量的最小值和最大
值),使y和x1都落在区间[0,1]之内。最终得网络模型的最佳隐藏层节点数为5。据
此可知,基于BP神经网络分类模型的最佳网络拓扑结构为:7×5×1。
5.4.3反向传播网络(BP神经网络)
下面本文将给出计算出各层权值和偏执量的方法。其主要思想是从后向前逐步传播输出层的误差,以间接的算出隐藏层的误差,进而得到各层权值和偏执量。
定义
1E(?,?)?2?(T???172??O?)
?其中O为第?组数据输入时,网络的实际输出。当第?组数据显示患病时T=1 反之T= 0,即为我们的理想输出,训练的目标就是使上式尽量的小。
因此,训练一个神经网络就可以看成一个求函数最小值的过程,最方便的办法就是最速下降法,求得公式如下:
对于隐藏层的第j个神经元到输出层的第i个神经元的权
??ij??????ij的修正量为:
?E???[Ti??Oi?]f'(Si?)????i?x?j??ij???xSi其中和j分别表示第?组样本输入时,输出层第i个神经元的状态和隐
藏层第j个神经元的输出。
输出层的第i个神经元的阀值的修正量为:
??i?????i??
*?kl对于输入层的第L个神经元的隐藏层的第k个神经元的权的修正量为
*?kl????E???*??????f'(S)x?????iikklkxl*??kl?,i?
13
5.4.4 BP神经网络模型的构建与训练
本文将采用MATLAB工具箱中的神经网络工具箱进行神经网络模型的训练。自学习的过程是一个反复迭代的过程,首先给网络一个初始权值,然后输入一个样本计算并输出,通过实际输出与期望输出之间的差值来修改网络的权值以达到减少这个网络差值的目的。反复执行该过程直到这个差值小于预定值为止。对足够样本进行这样训练后,网络所得的那组权值便是网络通过自学习得到的正确的内部表示。
5.4.4.1网络建立:
在MATLAB中调用下列函数:
net=newff(PR,[5,1],{'tansig','purelin'},'trainscg','learngdm'); 各项参数的意义与选取根据:
(1)PR是一个由每个输入向量的最大最小值构成的2×R的矩阵;R为输入神经元数目;
(2)[5,1]是隐层网络的神经元个数和输出层的神经元个数;
(3){'tansig','purelin'},选取每一层的变换函数。根据本文所使用数据的类型特点,在隐藏层采用双曲线正切S型变换函数“tansig”;在输出层采用线性变换函数“purelin”;
(4)'trainscg'是BP神经网络的训练算法函数。 (5)'learngdm'是学习函数。
5.4.4.2 设置训练参数
设置每50次迭代显示一次,学习速率设置为0.05,迭代上限设为2000次,训练目标设为0.0012。
net.trainParam.show=50; net.trainParam.lr=0.05; net.trainParam.mc=0.9; net.trainParam.epochs=3000; net.trainParam.goal=0.002;
14
调用trainscg训练BP网络,调用下列函数,其中P为输入矩阵,T为输出矩阵。 [net,tr]=train(net,P,T);
得到下列训练图形
5.4.4.3网络仿真
通过函数sim(net,q)函数实现,其中参数net为该神经网络,q为待检测的输入矩阵。网络训练完成以后,使用该函数根据已训练好的网络,对测试数据进行仿真计算。同时也可以进行模型的检验。
5.4.4.4 模型分析:
在模型四中,本为采用了BP神经网络进行了建模。虽然模型的建立较为复杂,但是可以从测试数据的输出值与原期望值的比较中得出,该模型能很好的计算出员工的工资。剔除异常数据后,所得的输出值与原期望值非常接近。而且可以肯定,如果学习的数据不只是60组,而是更大的数据量,则所得到的神经网络将更加准确。因此模型四适用于大量数据,大量计算问题的处理。
15