鄭 列, 穆新宇
(湖北工業大學理學院, 湖北 武漢 430068)
在線短租房得到了空前的發展,并催生了途家、小豬、榛果民宿等知名短租平臺[1]。從公開信息出發,建立在線短租房的價格預測模型,有助于在線短租產業的發展。XGBoost模型自提出以來備受關注,不僅眾多學者對其展開深入研究與改進[2-3],而且在工業界取得了不錯的成果[4-5]。相較于傳統統計模型,XGBoost無論在分類還是回歸問題中均能取得較好效果,但是其解釋性相對較差,不利于實際問題的具體分析。為解決這一弊端,本文在使用XGBoost預測短租房價格時,考慮先使用傳統統計模型對問題做出較好的解釋,再挑選表現較佳的變量構建預測模型。該模型能夠為新加入短租平臺的房源提供具有參考價值的定價范圍,也能夠幫助短租平臺監管房源價格的異常情況,并及時做出調整,營造出公平合理的短租商業氛圍。
本文的研究數據來源于阿里云天池大數據競賽[6],該數據是Airbnb公司于2019年4月17日公開的北京地區房源數據集。Airbnb是全球知名的民宿短租平臺,其房源范圍覆蓋191個國家和地區,以Airbnb平臺的數據研究相關問題具有重要的參考價值。目前,在線短租業務主要分布在一線和省會城市,北京作為首都具有代表性,以其房源信息作為研究對象相對合理。
原始數據集包含28452個樣本和106個屬性,每一個樣本對應一個房源,而每一個屬性代表房源的一個特征,不過該數據集并未指定哪一個屬性作為研究目標,因此為相關問題的研究提供了更多的可能性。本文擬研究在線短租房的價格影響因素及其預測模型,故將price屬性作為目標變量,其原始值為數值型,表示房源的價格,而將其它屬性作為房源的固有特征,其中包括數值型、分類型和文本型,主要涉及房源基本情況、房主情況和房客評價等方面。
在原始數據集中,存在缺失值和異常值,需要進行適當的數據清洗,對于缺失值一般采用樣本填充法或屬性刪除法,如果某一屬性的缺失值比例不大,那么會選擇對有缺失值的樣本進行填充,數值型數據采用均值填充,分類型數據采用眾數填充,文本型數據暫不填充,而如果某一屬性的缺失值比例較大,那么會選擇刪除該屬性對應的所有數值。對于異常值的處理一般采用樣本刪除法,異常值會對后續分析產生很大干擾,可以根據3σ原則進行識別,進而刪除存在異常值的樣本。本文數據預處理的最終樣本量為23364,保留屬性有82個。
在線短租房是一種新興產業,其發展模式介于傳統酒店與傳統租房之間,所以在研究短租房價格的影響因素時,既要借鑒對傳統酒店價格的研究,又要考慮短租房自身的特點。
本文查閱多篇有關短租房價格的文獻[7-9],綜合多個方面對短租房價格的影響因素構建了合理的特征體系。特征體系包括5個類別,分別為房源的基礎設施、房源的基本屬性、房主的基本情況、在線預定規則和房客的評論情況,共計23個變量,其詳細的名稱和含義見表1。

表1 短租房價格及其影響因素的描述
從表1可以看出,5類特征涵蓋了房源、房主和房客三個方面的信息,考慮的影響因素比較全面,而且23個變量中有11個數值型變量,12個二分類型變量。二分類型變量主要通過短租平臺的在線信息獲取,體現了短租產業以互聯網為重要媒介的特點。
在線短租房的價格會受很多因素的影響,為了清楚地了解各影響因素對價格的影響程度和方向,需要建立合適的模型進行分析,本文主要采用傳統統計模型中的OLS回歸與分位數回歸,其中OLS回歸可以分析各因素對房源價格的綜合影響情況,分位數回歸可以分析各因素對不同價位房源的影響情況。
OLS回歸,即最小二乘回歸,它會將誤差的平方和最小化,以此確定目標變量與影響因素之間的最佳線性關系,是各個學科研究中普遍使用的標準統計模型,其模型表達式為
yi=β0+β1xi+εi
(1)
其中:yi被稱作因變量;xi被稱作自變量;β0,β1是需要用最小二乘法確定的參數,也被稱作回歸系數;εi被稱作隨機誤差項。
使用OLS回歸要求數據必須滿足以下統計假設:①正態性,即對于固定的自變量值,因變量值成正態分布;②獨立性,即個體之間相互獨立;③線性相關,即因變量和自變量之間是線性相關的;④同方差性,即因變量的方差不隨自變量的水平不同而變化,也就是說因變量的方差是恒定的。
OLS回歸因其思路簡單、方便實現等特點,在各個學科廣泛應用,不過它主要關注各影響因素與目標變量的條件均值之間的關系,沒有充分考慮目標變量條件分布的整體性。
為了彌補OLS回歸的局限性,18世紀中期Boscovich首次提出中位數回歸,在此基礎上,Roger Koenker與Gilbert Bassett在1978年提出更具一般性的分位數回歸,其模型表達式為
yi=β0(p)+β1(p)xi+εi(p)
(2)
其中,0
yi在特定值xi下的第p條件分位數為Q(p)(yi|xi)=β0(p)+β1(p)xi,由此可知該模型要求誤差項的第p分位數等于0[10]。
分位數回歸一般用來研究自變量與因變量的條件分位數之間的關系,得到的模型可以用前者來估計后者。它不是僅分析因變量的條件期望,而是比較全面地解釋因變量的條件分布。
和OLS回歸相比,分位數回歸的使用條件更加寬泛,所獲得的信息量更多,能夠捕捉到條件分布形狀對因變量的影響,可以全面地表現分布的情況,而且回歸系數的估計更加穩健。
Python是一門簡潔易懂的編程語言,其中有專門用于統計分析的封裝庫,對于統計分析非常方便,通過輸入相關數據可以對在線短租房的價格及其影響因素做OLS回歸與分位數回歸,其中所選分位數依次為0.1、0.25、0.5、0.75和0.9,兩種結果的對比情況如表2所示。

