关于检索评价的一份介绍

在信息检索中,当我们进行完检索评价后就需要对于检索所得的结果进行评价,类似于机器学习中的模型评估那样,因此我们需要一些度量方式来对于信息检索的结果进行评价。

在这篇文章中,我就将介绍一些标准用于度量信息检索的结果。具体将包含Cranfield范式,Precision、Recall、P@n、MAP、MPP、F等许多评价指标。

一、Cranfield范式

Cranfield范式是指一种用于信息检索系统评估的标准方法,它起源于1960年代英国Cranfield大学的一项研究工作。这项工作的目标之一是建立一个基准测试环境,用于比较不同的信息检索技术的有效性。它本身并非一种评价指标,而是一种方法论,描述如何进行信息检索实验的设计与评价。

Cranfield主要由4部分组成,分别为数据集、查询集、相关性判断与检索指标。对于前三者在此不必多言,但对于检索指标我们需要知道:Cranfield范式引入了用于评估检索效果的度量标准,最著名的就是查准率(Precision)和查全率(Recall)。查准率衡量的是检索结果中相关文档的比例,而查全率衡量的是所有相关文档中有多少被检索到了。

二、检索指标

2.1 Precision

Precision可以被翻译为精度,其代表在检出文档中相关文档的比例,表达式为:

Precision=p=\frac{|R\bigcap A|}{A}

其中,R表示相关文档,A表示检出文档。

举个例子:

对于一个查询q有如下的结果:

1.d123     2.d84~    3.d345    4.d1~    5.d11

其中有加“~”表示其是相关文档,而R由专家评估可得R={d1,d84,d100}

那么可知R=3,A=5,将之带入式子可得:

p = \frac{2}{5}=0.4

2.2 Recall

Recall可以被翻译为召回率,其是指相关文档与检出文档的比例,表达式为:

Recall=r=\frac{|R\bigcap A|}{R}

其中,R与A的含义同上。

同样举个例子:

例子的已知条件同上,则带入表达式得:

r=\frac{2}{3}\approx 0.667

对于上述的Precision和Recall在python的sklearn中存在现成的函数去调用,具体代码如下:

from sklearn.metrics import precision_score, recall_score# 假设我们有一组预测的相关文档和真实的文档列表
# 预测的相关文档(预测标签)
predicted_relevant = [1, 0, 1, 1, 0]  # 假设1表示相关,0表示不相关# 真实的相关文档(真实标签)
true_relevant = [1, 1, 1, 0, 0]  # 同样,1表示相关,0表示不相关# 计算Precision
precision = precision_score(true_relevant, predicted_relevant)
print(f"Precision: {precision:.2f}")# 计算Recall
recall = recall_score(true_relevant, predicted_relevant)
print(f"Recall: {recall:.2f}")

最终输出为:

Precision: 0.67
Recall: 0.67 

2.3 P@n

“前n平均精度”(Precision at n,简称 P@n)是一个用于评估信息检索系统性能的指标,特别是在搜索引擎、推荐系统以及分类任务中。它衡量的是检索结果列表中前N个结果的精确度,即在这n个结果中有多少是相关(正确)的结果。

其表达式为:

p@n=\frac{number of relevant items}{n}

一般情况下,我们通常选择5或10,即p@5或p@10。

2.4 MAP

平均精度均值(MAP)的主要想法是产生一个关于排序的总结性单一数值,而这个通过对每个新观察到的相关文档计算精度并做平均获得的。

其中,AP 是针对单个查询计算的,而 MAP 则是针对多个查询的 AP 的平均值。AP 考虑了检索结果中相关文档的排列位置,而不仅仅是相关文档的数量。

对于之前的例子我们可以先算出它的AP,AP=0.5,此时如果我们再存在一个查询q2,则可以算对应的AP,然后求和相除即可得到MAP来。

2.5 R精度

R精度的思想是在排序的第R个位置计算精度,从而为该排序生成一个总计欸选哪个的单一值,其中R是当前查询的相关文档总数。

2.6 MRR

平均查询倒数(MRR)是所有排序倒数的均值,即:

MRR=\frac{1}{N_{q}}*\sum _{i=1}^{N_{q}}\frac{1}{S_{correct}(R_{i})}

举个例子,还是之前的那些已知信息,则有:

我们来看如何计算单个查询的Reciprocal Rank(RR)。在这一组结果中,相关文档出现的位置如下:

d84~ 出现在位置2

d1~ 出现在位置4

