论文部分内容阅读
摘要:本文针对中国CPI指数的预测问题,首先用主成分分析方法对影响CPI指数的八个指标进行降维处理,然后利用支持向量机技术建立起中国CPI指数的预测模型并对我国实际的CPI指数进行了预测。实证分析结果表明,PCA-SVM模型能够有效地对CPI指数进行短期预测。最后,与单纯的支持向量机模型的预测结果做了对比,对比结果表明,支持向量机和主成分分析相结合的模型应用于CPI预测具有较高的精确度。
关键词:CPI;支持向量回归机;主成分分析
一、引言
居民消费价格指数也称消费者价格指数(Consumer Price Index, CPI),是反映一定时期内城乡居民所购买的生活消费品和服务项目价格变动趋势和幅度的指数,是反映通货膨胀水平的重要指标和根据。这一指数与居民的经济生活有着密切的关系,它衡量的是生活消费品和服务项目的价格变动对居民实际生活支出的影响程度,在各级政府研究和制定货币、价格、工资、消费、社会保障政策及进行国民经济核算等方面,发挥着很重要的作用。过高或过低的CPI指数都不利于国民经济的健康发展,因此对CPI的预测具有很重要的现实意义,它关系到国家宏观经济调控的政策取向。
目前文献在CPI指数预测方面,主要采用传统统计方法和建模方法。传统的统计方法包括协整回归预测模型、ARIMA预测模型、自回归模型等,建模方法主要有神经网络模型等。本文提出了基于支持向量机(Support Vector Machine,简称SVM)的中国CPI预测模型并对我国CPI指数进行预测。SVM作为一种机器学习方法,是由Vapnik最先提出。它以统计学习理论和结构风险最小化原则为基础,能够克服神经网络局部最优值等问题。支持向量机能够很好地处理非线性数据问题,近几年,在模式识别、数据挖掘和时间序列数据预测等方面得到了成功的应用,但是应用于我国CPI指数的预测并不多见。本文首先采用主成分分析法对数据进行降维处理,然后将支持向量机回归方法应用于我国CPI的短期预测。预测结果表明利用主成分分析方法不仅能够加快SVM的训练速度,还能提高预测精度。
二、理论分析
(一)支持向量机回归模型
给定训练集(xi,yi),i=1,2...,N,其中N表示N个训练样本,xi表示输入向量,yi表示相对应的输出变量。则回归函数可表示为y=f(x)=ωT?覬(x)+b,其中?覬(x)输入空间到高维特征空间的非线性映射。求解系数ωT和b,根据经验风险最小化原则,使得函数
R(f)=C■L(f(xi)-yi)+■||ω||2
最小化,其中,L(●)表示损失函数,C为惩罚因子。这里所说的损失函数是指常用的ε不敏感损失函数。问题就转化为以下优化问题
■■||ω||2+C■(ξi+ξ*i)
s.t.yi-(ωT?覬(xi)+b)≤ε+ξi
(ωT?覬(xi)+b)-yi≤ε+ξ*i
ξi,ξ*i≥0,i=1,2...N.
其中,ξi,ξ*i分别表示目标值上下限的松弛变量。目标函数中,既要使得■||ω||2最小化,又要使得■((ξi+ξ*i))最小化,即松弛变量最小,为了综合考虑这两个目标,引入了惩罚因子C>0,它反映了对■||ω||2最小化和松弛变量最小化的重视程度。引入拉格朗日函数,得到其对偶优化问题
■=-■■(ai-ai*)(aj-aj*)K(xi,xj)-ε■(ai+ai*)+■yi(ai-ai*)
s.t.■ai=■ai*,0≤ai,ai*≤C.
其中ai,ai*是拉格朗日乘子向量。解此优化问题,若得到的ai*≠ai,则称与其对应的训练点(xi,yi)为支持向量,否则称为非支持向量。得到的回归函数为
f(x)=■(ai-ai*)(?覬(xi)·?覬(x))+b
=■(ai-ai*)K(xi,x)+b
其中,K(xi,xj)=(?覬(xi)·?覬(xj))是满足Mercer条件的核函数。核函数有线性核函数、多项式核函数、sigmoid核函数和径向基核函数,通常使用的核函数是径向基核函数。由于在以往的研究中,应用径向基核函数能取得很好的效果,因此本文使用径向基核函数
K(x,x′)=exp(-||x-x′||2/2σ2),σ>0
在支持向量机模型的应用过程中,需要确定的参数包括惩罚因子C、核函数、核参数、损失函数的参数。参数的选择对于支持向量机模型的预测精度有很大的影响。参数的选择主要有遗传算法、粒子群优化算法、网络遍历法。在确定最优参数时,需要评价参数的优劣,通常使用的方法是k-折交叉确认法。
(二)主成分分析法
主成分分析(简称PCA)是采取一种数学降维的方法,找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,而且彼此之间互不相关。
设X1,X2,...,Xp为研究对象所涉及的p个属性,Y1,Y2,...,Ym(m≤n)表示由x1,x2,...,xp线性组合得到的新的综合变量,则有
Y■=l■x■+l■■x■+...+l■x■Y■=l■x■■+l■x■+...+l■x■…Y■=l■x■+l■x■+...+l■x■
其中,系数的选择应使得以下条件成立。
1.Yi与Yj(i≠j,i,j=1,2,...,m)互不相关。
2.Y1,Y2,...,Ym的方差依次减小,即所包含的信息量依次减小。
于是,Y1,Y2,...,Ym分别为x1,x2,...,xp的第一主成分、第二主成分、......、第m主成分。在用主成分对变量做降维处理时,从m个主成分中选出前几个包含信息量最大的,它们包含了原始变量绝大多数的信息,因此可以用这m个综合变量代替原始变量,这样既可以约减属性,简化分析,又可以在很大程度上包含原始变量的信息。 (三)PCA-SVM预测模型的设计
我国现行的CPI由八大类生活消费品和服务项目组成,即食品、烟酒及用品、衣着、家庭设备用品及服务、医疗保健及个人用品、交通和通信、娱乐教育文化用品及服务和居住。本文选取以上八大类指标数据作为预测模型的输入,以下月的CPI指数作为模型的输出。
主成分分析用来约减属性,减少支持向量机输入指标的个数。本文首先对八大类指标数据进行主成分分析,将约减后的指标数据作为支持向量机模型的输入,支持向量机模型对输入指标进行运算和处理,得出CPI的预测值。PCA-SVM预测模型的设计流程如下。
1.对数据进行预处理和主成分分析,确定主成分个数以及支持向量机的输入指标。
2.将训练数据输入支持向量机模型,交叉验证选择最佳参数C、g和ε,得出训练模型。
3.将测试集中的指标数据输入训练模型,进行拟合预测CPI指数。
三、实证分析
(一)对指标数据提取主成分
本文选取国家统计局网站公布的2006年1月至2013年5月的居民消费价格指数CPI及八个指标即居民消费价格分类指数,利用建模对CPI指数进行预测。
利用Matlab对指标数据进行主成分分析,分析结果如表1所示。
从表1可以看出,前4个主成分的累积贡献率为91.405%,因此提取前4个主成分作为输入变量。输入维数降低一半,可提高SVM的训练速度。
(二) SVM模型的训练及预测
主成分分析方法的作用是降低支持向量机输入向量的维数,支持向量机对输入向量进行运算处理,得出CPI预测值。在本文中,我们将本月的前4个主成分值作为支持向量机模型的输入变量,下月CPI指数作为输出变量。本文选取2006年1月到2012年9月共81组数据作为训练集,2012年10月到2013年5月共8组数据作为测试集。
在建立支持向量机模型之前,首先需要寻求最优参数。本文选用的核函数为常用的径向基核函数,利用LIBSVM,通过网络遍历法反复实验,搜索惩罚因子C、核参数g、损失函数的参数ε的最优值。C的搜索范围为[2-10,210],g的搜索范围为[2-10,210],ε的搜索范围为[0,100],对于每一组参数,利用5折交叉验证法验证其精度,选择精度最高的一组参数。最终确定C的值为13225.5068,g的值为1.235,ε的值为0.0642。
在确定参数以后,在dos环境中利用LIBSVM中的训练命令svmstrain对81组数据集训练,得到预测模型,然后利用预测模型和svmpredict预测出我国2012年10月到2013年5月的CPI指数。预测结果如表2所示。
从结果看,各个月份CPI指数预测值的最大误差为0.7,最小误差为0.1,相对误差基本保持在0.7%以下,均方误差MSE为0.3674,平均绝对误差MAE为0.325,说明PCA-SVM模型较稳定,可以较为准确地预测CPI指数。
为了评价此模型的预测精度,通过对比实验,将其与未经过主成分分析的支持向量机模(SVM)的预测结果进行对比,预测效果评价结果见表3。
从表3可以看出,PCA-SVM模型比SVM模型的预测效果好,说明主成分分析法不仅可以降低支持向量机的输入维数,更能很好地提高支持向量机模型预测的精度。
四、结语
通过以上的分析可以看出,PCA-SVM模型在CPI的预测中具有比较高的精度,在上月八大类消费和服务项目指数已知的条件下,应用该模型能够比较准确地预测出下月的CPI指数,这说明该模型能够较好地应用于我国CPI指数的短期预测领域。这可以给制定国家宏观经济政策的有关部门及企业提供一定的信息和帮助。由于指标体系中单纯包含了经济指标,没有考虑到国家政策制定等其他因素对CPI的影响,因此PCA-SVM模型在预测的过程中会出现一定误差,但从总体上看,本文取得了较好的预期效果。在今后的CPI预测研究中,可以更进一步深入,寻求更高效精确的参数优化方法,将非经济的因素纳入模型的建立中。
参考文献:
[1]付红研.国民经济统计学[M]. 首都经济贸易大学出版社,2008.
[2]邓乃扬,田英杰.支持向量机—理论、算法与拓展[M].科学出版社,2009.
[3]何晓群.多元统计分析[M]. 中国人民大学出版社,2008.
[4]李伯年,吴礼斌. Matlab数据分析方法[M].机械工业出版社,2012.
[5]石城宇.基于支持向量机的汇率预测研究[D].哈尔滨工业大学,2011.
(工作单位:上海理工大学管理学院)
关键词:CPI;支持向量回归机;主成分分析
一、引言
居民消费价格指数也称消费者价格指数(Consumer Price Index, CPI),是反映一定时期内城乡居民所购买的生活消费品和服务项目价格变动趋势和幅度的指数,是反映通货膨胀水平的重要指标和根据。这一指数与居民的经济生活有着密切的关系,它衡量的是生活消费品和服务项目的价格变动对居民实际生活支出的影响程度,在各级政府研究和制定货币、价格、工资、消费、社会保障政策及进行国民经济核算等方面,发挥着很重要的作用。过高或过低的CPI指数都不利于国民经济的健康发展,因此对CPI的预测具有很重要的现实意义,它关系到国家宏观经济调控的政策取向。
目前文献在CPI指数预测方面,主要采用传统统计方法和建模方法。传统的统计方法包括协整回归预测模型、ARIMA预测模型、自回归模型等,建模方法主要有神经网络模型等。本文提出了基于支持向量机(Support Vector Machine,简称SVM)的中国CPI预测模型并对我国CPI指数进行预测。SVM作为一种机器学习方法,是由Vapnik最先提出。它以统计学习理论和结构风险最小化原则为基础,能够克服神经网络局部最优值等问题。支持向量机能够很好地处理非线性数据问题,近几年,在模式识别、数据挖掘和时间序列数据预测等方面得到了成功的应用,但是应用于我国CPI指数的预测并不多见。本文首先采用主成分分析法对数据进行降维处理,然后将支持向量机回归方法应用于我国CPI的短期预测。预测结果表明利用主成分分析方法不仅能够加快SVM的训练速度,还能提高预测精度。
二、理论分析
(一)支持向量机回归模型
给定训练集(xi,yi),i=1,2...,N,其中N表示N个训练样本,xi表示输入向量,yi表示相对应的输出变量。则回归函数可表示为y=f(x)=ωT?覬(x)+b,其中?覬(x)输入空间到高维特征空间的非线性映射。求解系数ωT和b,根据经验风险最小化原则,使得函数
R(f)=C■L(f(xi)-yi)+■||ω||2
最小化,其中,L(●)表示损失函数,C为惩罚因子。这里所说的损失函数是指常用的ε不敏感损失函数。问题就转化为以下优化问题
■■||ω||2+C■(ξi+ξ*i)
s.t.yi-(ωT?覬(xi)+b)≤ε+ξi
(ωT?覬(xi)+b)-yi≤ε+ξ*i
ξi,ξ*i≥0,i=1,2...N.
其中,ξi,ξ*i分别表示目标值上下限的松弛变量。目标函数中,既要使得■||ω||2最小化,又要使得■((ξi+ξ*i))最小化,即松弛变量最小,为了综合考虑这两个目标,引入了惩罚因子C>0,它反映了对■||ω||2最小化和松弛变量最小化的重视程度。引入拉格朗日函数,得到其对偶优化问题
■=-■■(ai-ai*)(aj-aj*)K(xi,xj)-ε■(ai+ai*)+■yi(ai-ai*)
s.t.■ai=■ai*,0≤ai,ai*≤C.
其中ai,ai*是拉格朗日乘子向量。解此优化问题,若得到的ai*≠ai,则称与其对应的训练点(xi,yi)为支持向量,否则称为非支持向量。得到的回归函数为
f(x)=■(ai-ai*)(?覬(xi)·?覬(x))+b
=■(ai-ai*)K(xi,x)+b
其中,K(xi,xj)=(?覬(xi)·?覬(xj))是满足Mercer条件的核函数。核函数有线性核函数、多项式核函数、sigmoid核函数和径向基核函数,通常使用的核函数是径向基核函数。由于在以往的研究中,应用径向基核函数能取得很好的效果,因此本文使用径向基核函数
K(x,x′)=exp(-||x-x′||2/2σ2),σ>0
在支持向量机模型的应用过程中,需要确定的参数包括惩罚因子C、核函数、核参数、损失函数的参数。参数的选择对于支持向量机模型的预测精度有很大的影响。参数的选择主要有遗传算法、粒子群优化算法、网络遍历法。在确定最优参数时,需要评价参数的优劣,通常使用的方法是k-折交叉确认法。
(二)主成分分析法
主成分分析(简称PCA)是采取一种数学降维的方法,找出几个综合变量来代替原来众多的变量,使这些综合变量能尽可能地代表原来变量的信息量,而且彼此之间互不相关。
设X1,X2,...,Xp为研究对象所涉及的p个属性,Y1,Y2,...,Ym(m≤n)表示由x1,x2,...,xp线性组合得到的新的综合变量,则有
Y■=l■x■+l■■x■+...+l■x■Y■=l■x■■+l■x■+...+l■x■…Y■=l■x■+l■x■+...+l■x■
其中,系数的选择应使得以下条件成立。
1.Yi与Yj(i≠j,i,j=1,2,...,m)互不相关。
2.Y1,Y2,...,Ym的方差依次减小,即所包含的信息量依次减小。
于是,Y1,Y2,...,Ym分别为x1,x2,...,xp的第一主成分、第二主成分、......、第m主成分。在用主成分对变量做降维处理时,从m个主成分中选出前几个包含信息量最大的,它们包含了原始变量绝大多数的信息,因此可以用这m个综合变量代替原始变量,这样既可以约减属性,简化分析,又可以在很大程度上包含原始变量的信息。 (三)PCA-SVM预测模型的设计
我国现行的CPI由八大类生活消费品和服务项目组成,即食品、烟酒及用品、衣着、家庭设备用品及服务、医疗保健及个人用品、交通和通信、娱乐教育文化用品及服务和居住。本文选取以上八大类指标数据作为预测模型的输入,以下月的CPI指数作为模型的输出。
主成分分析用来约减属性,减少支持向量机输入指标的个数。本文首先对八大类指标数据进行主成分分析,将约减后的指标数据作为支持向量机模型的输入,支持向量机模型对输入指标进行运算和处理,得出CPI的预测值。PCA-SVM预测模型的设计流程如下。
1.对数据进行预处理和主成分分析,确定主成分个数以及支持向量机的输入指标。
2.将训练数据输入支持向量机模型,交叉验证选择最佳参数C、g和ε,得出训练模型。
3.将测试集中的指标数据输入训练模型,进行拟合预测CPI指数。
三、实证分析
(一)对指标数据提取主成分
本文选取国家统计局网站公布的2006年1月至2013年5月的居民消费价格指数CPI及八个指标即居民消费价格分类指数,利用建模对CPI指数进行预测。
利用Matlab对指标数据进行主成分分析,分析结果如表1所示。
从表1可以看出,前4个主成分的累积贡献率为91.405%,因此提取前4个主成分作为输入变量。输入维数降低一半,可提高SVM的训练速度。
(二) SVM模型的训练及预测
主成分分析方法的作用是降低支持向量机输入向量的维数,支持向量机对输入向量进行运算处理,得出CPI预测值。在本文中,我们将本月的前4个主成分值作为支持向量机模型的输入变量,下月CPI指数作为输出变量。本文选取2006年1月到2012年9月共81组数据作为训练集,2012年10月到2013年5月共8组数据作为测试集。
在建立支持向量机模型之前,首先需要寻求最优参数。本文选用的核函数为常用的径向基核函数,利用LIBSVM,通过网络遍历法反复实验,搜索惩罚因子C、核参数g、损失函数的参数ε的最优值。C的搜索范围为[2-10,210],g的搜索范围为[2-10,210],ε的搜索范围为[0,100],对于每一组参数,利用5折交叉验证法验证其精度,选择精度最高的一组参数。最终确定C的值为13225.5068,g的值为1.235,ε的值为0.0642。
在确定参数以后,在dos环境中利用LIBSVM中的训练命令svmstrain对81组数据集训练,得到预测模型,然后利用预测模型和svmpredict预测出我国2012年10月到2013年5月的CPI指数。预测结果如表2所示。
从结果看,各个月份CPI指数预测值的最大误差为0.7,最小误差为0.1,相对误差基本保持在0.7%以下,均方误差MSE为0.3674,平均绝对误差MAE为0.325,说明PCA-SVM模型较稳定,可以较为准确地预测CPI指数。
为了评价此模型的预测精度,通过对比实验,将其与未经过主成分分析的支持向量机模(SVM)的预测结果进行对比,预测效果评价结果见表3。
从表3可以看出,PCA-SVM模型比SVM模型的预测效果好,说明主成分分析法不仅可以降低支持向量机的输入维数,更能很好地提高支持向量机模型预测的精度。
四、结语
通过以上的分析可以看出,PCA-SVM模型在CPI的预测中具有比较高的精度,在上月八大类消费和服务项目指数已知的条件下,应用该模型能够比较准确地预测出下月的CPI指数,这说明该模型能够较好地应用于我国CPI指数的短期预测领域。这可以给制定国家宏观经济政策的有关部门及企业提供一定的信息和帮助。由于指标体系中单纯包含了经济指标,没有考虑到国家政策制定等其他因素对CPI的影响,因此PCA-SVM模型在预测的过程中会出现一定误差,但从总体上看,本文取得了较好的预期效果。在今后的CPI预测研究中,可以更进一步深入,寻求更高效精确的参数优化方法,将非经济的因素纳入模型的建立中。
参考文献:
[1]付红研.国民经济统计学[M]. 首都经济贸易大学出版社,2008.
[2]邓乃扬,田英杰.支持向量机—理论、算法与拓展[M].科学出版社,2009.
[3]何晓群.多元统计分析[M]. 中国人民大学出版社,2008.
[4]李伯年,吴礼斌. Matlab数据分析方法[M].机械工业出版社,2012.
[5]石城宇.基于支持向量机的汇率预测研究[D].哈尔滨工业大学,2011.
(工作单位:上海理工大学管理学院)