基于主成分分析的BP神经网络在药品销售预测中的应用

基于主成分分析的BP神经网络在药品销售预测中的应用
基于主成分分析的BP神经网络在药品销售预测中的应用

药 物 生 物 技 术

Pharm aceutical Biotechno logy 2009,16(4):385~387

基于主成分分析的BP神经网络

在药品销售预测中的应用*

王晨光1,相秉仁1﹡,谢少斐1,佟宪2

(1.中国药科大学分析测试中心,江苏南京210000;2.常州千红生化制药股份有限公司,常州213022)

摘 要 评价基于主成分分析的BP神经网络方法在药品销售预测中的可行性。采用主成分分析的方法对氯吡格雷、肝素钠、肝素钙等低分子肝素相关产品的销售额数据进行处理,形成新的指标体系,而后应用BP 神经网络的方法建立模型,评价模型的拟合能力。结果:采用主成分分析的方法从各相关药物销售额数据中获得各主成分;使用BP神经网络建模并测试,测试结果误差较小。采用主成分分析的BP网络方法可以很好地对低分子肝素产品的销售额进行模拟。

关键词 药品销售预测;主成分分析;BP神经网络;低分子肝素

中图分类号:R956文献标识码:A文章编号:1005-8915(2009)04-0385-03

随着市场竞争的加剧,药品生产和销售企业要想获得竞争优势就必须对产品下一阶段的销售数额有一定的了解,从而合理地指导生产、经营。药品销售预测的精度受到多种因素的影响,如国家宏观经济状况、医药管理政策、同类药品销售上的相互影响、新的治疗手段出现、新药上市等[1]。数据挖掘中用于销售预测的方法较多,如时间序列分析、神经网络、决策树、关联规则挖掘、贝叶斯信任网络等[2]。但目前对药品销售的预测往往只采用销售额对目标药品进行单因素的分析。为了提高预测的精度,本文将以低分子肝素产品为例,利用主成分分析和BP神经网络的方法采用多种相关药品的销售资料对低分子肝素的销售进行模拟。

1 产品介绍及自变量选择

低分子肝素是普通肝素酶解或化学降解的方法而得,临床主要用于静脉血栓、急性冠脉综合征、介入治疗(P CI)等方面。在《M CDEX药物临床信息参考》中,低分子肝素属于血液系统药物中的抗凝血药。与低分子肝素相关的产品包括:茶多酚、肝素钠、肝素钙、华法林钠、硫酸氯吡格雷、蚓激酶、藻酸双酯钠、奥扎格雷钠、贝前列素、曲克芦丁、双嘧达莫、西洛他唑、盐酸噻氯匹定、盐酸沙格雷酯等[3]。

2 预测方法介绍

由于低分子肝素产品的相关药物间相关性大,信息重叠多。为提高神经网络的收敛速度和防止网络陷入局部极小值,同时降低输入维数,采用主成分分析方法对输入数据进行预处理,使输入变量互不相关;而后利用主成分分析形成的新指标体系,选择神经网络预测分析方法进行建模,并对模型的拟合能力进行评价。

2.1 主成分分析

主成分分析是从所研究的多个指标中,求出几个新的指标,这些指标可以综合原有的指标信息,且彼此间不相关的统计分析方法。

2.2 人工神经网络

BP网络是目前使用最为广泛的一种人工神经网络算法。一个典型的BP网络包括输入层、中间(隐含)层、输出层。其基本思路是:输入信号从输入层输入,经隐含层的函数作用后到达输出层得到输出信号,然后将输出与实际值的误差作反向传播,反复修改各层间的权值和阈值,直到网络全局误差最小[4]。经典的BP算法存在一些缺陷,如:易陷入局部最小、收敛速度慢、神经网络节点个数难以确定等等[5]。预测时可采用一些改进方法,如evenberg-M arquardt (L-M算法)。L-M算法可以大幅度提高收敛速度,并可以提高算法的稳定性,减少陷入局部最小点的可能[6]

2.3 预测工具

使用SPSS统计分析软件进行主成分分析,采用mat-lab软件进行神经网络的分析。

3 预测结果分析

本文用作自变量销售资料的药品包括:华法林钠、双嘧达莫、奥扎格雷钠、曲克芦丁、氯吡格雷、肝素钠、肝素钙、茶多酚、藻酸双酯钠、蚓激酶、西洛他唑。首先对2002—2007

385

*收稿日期:2008-11-19修回日期:2009-04-08

作者简介:王晨光,男,1985年生,江苏徐州人,中国药科大学药学信息学硕士研究生。 *通讯作者:相秉仁,E-mail:xiangb r@https://www.360docs.net/doc/2410869335.html,

年各季度的销售数据(共11种药物17组数据,数据来源:全国医药经济信息网对定点医院购销数额的统计)进行主成分分析;而后利用LM优化的BP网络建立模型。

3.1 主成分分析

采用SPSS软件对相关产品进行主成分分析,结果如下:

表1:初始因子载荷矩阵

com po nent

312

华法林钠0.367-0.6340.277

双嘧达莫0.7240.5470.070

奥扎格雷钠0.863-0.401-0.172

曲克芦丁0.2560.8290.290

氯吡格雷0.842-0.443-0.150

肝素钙-0.557-0.111-0.519

肝素钠0.086-0.2620.782

茶多酚-0.7310.348-0.031

藻酸双酯钠0.7230.195-0.152

蚓激酶0.8280.305-0.022

西洛他唑0.8680.189-0.234

第1主成分的特征值为4.993,方差在总方差中的比重达45.39%。第2、3主成分的特征值分别是2.115和1.178,前3个主成分的累计方差占总方差的比重达到75.33%,按照主成分分析选取标准,采用这3项主成分代替原有指标。根据初始因子载荷矩阵(图1)可发现,双嘧达莫、奥扎格雷钠、氯吡格雷、肝素钙、茶多酚、藻酸双酯钠、蚓激酶、西洛他唑在第1主成分上有较高载荷,说明第1主成分主要反映了抗凝血药物以及抗血小板药双嘧达莫、奥扎格雷钠、西洛他唑等指标的信息;华法林钠、曲克芦丁在第2主成分上有较高载荷;第3主成分则主要反映了肝素钠及肝素钙的信息。以上3个主成分综合反映了全部11种药物大部分的信息,可用于代替原数据进行神经网络的分析。

