基于BP神经网络的信用评级模型精编版Word文档下载推荐.docx
《基于BP神经网络的信用评级模型精编版Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《基于BP神经网络的信用评级模型精编版Word文档下载推荐.docx(9页珍藏版)》请在冰点文库上搜索。
隐层的传递函数为f1(·
),输出层的传递函数为f2(·
),则隐层节点的输出为
输出层节点的输出为:
至此BP网络就完成了n维空间向量对m维空间的近似映射。
误差的反向传播
1)定义误差函数
输入
个学习样本,用
来表示。
第
个样本输入到网络后得到输出
(j=1,2,…m)。
采用平方型误差函数,于是得到第p个样本的误差Ep :
式中:
为期望输出。
对于
个样本,全局误差为:
2)输出层权值和隐含层权值的变化
求出误差关于各个权重的偏导数,根据最速下降法得到误差的变化率:
其中
为学习率,以此公式不断修正权重和阈值,以使误差函数E达到最小精度,当误差达到预设精度或学习次数大于设定的最大次数,则结束算法,否则,选取下一个学习样本及对应的期望输出,继续前面的步骤进行。
BP算法的改进
BP算法理论具有依据可靠、推导过程严谨、精度较高、通用性较好等优点,但标准BP算法存在以下缺点:
收敛速度缓慢;
容易陷入局部极小值;
难以确定隐层数和隐层节点个数。
在实际应用中,BP算法很难胜任,因此出现了很多改进算法,例如利用动量法改进BP算法,自适应调整学习速率,动量-自适应学习速率调整算法,L-M学习规则等,这些改进算法在matlab中对应不同的训练函数。
注意事项
神经元节点数的选择
网络的输入与输出结点数是由实际问题的本质决定的,与网络性能无关.网络训练前的一个关键步骤是确定隐层结点数L,网络的隐节点数决定了网络的规模,而网络的规模与其性能密切相关。
神经网络的规模越大,网络中的自由参数就越多;
反之,网络中的自由参数就越少。
当网络规模过小,容易导致欠拟合;
网络规模过大,则容易导致过拟合。
隐层结点数的选择与其说具有科学性,不如说更具有技巧性,往往与输入数据中隐含的特征因素有关。
L的选择可以通过一些经验公式,比如
其中m、几分别为输入结点数目与输出结点数。
实际中,可以先通过经验公式确定隐层节点数的一个大体范围,然后变化隐含层节点数,每次增加一个节点并考察误差值,当误差值显著增大时停止增加隐含层节点,此时的节点数就是最优的节点数。
传递函数的选择
工具箱提供了三种传递函数:
Log—sigmoid、tan—sigmoid和线性函数purelin.前两种为非线性函数,分别将x
(-∞,+∞)的输入压缩为y
[0,1]和y
[-1,+1]的输出.因此,对非线性问题,输入层和隐层多采用非线性传递函数,输出层采用线性函数,以保持输出的范围,就非线性传递函数而言,若样本输出均大于零时,多采用Log-sigmoid函数,否则,采用Tan—sigmoid函数.对线性系统而言,各层多采用线性函数。
数据预处理和后期处理
如果对神经网络的输入和输出数据进行一定的预处理,可以加快网络的训练速度,一般均采用归一化处理:
将每组数据都变为-1至1之间数,matlab中使用的函数是mapminmax。
BP网络模型的算法框图
4.Matlab程序
BP神经网络设计的一般过程
数据预处理
为了提高神经网络的训练效率,在某些情况下需要对“输入-目标”样本集数据作必要的预处理,利用mapminmax函数可以对输入输出数据归一化处理,使其落入[-1,1]之间。
方法如下:
%input_train,output_train分别是训练输入输出数据
[inputn,inputps]=mapminmax(input_train);
[outputn,outputps]=mapminmax(output_train);
inputn,outputn,是归一化后的数据,inputps,outputps为数据归一化后得到的结构体,里面包含了数据最大值、最小值和平均值的信息,可用于测试数据的归一化。
测试数据归一化和反归一化程序如下。
inputn_test=mapminmax(‘apply’,input_test,inputps);
%测试数据归一化
BPoutput=mapminmax(‘reverse’,an,outputps);
%网络预测数据反归一化
input_test是预测输入数据,inputn_test是归一化后的预测数据,’apply’表示根据inputps的值对input_test进行归一化。
An是网络预测结果,outputps是训练输出数据归一化得到的结构体,BPoutput是反归一化之后的网络预测输出,‘reverse’表示对数据进行反归一化。
生成BP神经网络
采用newff函数可以用来创建一前馈BP网络。
newff函数的常用格式为net=newff(P,T,S,TF,BTF,BLF,PF,IPF,OPF,DDF)
P:
输入数据矩阵
T:
输出数据矩阵
S:
隐含层节点数
TF:
节点传递函数,包括线性传递函数purelin,正切S型传递函数tansig,对数S型传递函数logsig。
BTF:
训练函数,包括梯度下降BP算法训练函数traingd,动量反转的梯度下降BP算法训练函数traingdm等。
BLF:
网络学习函数,包括BP学习规则learngd,带动量项的BP学习规则learngdm。
PF:
性能分析函数,默认为均方误差函数mse。
IPF:
输入处理函数;
OPF:
输出处理函数;
DDF:
验证数据划分函数,后四个参数一般都采用默认值。
注:
以上是newff在matlab中现在的用法,一下介绍newff以前的一些用法,只是格式稍有差别,不影响结果。
格式如下:
net=newff(PR,[S1S2⋯SN],{TF1TF2⋯TFN},BTF)
其中PR为R×
2维矩阵,表示输入矢量中每维输入的最小值与最大值的范围;
若神经网络有N层,则[S1S2⋯SN]中各元素分别表示各层神经元的数目;
{TF1TF2⋯TFN}中各元素分别表示各层神经元采用的传递函数;
BTF表示神经网络训练时所使用的训练函数。
网络训练参数的设定
在对网络进行训练之前,要对训练参数进行一些设定。
一下是一些主要的训练参数及含义
训练参数参数含义默认值
net.trainparam.epoch训练步骤100
net.trainparam.show显示训练结果的间隔步骤25
net.trainparam.goal训练目标误差0
net.trainparam.time训练允许时间Inf
net.trainparam.min_grad训练中最小允许梯度值1e-6
网络初始化
在训练之前,要给权重和阈值赋初值,可以通过rands()函数或者matlab内置函数init()达到。
网络训练
通过train()函数来实现,格式为:
[net,tr]=train(NET,X,T,Pi,Ai)
NET:
待训练网络;
X:
输入数据矩阵;
T:
输出数据矩阵;
Pi:
初始化输入层条件;
Ai:
初始化输出层条件;
net:
训练好的网络;
tr:
训练过程记录,后两个参数一般使用默认值。
最大的书阅读答案当训练步骤大于net.train.Param.epoch、训练误差小于net.train.Param.goal、训练时间超过net.train.Param.time,或误差梯度值小于net.train.Param.mingrad时,训练都将被自动终止,并返回训练后的神经网络对象。
教学资源网站
网络仿真
整百,整千加减法教学反思通过sim()函数来实现,即通过训练好的网络预测函数输出,格式为:
故乡红叶阅读题及答案y=sim(net,x)
新时代的爱国主义net:
x:
输入数据;
y:
网络预测数据。
新学期教学工作
数据反归一化
政治理论知识应知应会使用的函数是mapminmax,格式见
根据输出结果设定一个规则判别结果为好客户还是坏客户。
概率论期末试卷及答案
政治考核5.模型应用验证
本部分利用已经清洗好的数据进行建模检测,其中有201个好客户,67个坏客户,130个指标。
按照好坏客户1:
1的比例组成训练样本,各随机选取40个样本进行建模,剩下的进行检测,分两部分,一部分是使用所有的指标建模检测,另一部分是随机选取40个指标建模检测。
使用全部指标
随机选取40个好样本,40个坏样本做训练,剩下的样本做检测。
检测结果为
实际好
实际坏
正确率
判为好
136
8
84.47%
判为坏
25
19
70.37%
随机选取40个指标
仍然随机选取40个好样本,40个坏样本做训练,剩下的样本做检测。
检测结果为
147
4
91.30%
14
23
85.19%
结果不是太稳定,依赖于初始权重和阈值,隐层节点数选取很重要,一般要多试几次,才能得到比较好的结果。