文本搜索系统的评估

说明:文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译,是我对课程的理解。
 这部分本应该继续说反馈(FeedBack)的。但是课程中安排的是评估(Evaluation)。评估是用于衡量搜索引擎质量的。反馈是为了提高搜索引擎质量而进行的操作。所以在讲反馈之前需要先说明评估。

1为什么做评估

 为什么要评估搜索引擎呢?一方面是为了评估搜索引擎是否有用,另一方面用于比较不同算法、不同文本搜索系统的有效性。

2评估什么

 1 准确性accuracy。可以衡量搜索结果的准确程度,是不是把无关数据放在top列表中了。
 2 有效性(efficiency)。系统可以在多长时间内返回搜索结果。一次搜索需要多少资源。主要从space和 time overhead两方面衡量。
 3 有用性usability。搜索系统对用户是有用的吗?通过研究用户行为得出结论。

3评估方法

 Cranfield Evaluation Methodology克兰菲尔德评价方法。主要内容有两点:第一、建立一个可重用的测试集。第二、定义测量标准。

3.1建一个可重用测试集

 建立可重用测试集的步骤:1 从文档中抽样取得部分文档。2 从查询集中抽样得到部分查询。3 (人工)判断文档与查询是否相关,所有相关文档中理想的排序方式是什么(idea ranked list)。
 

3.2评估标准

 准确率与召回率
 a=搜索到的相关文档
 b=搜索到的不相关文档
 c=相关文档但是没有搜索到
 precision=aa+b
 recall=aa+b
 理想结果是:Precision=Recall=1.0。实际中高的recall必定会有一个较低的Precision。
 一般使用中不会定义全局的准确率,而是会设置一个阀值,计算top n的准确率。例如prcision@10。
 recall与precision结合使用得到Fβ=(β2+1)PRβ2P+RF1=2PRP+R
 提问:为什么不是0.5*P+0.5*R?
 回答:这是一个求和,求和的结果由式子中的大数来决定。就是说,如果有一个P值非常高,即使R值很低,结果页可能很高。而F1的式子,需要P和R都非常高,结果才可能非常大。

4评估排序文档

 评估排序文档 evaluate ranked list

4.1 设置cut off

 评估排序结果的第一步是要确定一个位置,简单的说是每页多少条数据。我们可以认为用户只有很小的可能会翻页。或者说这次引擎需要评估前两页数据的准确率和召回率。根据实际任务来定。这里假设cut off=10。查看前10条文档的情况。

4.2 计算不同位置的准确率和召回率

 在前10条文档中,我们又不知道用户会在哪个位置停下来。我们可以先计算用户在不同位置停止浏览的时候的准确率和召回率。

位置文档准确率召回率
1D1+1/11/10
2D2+2/22/10
3D3-2/32/10
4D4-2/42/10
5D5+3/53/10
6D6-3/63/10
7D7-3/73/10
8D8+4/84/10
9D9-4/94/10
10D10-4/104/10

 
 可以看到随着位置增加,准确率逐渐降低,召回率逐渐增加。所以我们可以假设cut off(例如:10)之后的每个位置的准确率为0。
 
这里写图片描述
 

4.3 比较两种算法

 比较两种算法就是比较两种算法的P-R曲线。
 
 
 如果算法A、B的效果可以用上图表示,毫无疑问算法A要优于算法B。因为在每一个相同召回率的点上,A的准确率>B的准确率。
 
 
 如果算法A、B的效果用上面的图表示,那哪种算法好呢?我们是否应该用算法B替换算法A呢?在最前面的位置,算法B具有较高的准确率;总体来看,算法A具有较高的召回率。如果是今日头条这样的场景,一个用户就想知道今天或者近几个小时发生了什么事情,而且还不一定看几条数据就不停下来了。所以最前面的数据一定要是准确的,要求高的准确率。这时候算法B比较好。如果这是一个科技查新的系统,是一个专利调研项目,想要知道哪类技术是不是已经研究过,或者进行了哪方面的研究,这时候有一些错误数据是可以的,但是一定要保证相关的文献能被查询到。也就是说要有较高的召回率。这时候选择算法A。