3.2 神经网络分析

(1)BP网络结构

采用matlab软件,建立一个3层神经网络,输入节点数为3个,即前一个季度3个主成分的值;隐含层为1层,激活函数是tansig,隐层节点数是5个;输出层的激活函数是pur elin,输出节点是1个,即本季度的低分子肝素销量;采用Levenbe rg-M arquar dt优化方法的tr ainlm对BP网络进行训练。

(2)网络训练

将2002年第4季度的主成分值作为样本的第一组输入,将2003年第1季度低分子肝素的销量作为第一组输出;而后取2003年第1季度的主成分值为第二组输入,取2003年第2季度的低分子肝素销量为第二组输出;依此类推,直至最后取2005年第4季度主成分值为最后一组输入,2006年第1季度的低分子肝素销量为最后一组输出。

采用Levenbe rg-M arqua rdt优化方法的函数t rainlm 对BP网络进行训练,训练结果如下

:

图1:LM优化的神经网络模拟结果图

从LM优化的神经网络模拟结果图(图2)可以看出,训练6次时达到训练目的,M SE=9.45×10-9。

(3)网络测试与预测

利用测试集数据来检验训练好的网络,评价网络质量。

测试数据选用2005年1~4季度主成分的4组数据。预报误差结果显示,2005年2~4季度和2006年第1季度网络预测值与真实值之间的误差的绝对值分别是:1.87×10-2%,4.96×10-3%,1.24×10-3%,1.34×10-3%。预测误差较小,可以用于预测集的预测。

表2 基于主成分分析的BP神经网络模型预测结果

季度实际值(万)预测值(万)误差百分比(%)

2006.22888.25102747.33184.87

2006.32850.69902804.42891.62

2006.43082.19023262.2273-5.84 2007.13298.39043331.0507-0.99

利用该训练网络对预测样本集(2006年第1~4季度)进行模拟,预测结果见表1。除2006年第4季度外,相对误差均在5%以内。2006年第4季度预测误差较大,从主成分数据上看,第一、二主成分值出现回落,第三主成分的值增大,说明这可能与肝素钙的销售额激增,双嘧达莫、藻酸双酯钠等产品销售额降低,以及本文预测时未考虑的因素如新上市药品贝前列素钠等的销售额增加等因素有关。

4 讨论

本文尝试采用主成分分析和BP神经网络相结合的方法,以主成分值代替相关药品销售情况作为自变量对目标药物销售额进行建模,并通过测试集中模型仿真值与实际

386药物生物技术第16卷第4期 

值的相对误差来检验模型的可用性,最后通过预测集对模型的拟合能力进行检验。通过实例可以看出:使用主成分分析方法有效地建立了新的指标体系;对于非线性变化的药品销售,采用BP 神经网络的算法也能很好地建立模型,拟合能力较好。

实际应用中只需获得某季度相关药物的销售额,通过S PSS 处理为3个主成分值,而后代入matlab 模拟的LM 人工神经网络模型即可得出下一季度低分子肝素的销售数额。为验证相关方法的可行性,以相关药物2007年第四季度的值为例,可得出2008年1季度低分子肝素的销售数额为4328.8599(万元),这一数额高于上季度低分子肝素的购销数额,因为低分子肝素对普通肝素的替代趋势,这一数据符合短期内低分子肝素销售额的发展规律,具有实际意义。

调研显示:低分子肝素产品2008年第3季度购销数额达到了5407.5988(万元),2008年第4季度更是达到5564.2029(万元),较2008年1季度分别增长了24.9%和28.5%,增长势头明显。在整个低分子肝素产品中依诺肝素所占份额一直处于较高水平(2008年第3季度为28.4%,2008年第4季度为26.0%),相对于2002年初的15%左右的份额,依诺肝素产品发展更为迅速。而且,由于整个血栓性疾病人群的增加,以及低分子肝素产品本身的销售持续增长,此时对低分子肝素制剂及原料生产企业或是准备进入低分子肝素市场的企业而言均是一个较好的

机遇。

但是本模型还存在一些缺陷,主要表现在:未考虑一些突发因素(如严重的药物不良反应、新药销售额的增加等)的影响,只能用于较为稳定的药品销售的预测;神经网络的结构建立只能通过经验估计和试算确定,使预测可能存在一定误差;未考虑自变量时间变化对销售的影响等[7]。为了增强模型的拟合能力,相关模型需要进一步的研究和改进。

参考文献

[1]刘勤,朱正红,陆怡.基于人工神经网络的药物销售额预测

[J ].计算机工程,2001,27(10):155.

[2]陈祖涛,肖俊.销售预测中数据挖掘的应用[J ].中国水运,

2007,7(10):212.

[3]张象麟.M CDEX 药物临床信息参考[R ].2003:国家药品监督

管理局药品评审中心,四川康美医药软件研究开发有限公司.[4]李雪娟,蒋世忠,黄展鹏.基于LM 算法的BP 网络在药品销

售预测中的应用[J ].福建电脑,2007,(10):105.

[5]刘旭,于国祥,沈西挺.基于神经网络的预测模型的比较研究

[J ].河北省科学院学报,2007,24(4):7.

[6]王青梅.BP 神经网络算法的一种改进[J ].青海大学学报(自

然科学版).2004,2(3):83.

[7]马新强,黄羿.基于BP 神经网络的用药品销售预测模型设计

[J ].重庆文理学院学报(自然科学版),2008,27(2):64.

Sale Volume Prediction of Drugs Using Back Propagation Neural Net -work Based on Principal Component Analysis

WANG Chen -g uang 1

,XIANG Bing -ren 1

,Xie Shao -fei 1

,TONG Xian

2

(1.Center for I nstrument Analy sis ,China P harmaceutical University ,Nanjing 210000,China ;2.Changzhou piopharmaceutical Eng ineering Technology Center ,Changzhou 213032,China )A bstract T o evaluate the use of PCA -BP ANN in the sale v olume prediction of drug s ,the method o f principal co mponent analy sis w as adopted to elimina te correlatio n of evaluation index of sample and a

new system of evaluation index w as fo rmed o n the basis of the initial o ne .

