1BP神经网络在工程机械公司客户信用评级中的应用研究颜菲[摘要]信用交易在给企业带来巨大的经济效益的同时,也给企业带来了巨大的经营风险,这就使得企业必须加强客户的信用管理。作为信用管理的第一步,如何对客户进行客观公正的信用评级一直是企业需要解决的问题。本文从企业目前的信用销售状况入手,应用神经网络技术创建客户信用评级模型,探寻与客户信用表现密切相关的因素。[关键字]指标体系信用评级BP算法LM算法[作者简介]颜菲,女,柳州运输职业技术学院信息工程系讲师。广西柳州,545007一、绪论我国加入WTO,不仅为国内的企业带来了发展的机遇,同时也使许多企业感受到了来自国内外的激烈竞争。在买方市场条件下,企业要想扩大销售、增强市场竞争力主要有三种手段:提高产品质量、降低产品价格和提供优惠的结算方式[1]。随着信息技术的快速发展,企业在产品质量和价格上的竞争空间变得越来越小,因此,采用提供优惠的结算方式便成为企业取得竞争优势的关键因素。也就是说企业要转向更具竞争力的信用销售方式。赊销是目前国内企业主要采取的信用销售方式。然而,赊销是把双刃剑,它在提高卖方企业竞争力的同时,也给卖方企业带来了巨大的信用风险。因此企业在进行赊销的同时,必须建立严格的信用管理制度,积极引进适合企业实际情况的客户信用评级模型,加强对客户的信用管理,从而帮助企业防范信用风险。建立客户信用管理系统,最核心的是对客户信用进行评级。对客户进行信用评级本质上是属于综合评价中的分类与排序问题。在数据挖掘技术中最常用的分类方法有:贝叶斯、决策树、人工神经网络。其中神经网络技术可实现非线性关系的隐式表达,不需要建立复杂的线性关系和数学模型,并且容错性好,可以处理数据、信息不全的预测问题,即使在数据样本有缺失的情况下,也能较好地解决问题。本文以柳州某工程机械公司(以下简称为L公司)为研究对象,运用BP神经网络技术,建立适合L公司的客户信用评级模型,帮助L公司加强对客户的信用管理,有效地挖掘客户资源,减少公司的信用风险。二、BP神经网络(一)BP算法在人工神经网络技术中,能实现分类功能的主要是前馈神经网络。前馈神经网络是一种典型的分层结构,信息的处理是从输入层开始,经隐含层最后再到输出层。前馈神经网络通过“学习”,改变神经元与神经元之间的连接强度即连接权值,从而获得某种功能特性。前馈神经网络最经典的学习算法是BP算法。BP算法的主要思想是将学习过程分成正向传播和误差反向传播两个过程[2],BP算法具体过程可归纳如下[3]:步骤1选定n个样本,作为训练集;步骤2权值、阀值初始化,即对神经网络中所有的权值、阀值进行初始化,初始值通常设为(-1,1)之间的随机数;对训练集中的每个样本进行如下的处理:步骤3将作为输入层的数据按照各个连接权重的大小加权输入至隐含层的激活函数,然后再得到新的值,按照各个连接权重的大小加权输入至输出层的激活函数,计算出输出层的输出2结果;步骤4如果输出结果与预期的结果有误差,计算训练误差;步骤5调整权值和阈值。步骤6按新权值与阈值计算各层的输出,直至训练集满足停止条件为止。(二)BP算法的改进BP算法由于自身的原因不可避免地具有收敛速度慢和极易陷入局部极小值等缺陷,因此,通常需要对BP算法进行改进。对BP算法进行改进的方法比较多,本文主要采用的是用LM算法来改进BP算法。LM算法属于一种利用标准的数值优化技术的快速算法,其形式如下:)()()()(1xexJlxJxJxT式中,)0(为比例系数,l为单位矩阵,)(xJ为Jocobain矩阵,即:)(xJnNNNnnxxexxexxexxexxexxexxexxexxe)()()()()()()()()(212221212111从上式可见,如果取值很大,则LM算法接近梯度下降法。每迭代成功一步,则的值减少一些,在接近误差目标的时候,则逐渐与高斯-牛顿法相似。由于LM算法利用了近似的二阶导数信息,因此它比梯度下降法快得多。三、客户信用评级模型的创建(一)建立客户信用评级指标体系要对客户进行信用评级,首先要建立客户信用评级指标体系。在建立指标体系时要遵循全面性、针对性、科学性、公正性、合法性、可操作性等原则。本文在综合考虑以上的原则并参考了其他行业对客户进行信用评级所使用的指标,选取了适合L公司的影响客户信用评级的指标,经过多次的实验,将那些对评级结果影响甚小的指标去掉,最后本文从历史信用表现、盈利能力、管理水平和发展潜力四个大的方面来考查客户的信用能力,主要因素如下所述:(1)历史信用表现主包括两个指标:经营时间和以往还款情况。(2)盈利能力包括了企业收入规模、资产负债率、应收账款周转率、速动比率、净资产收益率、流动比率、净利润率、总资产周转率、存货周转率等九个财务指标。(3)管理水平管理水平包括了领导者的信用状况、内部管理水平、信用管理水平三个指标。(4)发展潜力包括了服务质量和市场认可程度、市场份额两个指标。(二)数据的收集由于各指标对客户信用的影响程度不同,本文首先制定了客户信用评分标准。由于在建立的L公司的客户信用评级指标体系中,盈利能力中9个指标和经营时间指标属于定量指标,可以从L公司的客户财务报表中获得相关数据,再依照不同的计算公式计算得到。而服务质量和市场认可程度、市场份额、领导者的信用状况、内部管理水平、以往还款情况和信用管理水平属于定性指标,需要L公司的销售业务人员对客户进行准确客观地评价。因此,本文制定了相应的L公司客户信用评价调查表,并将调查表发给L公司各区域总监和各处的办事处经理,由相应的区域总监和办事处经理分别给属于他们分管的区域的客户进行评分。将调查表收回后,将对同一3个客户进行评价的办事处经理与区域总监的评价调查表中相应指标的分值进行平均,即为该客户相应的指标分值。(三)数据预处理神经网络要求所有的输入变量都必须是0~1或者-1~+1之间的实数,因此必须对收集到的样本数据进行归一化处理。本文中采用的处理方法是最大最小归一化方法。该方法是对数据进行一种线性转换,能够将数据映射到0~1区间。设xmin、xmax分别为指标x的最小值和最大值,对于指标x中的值v而言,将其映射到0~+1区间的公式为:xxxvvminmaxmin'(四)确定客户信用评级模型的结构三层BP神经网络已具有令人满意的对连续映射的逼近能力,是可以满足客户信用评级的要求。三层BP神经网络由输入层、隐含层和输出层组成。输入层神经元与客户进行信用评级的指标体系中的16个指标一一对应,因此,输入层神经元的个数为16个。输出层神经元的个数在本文中为1个,将其输出的值进行反归一化后,再判断客户的信用属于哪个级别。隐含层神经元的数目当前并没有统一的计算公司,其数目过多过少对网络的学习都会产生不好的影响。隐含层神经元的数目通常是根据设计者的经验而定或者通过实验比较来进行确定。一般情况下,在确定隐含层神经元的个数时,通常需要满足以下两个公式要求:)10(Ryxmym2式中,m为隐含层神经元个数,x为输出层神经元个数,y为输入层神经元个数。)10(R表示1至10之间的任意整数。本文中的BP网络模型输入层神经元个数为16,输出层神经元个数为1,因此同时满足上述两个公式的值范围是5~15。为了确定隐含层神经元个数,本文使用MATLAB编写程序,用相同的测试集数据,对隐含层神经元依次取5,6,……,15进行实验。经过多次实验比较,在综合考虑客户信用评级误差与网络训练时间后,最后确定隐含层神经元个数为9。由此,本文建立的客户信用评级BP神经网络的结构为16-9-1。(五)转移函数的选取因为客户信用评级模型中输入向量与输出向量之间不满足线性关系,又因为BP神经网络要求神经元转移函数可微,而单极性S型函数在值域(0,1)上是单调递增,并且该函数以及其导数都是连续的。因此,本文中选择单极性S型函数作为神经元的转移函数。至此,L公司客户信用评级BP神经网网络模型如下:输入层:16个神经元,对应着客户信用指标体系中16个指标;隐含层:9个神经元,采用单极性S函数作转移函数;输出层:1个神经元,采用单极性S函数作转移函数;学习算法:BP算法四、客户信用评级模型的评价(一)训练集与测试集样本数据的确定由于神经网络是通过学习才能获得相关知识,因此要将收集到的数据分为训练集和测试集。本文在确定训练集中的样本数据个数时采用的是传统的方法,将收集到的样本数据分成两个彼此独立的集合,分别作为训练集和测试集。其中,样本数据总数的三分之二的数据作为训练集,用于训练神经网络,样本数据总数的三分之一的数据作为测试集,用于测试神经网络的精度。(二)使用BP网络对客户进行信用评级根据以上所述的神经网络模型生成神经网络,设定学习率、学习次数和误差精度,输入训4练集中的样本数据,采用经典BP算法对神经网络进行训练,当训练结束后,对测试集中的数据进行仿真,将计算出的预测值与期望输出进行比较。本文使用MATLAB编写程序进行仿真,主要代码如下:…;%读入训练集中的数据P=…;P=P’;%进行矩阵转置…;T=…;%输入教师数据threshold=[01;01;01;01;01;01;01;01;01;01;01;01;01;01;01;01;];net=newff(threshold,[9,1],{'logsig','logsig'},'traingd');%创建BP神经网络,设置转移函数为S型函数,训练函数为BP算法函数net.trainParam.lr=0.01;%设置学习率为0.01net.trainParam.epochs=100000;%设置最大的训练次数为100000次net.trainParam.goal=0.005;%设置误差精度net=init(net);net=train(net,P,T);%根据训练集中的数据训练网络…;%读入测试集中的数据P_test=…;P_test=P_test’;…;T_test=…;Y=sim(net,P_test);%对测试集中的数据进行仿真error=Y-T_test;perf=mse(error);%计算均方差测试结果与误差分别如图2、图3所示。图2BP网络模型训练结果图3BP网络模型误差图(三)使用LM-BP网络对客户进行信用评级由于BP网络自身的缺陷使得网络训练时间较长。为了能更好地进行对比分析,本文在使用LM-BP算法网络模型对客户进行信用评级时,训练函数为trainlm,其它参数设置与BP算法相同。使用相同的训练集中的样本数据对LM-BP网络进行训练,训练结果图4所示。5图4LM-BP网络模型训练结果图5LM-BP网络误差曲线图对比图2与图4可知,使用经典BP算法的神经网络需要经过29785次训练才能达到网络目标误差,所花费的时间比较长。在此基础上,本文使用LM算法进行优化,只需6次训练就能达到网络目标误差。但是从实验结果看,LM-BP网络的准确率只达到84%,并且出现了将客户信用等级“提高”的错误,这对企业来说是非常不利的。原因在于LM算法是一种快速收敛算法,它可以很快地使神经网络训练误差达到目标误差要求,但此时网络可能并没有达到收敛,所以网络的泛化误差较大。因此,需要对LM-BP网络进一步进行优化。神经网络停止训练的准则通常为:一是达到训练目标误差;另一个是达到最大训练次数。由于LM算法能够使得BP网络快速达到训练误差,但此时神经网络可能还没有达到收敛,因此,本文将“达到最大训练次数”做为LM-BP网络停止训练的唯一条件。经过多次的试验,从程序运行情况看,LM-BP网络训练次数基本上不超过1200次时,网络训练误差不再减小或者是减小得非常缓慢。因此,本文中将训练次数设置为1200次,训练结果如图6-5所示。为了与前面的LM-BP网络区别,本文将“达到最大训练次数”做为训练结束条件的LM-BP网络称为LM-BP网络Ⅱ。其训练次数与误差如图6所示。图6LM-BP网络Ⅱ训练结果图从实验结果看,LM-BP网络Ⅱ准确率可达到92%。虽然