由于d100不在检索结果中,我们只考虑出现的两个相关文档。

对于这个查询来说,我们取第一个相关文档的位置来计算RR:

第一个相关文档是d84~,位于第2位,所以RR = 1/2 = 0.5

如果我们只有一个查询,那么MRR就是这个查询的RR值: MRR=RR=0.5

2.7 E值

E值是一种结合了精度和召回率的度量方法,其可以定义为:

E(j)=1-\frac{1+b^2}{\frac{b^2}{r(j)}+\frac{1}{P(j)}}

其中r(j)是排序中第j个位置的召回率,p(j)是在排序中第j个位置的精度。

此时,如果b=0,那么原式变形为:

E(j)=1-P(j)

如果b->\inftyb,那么:

E(j)=1-r(j)

2.8 F值

调和平均(Harmonic Mean)有时也被称为F值,其计算方式如下:

F(j)=\frac{2}{\frac{1}{r(j)}+\frac{1}{P(j)}}

其中,r(j)表示在排序中第j个位置的召回率,P(j)表示在排序中第j个位置的精度。

这些是有关检索评价的一部分指标,除此之外还有许多,我将会在之后的文章中再详细介绍。

此上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/57213.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

双十一宠物空气净化器应该专门选才不踩坑?有哪几款推荐

对于我来说,双十一可以什么都不买,唯独不能缺了宠物空气净化器。 还不是养的“逆子”掉毛太严重了,很多次都是和我家猫待在一起的时候就会发现手机屏幕上都是猫毛,更过分的是就连鼻子里、眼睛里都是猫毛。我也不是没试过用其它除毛…

Java动态代理 | 代码实现Demo

一、代码实现 1. 编写UserService接口 import java.util.List;public interface UserService {/*** 登录*/void login(String userName, String password);/*** 查询用户列表*/List<String> getUserList(); }2. 编写UserService接口实现类 import java.util.Arrays; i…

JS两数之和

文章目录 &#x1f453;题目描述&#x1f576;思路&#x1f97c;方法一&#x1f9e4;方法二&#x1fa72;方法三&#x1f9e5;总结 &#x1f453;题目描述 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&am…

VScode运行C语言终端输出中文乱码问题解决方案

VScode运行C语言输出中文乱码问题解决方案 由于 VSCode 的终端是对系统的 cmd 命令行工具的调用&#xff0c;而 cmd 的默认编码为 GBK。当我们在 VSCode 中以 UTF-8 编码进行代码编写且代码里含有中文字符时&#xff0c;在终端运行代码便会出现中文乱码现象。要解决此问题&…

mysql查看和修改默认配置

1.查看最大连接数 SELECT max_connections; 或者 SHOW VARIABLES LIKE max_connections;2.查看当前连接的客户端 SHOW PROCESSLIST;2.临时设置最大连接数 SET GLOBAL max_connections 500;3.临时设置连接客户端交互超时时间 SET GLOBAL interactive_timeout 1800;4.永久生…

R语言机器学习算法实战系列(六)K-邻近算法 (K-Nearest Neighbors)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍教程下载数据加载R包导入数据数据预处理数据描述数据切割调节参数构建模型预测测试数据评估模型模型准确性混淆矩阵模型评估指标ROC CurvePRC Curve保存模型总结优点:缺点:系统信…

【Linux】僵尸进程和孤儿进程

一、僵尸进程 何为僵尸进程&#xff1f; 在 Unix/Linux 系统中&#xff0c;正常情况下&#xff0c;子进程是通过父进程创建的&#xff0c;且两者的运行是相互独立的&#xff0c;父进程永远无法预测子进程到底什么时候结束。当一个进程调用 exit 命令结束自己的生命时&#xff…

移除Microsoft Edge浏览器“由你的组织管理“提示的方法

背景&#xff1a; 点击Microsoft Edge浏览器右上角的按钮有时候会出现提示“由你的组织管理”。但实际上自己的电脑并没有被公司或其他企业管理。 解决方案&#xff1a; 提示&#xff1a;修改注册表如果操作不当会影响电脑&#xff0c;请提前备份注册表&#xff01;&#xff…

【Linux】【命令】diff

diff DescriptionsArgumentsExamples直接使用diff命令-u 输出格式-c 输出格式并列输出-s 和 -q 脚本示例示例1&#xff1a;目录及文件差异 Descriptions diff命令用于对比两个文件或者两个文件夹的不同之处&#xff0c;求基本语法如下所示&#xff1a; diff [OPTION]... FILES…