表2 OLS回歸與分位數回歸結果對比
由表2可見,所有因素在OLS回歸中均顯著,但在分位數回歸中有個別因素不顯著。通過這些結果不僅可以分析每個因素對于房源價格的影響情況,還可以針對不同價位的房源給出不同的解釋。
從房源的基礎設施來看,浴室數、臥室數、床數和可容納人數無論在OLS回歸中還是分位數回歸中均較為顯著,并且在分位數回歸中,分位數越大各因素對價格的影響程度越大。浴室數、臥室數和可容納人數對價格的回歸系數是正值,所以這些因素的值越大,房源的價格越高,而床數對價格的回歸系數是負值,說明房源的床數越多價格反而越低,這很可能是房主為吸引對價格敏感的房客而采用的營銷策略,試圖通過提供更多的入住機會來降低價格。
從房源的基本屬性來看,是否精確定位和房產是否為公寓在低分位數回歸時沒有通過顯著性檢驗,說明這兩個特征對低價房源的價格并無顯著影響,不過在高分位數回歸中隨著分位數的增大對價格的影響程度遞增,且均為負向影響。其它因素在OLS回歸與分位數回歸中均較為顯著,且為正向影響,其中經營時間越長價格會越高,說明房主在經營經驗的基礎上可以打造出更有特色、更可靠的房源,另外,房源是否為整租對中等價位房源的價格影響程度最大,而是否在市區對高價房源的影響程度最大。
從房主的基本情況來看,房主的身份是否通過驗證在低分位數回歸時沒有通過顯著性檢驗,說明它對低價房源的價格并無顯著影響,因為低價房源的安全性要稍微低一些,房客不會過于關注房主的身份情況。房主擁有的房源數越多價格越高,說明此類房源的房主可能是從事短租產業的專業房主,可以給房客提供更好的服務。另外,超贊房主擁有和專業房主同樣的經營優勢,房源價格自然會較高。
從在線預定規則來看,是否有入住規則和是否可以隨時預定對中等價格房源的影響較為明顯,而是否需要清潔費則對中等價位房源的價格無明顯影響。另外,需要押金的房源價格更高,說明此類房源的設施和服務應該較好,價格自然攀升,而額外加人需要另收費的房源價格較低,說明此類房源更傾向于按人數收費。房源的最少入住天數越多價格越低,說明房主傾向于將房源租給長期房客,可以減少服務和溝通成本。
從房客的評論情況來看,評論天數對于低價房源的價格影響不顯著,最近一年的評論數對于房源價格的整體影響均比較顯著。不過兩者對于房源價格的影響都是負向的,當評論數和評論天數增加時房源價格會下降,評論數在一定程度上能夠反映房源的預定量,說明房主傾向于采用薄利多銷的經營方式。
房屋的價格預測有很多經典的預測模型,但是在線短租房與傳統房屋在價格預測方面存在諸多不同,其中最主要的不同在于影響因素,模型的選擇也會產生差異。隨著機器學習技術的不斷發展,目前傾向于選擇新穎的模型來解決問題。
本文挑選出OLS回歸和分位數回歸中均有較強顯著性的因素來構建價格預測模型,最終選取的是除is_location_exact、property_type_is_apart、host_identity_verified、instant_bookable和review_days5個之外的18個因素,主要采用XGBoost模型預測房源價格,并與線性回歸模型的效果作比較,可以突出XGBoost在未調參與調參后的預測精度,最后通過XGBoost算法給出所有特征的重要性排序。
XGBoost算法是對GBDT算法的改進。原始的GBDT只利用了一階的導數信息,而XGBoost則是對損失函數進行二階泰勒展開,并在損失函數之外加入了正則項,可以針對整體計算最優解,用來衡量損失函數的下降以及模型的復雜度,避免過擬合,提高了模型的求解效率。XGBoost算法的基本原理如下。

