时间:2015年01月29日 分类:推荐论文 次数:
[摘 要] 本篇论文我们介绍了基于粗集的BP神经网络识别项目的风险并评估项目风险。粗集(RS)与神经网络的集成反映了人类正常的思维机制。它融合了定性和定量的,精确和非确定的,连续和平行的方法。我们建立了粗集的神经网络并进行属性约简的混合模型,给出了软件项目风险在实际中的早期预警模型即评估模型,提出了有效的方法。
[关键词] 杂志社征文活动,软件项目风险管理,神经网络,粗集
本篇论文的中心是基于粗集的人工神经网络(ANN)技术的高风险识别,这样在制定开发计划中,最大的减少风险发生的概率,形成对高风险的管理。
一、模型结构的建立
本文基于粗集的BP 神经网络的风险分析模型,对项目的风险进行评估,为项目进行中的风险管理提供决策支持。在这个模型中主要是粗糙集预处理神经网络系统,即用RS理论对ANN输入端的样本约简,寻找属性间关系,约简掉与决策无关的属性。简化输入信息的表达空间维数,简化ANN结构。本论文在此理论基础上,建立一种风险评估的模型结构。这个模型由三部分组成即:风险辨识单元库、神经网络单元、风险预警单元。
1.风险辨识单元库。由三个部分功能组成:历史数据的输入,属性约简和初始化数据. 这里用户需提供历史的项目风险系数。所谓项目风险系数,是在项目评价中根据各种客观定量指标加权推算出的一种评价项目风险程度的客观指标。计算的方法:根据项目完成时间、项目费用和效益投入比三个客观指标,结合项目对各种资源的要求,确定三个指标的权值。项目风险系数可以表述成:r=f(w1,w2,w3,T,T/T0,S/S0,U/U0),R<1;式中: r 为风险系数;T 、T0分别为实际时间和计划时间;S、S0分别为实际费用和计划费用;U、U0分别为实际效能和预计效能;w1、w2、w3分别是时间、费用和效能的加权系数,而且应满足w1+w2+w3=1的条件。
2.神经网络单元。完成风险辨识单元的输入后,神经网络单元需要先载入经初始化的核心风险因素的历史数据,进行网络中权值的训练,可以得到输入层与隐含层、隐含层与输出层之间的权值和阀值。
(1)选取核心特征数据作为输入,模式对xp=[xp1,xp2,.,xpn ]T,dp(网络期望输出) 提供给网络。用输入模式xp,连接权系数wij及阈值hj计算各隐含单元的输出。
m
Ypj=1/{1+exp[-(∑wijxpi-hj)]},i =1,2,.,m;j=1,2,Λ,n ,
i=1
(2)用隐含层输出ypj,连接权系数wij及阈值h计算输出单元的输出
m
Yp=1/{1+exp[-(∑wjxpi-hj)]},i=1,2,.,m;j=1,2,Λ,n,
i=1
Yp=[y1,y2,……,yn]T
(3)比较已知输出与计算输出, 计算下一次的隐含各层和输出层之间新的连接权值及输出神经元阈值。
wj(k+1)=wj(k)+η(k)σpσpj+α[wj(k)-wj(k-1)]
h(k+1)=h(k)+η(k)σp+α[h(k)-h(k-1)]
η(k)=η0(1-t/(T+M))
η0是初始步长;t是学习次数;T是总的迭代次数;M是一个正数,α∈(0,1)是动量系数。σp是一个与偏差有关的值,对输出结点来说;σp=yp(1-yp)(dp-yp);对隐结点来说,因其输出无法比较,所以经过反向推算;σpj=ypj(1-ypj)(ypwj)
(4)用σpj、xpj、wij和h计算下一次的输入层和隐含层之间新的连接权值及隐含神经元阈值。wij(k+1)=wij(k)+η(t)σpjxpi+α[wij(k)-wij(k-1)]
3.风险预警单元
根据风险评价系数的取值,可以将项目的风险状况分为若干个区间。本文提出的划分方法是按照5 个区间来划分的:
r<0.2项目的风险很低,损失发生的概率或者额度很小;
0.2≤r<0.4项目的风险较低,但仍存在一定风险;
0.4≤r<0.6项目的风险处于中等水平,有出现重大损失的可能;
0.6≤r<0.8项目的风险较大,必须加强风险管理,采取避险措施;
0.8≤r<1项目的风险极大,重大损失出现的概率很高,建议重新考虑对于项目的投资决策。
总之,有许多因素影响着项目风险的各个对象,我们使用了用户评级的方式,从风险评估单元中获得评价系数五个等级。给出各风险指标的评价系数,衡量相关风险的大小。系数越低,项目风险越低;反之,系数越高,项目风险越高。
二、实证:以软件开发风险因素为主要依据
这里我们从影响项目风险诸多因素中,经项目风险系数计算,作出决策表,利用粗集约简,抽取出最核心的特征属性 (中间大量复杂的计算过程省略)。总共抽取出六个主要的指标(Personnel Management/Training,Schedule,Product Control,Safety,Project Organization,Communication)确定了6个输入神经元,根据需求网络隐含层神经元选为13个,一个取值在0到1的输出三层神经元的BP网络结构。将前十个季度的指标数据作为训练样本数据,对这些训练样本进行数值化和归一化处理,给定学习率η=0.0001,动量因子α=0.01,非线性函数参数β=1.05,误差闭值ε=0.01,经过多次迭代学习后训练次数N=1800网络趋于收敛,以确定神经网络的权值。最后将后二个季度的指标数据作为测试数据,输入到训练好的神经网络中,利用神经网络系统进行识别和分类,以判断软件是否会发生危机。实验结果表明,使用神经网络方法进行风险预警工作是有效的,运用神经网络方法对后二个季度的指标数据进行处理和计算,最后神经网络的实际输出值为r=0.57和r=0.77,该软件开发风险处于中等和较大状态,与用专家效绩评价方法评价出的结果基本吻合。
参考文献:
[1]王国胤 “Rough:集理论与知识获取”[M].西安交通大学出版社,2001
[2]Taghi M. Khoshgoftaar, and J . C. Munson, “predicting Software Development Errors Using Complexity Metrics”, IEEE Journal of Selected Areas in Communications, vol. 8, no. 2, pp. 253~261, February 1990
[3]徐丽娜:“神经网络控制”[M].北京:电子工业出版社,5,18 ,2003年2月