4.4 summarize a ranking

 概述排序文档:平均准确率。
 上面例子的平均准确率=11+22+35+48+0+0+0+0+0+010,这里的分母=相关文档的数量。这里有几个问题。
 问题1:相关文档的数量是在cut off范围内,还是在所有数据范围内?我比较偏向于前者。因为这是评价Top k 排序结果的。如果你要评价前10条数据,但在数据集中相关文档只有8,那这个时候分母就应该是8。
 问题2:分母为什么不是4,也就是查询到的相关文档数量?作者的解释,我看得不是很明白。
 “In fact, that you are favoring a system, that would retrieve very few random documents, as in that case, the denominator would be very small. So, this would be, not a good matching. ”
 大意是说:分母很小,我可以从数据中随机选择几个文档,就能提高准确率。(大概是这意思)。
 好处:这样的计算结果同时考虑了准确率和召回率,而且还与相关文档的位置有关系。在上面例子中如果把D5移动到D3,计算结果就会变大(因为分子的35变成了33)。

4.5 MAP

 平均准确率衡量了一个检索结果列表的好坏。那如果是一个查询(检索表达式)集合呢?之前提到可重用的测试集是由文档集和查询集组成的。
 MAP=Mean Average Precision 平均准确率的平均值。可以用来表示一个查询集的检索结果的好坏。
 MAP分为算术平均准确率(MAP)和几何平均准确率(gMAP)。
 MAP=1nni=1pi。它主要由大数控制。如果一个数非常大,而其他值非常小,最后的结果页可能非常大。
 gMAP=(ni=1pi)1n。它主要由一些较小的数控制。它要求所有数都比较大,结果才能比较大。
 
 如果要衡量搜索引擎的搜索效果,想要提高(几乎)所有查询语句的搜索效果,显然gMAP更合适。如果只需要提高部分查询的检索结果,那MAP可能更合适。
 
 特殊情况:只有一个相关文档。例如:问答系统,只有一个答案正确;或者页面中只有一个位置展示相关文档。这样:
 平均准确率=Reciprocal Rank=1/r。r是相关文档在检索结果中的排序位置。
 MAP=Mean Reciprocal Rank
 r代表了用户想要看到相关文档需要的努力程度。如果r=1,用户看1篇文档就找到了相关文档。如果r=100,用户就需要看100篇文档才能找到相关文档(已然放弃)。为什么不用r表示搜索效果的好坏呢?在多个查询结果中,假设有三个查询结果,相关文档的位置分别是4、5、3。一种表示方式是:14+15+13,另外一种表示方式是:{4+5+3}。在第一种方式中,结果大,就代表效果好;第二种方式结果大,代表效果差,思维不同。人们对于1415的差别,和对4与5的差别的感觉是不一样的,前者能感觉到更有差距。

4.6 多级别相关性排序评价

 上面介绍的都是一个文档要么相关,要么不相关。实际中我们会给文档分成不同级别的相关性。例如r=1:不相关;r=2:有点相关;r=3:非常相关。我们这里假设关心top10结果。

文档相关性相关性累加Discounted Cumulative Gain
D1333
D223+23+2/log2
D313+2+13+2/log2+1/log3
D413+2+1+13+2/log2+1/log3+1/log4
D53
D61
D71
D82
D91
D101…...

 相关性累加(Cumulative Gain)是把结果中每个文档的相关性等级相加。
 带折扣的相关性累加(Discounted Cumulative Gain,DCG)是在相加过程中依据位置因素带了折扣:等级/logr,r=位置。
 最后还要计算正则化的DCG,用于不同查询之间的比较,表示为nDCG=DCG@10IdealDCG@10
 DCG@10=3+2/log2+1/log3+...+1/log10
 IdealDCG@10是对于某个搜素最理想情况下的DCG值。如果对于当前查询,文档集中有9篇非常相关文档(3级),一篇有点相关文档(2级),那么IdealDCG@10=3+3/log2+3/log3+...+2/log10
 nDCG的范围就是0-1之间,用于衡量不同级别相关性的搜索。
 

5 评估问题实际中的问题

 在评估中我们需要创建一个文档集、查询集以及相关评价集。在实际中这几方面都是很有挑战的。
 首先,我们选择的文档和查询语句要具有代表性,能代表了真实的用户需求。
 其次,文档和查询的量要大,尽量数据的抽样不均衡(这里可以翻译的更好点)。对于每个查询,要保证有很多的相关文档。
 第三,对每个查询的每个文档的相关性需要大量的人工标记。这是一个劳动密集型的事情,所以我们需要尽可能少的使用人力。
 第四,在制定相关度级别方面,我们需要认真考虑什么是用户想要的,再考虑定什么样的相关度级别是合适的。
 
 

