Learn To Rank

Learn To Rank

在信息检索中,给定一个query,搜索引擎召回一系列相关的Documents,然后对这些Documents进行排序,最后将Top N的Documents输出。

排序问题最关注的是各Documents之间的相对顺序关系,而不是各个Documents的预测分最准确。

训练数据

方法人工标注行为日志
简介人工对抽样出来作为training data的query-doc pair进行相关程度的判断和标注根据用户的实际搜索和点击行为,来判断query-doc的相关性。比如同一个query下,不同doc的点击数来作为它们相关程度的大小
优点准确性高无须人工干预,成本低
缺点代价高且耗时用户行为日志存在大量偏差,比如:
  • 位置偏差:用户倾向于点击列表靠前的item
  • 样本选择偏差:有用户点击的query知识总体query的一个子集,无法获取全部的query下doc的label

评价指标

这里主要介绍

三大rank算法

pointwise

pointwise方法损失函数计算只与单个document有关,本质上是训练一个分类模型或者回归模型,判断这个document与当前的这个query相关程度,最后的排序结果就是从模型对这些document的预测分值进行一个排序。

  • 优点:实现简单
  • 缺点:
  • 精确打分,而不是相对打分,无法实现排序
  • 损失函数也没有建模到预测排序中的位置信息

pairwise

pairwise方法在计算目标损失函数的时候,每一次需要基于一个pair的document的预测结果进行损失函数的计算。其中模型输入和对应的标签label形式如下:

输入:一个文档对(docA, docB)

输出:相对序(1 or 0.5 or 0)

优点:实现简单;建模了两个文档相对序关系

缺点

  • 样本对量级高, O ( n 2 ) O(n^2) O(n2)
  • 对错误标注数据敏感,会造成多个pair对错误
  • 仅考虑了文档对pair的相对位置,仍然没有建模到预测排序中的位置信息
经典模型RankNet
www.zeeklog.com - Learn To Rank

listwise

Listwise方法是直接对整个list的document的排序进行优化,目标损失函数中优化整个list的document的排序结果。其中模型输入和对应的标签label形式如下:

输入: 整个list document

输出: 排序好的document list

优点:直接建模list内的所有文档序关系,与评估目标一致

缺点

  • 计算复杂度高
经典模型ListMLE

直接以真实标签顺序为目标,最大化预测结果排序与目标一致的概率即可。

www.zeeklog.com - Learn To Rank

参考

Read more

使用 VS Code 连接 MySQL 数据库

使用 VS Code 连接 MySQL 数据库

文章目录 * 前言 * VS Code下载安装 * 如何在VS Code上连接MySQL数据库 * 1、打开扩展 * 2、安装MySQL插件 * 3、连接 * 导入和导出表结构和数据 前言 提示:这里可以添加本文要记录的大概内容: 听说VS Code不要钱,功能还和 Navicat 差不多,还能在上面打游戏 但是没安装插件是不行的 发现一个非常牛的博主 还有一个非常牛的大佬 提示:以下是本篇文章正文内容,下面案例可供参考 VS Code下载安装 VS Code下载安装 如何在VS Code上连接MySQL数据库 本篇分享是在已有VS Code这个软件的基础上,数据库举的例子是MySQL 1、打开扩展 2、安装MySQL插件 在搜索框搜索 MySQL和 MySQL Syntax,下载这三个插件 点击下面的插件,选择【install】安装

By
RustFS 保姆级上手指南:国产开源高性能对象存储

RustFS 保姆级上手指南:国产开源高性能对象存储

最近在给项目选型对象存储的时候,发现一个挺有意思的现象:一边是MinIO社区版功能逐渐“躺平”,另一边是大家对存储性能和安全性的要求越来越高。就在这时,一个叫 RustFS 的国产开源项目闯入了我的视野。 折腾了一阵子后,我感觉这玩意儿确实有点东西。它用Rust语言写,天生就带着高性能和内存安全的基因,性能号称比MinIO快一大截,而且用的是对商业友好的Apache 2.0协议。今天,我就手把手带大家从零开始,搭建一个属于自己的RustFS服务,体验一下国产存储的威力。 一、 RustFS是什么?为什么值得你关注? 简单说,RustFS是一个 分布式对象存储系统 。你可以把它理解成一个你自己搭建的、功能跟阿里云OSS、亚马逊S3几乎一样的“私有云盘”。 但它有几个非常突出的亮点,让我觉得必须试试: * 性能猛兽 :基于Rust语言开发,没有GC(垃圾回收)带来的性能抖动,官方数据显示在4K随机读场景下,性能比MinIO高出40%以上,内存占用还不到100MB,简直是“小钢炮”。 * 100%S3兼容 :这意味着你现有的所有使用S3 API的代码、工具(比如AWS

By