基于XGBoost的协同过滤算法在民宿推荐系统中的应用

作者: 董慧慧

基于XGBoost的协同过滤算法在民宿推荐系统中的应用0

摘要:针对武汉市各区民宿房东定价预测问题,利用XGBoost回归模型训练价格预测模型,结合基于用户-物品混合的协同过滤算法为房东推荐相似民宿。在研究过程中,首先采集数据并进行数据预处理;其次使用多种模型和XGBoost模型进行训练,得出XGBoost回归模型最优;最后使用交叉验证和网格搜索等方法寻找最优参数,完成民宿价格预测模型的构建,预测精准度达到94.49%,为民宿房东提供指导定价、运营管理和决策支持等服务。

关键词:协同过滤算法;数据预处理;XGBoost回归模型;价格预测;民宿推荐系统

中图分类号:TP311     文献标识码:A

文章编号:1009-3044(2024)24-0067-03

开放科学(资源服务)标识码(OSID)

0 引言

《携程乡村旅游振兴白皮书(2023)》报告显示,2023年携程平台乡村旅游订单量恢复到疫情前2.6倍,同时民宿行业的发展不仅重启增长,还创造了过去5年来民宿数量最大增幅,达到历史高点。民宿的快速发展迫切需要民宿平台提供精准高效的推荐服务,目前民宿推荐系统中主要为游客用户提供房源推荐,而为房东提供定价指导、运营管理和决策支持等方面的个性化推荐服务仍是空白。

在推荐系统中,基于协同过滤的推荐算法是最基本的算法,其分为两类:一是基于用户的协同过滤算法(UserCF),二是基于物品的协同过滤算法(ItemCF)。协同过滤算法主要通过用户与用户之间或者物品和物品之间相似度,来向用户推荐物品。基于协同过滤的推荐算法已在我国的电商平台、个性化网站、在线学习、音乐、视频、新闻等各个领域中得到广泛应用。基于协同过滤的推荐算法具有以下的优势:一是推荐对象的范围比较广,对推荐对象无特殊要求,能够过滤难以进行机器自动基于内容分析的信息[1]。二是能够基于一些复杂的,难以表达的概念进行过滤[2]。因此在民宿推荐系统[3]中,只要结合民宿的特征信息进行改进协同过滤推荐算法[4],使之可以在最短的时间内高效率地帮助民宿房东在指导定价、运营管理和决策支持等方面提供服务,就可以大大提高民宿的入住率。

本文从民宿房东的角度出发,获取了2024年4月武汉市各区民宿房源数据,数据来源某民宿网站,通过交叉验证下XGBoost回归模型算法训练民宿价格预测模型,再通过参数调优,使用均方根误差对模型进行评估,同时结合用户-物品的混合协同过滤算法计算民宿相似度,辅助房东用户综合各方面的因素进行价格指导和科学决策。

1 数据采集和预处理

1.1 数据采集

传统的数据采集模式是通过走访或者专业机构购买,不仅时间成本高,效率低,经济花费也较大。随着计算机技术的发展,人们通常通过网络来获取大量真实的数据。因此,在明确民宿价格预测模型的构建所需要的特征后,对于民宿房源信息的获取,本文通过Python+Selenium网络爬虫技术进行高效的自动化获取数据,数据来源于某民宿网站武汉市4月份的994个样本数据,仅用于模型的训练与预测。民宿数据的基本特征包括武汉区域名、街道、小区、民宿类型、面积、评分、价格、房间设施、周边环境等,部分数据如表1所示。

1.2 数据预处理与特征工程

为了更好地对民宿数据进行构建模型,需要对采集的数据进行预处理。主要使用基于 jupyter notebook 和 python3 工具,导入pandas、numpy 库,利用 head()、value_counts()、describe()、isnull()、unique()等函数以及通过 matplotlib 作图对数据特征分析。关键技术包括:去噪声去重,处理异常值缺失值,数据标准化正则化处理,归一化处理,数据变换、数据规约和数据集成等。其中区域、设施、周边等文本类型的数据使用LabelEncoder()进行重新编码,转化为可用的数值表示形式,通过地理编码(如经纬度)实现小区信息转换,以便构建用户-物品评分矩阵。

通过使用seaborn的scatterplot()绘制不同特征与价格特征之间的关系,进行特征抽取、特征预处理、特征降维等一系列过程将原始数据转换为更好地代表数据以供推荐算法使用。

数据清洗处理后的信息如图1所示。

2 民宿价格预测回归模型

数据预处理之后,使用StandardScala将数据进一步做标准化处理。接下来分别使用LinearRegression、RandomForestRegression、LightGBM和XGBoost模型对房源进行价格预测,以便辅助民宿房东对民宿定价。

2.1 XGBoost回归模型

