美團O2O排序解決方案——線上篇

      美團的願景是連接消費者和商家,而搜索在其中起着非常重要的作用。隨着業務的發展,美團的商家和團購數正在飛速增長。這一背景下,搜索排序的重要性顯得更加突出:排序的優化能幫助用戶更便捷地找到滿足其需求的商家和團購,改進用戶體驗,提升轉化效果。

      和傳統網頁搜索問題相比,美團的搜索排序有自身的特點——90%的交易發生在移動端。一方面,這對排序的個性化提出了更高的要求,例如在“火鍋”查詢下,北京五道口的火鍋店A,對在五道口的用戶U1來說是好的結果,對在望京的用戶U2來講不一定是好的結果;另一方面,我們由此積累了用戶在客戶端上豐富準確的行爲,經分析獲得用戶的地理位置、品類和價格等偏好,進而指導個性化排序。

      針對美團的O2O業務特點,我們實現了一套搜索排序技術方案,相比規則排序有百分之幾十的提升。基於這一方案,我們又抽象了一套通用的O2O排序解決方案,只需1-2天就可以快速地部署到其他產品和子行業中,目前在熱詞、Suggestion、酒店、KTV等多個產品和子行業中應用。

      我們將按線上和線下兩部分分別介紹這一通用O2O排序解決方案,本文是線上篇,主要介紹在線服務框架、特徵加載、在線預估等模塊,下篇將會着重介紹離線流程。

排序系統

      爲了快速有效的進行搜索算法的迭代,排序系統設計上支持靈活的A/B測試,滿足準確效果追蹤的需求。

搜索排序系統

      美團搜索排序系統如上圖所示,主要包括離線數據處理、線上服務和在線數據處理三個模塊。

離線數據處理

      HDFS/Hive上存儲了搜索展示、點擊、下單和支付等日誌。離線數據流程按天調度多個Map Reduce任務分析日誌,相關任務包括:

  • 離線特徵挖掘
    產出Deal(團購單)/POI(商家)、用戶和Query等維度的特徵供排序模型使用。

  • 數據清洗標註 & 模型訓練
    數據清洗去掉爬蟲、作弊等引入的髒數據;清洗完的數據經過標註後用作模型訓練。

  • 效果報表生成
    統計生成算法效果指標,指導排序改進。

  • 特徵監控
    特徵作爲排序模型的輸入是排序系統的基礎。特徵的錯誤異常變動會直接影響排序的效果。特徵監控主要監控特徵覆蓋率和取值分佈,幫我們及時發現相關問題。

在線數據處理

      和離線流程相對應,在線流程通過Storm/Spark Streaming等工具對實時日誌流進行分析處理,產出實時特徵、實時報表和監控數據,更新在線排序模型。

在線服務(Rank Service)

      Rank Service接到搜索請求後,會調用召回服務獲取候選POI/Deal集合,根據A/B測試配置爲用戶分配排序策略/模型,應用策略/模型對候選集合進行排序。

      下圖是Rank Service內部的排序流程。

排序內部流程

  • L1 粗粒度排序(快速)
    使用較少的特徵、簡單的模型或規則對候選集進行粗粒度排序。

  • L2 細粒度排序(較慢)
    對L1排序結果的前N個進行細粒度排序。這一層會從特徵庫加載特徵(通過FeatureLoader),應用模型(A/B測試配置分配)進行排序。

  • L3 業務規則干預
    在L2排序的基礎上,應用業務規則/人工干預對排序進行適當調整。

      Rank Service會將展示日誌記錄到日誌收集系統,供在線/離線處理。

A/B測試

      A/B測試的流量切分是在Rank Server端完成的。我們根據UUID(用戶標識)將流量切分爲多個桶(Bucket),每個桶對應一種排序策略,桶內流量將使用相應的策略進行排序。使用UUID進行流量切分,是爲了保證用戶體驗的一致性。
bucket testing
      下面是A/B測試配置的一個簡單示例。

{
    "search": {
        "NumberOfBuckets": 100,
        "DefaultStrategy": "Base",
        "Segments": [
            {
                "BeginBucket": 0,
                "EndBucket": 24,
                "WhiteList": [123],
                "Strategy": "Algo-1"
            },
            {
                "BeginBucket": 25,
                "EndBucket": 49,
                "WhiteList": [],
                "Strategy": "Algo-2"
            }
        ]
    }
}

      對於不合法的UUID,每次請求會隨機分配一個桶,以保證效果對比不受影響。白名單(White List)機制能保證配置用戶使用給定的策略,以輔助相關的測試。

      除了A/B測試之外,我們還應用了Interleaving[7]方法,用於比較兩種排序算法。相較於A/B測試,Interleaving方法對排序算法更靈敏[9],能通過更少的樣本來比較兩種排序算法之間的優劣。Interleaving方法使用較小流量幫助我們快速淘汰較差算法,提高策略迭代效率。

特徵加載

      搜索排序服務涉及多種類型的特徵,特徵獲取和計算是Rank Service響應速度的瓶頸。我們設計了FeatureLoader模塊,根據特徵依賴關係,並行地獲取和計算特徵,有效地減少了特徵加載時間。實際業務中,並行特徵加載平均響應時間比串行特徵加載快約20毫秒。

特徵類型

      FeatureLoader的實現中我們使用了Akka[8]。如上圖所示,特徵獲取和計算的被抽象和封裝爲了若干個Akka actor,由Akka調度、並行執行。

