一种基于大数据计算的中药材价格预测方法与流程

文档序号:11865663阅读:934来源:国知局
一种基于大数据计算的中药材价格预测方法与流程

本发明涉及大数据技术处理领域,特别是一种基于大数据的内存计算LM-BP算法结合X-12-ARIMA季节调整法预测白术的月售价格。



背景技术:

中药材交易市场是我国特色社会主义市场经济的重要组成部分,也是政府大力解决“三农”问题使农民富起来的有效途径,对于国民经济的健康可持续发展和缩小国民贫富差距具有重大意义。大数据时代,一个好的预测方法可以为决策者提供强有力的决策依据,其不仅可以准确地预测价格的走势,还可以预测市场对中药材的需求,从而使政府部门能够合理地规划药农种植中药材面积及种植品种、减少中药材库存、合理规划种植市场需要的中药材、提高药农的收入、满足市场对中药材种类和数量的需求。因此,准确地中药材价格预测对政府部门合理规划中药材种植和提高药农的收入以及满足国民对中药材的需求具有重大意义,是中药材交易市场的关注焦点,也是当前理论研究需要继续深化的重要课题之一。

目前用于预测的方法很多,主要有:移动平均预测方法,趋势外推方法、回归预测方法、灰色预测和机器学习法。但是当前的研究工作在中药材这种特定领域都没有取得很好的效果,且都局限于小数据量的预测,在大数据时代利用大数据进行预测具有极其重要的意义,重要的是,如果运算的速度足够快,可使预测的即时数据进行实时展现,以为决策者提供最有力的数据支撑。标准BP神经网络算法具有收敛速度慢,学习速率不易确定的缺点,高斯-牛顿优化算法(LM算法)能够根据迭代的结果动态地调整阻尼因子来动态调整迭代的收敛方向,可使每次的迭代误差函数值都有所下降。但是LM算法的运算量大,对内存的要求极高,随着内存计算的发展,Spark可以很好地克服LM算法对内存要求高的问题。

并且实际的价格中包含了趋势循环因子、季节因子、不规则因子、季节交易日混合因子并且受到当期CPI(居民消费价格指数)和药农趋利心理导致的库存量的影响,降雨量是影响白术产量的主要因素,因此也是左右白术市场价格的重要因子。所以使用单一的方法进行预测很难结合各方面的因素,最终导致预测的准确度和精度不高的问题。



技术实现要素:

本发明的目的是提出一种基于大数据计算的中药材价格预测方法;利用基于Spark平台大数据技术在中药材交易系统中,进行药材价格预测的应用,实现中药月售价格的预测方法。

本发明的目的是通过以下技术方案来实现的:

本发明提供的一种基于大数据计算的中药材价格预测方法,包括以下步骤:

S1:获取历史月售价格数据并采用X12季节调整算法将历史月售价格数据分解为月售价格的趋势循环因子、季节因子、不规则因子和季节交易日混合因子;

S2:采用时间序列法对趋势循环因子进行预测得到新的趋势循环因子;

S3:根据历史月售价格数据获取预测月份的季节因子;

S4:根据历史月售价格数据获取当月份的CPI值;

S5:获取年降雨量数据;

S6:将新趋势循环因子、季节因子、不规则因子、季节交易日因子、CPI值和年降雨量输入到LM-BP神经网络模型的输入层进行分析预测。

进一步,所述趋势循环因子、季节因子、不规则因子和季节交易日因子是通过使用Eviews软件中的X12乘法模型来进行分解的。

进一步,所述趋势循环因子是按照以下步骤来实现:

S11:使用Eviews软件进行分解,导入M个月的历史月售价格数据;

S12:使用Eviews中的X12季节调整法的乘法模型将历史月售价格数据分解为趋势循环因子Price_TC、季节因子Price_SF、季节交易日混合因子Price_D16和不规则因子Price_IR;

S13:对趋势循环因子Price_TC进行平稳性检测,如果Price_TC不满足平稳性条件,通过差分变换使其满足平稳性条件;

