在前兩天的文章中,我們提到 Airbnb 為了做出更好的房源排序模型,提出「ABCD 改善方案」:
A:模型架構(Architecture):觀察使用者需求後,釐清問題、改善模型。
B:偏誤(Bias):消除模型或過去資料中的系統性偏誤(systematic biases)。
C:冷啟動問題(Cold start):沒有歷史訂購紀錄的新房源,要如何排序?
D:搜尋結果的多樣性(Diversity of search results):如何增加搜尋結果的多樣性,避免集中於特定房源?
今天,讓我們來聊聊關於 C 和 D 的問題與解法吧!
冷啟動(cold start)是推薦系統很常遇到的問題,旨在解決新用戶、或很久沒有使用產品的用戶,缺乏初始資料以產生推薦清單的狀況。
對於 Airbnb 而言,冷啟動(cold start)有兩種探討的面向:用戶和房源,不僅只有新用戶缺乏資料,新上線的房源也同樣沒有任何歷史紀錄。他們發現新房源的排序都比較低,且認為房源排序的冷啟動(cold start)中包含用戶層級的問題,因此決定著手處理房源層級的冷啟動(cold start)問題。
一個新房源和舊房源最大差異是什麼?很明顯的,就是用戶的互動行為資料,包含點擊率、訂購數、瀏覽數、評論數等等。因此,如果能夠有一個模型成功預測用戶參與一個新房源的行為,則問題就迎刃而解了。
換而言之,Airbnb 將新房源冷啟動(cold start)問題重新定義為「預測新房源的用戶參與行為」,並執行以下步驟以建立預測模型:
結果:
Airbnb 在檢視表現最好(i.e., NDCG 分數最高)的房源排序模型時,發現產生的結果缺乏多樣性,每個排序清單中前幾名的房源,其特徵都非常接近,例如地點、價錢等等。不過,這並不會讓人太過意外,畢竟預測模型只是在學習某一組用戶特徵和搜尋關鍵字(query)要產生什麼清單內容,無法比較或學習不同推薦清單的差異。
舉例而言,在搜尋大城市的房源時,結果通常座落於市中心或是熱門景點附近,而最理想的方式是考量用戶行為資料後,決定推薦房源的地點。例如在 Orlando,商業客會希望住在市中心,而家庭旅客會希望住在迪士尼樂園附近,能否讓搜尋結果更貼近用戶需求呢?
跟之前提過的推薦系統一樣,Airbnb 的搜尋模型也是分成兩個階段:
他們決定從第二階段下手,重新設計測量房源距離的方式、也讓 loss function 得以同時考慮相關性和多樣性,並將用戶資訊納入模型的特徵。
並使用一個新的 RNN 模型,目的是生成 Query Context Embedding 以用來重新排序每個房源清單,例如,如果發現一個房源是在某地區的唯一房源,則將其排名往上。
最後,線上測試的結果顯示 NDCG 增加 1.2%,整體訂房率增加 0.44,並且新用戶的訂房率也提升 0.61%。
以上是關於 Airbnb 房源排序模型之問題與解法的介紹。
謝謝讀到最後的你,如果喜歡這系列,別忘了按下喜歡和訂閱,才不會錯過最新更新。
也歡迎到我的 medium 逛逛!
Reference: