【7哥導讀】本文是由淘寶搜索算法總監青峰寫的算法現狀,介紹了算法模型、線下評估、線上測試的機制。對於希望了解淘寶搜索算法的同學很有幫助。

作者介紹:青峰,淘寶搜索算法總監

淘寶搜索排序的目的是幫助用戶快速的找到需要的商品。從技術上來說,就是在用戶輸入關鍵詞匹配到的商品中,把最符合用戶需求的商品排到第一位,其它的依次排在後續相應的位置。為了更好的實現這個目標,算法排序系統基本按三個方面來推進:

一.算法模型

當用戶輸入關鍵詞進行搜索的時候,系統依據算法模型來給匹配到的每個商品進行實時的計算,並按照分數的大小對商品進行排序。

對於好的算法模型,首先需要考慮我們能夠有哪些特徵因子可以應用。比如在網頁搜索中,算法模型基本就是按網頁的重要性和相關性給網頁計算一個分數,然後進行排序。這裏的相關性,和重要性就是網頁排序模型中兩個重要的因子。具體來說相關性因子是指搜索關鍵字在文檔中出現的度數,當這個度數越高時,則認為該文檔的相關程度越高。重要度因子比如Google的Pagerank,可以理解為一個網頁入口超級鏈接的數目:一個網頁被其他網頁引用得越多,則該網頁就越有價值。特別地,一個網頁被越重要的網頁所引用,則該網頁的重要程度也就越高。

考慮淘寶搜索的時候,有些特徵因子是很容易能想到的,比如

A.文本的相關性:關鍵詞和商品的匹配,匹配的程度,是否重要詞的匹配,匹配詞之間的距離等,都可能影響相關性。比如搜索“小鴨子洗衣機”的時候,一個商品的中心詞是洗衣機的要比賣洗衣機配件商品的相關性高,小鴨子連在一起的相關性要比“小”和“鴨子”分開時候的相關性高等。文本相關性最基本的計算方式可以參考BM25等。

B.類目熱點:淘寶數據的一個重要特質是每個商品都掛靠在類目屬性體系下面,每個商品都做了一個很好的分類。在搜索過程中,同一搜索詞的大量用戶行為數據很容易聚焦到相應的熱點類目,比如“手機”的搜索行為會集中到手機類目,而不是配件類目。

C.圖片質量:圖片是电子商務網站非常重要的一個數據,圖片是否精美吸引人,圖片上是否有各種各樣的“牛皮癬”,和商品匹配度等都很大程度上影響着用戶的點擊和購買決策。

D.商品質量:每個商品都有不同的質量,商品的描述真實性,是否物美價廉,受人歡迎的程度等

E.作弊因子:類似於全網搜索有關鍵詞堆砌,link spam,網頁重複等等作弊的問題,电子商務搜索也面臨同樣的問題,比如商品關鍵詞堆砌,重複鋪貨,重複開店,廣告商品引流等等,也有商品特有的問題如價格作弊,交易作弊等,需要利用統計分析或者機器學習來做異常行為,異常規律的發現和識別並運用到排序中

F.公平因子:淘寶的商品很豐富,每個搜索詞下都有足夠多的商品在競爭,需要在相似質量的情況下讓更多的商品和賣家有展示的機會,而不是像網頁搜索一樣是一個基本靜態的排序,照成商品點擊和展示的馬太效應。

類似的商品,賣家,買家,搜索詞等方面的特徵因子有很多,一個排序模型就是把各種各樣不同的特徵因子組合起來,給出一個最終的關鍵詞到商品的相關性分數。只用其中的一到兩個特徵因子,已經可以對商品做一些最基本的排序。如果有更多的特徵參与到排序,我們就可能得到一個更好的排序算法。組合的方法可以有簡單的人工配置到複雜的類似Learning to Rank等的學習模型。

那麼如何衡量不同算法之間的優劣呢?

二.線下評估