Then it established a neural netw o rk m ode to evaluate the use of PCA -BP ANN in the sale vo lume predictio n of drug s .In the principal component analysis ,the first three principal com ponents account for about 80%of the to tal variability in the principal component analysis .And in the sale volume of low mo -lecular -weig ht heparin ,the Back Propag atio n Neural Netw o rk is effective .The re sults demo nstrated that the back Propag ation Neural Ne tw ork based on principal component analysis can be w ell used in the sales volume prediction o f low m olecular -w eight heparin in sho rt time .

Key words Sales vo lum e prediction of drug s ,Principal component analy sis ,Back Propagatio n Neural Netw o rk ,Low m olecular -w eight heparin

387

王晨光等:基于主成分分析的BP 神经网络在药品销售预测中的应用

BP神经网络预测的matlab代码

BP神经网络预测的matlab代码附录5: BP神经网络预测的matlab代码: P=[ 0 0.1386 0.2197 0.2773 0.3219 0.3584 0.3892 0.4159 0.4394 0.4605 0.4796 0.4970 0.5278 0.5545 0.5991 0.6089 0.6182 0.6271 0.6356 0.6438 0.6516

0.6592 0.6664 0.6735 0.7222 0.7275 0.7327 0.7378 0.7427 0.7475 0.7522 0.7568 0.7613 0.7657 0.7700] T=[0.4455 0.323 0.4116 0.3255 0.4486 0.2999 0.4926 0.2249 0.4893 0.2357 0.4866 0.2249 0.4819 0.2217 0.4997 0.2269 0.5027 0.217 0.5155 0.1918 0.5058 0.2395 0.4541 0.2408 0.4054 0.2701 0.3942 0.3316 0.2197 0.2963 0.5576 0.1061 0.4956 0.267 0.5126 0.2238 0.5314 0.2083 0.5191 0.208 0.5133 0.1848 0.5089 0.242 0.4812 0.2129 0.4927 0.287 0.4832 0.2742 0.5969 0.2403 0.5056 0.2173 0.5364 0.1994 0.5278 0.2015 0.5164 0.2239 0.4489 0.2404 0.4869 0.2963 0.4898 0.1987 0.5075 0.2917 0.4943 0.2902 ] threshold=[0 1] net=newff(threshold,[11,2],{'tansig','logsig'},'trainlm');

基于BP神经网络预测模型指南

基于BP神经网络的国际黄金价格预测模型 公文易文秘资源网顾孟钧张志和陈友2009-1-2 13:35:26我要投稿添加到百度搜藏 [摘要] 为了寻找国际黄金价格与道琼斯工业指数、美国消费者指数,国际黄金储备等因素之间的内在关系,本文对1972年~2006年间的各项数据首先进行归一化处理,利用MATLAB神经网络工具箱进行模拟训练,建立了基于BP神经网络的国际黄金价格预测模型 [摘要] 为了寻找国际黄金价格与道琼斯工业指数、美国消费者指数,国际黄金储备等因素之间的内在关系,本文对1972年~2006年间的各项数据首先进行归一化处理,利用MATLAB神经网络工具箱进行模拟训练,建立了基于BP神经网络的国际黄金价格预测模型。 [关键词] MATLAB BP神经网络预测模型数据归一化 一、引言 自20世纪70年代初以来的30多年里,世界黄金价格出现了令人瞠目的剧烈变动。20 世纪70年代初,每盎司黄金价格仅为30多美元。80年代初,黄金暴涨到每盎司近700美元。本世纪初,黄金价格处于每盎司270美元左右,此后逐年攀升,到2006年5月12日达到了26年高点,每盎司730美元,此后又暴跌,仅一个月时间内就下跌了约160美元,跌幅高达21.9%。最近两年,黄金价格一度冲高到每盎司900多美元。黄金价格起伏如此之大,本文根据国际黄金价格的影响因素,通过BP神经网络预测模型来预测长期黄金价格。 二、影响因素 刘曙光和胡再勇证实将观察期延长为1972年~2006年时,则影响黄金价格的主要因素扩展至包含道琼斯指数、美国消费者价格指数、美元名义有效汇率、美国联邦基金利率和世界黄金储备5个因素。本文利用此观点,根据1972年~2006年各因素的值来建立神经网络预测模型。 三、模型构建

BP神经网络,预测

BP 神经网络 模型六的建立 神经网络结构图为: 图2 神经网络结构图 BP 神经网络的工作过程主要分为两个阶段:第一个阶段是学习期,此时各计算单元状态不变,各连线上的权值可通过学习来修改;第二阶段是工作期,此 [6] 图3 BP 神经网络流程图 设置各权重和阈值的初始值), (1) 0](0[],0[)()( L l w l j l ji =θ为小随机数,输入训练样本),(q q d I ,对每个样本进行一下几个步骤: 1Step :计算各网络层的实际输出 )()()()1()()()(l l l l l x w f s f x θ+==- (30) 输入层 隐藏层 输出层

2Step :计算训练误差 )()()( )()(l j l j qj l j s f x d '-=τ,输出层 ∑+=++'=1 1 )1( )1()()()(l n k l kj l l j l j w s f ττ,隐含层和输入层 3Step :修正权值和阈值 ]1[][][]1[)()()1()()()1(--++=+-+k w k w x k w k w l ji l ji l i l j l ji l ji ημτ (31) ]1[][][]1[)()()()()1(--++=++k k k k l j l j l j l j l j θηθμτθθ (32) 当样本集中的所有样本都经历了3,2,1Step 后, 即完成一个训练周期,计算性能指标∑==Q q q E E 1,其中∑=-=m j qj qj q x d E 1)(21。如果性能指标满足精度要求,即ε

BP神经网络实验 Matlab

计算智能实验报告 实验名称:BP神经网络算法实验 班级名称: 2010级软工三班 专业:软件工程 姓名:李XX 学号: XXXXXX2010090

一、实验目的 1)编程实现BP神经网络算法; 2)探究BP算法中学习因子算法收敛趋势、收敛速度之间的关系; 3)修改训练后BP神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果,理解神经网络分布存储等特点。 二、实验要求 按照下面的要求操作,然后分析不同操作后网络输出结果。 1)可修改学习因子 2)可任意指定隐单元层数 3)可任意指定输入层、隐含层、输出层的单元数 4)可指定最大允许误差ε 5)可输入学习样本(增加样本) 6)可存储训练后的网络各神经元之间的连接权值矩阵; 7)修改训练后的BP神经网络部分连接权值,分析连接权值修改前和修改后对相同测试样本测试结果。 三、实验原理 1 明确BP神经网络算法的基本思想如下: 在BPNN中,后向传播是一种学习算法,体现为BPNN的训练过程,该过程是需要教师指导的;前馈型网络是一种结构,体现为BPNN的网络构架 反向传播算法通过迭代处理的方式,不断地调整连接神经元的网络权重,使得最终输出结果和预期结果的误差最小 BPNN是一种典型的神经网络,广泛应用于各种分类系统,它也包括了训练和使用两个阶段。由于训练阶段是BPNN能够投入使用的基础和前提,而使用阶段本身是一个非常简单的过程,也就是给出输入,BPNN会根据已经训练好的参数进行运算,得到输出结果 2 明确BP神经网络算法步骤和流程如下: 1初始化网络权值 2由给定的输入输出模式对计算隐层、输出层各单元输出 3计算新的连接权及阀值, 4选取下一个输入模式对返回第2步反复训练直到网络设输出误差达到要求结束训练。

