KDD 2018 | Airbnb用機器學習實現房屋動態定價(不看你就out啦!)
在KDD 2018上,Airbnb的研究人員們發表了一篇名為Customized Regression Model for Airbnb Dynamic Pricing的論文。這篇文章描述了Airbnb使用的動態定價模型,以下是論智對文章的大致介紹。
價格優化的目的是幫助房東制定最優價格。傳統定價策略是為大量相同的產品定價,但在Airbnb沒有相同的產品,因為平臺所提供的房屋都有獨一無二的價值和體驗感受。這樣的獨特性就很難估計傳統定價策略所需要的需求曲線。
“研究人員所提出的策略模型在Airbnb上應用了一年多的時間。第一代模型剛一使用,網站的預定量就得到大幅提升,採用了這一方法的房東們受益也隨之增長。經過多次迭代後,策略模型將進一步改善定價的質量。”
想給Airbnb上所有不同的房間定價是非常有挑戰性的,即使我們可以收集同一區域中的同樣大小的房間,但是其他因素(例如評分星級)也會影響價格。除此之外,由於不同的季節和區域因素,需求也是隨時間波動的。同樣,預定的早晚也是影響價格的因素,預定的越晚,房間預訂成功的機會就越小,這也會導致需求函式的變化。
為了讓房東的受益最大化,Airbnb提出了“Price Tips”和“Smart Pricing”工具。Price Tips可以提供價格日曆,根據房東目前的定價,顯示該房間每天被預定出去的概率是多少。點選某一天,頁面中會顯示Airbnb推薦的價格以及其他資訊。
Price Tips截圖
在Smart Pricing工具中,房東可以設定一個最低值和最高值,之後Airbnb會自動生成不同日期的新價格。
Smart Pricing截圖
在理想情況下,我們會估計一個需求曲線F(P), 在給定價格P的情況下估計房間的需求量,之後選擇P的值,使P×F(P)的值最大。之前我們已經提到過影響價格的因素有很多,而且,由於Airbnb並不是直接控制房間價格的,而是隻能給出“建議價格”,所以想要直接拿不同的定價策略做實驗來觀察市場反應也是不容易的。
Airbnb最終採用的定價系統有三個要素:
一個二元分類模型,預測某一晚某房間預定的概率。
這些預測之後會被輸入到一個定價策略模型中,會對空閒日期提出建議價格。
策略模型會加入其他個性化邏輯,以符合房東的目標、結合特殊事件等等。
定價系統概覽
這篇論文的主要目的是定價策略模型,但是我們首先要簡單瞭解下預定概率模型的細節。
預定概率模型
想知道某件房間會有多大概率被預定,這裡是用的是Gradient Boosting Machines(GBM),除此之外還有一個針對各個市場訓練的模型。對於訓練資料的取樣率在根據各市場密度的不同有所差別:
“房屋密度高的市場能從地理位置這一因素中獲益最多,這裡的取樣率會高於全域性常量的取樣率。”
模型在做決策時考慮了三個方面:
頁面所列出的各項特徵,例如每晚的價格、房間型別、可住人數、房間數量、洗手間數量、房間設施、地理位置、評價、歷史入住率、能否立即預定等等。
時間因素,例如季節、日期、可入住時間等等。
供給因素,例如周圍是否有相似房源、評價、搜尋率等等。
模型在不同價格點預測預定概率,可能會得到一個需求曲線。但是,由於上述的多重影響因素,想得到精確的需求曲線進行價格設定是非常困難的。
“我們試著基於估計的需求曲線,直接應用利潤最大化策略,但是線上的A/B測試結果顯示這些方法在實際中通常會失敗。所以,我們決定找其他的替代方法。”
替代法使用預定概率模型的輸出結果作為定價策略模型的輸入因素之一。
定價策略模型
首先讓我們思考:在缺少最優價的基礎上,訓練定價策略模型時,應該用什麼評估尺度呢?
深思熟慮之後,研究團隊確定了兩種評估尺度:價格下降查全率(PDR)和預定反悔率(BR)。我們曾統計過,某間房間是否在某天被預定出去,以及預定的價格是多少。PDR和BR都能反映出這一點。
假設如果某間房沒能以價格P成功預定,那麼它也一定不會在比P更高的價格上預訂出去。但是如果價格低於P,那麼可能有被預定的機會。PDR就表示當實際價格高於模型的建議價格時,房間未被預定的比例。在下面的圖表中,PDR為0.6(5晚中有3晚沒有被預定出去)。
如果我們只有PDR,那麼最終我們訓練出的模型最後會把指導價格變為零!如果該房間某天被成功預訂,價格為P,並且P≥指導價格,那麼這個指導價格就沒什麼用了。預訂反悔率就抓住了這之中的利潤。BR按以下方法計算:對於所有被成功預訂的日子,取零和預定價格與指導價格之間的百分比之中的最大值。然後從這些值中取中位數。
例如:
BR就是(14,5,6,0,0)的中位數,5%。
現在我們把這些思想合到一個單一的損失函式中,看起來是這樣:
給定引數xi,fθ(xi)是輸出的建議價格,L是下限函式,U是上限函式。
對於預訂出去的日期,下限是預定價格Pi,對於沒有預定出去的日子,是c1Pi,其中c1是0到1之間的常數。
對於沒有被預訂出去的日子,上限是價格日曆中的價格Pi。對於預訂出去的日子,上限是c2Pi,其中c2是大於1的常數。
當建議價格在上下限之間時,損失是零,否則損失就是建議價格和界限之間的距離。
在論文中,作者提到:
“我們並不用相同的常數表示價格增加和減少,因為我們想讓訓練系統非對稱地學習比率。這樣一來,建議價格可以反映需求的敏感度。”
引數θ1和θ2是在Airbnb上400多萬個有效房源中訓練出的,訓練更關注最近的預定行為,從而更好地反映季節訊號。
評估
和直接從預定概率模型中的需求估計曲線定價的簡單策略相比,定價策略模型顯著改善了PDR和BR。
除了定量評估,論文作者還檢查了2018年2月8日生成的未來120晚的價格,下圖分別是針對日本東京和美國加州Lake Tahoe的房源價格走勢:
可以看到,兩地房間的價格都在週末有所上升,並且東京在三月末到四月初的房價也相對較高,因為那正是賞櫻的好時節。“從這兩個案例中,我們看到模型的確能捕捉到時間帶來的房價波動”,研究者說。