芝麻HTTP: Learning to Rank概述

来源:https://www.cnblogs.com/zhimaruanjian/archive/2018/02/27/8477085.html
-Advertisement-
Play Games

Learning to Rank,即排序學習,簡稱為 L2R,它是構建排序模型的機器學習方法,在信息檢索、自然語言處理、數據挖掘等場景中具有重要的作用。其達到的效果是:給定一組文檔,對任意查詢請求給出反映文檔相關性的文檔排序。本文簡單介紹一下 L2R 的基本演算法及評價指標。 背景 隨著互聯網的快速發 ...


Learning to Rank,即排序學習,簡稱為 L2R,它是構建排序模型的機器學習方法,在信息檢索、自然語言處理、數據挖掘等場景中具有重要的作用。其達到的效果是:給定一組文檔,對任意查詢請求給出反映文檔相關性的文檔排序。本文簡單介紹一下 L2R 的基本演算法及評價指標。

背景

隨著互聯網的快速發展,L2R 技術也越來越受到關註,這是機器學習常見的任務之一。信息檢索時,給定一個查詢目標,我們需要算出最符合要求的結果並返回,這裡面涉及一些特征計算、匹配等演算法,對於海量的數據,如果僅靠人工來干預其中的一些參數來進行排序的話,是遠遠不能達到要求的,而 L2R 演算法就是用來解決這種問題的,L2R 將機器學習的技術很好地應用到了排序中,並提出了一些新的理論和方法,有效解決了排序的問題,而且效率上相比人工干預也有了幾個數量級的飛躍。

L2R 演算法

L2R 演算法主要包括三種類別:Pointwise、Pairwise、Listwise,下麵分別進行介紹。

1. Pointwise

Pointwise 將問題轉化為多分類或回歸問題。如果歸結為多分類問題,對於某個 Query,對文檔與此 Query 的相關程度打標簽,標簽分為有限的類別,這樣就將問題轉為多分類問題;如果歸結為回歸問題,對於某個 Query,則對文檔與此 Query 的相關程度計算相關度 Score,這樣就將問題歸結為回歸問題。

模型

應用 Pointwise 模型有 Subset Ranking、OC SVM、McRank、Prank 等。

輸入

特定的 Query,文檔的特征向量。

輸出

文檔與 Query 的標簽類別或相關性分數。

損失函數

回歸 Loss、分類 Loss、有序回歸 Loss。

優缺點

Pointwise 演算法實現簡單,易於理解,但它只對給定 Query 單個文檔的相關度進行建模,僅僅考慮了單個文檔的絕對相關度,Pointwise 只學習到了文檔和 Query 的全局相關性,對排序先後順序有一定的影響。在某一些場景下,排在最前面的幾個文檔對排序結果的影響非常重要,如搜索引擎的第一頁的內容非常重要,而 Pointwise 沒有考慮這方面的影響,不對排序的先後順序優劣做懲罰。

2. Pairwise

上文提到 Pointwise 方法只考慮了單個文檔和 Query 的絕對相關度,Pairwise 考慮的則是兩個文檔之間的相對相關度,比較不同文檔的先後順序。Pairwise 方法是目前比較流行的方法,它將整個排序問題轉為二元分類問題,即構建的是一個二分類器,對一個文檔對 <Doc1, Doc2> 做二分類,一類是 Doc1 排序前於 Doc2,另一類則相反,通過兩兩比較,模型可以學習到不同文檔之間的先後順序。

模型

應用 Pairwise 的模型有 Ranking SVM、RankBoost、RankNet、GBRank、IR SVM 等。

輸入

特定 Query,文檔對 <Doc1, Doc2>。

輸出

文檔對偏向得分,{-1, 1}。

損失函數

Pairwise 分類 Loss。

優缺點

Pairwise 方法通過考慮兩兩文檔之間的相關度來進行排序,有一定進步。但 Pairwise 使用的是兩文檔之間相關相關度的損失函數,而它和真正衡量排序效果的指標之間存在很大不同,甚至可能是負相關的,如可能出現 Pairwise Loss 越來越低,但 NDCG 分數也越來越低的現象。另外此方法只考慮了兩個文檔的先後順序,且沒有考慮文檔在搜索列表中出現的位置,導致最終排序效果並不理想。

3. Listwise

Listwise 演算法相對於 Pointwise 和 Pairwise 方法來說,它不再將排序問題轉化為一個分類問題或者回歸問題,而是直接針對評價指標對文檔的排序結果進行優化,如常用的 MAP、NDCG 等。

模型

應用 Listwise 的模型有 ListNet、ListMLE、SVM MAP、AdaRank、SoftRank、LambdaRank、LambdaMART。其中 LambdaMART(對 RankNet 和 LambdaRank 的改進)在 Yahoo Learning to Rank Challenge 表現出最好的性能。

輸入

特定Query,文檔集合

輸出

所有文檔的打分或者排列順序

損失函數

評價指標如 NDCG、MAP 等。

優缺點

由於此種方法是針對評價指標直接進行優化,所以它往往表現出不錯的效果。

評價指標

L2R 評價指標主要有 NDCG、MAP、WTA、MRR 等,下麵分別簡單介紹一下。

1. NDCG

NDCG,全稱為 Normalized Discounted Cumulative Gain,是一種綜合考慮模型排序結果和真實序列之間的關係的一種指標,也是最常用的衡量排序結果的指標,其計算公式如下:

