楠木軒

機器學習在搜索中的應用:個性化排序

由 司徒元基 發佈於 科技

編輯導語:隨着科技的發展,AI、機器學習等逐漸出現在我們的生活裏,有了這些的出現,我們進行搜索時會變得更加準確和智能;本文作者詳細介紹了機器學習在搜索中的應用,我們一起來看一下。

AI、機器學習,是現在媒體的高頻曝光詞,市面上的很多應用都逐漸接入了AI的能力;搜索這樣的‘古董’級產品,其實也是應用機器學習技術的先驅。

本次從搜索的一個場景——搜索結果排序,來聊聊機器學習在搜索產品中的應用。

一、為什麼有機器學習排序

先從搜索的常規三步驟:query解析->召回->排序説起。

用户輸入一個搜索關鍵詞(也稱為query),通過分詞/語義理解後,將從系統數據庫中召回大量相關的內容;接下來的問題就是如何對成百上千條的數據進行排序,把用户搜索意圖最相關的內容排在前面。

1. 傳統的排序方法

排序:是對一系列的數據按某些特徵因子進行排名,特徵的選擇以及特徵權重的賦予;將影響內容排序的先後,一套排序規則的確定通常需要產品專家與算法專家共同設計。

對於特徵的選擇,可以按內容的屬性特徵與文本相關特徵分為兩類。

內容的屬性是由業務性質所決定,比如電商業務,內容屬性特徵就可以包括價格、銷量、加購、收藏、庫存、類目、品牌、上架時間、評論、商家信譽等;視頻類業務就可以考慮播放時長、觀看量、完播率、點贊、收藏、評論數、轉發數、主題類型等。

文本相關特徵,則主要是query和內容的文本屬性,如query對應內容文檔的BM-25、TD-IDF分值、內容文檔的不同範圍(如標題、簡介、廣告詞、URL鏈接、描述等)的語言模型得分等,這一塊主要以算法專家主導。

特徵選取後,再對所有特徵賦予一定權重,最後對加權的特徵計算一個相關性的總分,就可以對結果進行排序,方便理解起見,把排序打分想象為以下的組合公式:

F_score = W1*X1+W2*X2+…+Wn*Xn

X就是某一項特徵,W就是對應特徵的權重係數,在實際應用中,通常可以由產品與算法專家們基於對實際業務的理解並結合定期的數據反饋不斷進行特徵與權重的調整。

2. 機器學習排序

隨着業務愈發複雜,特徵愈發多樣,影響一次搜索的因子可能達到幾十甚至上百個,每個特徵因子都由人工進行調權將變得愈發困難。

那麼能否把專家的經驗固化為系統自動化的方式呢,機器學習排序的方式應運而出。

機器學習,是教會系統從歷史數據的事實中總結經驗,形成規律並對未來新的數據進行預測。

參照傳統專家排序,機器學習解決排序問題的思路大致分為以下三步:定義學習目標、明確學習策略、找到達成目標的最優解。

1)定義學習目標

即系統要解決什麼問題,對於搜索排序通常就是如何更好的提升結果的點擊率;但是結合業務再深挖一步的話,指標選擇可以更細化,比如電商則希望能提升訂單的成交率,視頻則看重點擊後是否能提升觀看時長等——不同的業務目標最終決定了機器要學習成怎樣的結果。

2)明確學習策略

解決的是系統如何去學的問題,為此要給機器確定學習的範圍與學習的養料。

學習的範圍,即判斷系統達成目標需要包含哪些因素,解決思路其實與經典排序的特徵因子選擇的思想同出一源。

讓我們再回看上文提到的排序打分公式F_score=W1*X1+W2*X2+…+Wn*Xn,特徵的個數及其意義,就組成了系統學習的範圍框架;在選擇特徵因子這個過程中,特徵的設計都可以由業務專家們提供指導;當特徵因子的組合能愈發表徵我們的學習目標,模型效果往往愈發逼近業務期望。