S14:通过计算描述序列Price_TC的统计量来确定时间序列ARIMA(p,d,q)模型的阶数p和q;

S15:根据步骤S13和S14,建立时间序列ARIMA(p,d,q)模型,估计针对趋势循环因子序列Price_TC所建立的ARIMA模型的未知数,并检验参数的显著性;

S16:检验所建模型的残差序列ε是否为一个白噪声序列,如若不是,则返回步骤S④对序列Price_TC重新建模;如果是,则可以通过所建的模型来预测未来的月售价格对应的趋势循环因子Price_TCN。

进一步,所述季节因子Price_SF是按照以下步骤来实现:

S31:输入预测当期所在年份之前的整年的月售价格数据;

S32:使用X12季节调整方法的乘法模型分离出其中的季节因子;

S33:计算得到年各月的季节因子的同期平均数;

S34:将各期平均数相加除以总项数作为总的平均数;

S35:将各期平均数与总平均数相除得到的值作为预测年份对应的月份的季节因子。

进一步,所述CPI值和年降雨量数据是利用互联网数据来挖掘各个年度的CPI和地区的降雨量,具体步骤如下:

S41:使用RonSpark平台,获取互联网上的各个年份的CPI值和地区的降雨量信息;

S42:计算年度的平均CPI值并作为本年度内各个月份的CPI值;

S43:根据地区的降雨量信息来计算得到每个月的降雨总量作为各个月份的降雨量信息。

进一步,所述LM-BP神经网络模型采用使用内存计算平台Spark来对LM-BP神经网络预测算法进行训练,具体步骤如下:

S61:按照以下公式进行计算:

根据Gorman定理:S=log2N,其中,S为隐含层节点数,N为模式数;

Kolmogorov定理:S=2n+1,其中,S是隐含节点数,n是输入层节点数;

S62:使用线性变换对原始数据进行归一化处理,设Amin和Amax分别为属性X的最大值和最小值,令Y=(X-Amin)/(Amax-Amin)得到X的归一化后的数据;

S63:输出被归一化到区间[0,1]中,将输入神经元的传递函数设定为S型对数函数;

S64:计算LM-BP神经网络的评价函数。

进一步,所述评价函数按照以下公式进行计算:

具体步骤如下:

S641:μ<-10-1,a(0)=a0;

S642:计算∑(a);

S643:计算Jacobian矩阵

S644:a(K+1)=a(k)l[JTJ+μ1]-1JTf(a(k));

S645:计算E(a(k+1));

S646:如果E(a(k+1))>E(a(k)),则μ<-μ*10,转到S644;

S647:如果E(a(k+1))<误差指标,则计算成功,算法结束;

S648:μ<-μ*0.1

S649:a(k)=a(k+1),转到S642。

由于采用了上述技术方案,本发明具有如下的优点:

因此本发明中BP神经网络采用LM算法进行训练

本发明借助大数据处理平台Spark将基于内存计算的LM-BP神经网络预测算法和X12季节调整法以及时间序列法相结合,实现中药材白术的月售价格的预测方法。针对直接使用时间序列法和神经网络算法预测白术月售价格时难以发现和学习到历史价格中的规律并导致预测准确度和精度不高的问题;先采用X12季节调整算法将历史月售价格分解为月售价格的趋势循环因子、季节因子、不规则因子和季节交易日混合因子。首先采用时间序列法对其中规律明显的趋势循环因子进行预测得到新的趋势循环因子,然后还原各个月份的季节因子,再者价格的实际数值还受到当期的CPI的影响,所以要利用数据挖掘技术获得各个月份的CPI,由于同一年度的CPI变化相对较小,此处使用当年的CPI来代表年度中各个月份的CPI的值。最后就是影响白术产量的主要因素降雨量,挖掘得到各个年度的降雨量数据,即白术的主要产地的历年降雨信息。把以上新的趋势循环因子、季节因子、不规则因子、季节交易日因子、当月CPI和年降雨量6个影响白术价格的主要因素作为LM-BP神经网络模型的输入层进行分析预测。