$$ \mathrm{NDCG@K} = \frac{DCG}{iDCG} $$

NDCG 其實是由 DCG 的值計算出來的,分子為模型計算出的 DCG 值,分母則為理想情況下的 DCG 值,而 DCG 的計算公式如下:

$$ \mathrm{DCG@K} = \sum_{i=1}^{k}{\frac {{2^{r(i)}-1}}{\log_{2}{(i+1)}}} $$

在 DCG 的表達式中,$\sum_{i=1}^{k}$ 是求和累積,${r(i)}$ 表示在模型給出的排序中,排名為 i 的元素的實際分數,這裡通過 ${2^{r(i)}-1}$ 運算放大了其分數的差異,$\log_{2}{(i+1)}$ 是每個元素的折價,由於排序靠前的元素被選取的概率更大,所以這裡可以使得排名前面的元素影響權重更大。

2. MAP

MAP,全稱為 Mean Average Precision,即平均準確率。對於每個真實相關的文檔,考慮其在模型排序結果中的位置 P,統計該位置之前的文檔集合的分類準確率,取所有這些準確率的平均值。

對於一個 Query,原本有 4 個相關結果,查詢時將 4 個結果都查詢出來了,其 rank 分別為 1, 2, 4, 7,則 MAP 為 (1/1 + 2/2 + 3/4 + 4/7)/4 = 0.83。對於另一個 Query,原本有 5 個相關結果,查詢只有 3 個相關結果,其 rank 分別為 1, 3, 5,則 MAP 為 (1/1 + 2/3 + 3/5 + 0 + 0)/5 = 0.45。則 MAP = (0.83 + 0.45)/2 = 0.64。

3. WTA

WTA,全稱 Winners Take All,對於給定的查詢 Query,如果模型返回的結果列表中,第一個文檔是相關的,則 WTA =1, 否則為 0。

如對於一個 Query,本來有 5 個相關結果,查詢結果中如果第一個結果是相關的,那麼 WTA = 1,如果第一個結果是不相關的,則 WTA = 0。

4. MRR

MRR,全稱 Mean Reciprocal Rank,是把相關文檔在結果中的排序倒數作為準確度,然後再取平均。

如對於第一個 Query,查詢結果將正確結果排名 rank 為 3,則其 Reciprocal Rank 為 1/3,對於第二個 Query,查詢結果將正確結果排名 rank 為 2,則其 Reciprocal Rank 為 1/2,對於第三個 Query,查詢結果將正確結果排名 rank 為 1,則其 Reciprocal Rank 為 1,則 MRR = (1/3 + 1/2 + 1)/3 = 11/18 = 0.61。

參考資料


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • JS中使用typeof能得到的哪些類型 (undefined, number, string, boolean)屬於值類型 函數、數組、對象、null、new Number(5)都是對象。他們都是引用類型。 typeof 只能區分值類型的詳細類型 typeof 區分引用類型只能區分出fn函數 ...
  • 1.字體大小 font-sizepx/em/rem px像素 em:根據父級的字體大小有關,1em表示是父級字體大小一致 rem:根據html標簽的字體大小有關,1rem表示和html標簽字體大小一致,預設16px, rem:設置 nrem.表示把字體大小設置成和html標簽的字體大小n陪,如果ht ...
  • css三角形 ...
  • 前言 ES6新增了數據類型Set,它是一種類似數組的數據結構。但它和數組的不同之處在於它的成員都是唯一的,也就是說可以用來去除數組重覆成員。 Set本身是一個構造函數用來生成Set數據結構。 const s=new Set(); 使用add()添加成員。也可以在構造函數中傳入數組作為參數 const ...
  • 模式定義 定義一系列演算法,分別封裝起來,讓它們之間可以呼死去那個替換,此模式讓演算法變化,不會影響到使用演算法的客戶 類圖定義 示例 示例來自於Head First上的鴨子例子,一個鴨子的系統,系統中會出現不同的鴨子,一邊游泳一邊叫。綠頭鴨子會飛,會游泳,正常呱呱叫,橡皮鴨子不會飛不會游泳吱吱叫。後期可 ...
  • 工作流模塊 1.模型管理 :web線上流程設計器、預覽流程xml、導出xml、部署流程 2.流程管理 :導入導出流程資源文件、查看流程圖、根據流程實例反射出流程模型、激活掛起 3.運行中流程:查看流程信息、當前任務節點、當前流程圖、作廢暫停流程、指派待辦人 4.歷史的流程:查看流程信息、流程用時、流 ...
  • 說到面向對象這個破玩意,曾經一度我都處於很懵逼的狀態,那麼面向對象究竟是什麼呢?其實說白了,所謂面向對象,就是基於類這個概念,來實現封裝、繼承和多態的一種編程思想罷了。今天我們就來說一下這其中繼承的問題。 好,先不直接上代碼,而是反手來一波文字說明,捋一捋思路。 曾經一段時間因為javascript ...
  • 各行各業,各個領域,各個渠道,都需要有一系列的完整的風險控制,以保證事情向好的方向發展,而免受不可預估的經濟和財產損失而綽手不及。這時候一套完備的風控系統應運而生,以解決實際在生產業務中的各種難題。作為事物的主體,可以採取各種措施和方法,消滅或減少風險事件發生的各種可能性,或減少風險事件發生時造成的... ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...