5.1 统计显著性检验

 统计显著性测试(statistical significant test)用来解决这样的问题:我们通过试验比较算法A和算法B谁更好,计算得到平均值之后,我们怎么确定较好的算法是不是因为某几个特定的查询引起的.也就是说对于结果较好的算法,是几乎在每个查询上表现都好,还是只在某些查询上表现优异.例如下图。我们得到的试验结果有多少可信度


 首先看一个符号测试Sign Test。如果SystemB比SystemA好,则标记为+,否则标记为-。7个查询中4个位+,3个位-,这和抛7枚硬币得到的结果相同,所以这个结果完全是随机因素影响的,p=1.0。
 其次看Wilcoxon检验法。Wilcoxon检验法同时考虑了符号和差值大小。我们需要考虑在一定的置信水平上(例如α=0.95),计算得到的|W|值是否在临界值范围外。详细内容看看统计学课本或者Wikipedia。

5.2 Judgments

 如果我们不能对所有文档的相关性做相关性标记,那我们应该选择哪部分文档去标注相关性呢呢?抽样。要尽可能选择多样性的文档;选择Top k文档(多个算法可能会选到重复的文档);把N个算法选出的文档作为测试集,人工标记相关性;其余未被选中的文档被认为是不相关文档。

6 未涉及到的相关策略

 A-B Test
 用户学习
 可以参考的资料:
 Donna Harman, Information Retrieval Evaluation. Synthesis Lectures on Information Concepts, Retrieval, and Services, Morgan & Claypool Publishers 2011
 Mark Sanderson, Test Collection Based Evaluation of Information Retrieval Systems. Foundations and Trends in Information Retrieval 4(4): 247-375 (2010)
 Diane Kelly, Methods for Evaluating Interactive Information Retrieval Systems with Users. Foundations and Trends in Information Retrieval 3(1-2): 1-224 (2009)

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

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

相关文章

UE3客户端服务器GamePlay框架

客户端(当前玩家)与服务器对应关系图: 整体上看,UE3的GamePlay框架使用的是MVC架构 ① 橙色的Actor对象及橙色箭头相连的成员变量只会被同步给Owner客户端 Controller:控制器,包括PlayerController和AIController InventoryManage…

[Leetcode][第201题][JAVA][数字范围按位与][位运算][Brian Kernighan]