BP神经网络预测模型

BP神经网络模型 基本原理 (1)神经网络的定义简介 神经网络是由多个神经元组成的广泛互连的神经网络,能够模拟生物神经系统真实世界及物体之间所做出的交互反应.人工神经网络处理信息是通过信息样本对神经网络的训练,使其具有人的大脑的记忆,辨识能力,完成名种信息处理功能.它不需要任何先验公式,就能从已有数据中自动地归纳规则,获得这些数据的内在规律,具有良好的自学习,自适应,联想记忆,并行处理 和非线性形转换的能力,特别适合于因果关系复杂的非确定性推理,判断,识别和分类等问题.对于任意一组随机的,正态的数据,都可以利用人工神经网络算法进行统计分析,做出拟合和预测. 基于误差反向传播(Backpropagation)算法的多层前馈网络(Multiple-layerfeedforwardnetwork,简记为BP网络),是目前应用最成功和广泛的人工神经网 络. (2)BP模型的基本原理[3] 学习过程中由信号的正向传播与误差的逆向传播两个过程组成.正向传播 时,模式作用于输入层,经隐层处理后,传入误差的逆向传播阶段,将输出误差按某种子形式,通过隐层向输入层逐层返回,并“分摊”给各层的所有单元,从而获得各层单元的参考误差或称误差信号,以作为修改各单元权值的依据.权值不断修改的过程,也就是网络学习过程.此过程一直进行到网络输出的误差准逐渐减少到可接受的程度或达到设定的学习次数为止.BP网络模型包括其输入输出模型,作用函数模型,误差计算模型和自学习模型. BP网络由输入层,输出层以及一个或多个隐层节点互连而成的一种多层网, 这种结构使多层前馈网络可在输入和输出间建立合适的线性或非线性关系,又不致使网络输出 限制在-1和1之间.见图(1). O1O2O i O m 输出层,, ,, 隐含层 (大于等于一层)W(1)?W(L) 输入层,, P1 P2 P3 Pn X 图1 BP网络模型 (3)BP神经网络的训练 BP算法通过“训练”这一事件来得到这种输入,输出间合适的线性或非线性关系.“训练”的过程可以分为向前传输和向后传输两个阶段:

用matlab编BP神经网络预测程序加一个优秀程序

求用matlab编BP神经网络预测程序 求一用matlab编的程序 P=[。。。];输入T=[。。。];输出 % 创建一个新的前向神经网络 net_1=newff(minmax(P),[10,1],{'tansig','purelin'},'traingdm') % 当前输入层权值和阈值 inputWeights=net_1.IW{1,1} inputbias=net_1.b{1} % 当前网络层权值和阈值 layerWeights=net_1.LW{2,1} layerbias=net_1.b{2} % 设置训练参数 net_1.trainParam.show = 50; net_1.trainParam.lr = 0.05; net_1.trainParam.mc = 0.9; net_1.trainParam.epochs = 10000; net_1.trainParam.goal = 1e-3; % 调用TRAINGDM 算法训练BP 网络 [net_1,tr]=train(net_1,P,T); % 对BP 网络进行仿真 A = sim(net_1,P); % 计算仿真误差 E = T - A; MSE=mse(E) x=[。。。]';%测试 sim(net_1,x) %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 不可能啊我2009 28对初学神经网络者的小提示