使用本发明的方法预测效果明显优于单一的时间序列法,新方法较大程度地提高了白术月售价格的预测精度,可以推广到市场作为中药材月售价格的预测方法。

本发明的其他优点、目标和特征在某种程度上将在随后的说明书中进行阐述,并且在某种程度上,基于对下文的考察研究对本领域技术人员而言将是显而易见的,或者可以从本发明的实践中得到教导。本发明的目标和其他优点可以通过下面的说明书来实现和获得。

附图说明

本发明的附图说明如下。

图1为预测趋势循环因子流程图。

图2为1985-2015年CPI数据。

图3为1985-2015安徽亳州地区的降雨量变化图。

图4为BP网络实现流程。

图5为1985-2016年白术月售价格走势。

图6为趋势循环因子趋势图。

图7为不规则因子趋势图。

图8为Price_TC相关系数图。

图9为Price_TC一阶差分项相关图。

图10为ARIMA(5,1,4)模型效果图。

图11为预测值与真实值比较图。

图12为LM-BP算法流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步说明。

实施例1

如图所示,本实施例提供的一种基于大数据计算的中药材价格预测方法,是借助大数据处理平台Spark将基于内存计算的LM-BP神经网络预测算法和X12季节调整法以及时间序列法相结合,实现中药材白术的月售价格的预测方法。首先使用Eviews软件中的X12方法(乘法模型)将历史白术月售价格(Price)序列分解为月售价格的趋势循环因子(Price_TC)、季节因子(Price_SF)、不规则因子(Price_IR)和季节交易日因子(Price_D16);

根据Price_TC序列,使用时间序列法预测当期的月售价格对应的趋势循环因子(Price_TCN),并确定预测当期的季节因子;

使用R on Spark从互联网上挖掘各个年度的CPI数据和年降雨量信息,保存到分布式文件系统HDFS中;

将以上数据作为LM-BP神经网络预测算法的输入,在Spark平台上进行预测分析对LM-BP神经网络进行训练。

所述方法的具体步骤如下:

(1)分解历史月售价格并预测当期月售价格对应的趋势循环因子(Price_TCN)

①使用Eviews软件进行分解,导入M个月的历史月售价格数据(Price),其中M≥348个月;

②使用Eviews中的X12季节调整法的乘法模型将Price分解为趋势循环因子(Price_TC)、季节因子(Price_SF)、季节交易日混合因子(Price_D16)和不规则因子(Price_IR);

③对趋势循环因子(Price_TC)进行平稳性检测,如果Price_TC不满足平稳性条件,通过差分变换使其满足平稳性条件;(注:如果其中单整阶数为d,则进行d阶差分)

④通过计算描述序列Price_TC的统计量(如自相关系数和偏相关系数)来确定时间序列ARIMA(p,d,q)模型的阶数p和q,为了简单起见,在初始估计中选择尽可能少的参数;

⑤根据步骤③和④,建立时间序列ARIMA(p,d,q)模型,估计针对趋势循环因子序列Price_TC所建立的ARIMA模型的未知数,并检验参数的显著性;

⑥检验所建模型的残差序列ε是否为一个白噪声序列,如若不是,则返回步骤④对序列Price_TC重新建模;如果是,则可以通过所建的模型来预测未来的月售价格对应的趋势循环因子(Price_TCN)。

此过程是借助Eviews软件中的X-12-ARIMA模型实现的,具体实现流程如附图中图1所示。

(2)预测当期的季节因子(Price_SF)

①输入预测当期所在年份之前的y(y≥30)整年的月售价格数据;

②使用X12季节调整方法的乘法模型分离出其中的季节因子;

③计算得到这y年各月的季节因子的同期平均数;

④将各期平均数相加除以总项数作为总的平均数;

⑤总后,将各期平均数与总平均数相除得到的值作为预测年份对应的月份的季节因子;