XGBoost(Extreme Gradient Boosting)算法是陈天奇博士于2016年发表的论文《XGBoost:AScalable Tree Boosting System》中正式提出的。XGBoost在GBDT算法的基础上作出了一系列的优化,如在损失函数的计算中增加了二阶导数,增加了正则项,一定程度上的并行计算等。XGBoost算法是一种基于梯度提升树的集成学习算法。它是一类由基函数与权重进行组合形成对数据拟合效果佳的合成算法,在处理大规模数据集和复杂模型时更高效,能够防止过拟合并提高泛化能力。在机器学习和数据科学中,它被广泛用于分类和回归问题。该算法适用在民宿价格预测方面。

本文实验采用XGBoost算法进行回归。首先加载武汉各区预处理之后的数据集,将其划分为训练集和测试集。其次,利用XGBoost的XGBRegressor类定义一个回归模型,并使用训练集进行模型训练。然后,利用训练好的模型对测试集进行预测,并计算预测结果与实际结果之间的均方根误差。最后,根据实际情况调整模型的超参数,以获取更好的预测效果。

2.2 模型训练和评估

民宿价格预测模型训练之前,武汉各区源数据已经做过预处理,预测特征值为价格。为了找到最优模型,在模型建立的过程中,先后采用了sklearn的KFold、mean_squared_error、LinearRegression、RandomForestRegression、lightgbm、xgboost等包,进行实验并使用模型评价指标RMSE的值进行对比。其中以使用XGBoost构建模型过程为例,首先初始化XGBRegressor类的一个实例,然后使用.fit()方法训练模型,传入特征(X)和目标变量(y)。关键代码如下:

for train_indices,test_indices in kf.split(X):

X_train,X_test=X[train_indices],X[test_indices]

y_train,y_test=y[train_indices],y[test_indices]

XGBR=xgb.XGBRegressor()

XGBR.fit(X_train,y_train)

y_pred=XGBR.predict(X_test)

rmse=np.sqrt(mean_squared_error(y_test,y_pred))

rmse_scores.append(rmse)

经过训练,对于默认参数下的线性回归模型、随机森林模型、LightGBM模型[5]和XGBoost模型,它们的均方根误差值的对比结果如表2所示。

均方根误差(Root Mean Squared Error, RMSE)是一种常用的预测模型性能评价指标,特别是在回归问题中。它衡量的是预测值与实际值之间的平均差异大小。RMSE 的值越小,通常表示模型的预测性能越好。均方根误差计算方法为:

经过表2对比,XGBoost模型在本文数据集中的民宿价格预测上更为适合。

2.3 参数调优

选择XGBoost模型之后,使用交叉验证和网格搜索等技术来优化模型的超参数。交叉验证是一种常用的评估模型性能和选择参数的方法。迭代中使用其中一部分作为验证集,其他部分作为训练集。通过多次交叉验证,可以得到模型在不同参数组合下的平均性能,从而选择最优的参数组合。网格搜索XGBoost最佳模型参数,对模型泛化能力有敏感影响的参数进行多次调整。本文实验中,主要通过设置learning_rate、n_estimators、max_depth、subsample、colsample_bytree、min_child_weight、gamma、reg_alpha、reg_lambda、seed、nthread 等参数的不同组合值,并观察模型性能的变化。其中learning_rate学习率、n_estimators评估器数量、max_depth树的最大深度、min_child_weight最小叶子节点权重等参数对模型的预测结果有重要影响。经过多轮实验的结果,最终对各超参数调整后的模型准确率可达到94%,RMSE的值平均能够达到5.504 72。最优超参数如表3所示。

3 结束语

针对本次研究采集的武汉市各区民宿价格数据,通过使用XGBoost回归模型进行训练和调优,构建出一个适合民宿房东定价的预测模型,预测精准度达到了94.49%。在民宿推荐系统中,结合基于用户-物品混合的协同过滤算法为房东推荐相似民宿,最终可以在辅助民宿房东定价、运营管理和决策支持等服务方面起到良好的作用。

参考文献:

[1] 黄立威,江碧涛,吕守业,等.基于深度学习的推荐系统研究综述[J].计算机学报,2018,41(7):1619-1647.

[2] 张宜浩,朱小飞,徐传运,等.基于用户评论的深度情感分析和多视图协同融合的混合推荐方法[J].计算机学报,2019,42(6):1316-1333.

[3] 路丹,陈占芳.基于协同过滤的个性化民宿推荐系统的设计与实现[J].现代计算机(专业版),2018,24(32):97-100.

[4] 郭伟,王佳伟,唐晓亮,等.基于置信度加权的单类协同过滤推荐算法[J].计算机应用研究,2018,35(12):3618-3623,3627.

[5] 顾桐,许国良,李万林,等.基于集成LightGBM和贝叶斯优化策略的房价智能评估模型[J].计算机应用,2020,40(9):2762-2767.

【通联编辑:王 力】

上一篇 点击页面呼出菜单 下一篇