第二步:掌握如下算法: 2.最小均方误差,这个原理是下面提到的神经网络学习算法的理论核心,入门者要先看《高等数学》(高等教育出版社,同济大学版)第8章的第十节:“最小二乘法”。 3.在第2步的基础上看Hebb学习算法、SOM和K-近邻算法,上述算法都是在最小均方误差基础上的改进算法,参考书籍是《神经网络原理》(机械工业出版社,Simon Haykin著,中英文都有)、《人工神经网络与模拟进化计算》(清华大学出版社,阎平凡,张长水著)、《模式分类》(机械工业出版社,Richard O. Duda等著,中英文都有)、《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)。 4.ART(自适应谐振理论),该算法的最通俗易懂的读物就是《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)的第15和16章。若看理论分析较费劲可直接编程实现一下16.2.7节的ART1算法小节中的算法. 4.BP算法,初学者若对误差反传的分析过程理解吃力可先跳过理论分析和证明的内容,直接利用最后的学习规则编个小程序并测试,建议看《机器学习》(机械工业出版社,Tom M. Mitchell著,中英文都有)的第4章和《神经网络设计》(机械工业出版社,Martin T. Hargan等著,中英文都有)的第11章。 BP神经网络Matlab实例(1) 分类:Matlab实例 采用Matlab工具箱函数建立神经网络,对一些基本的神经网络参数进行了说明,深入了解参考Matlab帮助文档。 % 例1 采用动量梯度下降算法训练BP 网络。 % 训练样本定义如下: % 输入矢量为 % p =[-1 -2 3 1 % -1 1 5 -3] % 目标矢量为t = [-1 -1 1 1] close all clear clc % --------------------------------------------------------------- % NEWFF——生成一个新的前向神经网络,函数格式: % net = newff(PR,[S1 S2...SNl],{TF1 TF2...TFNl},BTF,BLF,PF) takes, % PR -- R x 2 matrix of min and max values for R input elements % (对于R维输入,PR是一个R x 2 的矩阵,每一行是相应输入的

BP神经网络matlab源程序代码

close all clear echo on clc % NEWFF——生成一个新的前向神经网络 % TRAIN——对 BP 神经网络进行训练 % SIM——对 BP 神经网络进行仿真 % 定义训练样本 % P为输入矢量 P=[0.7317 0.6790 0.5710 0.5673 0.5948;0.6790 0.5710 0.5673 0.5948 0.6292; ... 0.5710 0.5673 0.5948 0.6292 0.6488;0.5673 0.5948 0.6292 0.6488 0.6130; ... 0.5948 0.6292 0.6488 0.6130 0.5654; 0.6292 0.6488 0.6130 0.5654 0.5567; ... 0.6488 0.6130 0.5654 0.5567 0.5673;0.6130 0.5654 0.5567 0.5673 0.5976; ... 0.5654 0.5567 0.5673 0.5976 0.6269;0.5567 0.5673 0.5976 0.6269 0.6274; ... 0.5673 0.5976 0.6269 0.6274 0.6301;0.5976 0.6269 0.6274 0.6301 0.5803; ... 0.6269 0.6274 0.6301 0.5803 0.6668;0.6274 0.6301 0.5803 0.6668 0.6896; ... 0.6301 0.5803 0.6668 0.6896 0.7497]; % T为目标矢量 T=[0.6292 0.6488 0.6130 0.5654 0.5567 0.5673 0.5976 ... 0.6269 0.6274 0.6301 0.5803 0.6668 0.6896 0.7497 0.8094]; % Ptest为测试输入矢量 Ptest=[0.5803 0.6668 0.6896 0.7497 0.8094;0.6668 0.6896 0.7497 0.8094 0.8722; ... 0.6896 0.7497 0.8094 0.8722 0.9096]; % Ttest为测试目标矢量 Ttest=[0.8722 0.9096 1.0000]; % 创建一个新的前向神经网络 net=newff(minmax(P'),[12,1],{'logsig','purelin'},'traingdm'); % 设置训练参数 net.trainParam.show = 50; net.trainParam.lr = 0.05; net.trainParam.mc = 0.9; net.trainParam.epochs = 5000; net.trainParam.goal = 0.001; % 调用TRAINGDM算法训练 BP 网络 [net,tr]=train(net,P',T); % 对BP网络进行仿真 A=sim(net,P'); figure; plot((1993:2007),T,'-*',(1993:2007),A,'-o'); title('网络的实际输出和仿真输出结果,*为真实值,o为预测值'); xlabel('年份'); ylabel('客运量'); % 对BP网络进行测试 A1=sim(net,Ptest');

bp神经网络预测销售额

一,说明 对销售额进行bp神经网络预测,销售额如表1 其中前17月数据用作训练样本,来预测第18个月的数据,然后利用前18个月的数据来预测第19个月的数据,以此来预测全部月份的数据,并最终给出真实值与预测值之间的误差 二,程序 程序包括两部分,main.m为主程序,NNetwork.m为训练及预测程序,NNetwork输入为真实数据,输出为预测数据。程序如下 main程序 clear all %清除变量空间 clc %清除命令窗口所有数据 close all %关闭所有figure窗口 % 数据,前17组为训练数据 t=[124.2 117.1 108.4 102.8 99.2 98.6 100.4 100. 99.4 101.2 103.9 101.8 101.5 104.8 105.9 99.3 103.3 113.2 116.5 117.1 116.9 115.8]; %%原始数据(数据的观测值) n=1; %每次预测个数 for i=17:21 s=t(1:i); [a, anew]=NNetwork(s,n); %调用神经网络预测程序 disp(['预测的第',num2str(i+1),'个值为']); anew %预测值 pred=a(1,:) ; pred(end+1)=anew; %加上预测值新数据 end %画图部分 figure xx=1:i+1; plot(xx,pred,'r-*',xx,t,'k--+'); legend('预测值','实际值'); xlabel('点数'); ylabel('数据');

figure s=abs(pred-t)./t*100; plot(xx,s,'b-*'); xlabel('点数'); ylabel('误差比例(%)'); disp('实际值的标准差为') std(t) %求标准差 disp('预测值的标准差为') std(pred) NNetwork程序如下 function [a, anew]=NNetwork(x,n) % x为神经网络训练数组 % n为预测数据的个数 p=1:length(x); %%数据的个数 warning off %数据归一化 [pn,minp,maxp,tn,mint,maxt]=premnmx(p,x); %BP网络训练 net=newff([-1,1],[5,1],{'tansig','tansig','purelin'},'traingdx'); net.trainParam.show=1000; %每1000轮回显示一次结果net.trainParam.Lr=0.05; %学习速率为0.05 net.trainParam.epochs=5000; %循环5000次 net.trainParam.goal=1e-6; %均方误差 net=train(net,pn,tn); %训练 an=sim(net,pn); %神经网络仿真 a=postmnmx(an,mint,maxt); %还原仿真得到的数据,反归一化%对新数据进行预测 xx=1:length(x); pnew=[length(xx):length(xx)+n];%预测数据 pnewn=tramnmx(pnew,minp,maxp);%新数据归一化 anewn=sim(net,pnewn); anew=postmnmx(anewn,mint,maxt);%还原得到预测值 anew=anew(2); 三,程序运行截图 运行main.m文件,结果如图

基于Bp神经网络的股票预测

基于神经网络的股票预测 【摘要】: 股票分析和预测是一个复杂的研究领域,本论文将股票技术分析理论与人工神经网络相结合,针对股票市场这一非线性系统,运用BP神经网络,研究基于历史数据分析的股票预测模型,同时,对单只股票短期收盘价格的预测进行深入的理论分析和实证研究。本文探讨了BP神经网络的模型与结构、BP算法的学习规则、权值和阈值等,构建了基于BP神经网络的股票短期预测模型,研究了神经网络的模式、泛化能力等问题。并且,利用搭建起的BP神经网络预测模型,采用多输入单输出、单隐含层的系统,用前五天的价格来预测第六天的价格。对于网络的训练,选用学习率可变的动量BP算法,同时,对网络结构进行了隐含层节点的优化,多次尝试,确定最为合理、可行的隐含层节点数,从而有效地解决了神经网络隐含层节点的选取问题。 【abstract] Stock analysis and forecasting is a complex field of study. The paper will make research on stock prediction model based on the analysis of historical data, using BP neural network and technical analysis theory. At the same time, making in-depth theoretical analysis and empirical studies on the short-term closing price forecasts of single stock. Secondly, making research on the model and structure of BP neural network, learning rules, weights of BP algorithm and so on, building a stock short-term forecasting model based on the BP neural network, related with the model of neural network and the ability of generalization. Moreover, using system of multiple-input single-output and single hidden layer, to forecast the sixth day price by BP neural network forecasting model structured. The network of training is chosen BP algorithm of traingdx, while making optimization on the node numbers of the hidden layer by several attempts. Thereby resolve effectively the problem of it. 【关键词】BP神经网络股票预测分析 1.引言 股票市场是一个不稳定的非线性动态变化的复杂系统,股价的变动受众多因素的影响。影响股价的因素可简单地分为两类,一类是公司基本面的因素,另一类是股票技术面的因素,虽然股票的价值是公司未来现金流的折现,由公司的基本面所决定,但是由于公司基本面的数据更新时间慢,且很多时候并不能客观反映公司的实际状况,采用适当数学模型就能在一定

BP神经网络预测模型及应用

B P神经网络预测模型及 应用 IMB standardization office【IMB 5AB- IMBK 08- IMB 2C】

B P神经网络预测模型及应用 摘要采用BP神经网络的原理,建立神经网络的预测模型,并利用建立的人工神经网络训练并预测车辆的销售量,最后得出合理的评价和预测结果。 【关键词】神经网络模型预测应用 1 BP神经网络预测模型 BP神经网络基本理论 人工神经网络是基于模仿生物大脑的结构和功能而构成的一种信息处理系统。该网络由许多神经元组成,每个神经元可以有多个输入,但只有一个输出,各神经元之间不同的连接方式构成了不同的神经网络模型,BP网为其中之一,它又被称为多层前馈神经网络。 BP神经网络预测模型 (1)初始化,给各连接权值(wij,vi)及阐值(θi)赋予随机值,确定网络结构,即输入单元、中间层单元以及输出层单元的个数;通过计算机仿真确定各系数。 在进行BP网络设计前,一般应从网络的层数、每层中的神经元个数、初始值以及学习方法等方面进行考虑,BP网络由输入层、隐含层和输出层组成。隐含层神经元个数由以下经验公式计算: (1)

式中:s为隐层节点数,m为输入层节点数,n为输出层节点数,h为正整数,一般取3―7. BP网络采用了有一定阈值特性的、连续可微的sigmoid函数作为神经元的激发函数。采用的s 型函数为: (2) 式中:s为隐层节点数,m为输入层节点数,n为输出层节点数,h为正整数,一般取3―7.计算值需经四舍五入取整。 (2)当网络的结构和训练数据确定后,误差函数主要受激励函数的影响,尽管从理论分析中得到比的收敛速度快,但是也存在着不足之处。当网络收敛到一定程度或者是已经收敛而条件又有变化的时候,过于灵敏的反映会使得系统产生震荡,难于收敛。因此,对激励函数进行进一步改进,当权值wij (k)的修正值Δwij(k) Δwij(k+1)<0时,,其中a为大于零小于1的常数。这样做降低了系统进入最小点时的灵敏度,减少震荡。 2 应用 车辆销售量神经网络预测模型 本文以某汽车制造企业同比价格差、广告费用、服务水平、车辆销售量作为学习训练样本数据。如表1。 表1 产品的广告费、服务水平、价格差、销售量 月份广告费 (百万元)服务水平价格差

BP神经网络的库存需求预测

·126· 图 1 原纸用量趋势图 2009年 1 月 总第 450 期 第 2 期 经 济 论 坛 E c ono m i c F o r um Jan. 2009 G e n.450 N o .2 基于 B P 神经网络的库存需求预测应用 文 / 刘 洋 李 真 【摘 要】 本文应用 B P 神经网络模型,并加入影响因子,用于库存需求量的预测,同时采用了传统的 预测方法,通过各种方法预测结果的对比,说明文中所建立的加入影响因素的 B P 网络模型预测效果较好。 【关 键 词 】神经网络;B P 算法;A R M A 模型;库存需求;预测 【作者简介】刘洋,女,南京大学工程管理学院硕士研究生,研究方向:系统工程、数据分析与数据挖掘; 李真,女,南京大学工程管理学院硕士研究生,研究方向:复杂系统理论。 各行业领域的企业都很重视库存管理,即库存 数量的有效控制,但如何确定和预测库存需求,是亟 待研究解决的问题。本文采用 B P 网络模型对库存 的需求量进行预测,以期提高库存需求预测的精度。 一、库存需求预测 文章采用某纸箱生产企业 1998~2003 年原纸 用量的月数据,并假设每个月的原纸用量均能被库 存所满足,那么该数据就可正确反映企业每月的库 存需求水平。分别应用 A R M A 模型、B P 模型以及加 入影响因素的 B P 模型,以 1998~2002 年的数据预 测 2003 年的原纸用量,通过三种模型预测结果的比 较,选择一种预测精度较高的方法,更好地帮助企业 确定库存需求。 (一)传统库存需求预测方法 1. 数据预处理。A R M A 模型是比较成熟且常 用的时间序列预测模型,适于处理复杂时间序列的 预测,短期预测时精度较高,故本文拟用 A R M A 模 型来预测原纸使用量。原始数据的趋势如图 1 所示。 该组数据存在一定的指数趋势,为非平稳序列, 而 A R M A 模型建模要求序列为平稳序列,因此先对 原始序列进行平稳化处理。在 EV i e w s 软件中进行二 阶对数差分后,通过观察序列的自相关系数及偏自 相关系数分析图及差分后的序列趋势,并检查差分 后的均值约为零,可得出序列已基本平稳,因此可用 于预测。 2.模型定阶与预测。通过对数据自相关系数和 偏自相关系数的观测,可以选择多个模型对数据进 行拟合。经比较各个模型的 R 2 值、A IC 值以及 S C 值,选择了 A R M A (1,1)模型来预测 2003 年 12 个月 的原纸用量,并通过对残差进行白噪声检验,可证明 残差基本为随机序列。 (二)神经网络方法 1.数据准备及归一化处理。网络的训练样本由 输入、输出两部分组成,在两个模型中,均采用 1998~2002 年数据作为训练样本,预测 2003 年 12 个月的原纸用量。为增加网络权重对输入数值变化 的灵敏度,还需将各项指标数据进行归一化。 (1)B P 网络。网络输入为 3 维,为前一年 3 个 月的原纸用量,输出也为 3 维,为下一年相对应 3 个 月的原纸用量。 (2)加入影响因素的 B P 网络。销售决定生产 规模,故在模型中加入市场因素,而该市场存在淡季 和旺季两种情况,因此加入季节因子。网络输入为 4 维,在 B P 网络基础上加入一个季节因子,分为淡季 (用 0 表示)与旺季(用 1 表示),输出为 3 维。 2.网络拓扑结构的确定。K o l m ogo ro v 定理证明 了任意一个连续函数或映射关系可以精确地用一个

基于Bp神经网络的股票预测

深圳大学 神经网络原理课程实验 题目:基于BP神经网络的股票预测姓名: 专业: 学院: 信息工程学院 指导教师: 职称: 2014年5月17日

基于神经网络的股票预测 【摘要】: 股票分析和预测是一个复杂的研究领域,本论文将股票技术分析理论与人工神经网络相结合,针对股票市场这一非线性系统,运用BP神经网络,研究基于历史数据分析的股票预测模型,同时,对单只股票短期收盘价格的预测进行深入的理论分析和实证研究。本文探讨了BP神经网络的模型与结构、BP算法的学习规则、权值和阈值等,构建了基于BP神经网络的股票短期预测模型,研究了神经网络的模式、泛化能力等问题。并且,利用搭建起的BP神经网络预测模型,采用多输入单输出、单隐含层的系统,用前五天的价格来预测第六天的价格。对于网络的训练,选用学习率可变的动量BP算法,同时,对网络结构进行了隐含层节点的优化,多次尝试,确定最为合理、可行的隐含层节点数,从而有效地解决了神经网络隐含层节点的选取问题。 【abstract] Stock analysis and forecasting is a complex field of study. The paper will make research on stock prediction model based on the analysis of historical data, using BP neural network and technical analysis theory. At the same time, making in-depth theoretical analysis and empirical studies on the short-term closing price forecasts of single stock. Secondly, making research on the model and structure of BP neural network, learning rules, weights of BP algorithm and so on, building a stock short-term forecasting model based on the BP neural network, related with the model of neural network and the ability of generalization. Moreover, using system of multiple-input single-output and single hidden layer, to forecast the sixth day price by BP neural network forecasting model structured. The network of training is chosen BP algorithm of traingdx, while making optimization on the node numbers of the hidden layer by several attempts. Thereby resolve effectively the problem of it. 【关键词】BP神经网络股票预测分析 1.引言 股票市场是一个不稳定的非线性动态变化的复杂系统,股价的变动受众多因素的影响。影响股价的因素可简单地分为两类,一类是公司基本面的因素,另一类是股票技术面的因素,虽然股票的价值是公司未来现金流的折现,由公司的基本面所决定,但是由于公司基本面的数据更新时间慢,且很多时候并不能客观反映公司的实际状况,采用适当数学模型就能在一定

