首页 理论教育 支持向量回归的参数选择方法

支持向量回归的参数选择方法

时间:2022-11-27 理论教育 版权反馈
【摘要】:以支持向量回归为例,该方法选取的适应度函数就是MSE,也就是文中提到的交叉验证方法判断优劣的分均分类准确率。通过选择、交叉、变异3种类型的算子进行遗传操作,以形成新的个体。图4-4所描述的是遗传算法的具体运算过程。在选择RBF核的前提下,最优参数通过网格法、遗传算法和粒子群法分别得到,本书将通过这3种方法得到的参数估算核心通货膨胀,以此来比较,在本书所需的数据环境中,哪一种参数选择方法更为合适。

对于参数的优化选取,已有文献中常用的方法是基于K折交叉验证(K-fold Cross Validation,K-CV)标准的方法。K折交叉验证是交叉验证方法中的一种,交叉验证的基本思想是将原始数据分组:一部分作为训练集,一部分作为验证集,先使用训练集对分类器进行训练,然后再用验证集来测试根据训练得到的模型,以此作为评价分类器好坏的指标,常见的交叉验证方法有Hold-out method、K折交叉验证和Leave-one-out交叉验证。Hold-out method是将输入的原始数据分为两部分:一部分作为训练集,另一部分作为测试集,然后通过对训练集的训练形成分类器,再用测试集验证训练出的模型,最后记录分类准确率,用来作为判断分类器优劣的标准。该方法是最基础的交叉验证方法,但是从严格意义上说,该方法又不能完全算是交叉验证方法,因为它没有用到交叉的思想,只是简单地将数据分为两组,最后验证分类器好坏的标准与对输入原始数据的分组有很大程度的关系,因此该方法从实践角度来说不太具有说服力。所谓K折交叉验证,就是将原数据分为k组(一般来说是平均分),然后将每个子集数据做一次验证集,其余的k-1组子集数据用来作为训练集,这样,将会得到k个模型,将这k个模型的平均分类准确率作为k折交叉验证分类器的性能好坏指标。该方法可以有效地避免过学习。所谓过学习,也就是训练集分类的准确率很高而测试集分类的准确率很低,用在支持向量回归上就是拟合性能好而预测性能差,因此K折交叉验证的这个特性使得最后得到的结果比较好。Leave-one-out(LOO)交叉验证与k折交叉验证的区别在于分组,Leave-one-out交叉验证将假设原数据有n个样本,把每个样本都作为验证集,剩下的n-1个样本作为训练集,因此该方法最后可以得到n个模型,和K折交叉验证一样,最终验证集的平均分类准确率就是判断Leaveone-out交叉验证分类器好坏的评价标准。相比K折交叉验证,Leave-oneout交叉验证训练的模型更多,基本上每一次训练都用到了几乎所有的样本,但是缺点在于运算量大耗时长。在这3种方法中K折交叉验证和Leave-one-out交叉验证被用得最为广泛,考虑到Leave-one-out交叉验证实际运用中的缺点,本书采用基于K折交叉验证的方法。

基于K-CV标准的方法有基于网格搜索(Grid Search)的SVR参数寻优、基于遗传算法(Genetic Algorithm)的SVR参数寻优和基于粒子群优化(Particle Swarm Optimization)的SVR参数寻优等(史峰等,2010),附录2中的寻参编程代码也引自史峰等(2010)。

网格搜索是目前运用最为广泛的寻参方法,网格法也就是全局搜索法,它能够找到在交叉验证意义下的最高分类准确率,也就是全局最优解,该方法在多个参数取不同值情况下所有的可能组合上来估计目标函数,但是当数据量很多时,该方法比较费时。

遗传算法属于进化算法的一种,最早由美国教授Holland于1975年提出的,该方法是一种通过模拟自然进化过程搜索最优解的方法。遗传算法开始随机选取一组可能解,这一组可能解被称为种群,种群中的每一个个体都是我们要获得的可能解,这些个体被称为染色体,通常适应函数用来评价种群中染色体的质量,质量好也就是适应度大的染色体将被遗传形成更加适应目标函数的染色体,如此一代一代地进行迭代计算,直至迭代收敛到目标函数所设定的数值为止(苏治,傅晓媛,2013),至此我们得到最佳目标解。遗传算法的基本过程如下:

1.选择染色体的编码方式,对个体进行编码。染色体编码方式的恰当与否将会影响到接下来染色体进行的交叉和变异操作。

2.群体初始化。遗传算法在随机给定的初始群体中进行迭代计算,初始值选择得比较优秀将会有效地提高遗传算法迭代找到最优解的能力。

3.适应度评价。按照适应度函数来计算每个个体的适应度。以支持向量回归为例,该方法选取的适应度函数就是MSE,也就是文中提到的交叉验证方法判断优劣的分均分类准确率。个体分类准确率越高,也就是适应度值MSE越低,也就代表该个体被选择的概率越大。通过选择、交叉、变异3种类型的算子进行遗传操作,以形成新的个体。

4.判断适应度值。对于步骤3计算出来的适应度值,判断其是否满足预定的目标标准,若不满足,则返回第三步或第二步骤,继续进行迭代优化直至满足预定的目标标准,最终选择最小适应度的个体作为最优解。图4-4所描述的是遗传算法的具体运算过程。

图4-4 遗传算法运算过程图

粒子群算法和遗传算法类似,也是一种进化算法,它是由kennedy博士和Eberhart博士于1995年提出的,源于对鸟群捕食行为的一种研究。设定在这样一个场景下,当一群鸟在一块随机区域里捕食,这块区域里只有一个地方有食物,所有的鸟都不确定这个地方在哪里,但是他们知道当前的位置距离食物有多远。因此,这时搜索食物的最佳策略就是搜索目前离食物最近的那只鸟所在的周围区域。该算法同遗传算法一样,也是系统初始随机选择一组解,通过迭代找到最佳值,相比遗传算法,粒子群算法更为简单,它没有遗传算法中的“交叉”和“变异”操作,实现更容易,收敛速度也更快。

从理论效果上很难比较这3种方法的优劣性,本书拟从实证数据的角度来比较这3种方法的优劣,因此分别采用了这3种方法进行参数的选取。

支持向量回归的具体实现是通过Matlab2010a软件编程来完成的,具体操作过程包括5个步骤:

1.数据预处理。将原始数据进行归一化处理或降维处理。

2.确定训练集。本书进行了一次核心CPI拟合、一次半年核心CPI的预测和一次一年核心CPI的预测,拟合的训练集为2001年1月—2013年12月的自变量和因变量,半年预测的训练集为2001年1月—2013年6月的自变量和因变量,一年预测的训练集为2001年1月—2012年12月的自变量和因变量。

3.确定核函数以及最优参数。在选择RBF核的前提下,最优参数通过网格法、遗传算法和粒子群法分别得到,本书将通过这3种方法得到的参数估算核心通货膨胀,以此来比较,在本书所需的数据环境中,哪一种参数选择方法更为合适。

4.得到拟合或预测结果。

5.反归一化,得到最终预测数据。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