Airbnb 透過機器學習優化搜索排序,成長其 Experience 服務的訂單數
原文出處:Machine Learning-Powered Search Ranking of Airbnb Experiences
Airbnb Experience 是 2016 年底推出的服務,讓屋主可以提供旅客在地體驗行程。他們從剛推出時在 12 個城市有 500 個行程,一路成長到現在全球 1,000 個地點有超過 20,000 個活躍的體驗行程。而在成長整個服務規模時,他們也意識到快速地幫助用戶找到合適的行程,並提供個人化的搜尋結果,至關重要。這篇文章就回顧了他們如何透過機器學習的方式,一步一步優化排序的結果。
讀完文章後,我的三個的 take-away:
- 不論產品處在哪一個階段,都可以透過機器學習的方式來找出成長的關鍵指標:常常聽到有人問,我目前的使用者數還很小,資料量少,應該要等到累積到一定的使用者後再導入機器學習的技術?事實上,只要根據資料量選擇適當的模型和其複雜度,任何階段都可以透過機器學習來達到商業目標。這篇文章就提供了一個很好的示範。
- 以終為始:機器學習的建模只是整個專案的一部分,團隊對於要達成的目標一開始就非常清楚,因此可以規劃要達成最終目標在不同階段所要達成的合理的里程碑,進而設計實驗,工程實作,上線測試等等。這需要一個相當有經驗且技術能力強,具有執行力的跨領域團隊。
- 使用者導向:機器學習的結果不該是個黑盒子,他們清楚知道最終使用工具的人並不具有機器學習的背景,因此透過圖表讓預測的結果可以自我解釋,以幫助使用工具的人做出商業決策。
不需要等到有夠多的資料量,當資料量還很少時,就可以透過機器學習來成長用戶
下表歸納了在服務規模的不同階段,資料量的大小,建模和測試的方式,使用的 feature 類型,以及最終達到的結果。可以發現在他們還只有 500 個行程,50,000 個訓練資料集,只有一種 feature 類型,只能 offline 測試的時候,就能提高訂房率達 13%,而當他們有超過 16,000 個體驗行程, 2 百萬個訓練資料集,模型可以使用三種類別的 feature 後,又再將訂房率往上提高 5.1%。隨著用戶的成長,以及基礎建設日趨完備後,他們可以開始嘗試不同的實驗,但最重要的,是他們從服務發布初期,就透過選用適當的模型與 feature,讓機器學習的成果可以提供足夠的商業價值。不但在初期就增強了團隊的信心,也為後續的線上實驗需要更多的資源,提供了強大的利基點。
結果導向,並在不同階段選用適當的工具,以及實驗方法
他們將整個專案分成三個階段,下圖 outline 了不同階段所使用的資料量級,測試方式,feature 類別等資訊。
第一階段,在資料量有限的情況下,他們只能先透過隨機的排序,然後逐步搜集用戶的行為資料,在線下建模和測試模型。他們使用共 25 個與 Experience 服務相關的指標作為 features,例如服務時間的長短,價格,類別,評價,點擊率等等。實作上用梯度提升決策樹 (Gradient Boosting Decision Tree, GBDT) 來訓練模型,跑在 Airflow 上,並用 AUC 和 NDCG 來評估模型的好壞。最後,用 A/B testing 的方式上線測試,結果是提高訂房率達 13%,團隊士氣大振!
第二階段,加入了個人化作為訓練模型的 feature。這邊的個人化可分為兩大類:一是根據用戶已下訂的房間所提供的 feature,比如說房間和行程間的距離,旅程的時間和類型等等;二是從用戶的點擊行為所提供的 feature,例如用戶感興趣的行程的類別,或是用戶搜索的時間和行程所能提供的時間等等。一部分的結果如下圖所示,用戶搜尋的時間與行程的時間的差距越小,訓練出來的模型分數越高,說明了很多時候行程不是事先購買好,而是到了當地,當下不曉得要去哪裡的時候,才上 Airbnb 搜尋體驗行程,然後立即使用。
在此階段,還是只能用離線的方式做測試。模型產出的結果是每個 User ID 相對應的行程的矩陣,也是使用 A/B testing 的方式,結果訂房率比起第一階段的結果再增加了 7.9%!
第三階段,可以開始使用用戶即時 query 的行為作為訓練模型的 feature,比如說時間區間,地點,同行旅客的人數,瀏覽器語言,國家等等。這邊還蠻有趣的是,根據他們的歷史資料顯示,去巴黎旅遊的日本遊客,對法式料理與自製香水類的行程特別感興趣。透過將這些 insight 變成個人化模組的 feature。最終,他們又將訂房率往上提高了 5.1%。
透過儀表板來監測搜索排名的變化,還可自我解釋機器學習預測的結果
對於機器學習的解果,有個很重要卻常被忽略的是,是否可以透過資料的視覺化來解釋模型預測的結果,有兩個原因:
- 讓使用的人清楚知道是什麼因素會對最終結果產生影響,幫助他們做出商業決策
- 監測搜索排名的趨勢,確保結果符合預期中的行為
他們用 Apache Superset 和 Airflow 來打造兩種儀表板:
- 每個行程在當地的搜索排名變化,以及會影響模型的 feature 的數值
- 不同等級的行程在當地市場的排名趨勢 (例如:五星的行程在東京的排名趨勢圖)
雖然做實驗,訓練模型的人是資料科學家,但最終實際上線,讓實驗結果產生商業價值的人,通常會是行銷,或是其他團隊的人。提供他們可以一目瞭然的結果,不但可以增加他們的信心,讓他們知道可以採取甚麼行動,也才能讓辛苦產生的實驗結果,實際上線並達到最大的商業價值。
其他 Airbnb 將機器學習應用在商業上的案例: