基于支持向量回归的酒店入住情况预测

2018-02-01 14:54武文斌
中国新技术新产品 2018年3期

武文斌

摘 要:当今社会,属于第三产业的旅游业对社会的发展起着越来越重要的作用。酒店入住是旅游业发达与否的一个重要体现。本文从维多利亚酒店入住情况数据出发,应用支持向量回归机的方法对酒店入住情况相关的月度入住次数这一时间序列数据进行建模和预测,进一步计算预测结果的均方根误差来定量地评价预测精度。通过实验验证,我们可以对酒店入住情况进行较为精准的预测,为维多利亚酒店未来营业模式的安排提供有意义的参考。

关键词:支持向量回归;时间序列预测;实验验证

中图分类号:U491 文献标志码:A

0 引言

酒店入住情况对于每一家酒店,甚至对整座城市的旅游业起着至关重要的作用。酒店可以通过对以往入住情况的统计,比如历史的月住房次数数据来预测下一个月或者下几个月的入住次数。这样就可以在旅游旺季来临之际提前做好准备,从而实现人力物力的合理配置,减少不必要的损失,从而取得经济效益。通过对酒店入住情况的预测,不仅可以探索其发展变化的规律,而且可以从一个侧面反映社会经济现象的发展情况。

对于月住房次数这样的时间序列数据,通过文献调研,还没有发现相关的研究。但是,对于其他领域的时间序列数据,已有不少相关研究,并涉及到众多技术。特别地,应用支持向量回归机(support vector machines regression, SVR)预测时间序列数据已有不少研究。杨金芳等人简要介绍了时间序列预测的研究状况以及支持向量回归的基本原理,将支持向量回归用于对煤气炉时间序列的预测,并同其他神经网络进行比较,实验表明支持向量回归在预测性能方面明显更优。尉询楷等人将支持向量机预测模型应用于某型航空发动机的滑油金属含量监测中,并与递归神经网络预测器进行比较,实验表明支持向量机表现出优秀的泛化能力,可预测区间较长且具有较高的准确度。

董辉、冷伍明详细分析了支持向量机用于时间序列预测的理论基础,并采用支持向量机和其他两种神经网络模型进行对比,分别对仿真时序和工程滑坡变形时序进行了回归与预测,结果表明在噪声水平较低时,SVR回归效果稍好。

曲文龙等人介绍了相空间重构和基于支持向量机的时间序列预测建模技术,提出了复杂时间序列的多尺度分解方法,对支持向量机回归与预测的各项参数设置进行了实验分析,通过对股票数据进行建模和预测表明支持向量机对复杂时间序列具有较好的预测效果。夏国恩针对目前铁路客运量预测方法不足的问题,采用SVR对铁路客运量时间序列进行预测,通过与标准的反向传播人工神经网络进行对比表明,SVR的预测精度更高。

1 支持向量回归

支持向量机回归是一种机器学习方法,并可以应用于时间序列数据的预测。SVR采用了结构风险最小化原则,通过多维输入和输出之间的实值映射来提高所建立模型的泛化能力。该映射可以表示为一种潜在函数,并且当引入非线性核函数K(xi,x)时该映射也是非线性的,将输入空间转换为的更高维特征空间的线性回归函数。使用ε(也称误差边界)不敏感损失函数的非线性SVR回归函数可以表示为:

其中,αi和αi*是求解目标函数中的拉格朗日乘数,ai、αi*和a 表示最优值,C是预设值(也称为惩罚因子),用来调节经验误差和泛化误差的平衡。在公式(1)中,观察到的输入向量xi是实际对回归函数有贡献的支持向量,并且对应于正的αi和αi*。在本文中,我们选择了流行的高斯径向基函数作为核函数,可以表示为K(x,y)=exp(-(x-y)2/2σ2),其中σ是核函数参数。

在SVR建模过程中,有3个参数ε,C和σ需要被确定。已有一些可用于参数选择的智能方法,比如遗传算法,粒子群优化算法,模拟退火算法等。本文采用了启发式算法直接从训练数据中计算ε和σ这两个参数的取值。

2 研究方法

本文的整体研究框架大致分为以下几个步骤:首先上网搜集维多利亚酒店入住情况数据并整理成“.csv”格式的数据文件,再将数据进行预处理(将原始数据转换格式、时间序列化等),然后将预处理后得到的数据划分成训练集和测试集,并由此对训练集建立SVR模型,接着应用SVR模型进行预测,最后将所得到的预测值计算预测精度。

