基于GS-XGBoost的共享单车需求预测分析研究
2023-11-14周海权
周海权,陈 超,王 捷
(四川轻化工大学计算机科学与工程学院,宜宾 644000)
0 引言
随着绿色出行倡议的提出,共享单车作为许多人短、中距离出行的首选[1],为人们提供一种健康、环境友好的出行解决方案,然而共享单车规模的扩大、用户的增多也引发了许多问题[2-3]。
首先存在的问题就是“乱”,共享单车具有随停随用的特点,可能导致单车乱停乱放,影响城市交通的秩序;其次存在的问题是“浪费”,过多的投放可能造成极大的浪费,背离了节约资源的初衷;最后就是存在地区单车分布“不均匀”的问题,尤其是在用车高峰期,导致用户借车困难、体验差等问题[4-6]。
针对以上存在的问题,许多科研人员对共享单车需求做出了预测,给单车调度的人员带来科学的指导,解决共享单车分布不均匀、用户借车难、体验差等问题。焦志伦等[7]提出了以各种常见的机器学习模型对共享单车需求进行预测,得出了机器学习中的随机森林模型与决策树的迭代对共享单车的预测结果有提升,使其结果更加精确的结论。杨军等[8]提出相比随机森林更加精确的BP 神经网络算法,该算法对共享单车需求的预测准确率有所提高,提出基于BP 神经网络算法的共享单车需求预测,并基于Logistic 函数、Idenliey 函数、Tanh 函数、Relu 函数对共享单车需求预测进行对比,结果表明精度最高的模型为Tanh函数下的BP神经网络模型。苗晓峰等[9]提出一种基于长短时记忆网络与时间空间结合的方法,对不同类型站点的共享单车进行需求预测,并与BP、HA 神经网络和GBDT等模型的预测结果进行比较。实验数据表明,加入时间、空间等特征后在借车、还车数据量波动比较大的站点预测的效果更好。徐长兴等[10]提出了基于Stacking策略与其他传统机器学习模型的组合预测模型,并和单一的机器学习模型进行了对比,结果表明组合预测模型的平均绝对百分比误差下降了9.1%。乔少杰等[11]提出了一种基于站点聚类的共享单车的需求预测,通过构建单车转移网络计算站点的活跃度,充分考虑站点聚合到一个聚簇之间,给出最佳的簇中心,使用长短时记忆网络进行训练并与许多传统的机器学习模型进行对比,实验结果表明,共享单车需求模型预测性能得到显著提升。
极限梯度提升(XGBoost)是一种高效的集成学习方法,现在广泛应用于大气污染预测、光伏预测、房价预测等领域[12-13]。为了进一步提升模型的预测能力,本文提出基于网格搜素优化XGBoost的预测模型GS-XGBoost,利用网格搜索优化算法进行超参数调优,使XGBoost 的性能达到最佳,以此为基础构建实验,实验表明GS-XGBoost 预测模型对共享单车需求的预测有着更好的预测结果。
1 理论部分
1.1 XGGBBoooosst算法
XGBoost 属于Boost 算法家族中的一员,是在GBDT基础上进行优化改进的,基本思想通过多个简单的弱分类器,构建出准确率很高的强分类器,每一步都产生一个弱预测模型,然后加权累加到总模型中,每一步的弱预测模型依据损失函数的梯度方向,这样若干步以后就逼近损失函数局部最小值的目标。
1.2 基于网格搜索算法优化的XGBBoooosstt的构建
1.2.1 网格搜索算法(GirdSearrcchhCCVV)
网格搜索算法(GirdSearchCV)可以拆分为两部分,即网格搜索和交叉验证,网格搜素参数与交叉验证类似于算法中的穷举算法;枚举去搜索的是超参数,即在指定的参数范围内,按步长依次调整参数,利用调整的参数训练学习器,在所有的参数中找到精确率最高的参数。参数值的各种排列组合自动选择出模型的最优参数组合,自动调参的机制就是利用交叉验证法来支持的,最常用的为K 折交叉验证,最常见的K 取值为10,每次划分时,在不同的数据集进行训练、测试、评估,得到的评估结果取平均值即可。
1.2.2 GS-XGBBoooosstt的构建过程
步骤1:对共享单车数据集进行预处理,对数据进行拼接、异常值处理、归一化等。
步骤2:将数据集划分为训练集和测试集,首先进行XGBoost 模型建模,采用XGBoost 对训练集进行训练,然后将训练好的模型用测试集进行验证对比,记录预测的评估指标值。
步骤3:用网格搜索优化的XGBoost 建模,即GS-XGBoost,基本步骤和XGBoost 建模是一致的,但是要列举出XGBoost重要的参数排列组合的网格,然后基于一种评价指标对模型进行打分,交叉验证出评分最高的参数。
2 需求影响因素分析
2.1 时间与气象数据可视化
本文以一个小时为单位对芝加哥2019 年的骑行数据进行分析,统计结果如图1所示,记录了全年用户总的骑行次数,出现了两个明显的峰值,分别是7~9 点和17~18 点,这正好对应了大多数人的上下班时间,可以推断出共享单车的主要用户是上班族,由图1分析出单车的使用存在早晚高峰,也分析出使用人群上班通勤居多。对于通勤就需要考虑群体的工作日和非工作日的需求差异,从图2可以看出,工作日和非工作日的骑行存在较大的差异,也符合现实的生活。通过上述的分析,在后续的共享单车需求预测时,可以将工作日和非工作日作为新特征进行构建,进一步提高预测精度。
图1 每天骑行需求量分布图
图2 工作日、非工作日骑行需求量分布图
除了时间因素的影响,气象因素对出现的影响也很大,主要影响因素为气温、压强、风速,气温和风速可以隐含用温度来分析,图3反映的是压强对骑行次数的影响,754~765 mmHg下骑行次数分布最多。图4所示为温度对骑行次数的影响,当温度在0℃以下时,骑行次数显著降低,最佳的骑行温度为17~27℃,此时的骑行次数最多,也符合人体最舒适的温度18~25℃。
图3 压强对骑行次数的影响
图4 温度对骑行次数的影响
2.2 特征因素分析
为进一步明确时间因素和气象因素对共享单车使用的影响,对表1的八个影响因素及共享单车需求量采用Pearson 相关系数来衡量相关性程度,计算公式如下所示。
表1 影响因素描述
利用Pearson 计算影响因素与需求量之间的相关性,计算结果如表2所示。
表2 影响因素与共享单车需求的相关系数
由表2可见,影响因素与共享单车需求之间均呈现正相关关系,其中时间因素中小时对共享单车的需求影响最大,气象因素中温度对共享单车的需求影响最大。
3 模型预测及结果分析
3.1 实验数据
3.1.1 数据集来源
研究所用的数据集分为共享单车使用数据集和气象数据集,其中共享单车的数据集来自于美国芝加哥地区共享单车官方网站(https://divvybikes.com/)2019 年骑行数据,研究的范围为全天;气象数据集为来自于气象数据网(https://rp5.ru/)的每小时气象数据,主要有温度、压强、风速等。
3.1.2 数据预处理
首先以时间为媒介将气象数据集和共享单车使用数据集拼接起来,然后填补缺失值,删除冗余值,进行归一化,并划分训练集和测试集,公式如下:
3.2 模型评价指标
常见的用来评价模型好坏的指标有三个:分别是MSE、MAE和R2,MSE计算的是预测值与真实值距离的平方和;MAE代表的是平均绝对误差,是目标值和预测值之差的绝对值之和;R2的分子部分表示真实值与预测值平方差之和,计算公式公式如下:
3.3 预测结果对比分析
本文采用五折交叉验证的网格搜索对XGBoost的超参数进行优化,即GS-XGBoost,对XGBoost的几个重要的参数进行调整、迭代,选择出最佳准确率的参数,重要的参数有n_estimators、max_depth、min_child_weight、subsample、colsample_bytree、gamma、reg_alpha、reg_lambda。
如图5 所示,各参数不同的值得到不同的模型分数,对应R2分数最大的值即为其最佳超参数。
图5 不同参数的取值范围对应的R2变化曲线
实验表明,经过参数调整n_estimators 的取值为750,max_depth 的取值为5,min_child_weight 的取值为4,gamma 的取值为0.1,subsample 的取值为0.8,colsample_bytree 的取值为0.6,reg_alpha 的取值为0.3,reg_lambda 的取值为1,分别对应的R2的最大值。
为了进一步验证GS-XGBoost 模型的性能,将其与默认参数的XGBoost 模型、SVR 模型、KNN 模型,以及随机森林模型进行对比,其预测模型的MSE、MAE和R2见表3。
表3 模型各项评价指标结果对比
从实验结果可以看出,GS-XGBoost 对比其他四种模型拥有更低的MSE和MAE,以及更高的R2,并且相比于传统的XGBoost预测模型,其MSE下降了0.0414,MAE下降了0.0262,R2上升了0.0174,表明GS-XGBoost 的预测结果与真实结果更为接近,具有更好的模型泛化性,拥有更准确的预测结果。
4 结语
本文针对共享单车需求预测问题,使用GS-XGBoost 模型对传统的XGBoost 的改进,找出最佳的超参数,该模型结合时间因素和气象因素对共享单车需求进行预测,通过实验与其他传统的机器学习模型进行对比,结果表明基于GS-XGBoost 模型的预测结果拥有更低的MAE和MSE,以及更高的R2,能更为准确地对共享单车的需求进行预测。