ue5 扇形射线检测和鼠标拖拽物体

这里的NumTrace是要发射几根射线&#xff0c;Degrees Per Trace是每根射线之间的角度&#xff0c; 例如 要在角色面前实现一个180度的扇形射线检测&#xff0c;就需这两个变量乘起来等于180 TraceLength是射线的长度 下面是鼠标拖动物体逻辑&#xff0c;很简单 这里的Floor和…

Unity DOTS中的Archetype与Chunk

Unity DOTS中的Archetype与Chunk 在Unity中&#xff0c;archetype&#xff08;原型&#xff09;用来表示一个world里具有相同component类型组合的entity。也就是说&#xff0c;相同component类型的entity在Unity内部会存储到一起&#xff0c;共享同一个archetype。 使用这样的设…

一篇文章入门Pytest!

目录 一、安装 二、语法 三、执行 四、前后置setup/teardown 五、fixture 六、数据驱动 七、报告 一、安装 需要安装的库 pytest pytest-html 生成HTML格式的测试报告 pytest-xdist 用例分布式执行&#xff0c;多CPU分发 pytest-ordering …

【Bug】iOS 不支持运行或调试你的项目的上一个生成版本。 请先确保生成解决方案,再运行或调试它。

文章目录 问题问题代码原因解决处理Bug的具体步骤 问题 在windows以hot restart&#xff08;hot restart不需要mac 而pair to mac需要&#xff09;的方式部署到iphone报&#xff1a;不支持运行或调试你的项目的上一个生成版本。 请先确保生成解决方案&#xff0c;再运行或调试…

基于SSM宠物信息交流平台JAVA|VUE|Springboot计算机毕业设计源代码+数据库+LW文档+开题报告+答辩稿+部署教+代码讲解

源代码数据库LW文档&#xff08;1万字以上&#xff09;开题报告答辩稿 部署教程代码讲解代码时间修改教程 一、开发工具、运行环境、开发技术 开发工具 1、操作系统&#xff1a;Window操作系统 2、开发工具&#xff1a;IntelliJ IDEA或者Eclipse 3、数据库存储&#xff1a…

东芝TB67B008FTG三相无刷马达驱动IC

TB67B008FTG是一款无刷直流电机用的三相PWM驱动器&#xff0c;专为无传感器的应用场景设计。它具有一系列突出的功能&#xff0c;使其在现代电机控制中发挥重要作用&#xff0c;尤其是在需要高效、稳定运行的场景中。本文将详细介绍TB67B008FTG的特点、应用以及它在电机控制领域…

idea和webstorm性能优化

idea和webstorm性能优化 简介 今天打开了idea弹了一个弹窗&#xff0c;大概意思如下。 The IDE has detected Microsoft Defender with Real-Time Protection enabled. It might severely degrade IDE performance. It is recommended to add the following paths to the Def…

【Axure高保真原型】移动案例

今天和大家分享多个常用的移动案例的原型模板&#xff0c;包括轮盘滑动控制元件移动、页面按钮控制元件移动、鼠标单击控制元件移动、元件跟随鼠标移动、鼠标拖动控制元件移动、键盘方向键控制元件移动&#xff0c;具体效果可以点击下方视频观看或打开下方预览地址查看哦 【原…

算法笔记day06

目录 1.添加逗号 2.跳台阶 3.扑克牌顺子 1.添加逗号 添加逗号_牛客题霸_牛客网 算法思路&#xff1a; 按照提议模拟即可&#xff0c;从后向前遍历字符串&#xff0c;遍历三个字符之后&#xff0c;将其插入将这三个字符插入到新的字符串中再加上逗号。 #include <iostrea…

Thymeleaf模板引擎教程(详细总结)

Thymeleaf 是一个服务器端 Java 模板引擎&#xff0c;能够处理 HTML 、 XML 、 CSS 、 JAVASCRIPT 等模板文件。 Thymeleaf 模板可以直接当作静态原型来使用&#xff0c;它主要目标是为开发者的开发工作流程带来优雅的自然 模板&#xff0c;也是 Java 服务器端 HTML5 开…

Docker设置日志滚动

问题描述 Docker 容器中的进程会将打印到控制台(console)的日志保存到容器的目录下&#xff0c;默认的 Docker 配置不带有日志的回滚。会在自己的容器目录下往同一个日志文件中不停写入&#xff0c;最后会导致磁盘空间占满的问题。 解决方案 方案一&#xff1a;全局范围内修…