特徵和模型

      美團從2013年9月開始在搜索排序上應用機器學習方法(Learning to Rank[1]),並且取得很大的收益。這得益於準確的數據標註:用戶的點擊下單支付等行爲能有效地反映其偏好。通過在特徵挖掘和模型優化兩方面的工作,我們不斷地優化搜索排序。下面將介紹我們在特徵使用、數據標註、排序算法、Position Bias處理和冷啓動問題緩解等方面的工作。

特徵

特徵類型

      從美團業務出發,特徵選取着眼於用戶、Query、Deal/POI和搜索上下文四個維度。

  • 用戶維度
    包括挖掘得到的品類偏好、消費水平和地理位置等。

  • Query維度
    包括Query長度、歷史點擊率、轉化率和類型(商家詞/品類詞/地標詞)等。

  • Deal/POI維度
    包括Deal/POI銷量、價格、評價、折扣率、品類和歷史轉化率等。

  • 上下文維度
    包括時間、搜索入口等。

      此外,有的特徵來自於幾個維度之間的相互關係:用戶對Deal/POI的點擊和下單等行爲、用戶與POI的距離等是決定排序的重要因素;Query和Deal/POI的文本相關性和語義相關性是模型的關鍵特徵。

模型

      Learning to Rank應用中,我們主要採用了Pointwise方法。採用用戶的點擊、下單和支付等行爲來進行正樣本的標註。從統計上看,點擊、下單和支付等行爲分別對應了該樣本對用戶需求的不同的匹配程度,因此對應的樣本會被當做正樣本,且賦予不斷增大的權重。

線上運行着多種不同類型模型,主要包括:

  • Gradient boosting decision/regression tree(GBDT/GBRT)[2]
    GBDT是LTR中應用較多的非線性模型。我們開發了基於Spark的GBDT工具,樹擬合梯度的時候運用了並行方法,縮短訓練時間。GBDT的樹被設計爲三叉樹,作爲一種處理特徵缺失的方法。
    三叉樹
    選擇不同的損失函數,boosting tree方法可以處理迴歸問題和分類問題。應用中,我們選用了效果更好的logistic likelihood loss,將問題建模爲二分類問題。

  • Logistic Regression(LR)
    參考Facebook的paper[3],我們利用GBDT進行部分LR特徵的構建。用FTRL[4]算法來在線訓練LR模型。

      對模型的評估分爲離線和線上兩部分。離線部分我們通過AUC(Area Under the ROC Curve)和MAP(Mean Average Precision)來評價模型,線上則通過A/B測試來檢驗模型的實際效果,兩項手段支撐着算法不斷的迭代優化。

冷啓動

      在我們的搜索排序系統中,冷啓動問題[6]表現爲當新的商家、新的團購單錄入或新的用戶使用美團時,我們沒有足夠的數據用來推測用戶對產品的喜好。商家冷啓動是主要問題,我們通過兩方面手段來進行緩解。一方面,在模型中引入了文本相關性、品類相似度、距離和品類屬性等特徵,確保在沒有足夠展示和反饋的前提下能較爲準確地預測;另一方面,我們引入了Explore&Exploit機制,對新商家和團單給予適度的曝光機會,以收集反饋數據並改善預測。

Position Bias

      在手機端,搜索結果的展現形式是列表頁,結果的展示位置會對用戶行爲產生很大的影響。在特徵挖掘和訓練數據標註當中,我們考慮了展示位置因素引入的偏差。例如CTR(click-through-rate)的統計中,我們基於Examination Model[5],去除展示位置帶來的影響。

總結

      本文主要介紹了美團搜索排序系統線上部分的結構、算法和主要模塊。在後續文章裏,我們會着重介紹排序系統離線部分的工作。

      一個完善的線上線下系統是排序優化得以持續進行的基礎。基於業務對數據和模型上的不斷挖掘是排序持續改善的動力。我們仍在探索。

參考文獻

  1. Learning To Rank. Wikipedia
  2. Friedman, J. H. (2001). Greedy function approximation: a gradient boosting machine. Annals of statistics, 1189-1232.
  3. He, X., Pan, J., Jin, O., Xu, T., Liu, B., Xu, T., ... & Candela, J. Q. (2014, August). Practical lessons from predicting clicks on ads at facebook. In Proceedings of 20th ACM SIGKDD Conference on Knowledge Discovery and Data Mining (pp. 1-9). ACM.
  4. McMahan, H. B., Holt, G., Sculley, D., Young, M., Ebner, D., Grady, J., ... & Kubica, J. (2013, August). Ad click prediction: a view from the trenches. In Proceedings of the 19th ACM SIGKDD international conference on Knowledge discovery and data mining (pp. 1222-1230). ACM.
  5. Craswell, N., Zoeter, O., Taylor, M., & Ramsey, B. (2008, February). An experimental comparison of click position-bias models. In Proceedings of the 2008 International Conference on Web Search and Data Mining (pp. 87-94). ACM.
  6. Cold Start. Wikipedia
  7. Chapelle, O., Joachims, T., Radlinski, F., & Yue, Y. (2012). Large-scale validation and analysis of interleaved search evaluation. ACM Transactions on Information Systems (TOIS), 30(1), 6.
  8. Akka: http://akka.io
  9. Radlinski, F., & Craswell, N. (2010, July). Comparing the sensitivity of information retrieval metrics. In Proceedings of the 33rd international ACM SIGIR conference on Research and development in information retrieval (pp. 667-674). ACM.
原文鏈接:http://tech.meituan.com/meituan-search-rank.html
發佈了19 篇原創文章 · 獲贊 71 · 訪問量 42萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章