比如我們現在要優化電商業務的搜索,假定目標是提升搜索帶來的下單轉化率,那麼可以考慮從如下四個維度構建影響目標效果的特徵:

  • 用户特徵,即用户靜態屬性,如性別、年齡、學歷、地域、收入、婚姻狀況等。
  • 行為特徵,通常是看用户的歷史行為,如上一次的搜索詞、近一週有過點擊次數最多的搜索詞、加購的商品、收藏點讚的商品、近一週瀏覽訪問最多的頻道/商鋪,考慮復購因素還可以納入一段時間(如一個月或三個月)有過購買次數的商品類目等。
  • 交易特徵,即關注用户的消費偏好,如近期(一週/一個月)消費金額、消費頻次,是否分期用户、是否會員等。
  • 商品特徵,即商品本身屬性,如上文提到的價格、庫存、類目、品牌、評價、銷量(通常要考慮時間衰減性,計算一定時間週期如一週的數量)等。把這些與業務屬性相關的因素梳理好,結合文本相關特徵,也就大致把機器學習的邊界框定了下來。

學習的養料,即訓練模型的數據,我們需要從學習目標與學習範圍出發,為機器構造適合學習的內容。

特徵敲定了,接下來就是把數據來源拿過來——數據採集,如商品交易數據源頭在訂單系統,另外如行為數據,則需要對前端進行埋點採集;這可能會需要與多個業務系統對接或者從數據倉庫中取數,在系統對接之前,一定要先確定數據的口徑是否與特徵意義保持一致。

3)找到達成目標的最優解

最後一步其實就是建模的過程,包括模型選擇、模型訓練、模型評估;有了特徵數據,算法工程師可以依據經驗選擇某類機器學習的模型,對特徵進行組合與學習,最終完成對目標的求解。

以上是機器學習排序構建的思路,下面將用白話的方式簡要介紹排序學習的算法原理,不關注技術算法的同學可以略過~

二、LearningToRank

LearningToRank(LTR)是一種用來解決排序問題的算法框架思想,本質上屬於有監督學習的過程,感興趣的同學可以參考文獻1、2等進一步研究。

1. 學習方式分類

LTR按學習方式的不同分為三類,單文檔方法(Pointwise)、文檔對方法(Pairwise)和文檔列表方法(Listwise)三類。

1)Pointwise

單文檔方法是對於給定的查詢query,某一單個文檔結果與查詢的關聯程度,例如查詢‘華為’,點擊了華為手機,那麼只有華為手機是與搜索詞’華為’關聯的,華為平板電腦、華為手錶都是該查詢詞的負樣本。

2)Pairwise

文檔對方法考慮的是對於給定查詢詞query,返回的結果中兩個文檔對之間的相對相關度,比如搜‘炸雞’,返回結果的相關性‘KFC’>’麥當勞’,以“炸雞,(KFC>麥當勞)”這樣的組合方式對機器進行訓練,最終的序列是考慮了兩兩相關度比較之後的結果。

3)Listwise

文檔列表方法考慮的是給定查詢下的文檔集合的整體序列,直接優化模型輸出的文檔序列,使得其儘可能接近真實文檔序列。

2. 模型實現

基於上述排序學習的思想,目前部分模型在原生框架中已經集成了對L2R的實現。

1)樹模型

樹模型可以理解為是一系列的if-else規則的組合,通過每一個特徵的決策來影響最終結果的判斷輸出,其中的典型代表是XGBoost / LightGBM。

XGBoost / LightGBM模型本身已支持對排序問題的訓練,通過設置模型中的參數即可直接訓練LTR問題。(XGBoost是處理分類/迴歸的通用模型,並不是為解決排序問題而提出,在這裏不得不驚歎其不愧為機器學習界的大殺器~)。

2)TF-RANKING

這是谷歌公司在2018年提出的基於TensorFlow的LTR解決方案,嚴格來説其並非一種模型而是一個框架;其中包括一整套學習到排名的算法,可自定義損失函數及模型評估指標,對Pairwise和Listwise都提供支持。

三、小結

排序是搜索流程中最重要的問題之一,是最終直接面向用户的環節;排序結果的好壞很大程度上影響用户體驗和商業轉化,也因此排序流程很早就開始引入機器學習的方式來進行優化。

當然客觀的説,機器學習也並非是優化這一問題的最佳方式,某些業務通過專家規則的方式依然有很好的效果。

搜索排序是伴隨着我們的業務發展將不斷優化的工作。

參考鏈接:

[1]https://zhuanlan.zhihu.com/p/93196423

[2]https://blog.csdn.net/ld326/article/details/81609783

[3]https://mp.weixin.qq.com/s/UpN7tAMjbFLSPcDYsWaykg

[4]https://blog.csdn.net/weixin_44220002/article/details/85212636

作者:策略伽;公眾號:策略伽

本文由 @策略伽 原創發佈於人人都是產品經理,未經作者許可,禁止轉載。

題圖來自Unsplash,基於CC0協議。