BP神经网络matlab实例

神经网络Matlab p=p1';t=t1'; [pn,minp,maxp,tn,mint,maxt]=premnmx(p,t); %原始数据归一化net=newff(minmax(pn),[5,1],{'tansig','purelin'},'traingdx');%设置网络,建立相应的BP网络 net.trainParam.show=2000; % 训练网络 net.trainParam.lr=0.01; net.trainParam.epochs=100000; net.trainParam.goal=1e-5; [net,tr]=train(net ,pn,tn); %调用TRAINGDM算法训练BP网络 pnew=pnew1'; pnewn=tramnmx(pnew,minp,maxp); anewn=sim(net,pnewn); %对BP网络进行仿真 anew=postmnmx(anewn,mint,maxt); %还原数据 y=anew'; 1、BP网络构建 (1)生成BP网络 = net newff PR S S SNl TF TF TFNl BTF BLF PF (,[1 2...],{ 1 2...},,,) R?维矩阵。 PR:由R维的输入样本最小最大值构成的2

S S SNl:各层的神经元个数。 [1 2...] TF TF TFNl:各层的神经元传递函数。 { 1 2...} BTF:训练用函数的名称。 (2)网络训练 = [,,,,,] (,,,,,,) net tr Y E Pf Af train net P T Pi Ai VV TV (3)网络仿真 = [,,,,] (,,,,) Y Pf Af E perf sim net P Pi Ai T {'tansig','purelin'},'trainrp' BP网络的训练函数 训练方法训练函数 梯度下降法traingd 有动量的梯度下降法traingdm 自适应lr梯度下降法traingda 自适应lr动量梯度下降法traingdx 弹性梯度下降法trainrp Fletcher-Reeves共轭梯度法traincgf Ploak-Ribiere共轭梯度法traincgp Powell-Beale共轭梯度法traincgb 量化共轭梯度法trainscg 拟牛顿算法trainbfg 一步正割算法trainoss Levenberg-Marquardt trainlm