整个预测过程的实现程序如算法1所示。首先導入“rminer”的数据包,然后将酒店入住情况数据通过“read.csv("数据文件路径名称”,header=TRUE)”函数读取进来,并保存到“table”这个变量中;之后将table中的入住次数这一列数据通过代码“Rm=table$Room_nights”从“table”中取出来并保存到“Rm”这个变量中;再使用“as.numeric()”、“as.character()”3个函数将取出的原始数据进行预处理;接着通过代码“Rm=ts(Rm,start=c(1980,1),frequency=12)”将“Rm”变量的时间序列周期设定为月度数据的潜在周期12,以便建立预测模型;然后将原始数据划分为训练集和测试集;接下来使用时间序列建模函数“fit()”对训练集建立SVR模型;然后通过“lforecast()”函数建立预测模型并执行预测;最后使用“mgraph()”绘图函数绘制预测结果。

算法1:月度酒店入住次数预测

输入:往期酒店月入住次数

输出:未来酒店月入住次数

1.library(rminer)

2. table = read.csv(“文件路径", sep=",", header=TRUE)

3.Rm=table$Room_nights

4.Rm=as.numeric(as.character(Rm))

5.Rm=ts(Rm,start = c(1980,1),frequency = 12)endprint

6.window=24

7.H=6

8.L=length(Rm)

9.Target=Rm[181:186]

10.d=CasesSeries(Rm,c(1:window))

11.LD=nrow(d)

12.dtr=1:(LD-H)

13.SV=fit(y~.,d[dtr,],model="ksvm",C=NA,epsilon=NA,kpa="automatic",seed=1000)

14. Pred=lforecast(SV,d,start=(LD-H+1),horizon=H)

15. r=round(mmetric(Target,Pred,metric="RMSE"),3)

16. txt=paste("SVM RMSE:",r,"\n")

17.mgraph(Target,Pred,graph="REG",Grid=10,col=c("black","blue"),leg=list(pos="topright",leg=c("target","predictions")),main=txt)

3 实验验证

3.1实验准备

实验数据来源于对维多利亚1980年1月到1995年6月酒店入住情况的统计。该时间序列共计186个数据点,设置前180个点为训练集,最后6个点为测试集。实验数据总体呈上升趋势,但也有周期性的波动,波峰主要出现在春秋两季,此时正值旅游旺季。实验运行环境为R语言和集成开发环境Rstudio。R是用于统计分析、绘图展示的语言和操作环境。R语言免费开源,并提供了对象、运算符和函数来探索、建模和可视化数据。其中,Rminer是以开源数据挖掘工具WEKA为核心的R语言程序包。Rminer实现了大多数经典和最新的数据挖掘算法,本文应用Rminer作为SVR预测模型的实现方法。

为了比较不同预测模型的优劣,本文采用均方根误差(root mean square error, RMSE)作为预测模型的度量指标。RMSE的计算公式为

RMSE

其中,y和f分别表示时间序列的观测值和模型输出值,T为数据点的个数。本文通过对测试集计算RMSE来评价模型的预测精度,RMSE值越小,预测精度越高,预测模型性能越好。

3.2 实验结果

本实验通过改变窗口长度这个模型参数来得到四个不同的SVR模型。每个模型的窗口长度L都设为月度数据的潜在周期12的整数倍,在四个模型中分别为12、24、36、48。惩罚因子C均取默认值3。误差边界ε和核函数σ参数通过启发式算法从训练数据中计算获得其取值。

通过分析实验结果,可以看出以下几点:(1)RMSE值的数量级为105,而原始数据的数量级为106,说明我们的预测精度是比较高的;(2)RMSE的最小值为22759.41,此时窗口长度为24,说明当窗口长度为24时预测精度最高,模型性能也最好;(3)随着L的不断增大,ε不断增大,σ不断减小,RMSE呈现出先减小后增大的趋势。

4 结论

本文应用支持向量回归机模型对酒店入住情况相关的时间序列数据进行预测,预测精度(RMSE值)達到了22759.41。基于目前工作,后续还可以做进一步研究,比如应用自回归移动平均(autoregressive integrated moving average, ARIMA)、3次指数平滑(Hot-Winters)等模型进行实验,比较各种统计学和人工智能等不同预测模型的优劣。

参考文献

[1]杨金芳, 翟永杰, 王东风, 等.基于支持向量回归的时间序列预测[J].中国电机工程学报,2005, 25(17):110-114.

[2]尉询楷, 李应红, 张朴, 等.基于支持向量机的时间序列预测模型分析与应用[J].系统工程与电子技术, 2005,27(3):529-532.

[3]董辉, 冷伍明.支持向量机的时间序列回归与预测[J].系统仿真学报, 2006, 18(7):1785-1788.

[4]曲文龙, 樊广佺, 杨炳儒.基于支持向量机的复杂时间序列预测研究[J].计算机工程,2005,31(23):1-3.

[5]夏国恩, 曾绍华, 金炜东.支持向量回归机在铁路客运量时间序列预测中的应用[J].计算机应用研究,2006,23(10):180-182.endprint