摘要:針對(duì)武漢市各區(qū)民宿房東定價(jià)預(yù)測(cè)問題,利用XGBoost回歸模型訓(xùn)練價(jià)格預(yù)測(cè)模型,結(jié)合基于用戶-物品混合的協(xié)同過濾算法為房東推薦相似民宿。在研究過程中,首先采集數(shù)據(jù)并進(jìn)行數(shù)據(jù)預(yù)處理;其次使用多種模型和XGBoost模型進(jìn)行訓(xùn)練,得出XGBoost回歸模型最優(yōu);最后使用交叉驗(yàn)證和網(wǎng)格搜索等方法尋找最優(yōu)參數(shù),完成民宿價(jià)格預(yù)測(cè)模型的構(gòu)建,預(yù)測(cè)精準(zhǔn)度達(dá)到94.49%,為民宿房東提供指導(dǎo)定價(jià)、運(yùn)營管理和決策支持等服務(wù)。
關(guān)鍵詞:協(xié)同過濾算法;數(shù)據(jù)預(yù)處理;XGBoost回歸模型;價(jià)格預(yù)測(cè);民宿推薦系統(tǒng)
中圖分類號(hào):TP311 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2024)24-0067-03
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID)
0 引言
《攜程鄉(xiāng)村旅游振興白皮書(2023)》報(bào)告顯示,2023年攜程平臺(tái)鄉(xiāng)村旅游訂單量恢復(fù)到疫情前2.6倍,同時(shí)民宿行業(yè)的發(fā)展不僅重啟增長,還創(chuàng)造了過去5年來民宿數(shù)量最大增幅,達(dá)到歷史高點(diǎn)。民宿的快速發(fā)展迫切需要民宿平臺(tái)提供精準(zhǔn)高效的推薦服務(wù),目前民宿推薦系統(tǒng)中主要為游客用戶提供房源推薦,而為房東提供定價(jià)指導(dǎo)、運(yùn)營管理和決策支持等方面的個(gè)性化推薦服務(wù)仍是空白。
在推薦系統(tǒng)中,基于協(xié)同過濾的推薦算法是最基本的算法,其分為兩類:一是基于用戶的協(xié)同過濾算法(UserCF),二是基于物品的協(xié)同過濾算法(ItemCF)。協(xié)同過濾算法主要通過用戶與用戶之間或者物品和物品之間相似度,來向用戶推薦物品?;趨f(xié)同過濾的推薦算法已在我國的電商平臺(tái)、個(gè)性化網(wǎng)站、在線學(xué)習(xí)、音樂、視頻、新聞等各個(gè)領(lǐng)域中得到廣泛應(yīng)用。基于協(xié)同過濾的推薦算法具有以下的優(yōu)勢(shì):一是推薦對(duì)象的范圍比較廣,對(duì)推薦對(duì)象無特殊要求,能夠過濾難以進(jìn)行機(jī)器自動(dòng)基于內(nèi)容分析的信息[1]。二是能夠基于一些復(fù)雜的,難以表達(dá)的概念進(jìn)行過濾[2]。因此在民宿推薦系統(tǒng)[3]中,只要結(jié)合民宿的特征信息進(jìn)行改進(jìn)協(xié)同過濾推薦算法[4],使之可以在最短的時(shí)間內(nèi)高效率地幫助民宿房東在指導(dǎo)定價(jià)、運(yùn)營管理和決策支持等方面提供服務(wù),就可以大大提高民宿的入住率。
本文從民宿房東的角度出發(fā),獲取了2024年4月武漢市各區(qū)民宿房源數(shù)據(jù),數(shù)據(jù)來源某民宿網(wǎng)站,通過交叉驗(yàn)證下XGBoost回歸模型算法訓(xùn)練民宿價(jià)格預(yù)測(cè)模型,再通過參數(shù)調(diào)優(yōu),使用均方根誤差對(duì)模型進(jìn)行評(píng)估,同時(shí)結(jié)合用戶-物品的混合協(xié)同過濾算法計(jì)算民宿相似度,輔助房東用戶綜合各方面的因素進(jìn)行價(jià)格指導(dǎo)和科學(xué)決策。
1 數(shù)據(jù)采集和預(yù)處理
1.1 數(shù)據(jù)采集
傳統(tǒng)的數(shù)據(jù)采集模式是通過走訪或者專業(yè)機(jī)構(gòu)購買,不僅時(shí)間成本高,效率低,經(jīng)濟(jì)花費(fèi)也較大。隨著計(jì)算機(jī)技術(shù)的發(fā)展,人們通常通過網(wǎng)絡(luò)來獲取大量真實(shí)的數(shù)據(jù)。因此,在明確民宿價(jià)格預(yù)測(cè)模型的構(gòu)建所需要的特征后,對(duì)于民宿房源信息的獲取,本文通過Python+Selenium網(wǎng)絡(luò)爬蟲技術(shù)進(jìn)行高效的自動(dòng)化獲取數(shù)據(jù),數(shù)據(jù)來源于某民宿網(wǎng)站武漢市4月份的994個(gè)樣本數(shù)據(jù),僅用于模型的訓(xùn)練與預(yù)測(cè)。民宿數(shù)據(jù)的基本特征包括武漢區(qū)域名、街道、小區(qū)、民宿類型、面積、評(píng)分、價(jià)格、房間設(shè)施、周邊環(huán)境等,部分?jǐn)?shù)據(jù)如表1所示。
1.2 數(shù)據(jù)預(yù)處理與特征工程
為了更好地對(duì)民宿數(shù)據(jù)進(jìn)行構(gòu)建模型,需要對(duì)采集的數(shù)據(jù)進(jìn)行預(yù)處理。主要使用基于 jupyter notebook 和 python3 工具,導(dǎo)入pandas、numpy 庫,利用 head()、value_counts()、describe()、isnull()、unique()等函數(shù)以及通過 matplotlib 作圖對(duì)數(shù)據(jù)特征分析。關(guān)鍵技術(shù)包括:去噪聲去重,處理異常值缺失值,數(shù)據(jù)標(biāo)準(zhǔn)化正則化處理,歸一化處理,數(shù)據(jù)變換、數(shù)據(jù)規(guī)約和數(shù)據(jù)集成等。其中區(qū)域、設(shè)施、周邊等文本類型的數(shù)據(jù)使用LabelEncoder()進(jìn)行重新編碼,轉(zhuǎn)化為可用的數(shù)值表示形式,通過地理編碼(如經(jīng)緯度)實(shí)現(xiàn)小區(qū)信息轉(zhuǎn)換,以便構(gòu)建用戶-物品評(píng)分矩陣。
通過使用seaborn的scatterplot()繪制不同特征與價(jià)格特征之間的關(guān)系,進(jìn)行特征抽取、特征預(yù)處理、特征降維等一系列過程將原始數(shù)據(jù)轉(zhuǎn)換為更好地代表數(shù)據(jù)以供推薦算法使用。
數(shù)據(jù)清洗處理后的信息如圖1所示。
2 民宿價(jià)格預(yù)測(cè)回歸模型
數(shù)據(jù)預(yù)處理之后,使用StandardScala將數(shù)據(jù)進(jìn)一步做標(biāo)準(zhǔn)化處理。接下來分別使用LinearRegression、RandomForestRegression、LightGBM和XGBoost模型對(duì)房源進(jìn)行價(jià)格預(yù)測(cè),以便輔助民宿房東對(duì)民宿定價(jià)。
2.1 XGBoost回歸模型
XGBoost(Extreme Gradient Boosting)算法是陳天奇博士于2016年發(fā)表的論文《XGBoost:AScalable Tree Boosting System》中正式提出的。XGBoost在GBDT算法的基礎(chǔ)上作出了一系列的優(yōu)化,如在損失函數(shù)的計(jì)算中增加了二階導(dǎo)數(shù),增加了正則項(xiàng),一定程度上的并行計(jì)算等。XGBoost算法是一種基于梯度提升樹的集成學(xué)習(xí)算法。它是一類由基函數(shù)與權(quán)重進(jìn)行組合形成對(duì)數(shù)據(jù)擬合效果佳的合成算法,在處理大規(guī)模數(shù)據(jù)集和復(fù)雜模型時(shí)更高效,能夠防止過擬合并提高泛化能力。在機(jī)器學(xué)習(xí)和數(shù)據(jù)科學(xué)中,它被廣泛用于分類和回歸問題。該算法適用在民宿價(jià)格預(yù)測(cè)方面。
本文實(shí)驗(yàn)采用XGBoost算法進(jìn)行回歸。首先加載武漢各區(qū)預(yù)處理之后的數(shù)據(jù)集,將其劃分為訓(xùn)練集和測(cè)試集。其次,利用XGBoost的XGBRegressor類定義一個(gè)回歸模型,并使用訓(xùn)練集進(jìn)行模型訓(xùn)練。然后,利用訓(xùn)練好的模型對(duì)測(cè)試集進(jìn)行預(yù)測(cè),并計(jì)算預(yù)測(cè)結(jié)果與實(shí)際結(jié)果之間的均方根誤差。最后,根據(jù)實(shí)際情況調(diào)整模型的超參數(shù),以獲取更好的預(yù)測(cè)效果。
2.2 模型訓(xùn)練和評(píng)估
民宿價(jià)格預(yù)測(cè)模型訓(xùn)練之前,武漢各區(qū)源數(shù)據(jù)已經(jīng)做過預(yù)處理,預(yù)測(cè)特征值為價(jià)格。為了找到最優(yōu)模型,在模型建立的過程中,先后采用了sklearn的KFold、mean_squared_error、LinearRegression、RandomForestRegression、lightgbm、xgboost等包,進(jìn)行實(shí)驗(yàn)并使用模型評(píng)價(jià)指標(biāo)RMSE的值進(jìn)行對(duì)比。其中以使用XGBoost構(gòu)建模型過程為例,首先初始化XGBRegressor類的一個(gè)實(shí)例,然后使用.fit()方法訓(xùn)練模型,傳入特征(X)和目標(biāo)變量(y)。關(guān)鍵代碼如下:
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)
經(jīng)過訓(xùn)練,對(duì)于默認(rèn)參數(shù)下的線性回歸模型、隨機(jī)森林模型、LightGBM模型[5]和XGBoost模型,它們的均方根誤差值的對(duì)比結(jié)果如表2所示。
均方根誤差(Root Mean Squared Error, RMSE)是一種常用的預(yù)測(cè)模型性能評(píng)價(jià)指標(biāo),特別是在回歸問題中。它衡量的是預(yù)測(cè)值與實(shí)際值之間的平均差異大小。RMSE 的值越小,通常表示模型的預(yù)測(cè)性能越好。均方根誤差計(jì)算方法為:
經(jīng)過表2對(duì)比,XGBoost模型在本文數(shù)據(jù)集中的民宿價(jià)格預(yù)測(cè)上更為適合。
2.3 參數(shù)調(diào)優(yōu)
選擇XGBoost模型之后,使用交叉驗(yàn)證和網(wǎng)格搜索等技術(shù)來優(yōu)化模型的超參數(shù)。交叉驗(yàn)證是一種常用的評(píng)估模型性能和選擇參數(shù)的方法。迭代中使用其中一部分作為驗(yàn)證集,其他部分作為訓(xùn)練集。通過多次交叉驗(yàn)證,可以得到模型在不同參數(shù)組合下的平均性能,從而選擇最優(yōu)的參數(shù)組合。網(wǎng)格搜索XGBoost最佳模型參數(shù),對(duì)模型泛化能力有敏感影響的參數(shù)進(jìn)行多次調(diào)整。本文實(shí)驗(yàn)中,主要通過設(shè)置learning_rate、n_estimators、max_depth、subsample、colsample_bytree、min_child_weight、gamma、reg_alpha、reg_lambda、seed、nthread 等參數(shù)的不同組合值,并觀察模型性能的變化。其中l(wèi)earning_rate學(xué)習(xí)率、n_estimators評(píng)估器數(shù)量、max_depth樹的最大深度、min_child_weight最小葉子節(jié)點(diǎn)權(quán)重等參數(shù)對(duì)模型的預(yù)測(cè)結(jié)果有重要影響。經(jīng)過多輪實(shí)驗(yàn)的結(jié)果,最終對(duì)各超參數(shù)調(diào)整后的模型準(zhǔn)確率可達(dá)到94%,RMSE的值平均能夠達(dá)到5.504 72。最優(yōu)超參數(shù)如表3所示。
3 結(jié)束語
針對(duì)本次研究采集的武漢市各區(qū)民宿價(jià)格數(shù)據(jù),通過使用XGBoost回歸模型進(jìn)行訓(xùn)練和調(diào)優(yōu),構(gòu)建出一個(gè)適合民宿房東定價(jià)的預(yù)測(cè)模型,預(yù)測(cè)精準(zhǔn)度達(dá)到了94.49%。在民宿推薦系統(tǒng)中,結(jié)合基于用戶-物品混合的協(xié)同過濾算法為房東推薦相似民宿,最終可以在輔助民宿房東定價(jià)、運(yùn)營管理和決策支持等服務(wù)方面起到良好的作用。
參考文獻(xiàn):
[1] 黃立威,江碧濤,呂守業(yè),等.基于深度學(xué)習(xí)的推薦系統(tǒng)研究綜述[J].計(jì)算機(jī)學(xué)報(bào),2018,41(7):1619-1647.
[2] 張宜浩,朱小飛,徐傳運(yùn),等.基于用戶評(píng)論的深度情感分析和多視圖協(xié)同融合的混合推薦方法[J].計(jì)算機(jī)學(xué)報(bào),2019,42(6):1316-1333.
[3] 路丹,陳占芳.基于協(xié)同過濾的個(gè)性化民宿推薦系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版),2018,24(32):97-100.
[4] 郭偉,王佳偉,唐曉亮,等.基于置信度加權(quán)的單類協(xié)同過濾推薦算法[J].計(jì)算機(jī)應(yīng)用研究,2018,35(12):3618-3623,3627.
[5] 顧桐,許國良,李萬林,等.基于集成LightGBM和貝葉斯優(yōu)化策略的房價(jià)智能評(píng)估模型[J].計(jì)算機(jī)應(yīng)用,2020,40(9):2762-2767.
【通聯(lián)編輯:王 力】