BP神经网络预测模型

BP 神经网络模型 基本原理 ( 1) 神经网络的定义简介 神经网络是由多个神经元组成的广泛互连的神经网络, 能够模拟生物神经 系统真实世界及物体之间所做出的交互反应. 人工神经网络处理信息是通过信息样本对神经网络的训练, 使其具有人的大脑的记忆, 辨识能力, 完成名种信息处理功能. 它不需要任何先验公式, 就能从已有数据中自动地归纳规则, 获得这些数据的内在规律, 具有良好的自学习, 自适应, 联想记忆, 并行处理和非线性形转换的能力, 特别适合于因果关系复杂的非确定性推理, 判断, 识别和分类等问题. 对于任意一组随机的, 正态的数据, 都可以利用人工神经网络算法进行统计分析, 做出拟合和预测. 基于误差反向传播(Back propagation)算法的多层前馈网络 (Multiple-layer feedforward network, 简记为BP 网络), 是目前应用最成功和广泛的人工神经网络. ( 2) BP 模型的基本原理[3] 学习过程中由信号的正向传播与误差的逆向传播两个过程组成. 正向传播时, 模式作用于输入层, 经隐层处理后, 传入误差的逆向传播阶段, 将输出误差按某种子形式, 通过隐层向输入层逐层返回, 并“分摊”给各层的所有单元, 从而获得各层单元的参考误差或称误差信号, 以作为修改各单元权值的依据. 权值不断修改的过程, 也就是网络学习过程. 此过程一直进行到网络输出的误差准逐渐减少到可接受的程度或达到设定的学习次数为止. BP 网络模型包括其输入输出模型, 作用函数模型, 误差计算模型和自学习模型. BP 网络由输入层, 输出层以及一个或多个隐层节点互连而成的一种多层网, 这种结构使多层前馈网络可在输入和输出间建立合适的线性或非线性关系, 又不致使网络输出限制在-1和1之间. 见图( 1) . O 1 O 2 O i O m 输入层 输出层 隐含层 …… …… ……