【问题描述】[中等] 【解答思路】 1. 暴力 逐位与 ,只需要判断i 0 或 i 2147483647 的话,就跳出 for 循环即可。 时间复杂度:O(N) 空间复杂度:O(1) public int rangeBitwiseAnd(int m, int n) {//m 要赋值给 i,所…

文档排序模型--查询似然Query Likelihood

在概率模型中,我们定义排序函数是基于文档与查询之间的相关度、可能性来做的。f(d,q) p(R1|d,q), R ∈{0,1}。概率模型有几个小分类:   经典概率模型——>BM25   语言模型Language Model —–>Query Likelihood   Divergence from rando…

第五十二期:甲骨文遭遇“中年危机”:继阿里后,再被亚马逊永久抛弃

42岁的甲骨文迎来“中年危机”。10月15日,亚马逊AWS技术布道者Jeff Barr在AWS官网宣布亚马逊消费者业务永久弃用甲骨文(Oracle)数据库。 作者:温暖来源:镁客网 42岁的甲骨文迎来“中年危机”。 10月15日,亚马逊AWS技术布道者Jef…

[Leetcode][第461题][JAVA][汉明距离][位运算][Brian Kernighan]

【问题描述】[简单] 【解答思路】 1. 内置位计数功能 时间复杂度:O(1) 空间复杂度:O(1) class Solution {public int hammingDistance(int x, int y) {return Integer.bitCount(x ^ y); } }2. 移位 时间复杂度:O(1) 空间复杂度&#xff1…

第二十八期:Notepad++ 新 Logo 出炉,官网全新改版采用自适应设计

Notepad 的推特帐号发布了关于 notepad 的消息。与旧版 Logo 相比,新 Logo 整体的变化不大,不过官方则表示新版 Logo 比旧版的更吸引人,也更加简洁且更具意义。 新旧 Logo 对比如下(左边为旧版 Logo): 除了…

React Navigation 导航栏样式调整+底部角标消息提示

五一佳节匆匆而过,有人选择在外面看人山人海,有人选择宅在家中度过五一,也有人依然坚守在第一线,致敬! 这是坚持学习react-native的第二篇文章,可能会迟到,但是绝不会缺席,这篇要涉及…

反馈(Feedback)

说明:文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译,是我对课程的理解。  终于到了第四部分了。之前提到过的,一个文本检索系统分词索引打分反馈。前面三部分都已经在前面的文档中介绍了。现在看反馈。反馈是根…

【数据结构与算法】堆

一:如何理解“堆” 1,堆是一个完全二叉树; 完全二叉树要求除了最后一层,其他层的节点都是满的,最后一层的节点都靠左排列。 2,堆中每个节点都必须大于等于(或小于等于)其子树中每个…

第五十三期:资深技术Leader肺腑忠告:如何成为技术大牛?

这篇文章,对于每一个想成为技术大牛的人来说都值得仔细阅读好几遍。 作者:曹乐来源:再成长一次 图片来自 Pexels 双生说:曹乐是典型学霸,清华本硕,多年互联网大厂研发经验,所以“资深”。我刚…

互联网搜索引擎

说明:文章内容来源于课程视频和课程ppt。我只学习了课程没有做习题。文章不是翻译,是我对课程的理解。 1 挑战 互联网搜索引擎与一般搜索引擎的区别主要在以下问题。  第一是数据量(scalability)。互联网搜索需要处理的数据量大,如何保证能…

第五十四期:Libra盟友纷纷“跳船”,联盟链还有戏吗?

曾经被诺贝尔奖得主斯蒂格利茨评价为“傻子才信”的Facebook数字加密货币项目Libra,自从出世开始就负面不断。最近在其首届理事会议前夕,PayPal、Visa、万事达、Stripe和eBay等全球型金融巨头“盟友”的相继退出,更使其遭遇了不少“看空”。 …

python time模块

时间戳、结构化时间、字符串时间 import time#时间戳 ,大多时候用于计算 #从1970年0点0分0秒开始计算的秒数 print(time.time())#结构化时间------当地时间(东8区) #返回一个时间对象 print(time.localtime())#time.localtime()中默认参数为…

第五十五期:区块链将在2020年实现的重大改变

科技界的每家公司都已经拥有区块链战略。如果他们现在没有,他们就有可能错过了这个时代的一个机会。在过去几年中,许多企业已经对整体采用区块链技术的好处和相关风险进行了估算,分析和讨论。 科技界的每家公司都已经拥有区块链战略。如果他们…

为什么机器学习算法要与人类水平比较

原因 1 近年来机器学习的效果越来越好,能够和人类的相应能力做比较。 2 设计和构建机器学习系统,这个工作流程很高效。 因为种种原因,ML或者人都不可能超过Bayes Optimal Error 贝叶斯最优误差,ML随着时间推移会越来越接近贝…

第二十九期:运维之三大监控对比

Zabbix核心组件主要是Agent和Server,其中Agent主要负责采集数据并通过主动或者被动的方式采集数据发送到Server/Proxy,除此之外,为了扩展监控项,Agent还支持执行自定义脚本。 作者:艺术生的运维路来源:今日…

[Leetcode][第459题][JAVA][重复的字符串][子串][匹配]

【问题描述】[中等] 【解答思路】 1. 枚举 找出能整除的子串长度,再用substring遍历匹配即可 时间复杂度:O(N^2) 空间复杂度:O(1) class Solution {public boolean repeatedSubstringPattern(String s) {int len s.length();for(int i 1…

第五十六期:百度CTO王海峰CNCC2019演讲:深度学习平台支撑产业智能化

百度CTO王海峰在会上发表题为《深度学习平台支撑产业智能化》的演讲,分享了百度关于深度学习技术推动人工智能发展及产业化应用的思考,并深度解读百度飞桨深度学习平台的优势,以及与百度智能云结合助力产业智能化的成果。 作者:佚…

【STM32】IIC的基本原理(实例:普通IO口模拟IIC时序读取24C02)(转载)

版权声明:本文为博主原创文章,允许转载,但希望标注转载来源。 https://blog.csdn.net/qq_38410730/article/details/80312357IIC的基本介绍 IIC的简介 IIC(Inter-Integrated Circuit)总线是一种由PHILIPS公…

【数据结构与算法】广度优先遍历(BFS) 深度优先遍历(DFS)

一、 搜索算法 深度优先搜索和广度优先搜索是最暴力的图的搜索算法。算法的目标是,给定一张图,一对初始和终止节点,找到两节点之间的节点路径。(代码均是找到两个节点之间的路径) 广度优先搜索是一层一层搜索&#xf…