推薦演算法— 從 AsiaYo 的小改善來看旅遊業內的 insight

Do-Re Huang
AsiaYo Engineering
Published in
7 min readDec 3, 2021

在電商市場當中,消費者時常接受到的廣告服務與推薦機制,其實就是將傳統商場上店員的介紹與試用品,轉變為透過自動化系統建立的商品推薦機制。

舉例來說,以往在出門前往異地旅遊或洽公時,人們多半是透過旅遊雜誌的介紹、或者親朋好友遊歷當地的經驗,來決定旅館以及行程。

然而,這些左一言右一句的推薦套用在電商平台的使用體驗當中,透過系統化的推薦給予旅客們更加貼近需求的建議;在 AsiaYo ,我們稱它為排序演算法 AY sort。

AsiaYo訂房平台的頁面,然而對於客戶來說,哪一間才是最吸引人的呢?

在開始之前,讓我們先簡單回顧一下原有的 AY sort 是什麼樣的面貌。

舊版 AY sort 架構:[ (上架時長 <= 10日) = Y ] x 推廣遞減權重
+ [ (10日 < 上架時長 <= 20日) = Y ] x 推廣遞減權重
+ [ (20日 < 上架時長 <= 30日) = Y ] x 推廣遞減權重
+ ( 一個月內訂單數 ) x 加分權重
+ ( 一個月以上訂單數 ) x 遞減加分權重
- ( 一個月內拒絕單數 ) x 懲罰權重
if ( 4分以上評論則數 <= 10 ): + ( 4分以上評論則數 ) x 推廣權重
if ( 4分以上評論則數 > 10 ): +推廣權重 + ( 4分以上評論則數 ) x推廣權重

從公式上面做初步分析,大致上可以拆解成:

  1. 上架日期遠近
  2. 訂單多寡
  3. 旅客主觀感受

上述三個主架構區塊,可以推測出原有邏輯設計對於客戶與商品重視的重視層面。

以新上架旅宿的區塊看,給予得分上的 bonus 確實算是有補足因資料缺失而不足以評斷旅宿好壞的部份。但時長上的設置、權重的比例,對於旅客需求、CTR 和營收的影響,卻缺少了更精確且量化的證據來佐證。同時,因為市場環境變遷,旅遊市場現況已和疫情前大有不同,並非可以用過往的單一商業策略來進行類比。

再來則是訂單多寡的部份,它們給予了近期訂單較高的權重,因應市場趨勢進行頁面排序上的洗牌;但不完整的滾動窗口機制,卻有可能造成過去訂單的得分過度累積,反應市場現況的效果將失真。

以時間性的觀點來看,原有設計在上架新舊與訂單多寡上,都針對『時間』,給予了存在但不精確的遞減權重與滾動窗口,藉此反應因時間上消耗帶來的邊際遞減效果。

你知道嗎,根據 AsiaYo 的統計,台灣每年有十幾萬人會提前半年規劃旅行

接下來就是我們按照客戶的訂單屬性資料,來檢驗跟驗證如何針對既有的資料來進行探勘跟修正。

在客戶資料的部份,首先我們要先簡單介紹一下外顯資料(explicit data)與內顯資料(implicit data)的概念。假設一筆訂單裡面,記載了一位客人他對於旅館的良好體驗評論,以及連續一直訂房的紀錄,那麼客戶“主動表示”給予的體驗良好的這個評論,就是外顯資料;而連續一直訂房的紀錄,雖然沒有主動表達出對於飯店居住體驗的感想,但是藉由不斷回流的行為,我們也可以推斷其對旅宿的滿意度是可期的,這種資料就是內顯資料,也就是需要透過解構與分析來判斷其資料對目標物的評價為何。

由於我們著重在用戶體驗與其他項目的交互作用結果,所以在本次的介紹當中,我們會簡單介紹幾項以內顯資料作為分析基準的結果。

作為旅遊 OTA 經營方,自然會希望客戶能頻繁反覆地來進行消費,同時也希望旅館可以提高滿房率;因此,我們選擇將與這些項目相關的因子投入模型檢測,再來判斷其交互作用關係是否足以影響營收的表現。