BP神经网络的预测理论的及程序 学习

12、智能算法 12.1 人工神经网络 1、人工神经网络的原理假如我们只知道一些输入和相应的输出,但是不清楚这些输入和输出之间的具体关系是什么,我们可以把输入和输出之间的未知过程看成是一个“网络”,通过不断的网络输入和相应的输出进行“训练”(学习),网络根据输入和对应输出不断调整连接网络的权值,直到满足我们的目标要求,这样就训练好了一个神经网络,当我们给定一个输入, 网络就会计算出一个相应的输出。 2、网络结构神经网络一般有一个输入层,多个隐层,和一个输出层。隐层并非越多越好。如下图所示: 神经网络工具箱几乎 MATLAB 12.2 Matlab 神经网络工具箱 BP 网络和涵盖了所有的神经网络的基本常用模型,如感知器、nntool nftool,nctool,nprtool,nntraintool 和等。它由RBFNN 函数逼近和数据拟合、信息处理和预测、神经网组成。主要应用于

在实际应用中,针对具体的问题,首先络控制和故障诊断等领域。.需要分析利用神经网络来解决问题的性质,然后依据问题的特点,提取训练和测试数据样本,确定网络模型,最后通过对网络进行训练、仿真等检验网络的性能是否满足要求。具体过程如下: (1)确定信息表达的方式,主要包括数据样本已知;数据样本之间相互关系不明确;输入/输出模式为连续的或离散的;数据样本的预处理;将数据样本分成训练样本和测试样本。 (2)网络模型的确定。确定选择何种神经网络以及网络层数。 (3)网络参数的选择,如输入输出神经元个数的确定,隐层神经元的个数等。 (4)训练模式的确定,包括选择合理的训练算法、确定合适的训练步数、指定适当的训练目标误差等 (5)网络测试,选择合理的样本对网络进行测试。 简单来讲就是三个步骤:建立网络(newXX)—训练网络(trainXX)—仿真网络(sim) 12.3 BP 神经网络的 Matlab 相关函数 BP 算法的基本思想:学习过程由信号的正向传播与误差的反向传播两个过程组成。正向传播时,输入样本从输入层传入,经各隐层逐层处理后,传向输出层。若输出层的实际输出与期望输出(教师信号)不符,则转入误差的反向传播阶段。误差反传是将输出误差以某种形式通过隐层向输入层逐层反传,并将误差分摊给各层的所有单元,从而获得各层单元的误差信号,此误差信号作为修正各单元权

(完整版)BP神经网络原理

BP 神经网络原理 2.1 基本BP 算法公式推导 基本BP 算法包括两个方面:信号的前向传播和误差的反向传播。即计算实际输出时按从输入到输出的方向进行,而权值和阈值的修正从输出到输入的方向进行。 图2-1 BP 网络结构 Fig.2-1 Structure of BP network 图中: j x 表示输入层第j 个节点的输入,j =1,…,M ; ij w 表示隐含层第i 个节点到输入层第j 个节点之间的权值; i θ表示隐含层第i 个节点的阈值; ()x φ表示隐含层的激励函数; ki w 表示输出层第k 个节点到隐含层第i 个节点之间的权值,i =1,…,q ; k a 表示输出层第k 个节点的阈值,k =1,…,L ; () x ψ表示输出层的激励函数; k o 表示输出层第k 个节点的输出。 (1)信号的前向传播过程 隐含层第i 个节点的输入net i :

1 M i ij j i j net w x θ==+∑ (3-1) 隐含层第i 个节点的输出y i : 1()() M i i ij j i j y net w x φφθ===+∑ (3-2) 输出层第k 个节点的输入net k : 1 1 1 ()q q M k ki i k ki ij j i k i i j net w y a w w x a φθ====+=++∑∑∑ (3-3) 输出层第k 个节点的输出o k : 111()()()q q M k k ki i k ki ij j i k i i j o net w y a w w x a ψψψφθ===?? ==+=++ ? ??∑∑∑ (3-4) (2)误差的反向传播过程 误差的反向传播,即首先由输出层开始逐层计算各层神经元的输出误差,然后根据误差梯度下降法来调节各层的权值和阈值,使修改后的网络的最终输出能接近期望值。 对于每一个样本p 的二次型误差准则函数为E p : 2 1 1()2L p k k k E T o ==-∑ (3-5) 系统对P 个训练样本的总误差准则函数为: 2 11 1()2P L p p k k p k E T o ===-∑∑ (3-6) 根据误差梯度下降法依次修正输出层权值的修正量Δw ki ,输出层阈值的修正量Δa k ,隐含层权值的修正量Δw ij ,隐含层阈值的修正量 i θ?。 ki ki w E w ??-=?η ; k k E a a η ??=-?;ij ij E w w η??=-?; i i E θη θ??=-? (3-7) 输出层权值调整公式: ki k k k k ki k k ki ki w net net o o E w net net E w E w ??????-=????-=??-=?ηηη (3-8) 输出层阈值调整公式: k k k k k k k k k k net o net E E E a a net a o net a η ηη???????=-=-=-?????? (3-9) 隐含层权值调整公式: i i i ij ij i ij i i ij net y net E E E w w net w y net w η ηη???????=-=-=-?????? (3-10)

相关文档
最新文档