(3)利用互联网挖掘各个年度的CPI和亳州地区的降雨量

①使用R on Spark平台,编写脚本抓取“东方财富”和“安徽气象台”网站的数据获得各个年份的CPI和降雨量信息Rain;

②同一年度中的CPI变化相对平稳,本实验使用年度的平均CPI来代表本年度内各个月份的CPI值;

③获得的气象数据包含每天的降雨信息以及气温风级信息,格式比较复杂,对原始的气象数据使用R脚本进行清洗转换,求和得到每个月的降雨总量作为各个月份的降雨量信息Month_Rain。

详细的数据信息如图2、3所示。

(4)使用内存计算平台Spark对LM-BP神经网络预测算法进行训练

①根据Gorman定理:S=log2N(其中S为隐含层节点数,N为模式数)和Kolmogorov定理:S=2n+1(其中S是隐含节点数,n是输入层节点数),本实验的输入层节点是6,因此选择隐含层节点数为13;

②使用线性变换对原始数据进行归一化处理,设Amin和Amax分别为属性X的最大值和最小值,令Y=(X-Amin)/(Amax-Amin)得到X的归一化后的数据;

③输出被归一化到区间[0,1]中,因此输入神经元的传递函数可以设定为S型对数函数;

④LM-BP神经网络算法如下:

评价函数

μ<-10-1,a(0)=a0

计算∑(a)

计算Jacobian矩阵

a(K+1)=a(k)l[JTJ+μ1]-1JTf(a(k))

计算E(a(k+1))

如果E(a(k+1))>E(a(k)),则μ<-μ*10,转到4)

如果E(a(k+1))<误差指标,则计算成功,算法结束

μ<-μ*0.1

a(k)=a(k+1),转到2)

BP网络实现流程如图4所示。

实施例2

本实施例采用1985年01月至2014年01月期间各个月份白术的月售价格(具体信息如图5所示)作为原始数据,现以预测2015年1月的月售价格为例讲述预测过程,其余月份的预测步骤相同。

(1)预测2015年1月的月售价格对应的趋势循环因子(Price_TCN)

①在Eviews软件中新建文件,出现的Date specification区域Frequency中选择monthly,Start date输入数据的开始时间1985:1,End date输入2014:12,从而确定样本的区间为1985年1月到2014年12月。

②创建好文件后,点击主菜单中的Quick键,选择Empty Group功能,然后导入获得的1985.1月~2014.12月的月售价格序列(Price);

③导入成功打开Price序列窗口,使用Views键的Graph功能,做出Price的曲线图如图5所示。由图5可知Price的变化曲线是非常复杂的,不易寻找其变化规律,此也是使用单一的预测算法对其建模并预测将达不到理想的效果。

④点击Procs键,选择Seasonal Adjustment/Census X12功能,选择乘法模型将Price分解为趋势循环因子(Price_TC)、季节因子(Price_SF)、不规则因子(Price_IR)、季节交易日混合因子(Price_D16)。其中趋势循环因子Price_TC的变化趋势如图6所示,显而易见期规律性比Price的变化规律平滑很多,因此使用ARIMA对Price_TC建模效果将会理想很多;不规则因子Price_TC变化趋势如图7所示,其规律并不明显而且其值大部分分布在1左右,中间有部分奇异点,推测受到流行性疾病的影响。

⑤打开Price_TC序列窗口,点击Views键,选择Unit Root Test功能显示结果如图8所示,经过判断可知Price_TC是非平稳序列。欲使用ARIMA模型,需要继续判断其差分序列的平稳性。

⑥通过实验得知,经过一阶差分后d(Price_TC)是平稳序列,因此可以确定ARIMA(p,d,q)模型中的参数d=1;

⑦使用Correlogram功能,得到Price_TC的相关图如图9所示,选择其中的一阶差分项进行观察,可以初步确定后文对Price_TC建立的ARIMA(p,1,q)模型的参数p=5,q=4;