這邊我們採用的是 GAM 模型(generalized additive model)。建模上的前提假設相對寬鬆,可因應線性與非線性大量變數進行同步處理;且針對非線性資料(e.g. one-hot encoding)處理能力相對於傳統線性模型更準確。迴歸模型中部分或全部的自變數採用平滑函式,降低線性設定帶來的模型風險,同時解決當解釋變數個數較多時 logistic 迴歸容易引起的維度災難。

在 AY sort modeling 的實做方面,先將變數進行分組便於觀測其交互作用。分組的原則則是以性質類似作為基準,主要四大組別分別為:

  1. Group 1: 高鐵專案、親子友善、露營組合、包棟旅宿等等
    #和活動檔期有關的項目
  2. Group 2: 訂單補助情形,暑期訂單表現、國定假日訂單表現、週末訂單表現、週間訂單表現、旅館所在城市
    #週期性相關的項目
  3. Group 3: 訂單間隔項目、旅宿簽約時間遠近、近6週訂單表現、近9週訂單表現、近期訂單成交金額平均、近期旅宿評論得分
    #AY sort績效相關項目
  4. Group 4: 四季、簽約後近幾週表現情形
    #季節與上架推廣相關項
各式旅館都在積極地和同性質旅宿競爭著

經過建模後,再透過 step AIC 篩選變數,並降維處理來得到初步結果。接著,與上述的相加型模型進行檢定,看是否有顯著差異。最後再藉由這些結果來改善跟修正演算法的既有框架。

GAM 建模結果畫面,但實際上還有更多更細節的結果喔

在透過建模結果更加確定實際的修正方向之後,正式的 AY sort 架構所著重的部份如下:

  • 新上線旅宿的福利權重與權衡
  • 短期與中長期訂單的轉單效益
  • 失敗訂單所帶來的負面影響
  • 旅宿行銷活動配合度
  • 旅宿標籤與評論的交互性

顯而易見地,透過相關的研究內容,主要的調整概項與發現也涵蓋了許多項目。

首先,對於新旅宿的版位福利上,以上架時長進行的分析結果並不有效,但考量加強新旅宿的曝光仍然具有重要商業意涵,故保留此參數,但稍微調低權重,以提高演算法整體對營收預測的精準度。

而在旅宿轉單表現,無論是近期訂單、在指定假期的單數、抑或是特定行銷活動合作訂單量,當它們作為單一變數,與總營收的迴歸關係都是十分顯著的。而與其他變數同時交互分析時,也有多項呈現顯著,表示訂單數與其他參數多有 interaction,對總營收貢獻度更大,故提高其影響權重、並修正其計算邏輯。

至於在被取消訂單方面,建模的結果指出取消與拒絕訂單和營收的成長是顯著地正相關。雖然與直觀邏輯有點衝突,但對於訂單量龐大的熱賣旅宿而言,確實比一般旅宿更容易遇到因為各式原因而更改行程的旅客。有鑑於模型結果的佐證,我們也決定在這部份的懲罰權重進行下調修正,避免影響旅宿應有的排序順位。

另外,在旅宿差異化服務方面,由於包棟和親子友善在四季的營收與訂單表現上,都有明顯優於其他旅宿間,同時也得到了模型結果上的證實。另外透過 CNN-LSTM 的評論內容訓練,我們亦發現這類型旅宿的正面評論,往往也能帶給他們更佳的營收表現。基於這些結果,我們也將其以降維的方式納入計算邏輯。

親子旅宿往往都是那麼討人喜歡

透過上述各種分析的結果,其實除了在改善我們的推薦流程與體驗上有了相當大的進展,也讓我們與旅宿、以及顧客群的關係有了更進一步的理解。雖然演算法的內容與發展一定是一段沒有盡頭的最佳化旅程,但是在不斷滾動式修正的路上,期待我們給予所有客戶的服務也能隨著更多被發掘出來的產業 insight,逐漸細緻而體貼。

--

--