排名演算法(二)--淘寶搜尋排序演算法分析

Eason.wxd發表於2018-12-31

原文:https://blog.csdn.net/u011966339/article/details/78052569 

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

一、演算法模型

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

對於好的演算法模型,首先需要考慮我們能夠有哪些特徵因子可以應用。比如在網頁搜尋中,演算法模型基本就是按網頁的重要性和相關性給網頁計算一個分數,然後進行排序。這裡的相關性,和重要性就是網頁排序模型中兩個重要的因子。具體來說相關性因子是指搜尋關鍵字在文件中出現的度數,當這個度數越高時,則認為該文件的相關程度越高。重要度因子比如 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 的方式來觀察測試的情況,如果提升穩定就逐漸開放給所有使用者,如果沒有提升,我們也能從中獲得經驗幫助我們更好的理解使用者。

相關文章