⑧根据⑥和⑦建立的时间序列ARIMA(5,1,4)模型:从工作文件主菜单中点击Quick键,选择Estimate Equation功能,在弹出的对话框的Equation Specification框中输入d(Price_TC)c ar(1)ar(5)ma(1)ma(5)ma(4),点击OK键,得到估计结果如图10所示,有图可知改模型参数显著,模型合理。

⑨检验Price_TC序列的ARIMA(5,1,4)模型的残差序列是否为白噪声序列,在图10的结果界面,选择Residual Tests/Correlogram-Q-statistics,得到残差序列的相关图,该残差序列基本上是白噪声序列。

⑩在Eviews命令窗口输入expand 1985:1 2015:1,扩大样本区间。再在图10的方程结果界面点击Forecast键,在series to forecast区域选择Price_TC,series name区域为默认的预测名Price_TCN,在Method区域选择static forecast(静态预测),点击OK。

打开Price_TCN序列,找到2015年1月对应的值15.962,即得到2015年月售价格对应的趋势循环因子预测值为15.962元。

(2)确定2015年1月的季节因子

①操作分离出来的季节因子(Price_SF),计算1985~2014这30年各月的季节因子的同期平均值,结果如表1所示:

表1 1985~2014年各月季节因子同期平均值

②由表1可以计算总的平均数为0.998886;

③将表1中的各期平均数与总平均数0.998886相除得到值作为2015年对应月份的季节因子,2015年的各月价格的季节因子如表2所示:

表2 2015年各月季节因子

(3)基于Spark平台训练LM-BP算法获得2015.1月白术价格预测值

①LM-BP神经网络算法的具体实现步骤如下:

初始化权值和阀值向量,设定训练目标误差€,因子β初始值为10,μ初始值为0.1,令迭代次数k=0。

计算所有输入对应的输出和归一化误差,归一化平方误差的和F(w,b)。

计算Jacobian矩阵J(x)。首先利用对角矩阵法初始化敏感度再利用链式法则递归计算敏感度。

根据得到增广的Marquardt敏感度矩阵,最后计算误差向量对网络权值和偏置的导数得到Jacobian矩阵元素。

计算Δx=-[JT(x)J(x)+μI]-1JT(x)V(x)。

用x+Δx重复计算归一化平方误差和F(w,b),若果比2中的小,则k=k+1,μ=μ/β,

x=x+Δx返回步骤2;如果没有减小,那么令μ=μ*β,返回步骤5。

当梯度的模Δx小于给定值,或者归一化平方差和减小到设定的误差€时,算法停止。

具体算法流程如图12所示。

②在LM-BP算法训练之前对输入进行了归一化处理,对最终的结果进行反归一化即得到2015年1月白术价格的预测值为17.485元。

实验效果对比分析

运用时间序列ARIMA算法直接对1985年~2014年的数据进行处理,预测2015年白术的月售价格,并把结果与使用本发明预测得到的结果进行对比分析,以验证本发明方法的有效性和准确性。

在预测过程中,本发明会重新从网络上抓取最新的数据来支持下面的预测,例如新的CPI数据、新的降雨量数据以及把新的预测信息加入到下一步的预测过程中来达到更好的预测效果。

针对安徽省亳州市地区1985.1月~2014.12月的历史数据,运用时间序列法和本发明提出的预测方法对2015年度价格的预测结果如表3、4所示:

表3ARIMA法预测2015年月售白术价格表

表4新方法预测2015年月售白术价格表

根据表3和表4的数据可以得到预测值与真实值的折线图,如图11所示,由图可以看出,使用本发明的方法预测效果明显优于单一的时间序列法,新方法较大程度地提高了白术月售价格的预测精度,可以推广到市场作为中药材月售价格的预测方法。

最后说明的是,以上实施例仅用以说明本发明的技术方案而非限制,尽管参照较佳实施例对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或者等同替换,而不脱离本技术方案的宗旨和范围,其均应涵盖在本发明的权利要求范围当中。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1