算法模型的評估一般分為線下的評估和線上的評估,線下的評估很多都體現在搜索中常用的相關性(Relevance)指標。相關性的定義可以分為狹義相關性和廣義相關性兩方面,狹義相關性一般指檢索結果和用戶查詢的相關程度。而從廣義的層面,相關性可以理解為用戶查詢的綜合滿意度。當用戶在搜索框輸入關鍵詞,到需求獲得滿足,這之間經歷的過程越順暢,越便捷,搜索相關性就越好。

在淘寶搜索衡量狹義相關性的時候,一般是使用PI(Per Item)測試的方法:

A.抽取具有代表性的查詢關鍵詞,組成一個規模適當的關鍵詞集合

B.針對這個關鍵詞集合,從模型的產出結果中查詢對應的結果,進行人工標註(人工判斷為相關性好,中,差等).         對人工評測的結果數據,使用預定義好的評價計算公式比如DCG等,用數值化的方法來評價算法模型的結果和標註的理想結果的接近程度

利用人工標註數據來計算相關性的分數,來判斷模型的好壞;在這個過程中人工不可避免的會有主觀的判斷,但綜合了多人的判斷結果還是可以獲得一個有統計意義的結果,另一方面標註數據也可以幫助我們找到一個算法表現不理想的地方,有針對性的提升。

廣義的相關性線下評測比較困難,受人工主觀因素的影響更大,一般使用SBS(Side by Side)的評測方法,針對一個關鍵詞,把兩個不同算法模型產出的結果同時展示在屏幕上,每次新模型和對比模型展示的位置關係都是隨即的,人工判斷的時候不知道哪一邊的數據是新模型的結果,人工判斷那一邊的搜索結果好,以最終的統計結果綜合來衡量新模型和老模型的搜索表現。

線下評測的方法和指標有很多,不同的搜索引擎會關注不同的指標,比如以前Yahoo的全網搜索引擎比較關注RCFP (Relevance,Coverage,Freshness, Perspective)等,淘寶搜索線下評測時候一般統計DCG和SBS的指標。

線下的評測方法從統計上有一定的指導意義,能從一定程度上區分模型的好壞,但要真正驗證算法模型的好壞,還需要接受真實的流量來驗證。

三.線上測試

為了真實驗證一個算法模型的好壞,需要有一個系統能提供真實的流量來檢驗。淘寶搜索實現的BTS(Bucket Testing System)系統就是這樣的一個環境,在用戶搜索時,由搜索系統根據一定的策略來自動決定用戶的分組號(Bucket id),保證自動抽取導入不同分組的流量具有可對比性,然後讓不同分組的用戶看到的不同算法模型提供的結果。用戶在不同模型下的行為將被記錄下來,這些行為數據通過數據分析形成一系列指標,而通過這些指標的比較,最後就形成了不同模型之間孰優孰劣的結論。只要分組的流量達到一定的程度,數據指標從統計意義上就具有可比性。

不同的BTS系統會關注不同的數據指標,在淘寶搜索,有一些重要的指標是很多算法模型測試的時候關注的:

  • 訪問UV成交轉化率:來淘寶搜索的UV,最終通過搜索結果成交的用戶佔比。
  • IPV-UV轉化率:來淘寶搜索的UV,有多少比例的用戶點擊了搜索結果
  • CTR:搜索產生的點擊占搜索產生的PV的比例
  • 客單價:每個成交用戶在淘寶搜索上產生成交的平均價格
  • 基尼係數:基尼係數是一個經濟學名詞,考量社會財富的集中度;如果社會財富集中到很少一部分富人手中的時候,基尼係數就會增大,社會的穩定性和可持續發展性就會出現問題;淘寶搜索借用了這個概念來衡量搜索帶給賣家的PV展示,和點擊的集中度,在保證用戶體驗的前提下,給更多的優質或小小而美的賣家展示的機會。

大部分時候我們都有好幾個模型和功能在線上測試,我們用BTS的方式來觀察測試的情況,如果提升穩定就逐漸開放給所有用戶,如果沒有提升,我們也能從中獲得經驗幫助我們更好的理解用戶。

文章來源:鬼腳七的微信

本文由“人人都是產品經理”QQ群④群的  Charles-PM-北京 推薦