(3)
由于在第t輪迭代時t-1輪的預測結果固定,模型目標函數的設定僅需考慮預測函數ft(xi),求解模型參數時最小化為如下目標函數:
S(t)(β)=L(β)+D(ft)+C
(4)
其中,
(5)
(6)
式(4)-(6)中:L(β)是測度模型擬合程度的損失函數,D(ft)是測度模型復雜程度的正則化項,C是常數項;l(·)是測度樣本預測準確性的損失函數;T是決策樹葉子節點數,ωj是葉子節點對應的預測結果,γ和λ是對應的調整系數。將損失函數泰勒展開至二次項,利用貪婪算法或其它算法可以求解模型的參數[11]。
XGBoost能夠獲得青睞,取決于其優越性:1)支持二階泰勒展開式,不僅能夠增加精度,而且方便自定義損失函數;2)損失函數中添加正則項,能夠控制模型的復雜度,防止發生過擬合現象,使訓練出來的模型相對簡潔;3)允許列抽樣,既能夠防止過擬合,又能夠簡化計算;4)支持并行計算,靈活性很強。
本文使用Python語言實現XGBoost算法。首先將預處理后的數據集23364個樣本以7∶3的比例隨機劃分為訓練集和驗證集,接著構建XGBoost模型,然后使用網格搜索法對模型進行調參,最后根據評價指標選擇較優的模型。
建模過程中的調參環節本質上是一個優化過程,可以使用隨機搜索法、網格搜索法、遺傳算法等。本文選擇的網格搜索法需要給定參數的若干個值,然后將各參數的可能值進行排列組合,并將各組參數用來訓練模型,同時采用交叉驗證的方式評估各種組合的表現,選取效果最好的組合作為最優參數。
XGBoost算法建模時共有三類參數:常規參數、基礎模型參數和學習任務參數[12],本文研究過程中對常規參數全部選擇默認。由于研究目標最終可以歸結為一個回歸問題,所以學習任務參數里的objective參數需要設置為“reg:linear”,其他選擇默認即可,而基礎模型參數是對模型效果影響較大的部分,也是調參的重點。本文根據各參數在模型中的重要性依次調節,結果見表3。

表3 XGBoost建模調參結果
模型的好壞需要根據評價指標來評判,對于任何問題而言都沒有最優的模型,但是可以在已有的模型中選擇較優的那一個。在回歸預測問題中有一些常用的評價指標,比如:平均絕對誤差(MAE)、均方誤差(MSE)和擬合優度(R2),它們的計算公式分別如下:
(7)
(8)
(9)

本文為了清楚地表現XGBoost模型的預測精度,與線性回歸模型進行了對比,驗證集上各指標對比結果(表4)。

表4 各回歸模型的預測精度對比
由表4可知,利用線性回歸模型對在線短租房的價格進行預測時精度較低,其R2值僅為0.38,而XGBoost模型在未調參時R2值可以達到0.50,通過網格搜索法調參可以達到0.60,而且MAE和MSE的值在XGBoost模型中也明顯下降,可見XGBoost模型相較于線性回歸模型來說,擬合效果得到了較大提升。圖1展示了XGBoost模型中各特征的重要性排序。
通過圖1可以看出,在眾多影響因素中,浴室數和是否在市區對房源的價格影響最大,是否為整租、可容納人數和臥室數對房源的價格影響也比較大,可見房源的基礎設施和基本屬性對房源價格起著決定性作用。房東的基本情況、在線預訂規則和房客的評價信息雖然對房源價格有影響,但不會構成主導因素,不過在擁有同等房源的情況下,房主提高這些軟實力必然會取得較好的收益。

圖 1 XGBoost模型中各特征的重要性排名
本文通過OLS回歸和分位數回歸對短租房價格的影響因素展開研究,借鑒了傳統的分析手段,解釋性比較好,接著使用相比于線性回歸模型精確度更高、更優越的XGBoost構建價格預測模型,當然還有其他機器學習算法值得探索。另外,在模型調參這個環節也有繼續研究的必要。本文使用的網格搜索法比較費時,得到的是局部最優值,可以考慮使用其他優化算法進行調參,提高建模效率。